israeli-bank-scrapers 6.0.0 → 6.1.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/README.md +1 -0
- package/lib/assertNever.js +5 -7
- package/lib/constants.js +13 -16
- package/lib/definitions.js +109 -113
- package/lib/helpers/browser.d.ts +8 -0
- package/lib/helpers/browser.js +14 -11
- package/lib/helpers/dates.js +18 -19
- package/lib/helpers/debug.js +9 -9
- package/lib/helpers/elements-interactions.js +78 -84
- package/lib/helpers/fetch.js +82 -89
- package/lib/helpers/navigation.js +24 -31
- package/lib/helpers/storage.js +10 -12
- package/lib/helpers/transactions.js +33 -35
- package/lib/helpers/waiting.js +45 -44
- package/lib/index.js +15 -82
- package/lib/scrapers/amex.js +11 -13
- package/lib/scrapers/base-beinleumi-group.js +233 -252
- package/lib/scrapers/base-isracard-amex.js +273 -286
- package/lib/scrapers/base-scraper-with-browser.d.ts +2 -1
- package/lib/scrapers/base-scraper-with-browser.js +240 -269
- package/lib/scrapers/base-scraper.js +82 -86
- package/lib/scrapers/behatsdaa.js +98 -107
- package/lib/scrapers/beinleumi.js +11 -20
- package/lib/scrapers/beyahad-bishvilha.js +132 -138
- package/lib/scrapers/discount.js +97 -103
- package/lib/scrapers/errors.js +22 -25
- package/lib/scrapers/factory.js +66 -67
- package/lib/scrapers/hapoalim.js +162 -182
- package/lib/scrapers/interface.d.ts +12 -0
- package/lib/scrapers/interface.js +2 -5
- package/lib/scrapers/isracard.js +11 -13
- package/lib/scrapers/leumi.js +167 -176
- package/lib/scrapers/massad.js +11 -20
- package/lib/scrapers/max.js +256 -268
- package/lib/scrapers/mercantile.js +14 -20
- package/lib/scrapers/mizrahi.js +158 -159
- package/lib/scrapers/one-zero-queries.js +4 -7
- package/lib/scrapers/one-zero.js +176 -240
- package/lib/scrapers/otsar-hahayal.js +11 -20
- package/lib/scrapers/pagi.js +11 -20
- package/lib/scrapers/union-bank.js +172 -179
- package/lib/scrapers/visa-cal.js +254 -263
- package/lib/scrapers/yahav.js +190 -211
- package/lib/transactions.js +13 -16
- package/package.json +12 -14
- package/lib/scrapers/amex.test.d.ts +0 -1
- package/lib/scrapers/amex.test.js +0 -54
- package/lib/scrapers/base-scraper-with-browser.test.d.ts +0 -1
- package/lib/scrapers/base-scraper-with-browser.test.js +0 -58
- package/lib/scrapers/behatsdaa.test.d.ts +0 -1
- package/lib/scrapers/behatsdaa.test.js +0 -50
- package/lib/scrapers/beinleumi.test.d.ts +0 -1
- package/lib/scrapers/beinleumi.test.js +0 -52
- package/lib/scrapers/beyahad-bishvilha.test.d.ts +0 -1
- package/lib/scrapers/beyahad-bishvilha.test.js +0 -52
- package/lib/scrapers/discount.test.d.ts +0 -1
- package/lib/scrapers/discount.test.js +0 -54
- package/lib/scrapers/factory.test.d.ts +0 -1
- package/lib/scrapers/factory.test.js +0 -19
- package/lib/scrapers/hapoalim.test.d.ts +0 -1
- package/lib/scrapers/hapoalim.test.js +0 -52
- package/lib/scrapers/isracard.test.d.ts +0 -1
- package/lib/scrapers/isracard.test.js +0 -54
- package/lib/scrapers/leumi.test.d.ts +0 -1
- package/lib/scrapers/leumi.test.js +0 -52
- package/lib/scrapers/max.test.d.ts +0 -1
- package/lib/scrapers/max.test.js +0 -71
- package/lib/scrapers/mercantile.test.d.ts +0 -1
- package/lib/scrapers/mercantile.test.js +0 -50
- package/lib/scrapers/mizrahi.test.d.ts +0 -1
- package/lib/scrapers/mizrahi.test.js +0 -58
- package/lib/scrapers/one-zero.test.d.ts +0 -1
- package/lib/scrapers/one-zero.test.js +0 -56
- package/lib/scrapers/otsar-hahayal.test.d.ts +0 -1
- package/lib/scrapers/otsar-hahayal.test.js +0 -52
- package/lib/scrapers/pagi.test.d.ts +0 -1
- package/lib/scrapers/pagi.test.js +0 -52
- package/lib/scrapers/union-bank.test.d.ts +0 -1
- package/lib/scrapers/union-bank.test.js +0 -52
- package/lib/scrapers/visa-cal.test.d.ts +0 -1
- package/lib/scrapers/visa-cal.test.js +0 -54
- package/lib/scrapers/yahav.test.d.ts +0 -1
- package/lib/scrapers/yahav.test.js +0 -54
package/lib/scrapers/discount.js
CHANGED
|
@@ -1,118 +1,112 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
require("
|
|
8
|
-
require("
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var _transactions = require("../transactions");
|
|
15
|
-
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
16
|
-
var _errors = require("./errors");
|
|
17
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
7
|
+
const moment_1 = __importDefault(require("moment"));
|
|
8
|
+
const elements_interactions_1 = require("../helpers/elements-interactions");
|
|
9
|
+
const fetch_1 = require("../helpers/fetch");
|
|
10
|
+
const navigation_1 = require("../helpers/navigation");
|
|
11
|
+
const transactions_1 = require("../transactions");
|
|
12
|
+
const base_scraper_with_browser_1 = require("./base-scraper-with-browser");
|
|
13
|
+
const errors_1 = require("./errors");
|
|
18
14
|
const BASE_URL = 'https://start.telebank.co.il';
|
|
19
15
|
const DATE_FORMAT = 'YYYYMMDD';
|
|
20
16
|
function convertTransactions(txns, txnStatus) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
17
|
+
if (!txns) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
return txns.map(txn => {
|
|
21
|
+
return {
|
|
22
|
+
type: transactions_1.TransactionTypes.Normal,
|
|
23
|
+
identifier: txn.OperationNumber,
|
|
24
|
+
date: (0, moment_1.default)(txn.OperationDate, DATE_FORMAT).toISOString(),
|
|
25
|
+
processedDate: (0, moment_1.default)(txn.ValueDate, DATE_FORMAT).toISOString(),
|
|
26
|
+
originalAmount: txn.OperationAmount,
|
|
27
|
+
originalCurrency: 'ILS',
|
|
28
|
+
chargedAmount: txn.OperationAmount,
|
|
29
|
+
description: txn.OperationDescriptionToDisplay,
|
|
30
|
+
status: txnStatus,
|
|
31
|
+
};
|
|
32
|
+
});
|
|
37
33
|
}
|
|
38
34
|
async function fetchAccountData(page, options) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
35
|
+
const apiSiteUrl = `${BASE_URL}/Titan/gatewayAPI`;
|
|
36
|
+
const accountDataUrl = `${apiSiteUrl}/userAccountsData`;
|
|
37
|
+
const accountInfo = await (0, fetch_1.fetchGetWithinPage)(page, accountDataUrl);
|
|
38
|
+
if (!accountInfo) {
|
|
39
|
+
return {
|
|
40
|
+
success: false,
|
|
41
|
+
errorType: errors_1.ScraperErrorTypes.Generic,
|
|
42
|
+
errorMessage: 'failed to get account data',
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const accountNumber = accountInfo.UserAccountsData.DefaultAccountNumber;
|
|
46
|
+
const defaultStartMoment = (0, moment_1.default)().subtract(1, 'years').add(2, 'day');
|
|
47
|
+
const startDate = options.startDate || defaultStartMoment.toDate();
|
|
48
|
+
const startMoment = moment_1.default.max(defaultStartMoment, (0, moment_1.default)(startDate));
|
|
49
|
+
const startDateStr = startMoment.format(DATE_FORMAT);
|
|
50
|
+
const txnsUrl = `${apiSiteUrl}/lastTransactions/${accountNumber}/Date?IsCategoryDescCode=True&IsTransactionDetails=True&IsEventNames=True&IsFutureTransactionFlag=True&FromDate=${startDateStr}`;
|
|
51
|
+
const txnsResult = await (0, fetch_1.fetchGetWithinPage)(page, txnsUrl);
|
|
52
|
+
if (!txnsResult || txnsResult.Error || !txnsResult.CurrentAccountLastTransactions) {
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
errorType: errors_1.ScraperErrorTypes.Generic,
|
|
56
|
+
errorMessage: txnsResult && txnsResult.Error ? txnsResult.Error.MsgText : 'unknown error',
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const completedTxns = convertTransactions(txnsResult.CurrentAccountLastTransactions.OperationEntry, transactions_1.TransactionStatuses.Completed);
|
|
60
|
+
const rawFutureTxns = lodash_1.default.get(txnsResult, 'CurrentAccountLastTransactions.FutureTransactionsBlock.FutureTransactionEntry');
|
|
61
|
+
const pendingTxns = convertTransactions(rawFutureTxns, transactions_1.TransactionStatuses.Pending);
|
|
62
|
+
const accountData = {
|
|
63
|
+
success: true,
|
|
64
|
+
accounts: [
|
|
65
|
+
{
|
|
66
|
+
accountNumber,
|
|
67
|
+
balance: txnsResult.CurrentAccountLastTransactions.CurrentAccountInfo.AccountBalance,
|
|
68
|
+
txns: [...completedTxns, ...pendingTxns],
|
|
69
|
+
},
|
|
70
|
+
],
|
|
61
71
|
};
|
|
62
|
-
|
|
63
|
-
const completedTxns = convertTransactions(txnsResult.CurrentAccountLastTransactions.OperationEntry, _transactions.TransactionStatuses.Completed);
|
|
64
|
-
const rawFutureTxns = _lodash.default.get(txnsResult, 'CurrentAccountLastTransactions.FutureTransactionsBlock.FutureTransactionEntry');
|
|
65
|
-
const pendingTxns = convertTransactions(rawFutureTxns, _transactions.TransactionStatuses.Pending);
|
|
66
|
-
const accountData = {
|
|
67
|
-
success: true,
|
|
68
|
-
accounts: [{
|
|
69
|
-
accountNumber,
|
|
70
|
-
balance: txnsResult.CurrentAccountLastTransactions.CurrentAccountInfo.AccountBalance,
|
|
71
|
-
txns: [...completedTxns, ...pendingTxns]
|
|
72
|
-
}]
|
|
73
|
-
};
|
|
74
|
-
return accountData;
|
|
72
|
+
return accountData;
|
|
75
73
|
}
|
|
76
74
|
async function navigateOrErrorLabel(page) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
75
|
+
try {
|
|
76
|
+
await (0, navigation_1.waitForNavigation)(page);
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
await (0, elements_interactions_1.waitUntilElementFound)(page, '#general-error', false, 100);
|
|
80
|
+
}
|
|
82
81
|
}
|
|
83
82
|
function getPossibleLoginResults() {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
const urls = {};
|
|
84
|
+
urls[base_scraper_with_browser_1.LoginResults.Success] = [`${BASE_URL}/apollo/retail/#/MY_ACCOUNT_HOMEPAGE`];
|
|
85
|
+
urls[base_scraper_with_browser_1.LoginResults.InvalidPassword] = [`${BASE_URL}/apollo/core/templates/lobby/masterPage.html#/LOGIN_PAGE`];
|
|
86
|
+
urls[base_scraper_with_browser_1.LoginResults.ChangePassword] = [`${BASE_URL}/apollo/core/templates/lobby/masterPage.html#/PWD_RENEW`];
|
|
87
|
+
return urls;
|
|
89
88
|
}
|
|
90
89
|
function createLoginFields(credentials) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
value: credentials.password
|
|
97
|
-
}, {
|
|
98
|
-
selector: '#aidnum',
|
|
99
|
-
value: credentials.num
|
|
100
|
-
}];
|
|
90
|
+
return [
|
|
91
|
+
{ selector: '#tzId', value: credentials.id },
|
|
92
|
+
{ selector: '#tzPassword', value: credentials.password },
|
|
93
|
+
{ selector: '#aidnum', value: credentials.num },
|
|
94
|
+
];
|
|
101
95
|
}
|
|
102
|
-
class DiscountScraper extends
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
96
|
+
class DiscountScraper extends base_scraper_with_browser_1.BaseScraperWithBrowser {
|
|
97
|
+
getLoginOptions(credentials) {
|
|
98
|
+
return {
|
|
99
|
+
loginUrl: `${BASE_URL}/login/#/LOGIN_PAGE`,
|
|
100
|
+
checkReadiness: async () => (0, elements_interactions_1.waitUntilElementFound)(this.page, '#tzId'),
|
|
101
|
+
fields: createLoginFields(credentials),
|
|
102
|
+
submitButtonSelector: '.sendBtn',
|
|
103
|
+
postAction: async () => navigateOrErrorLabel(this.page),
|
|
104
|
+
possibleResults: getPossibleLoginResults(),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
async fetchData() {
|
|
108
|
+
return fetchAccountData(this.page, this.options);
|
|
109
|
+
}
|
|
116
110
|
}
|
|
117
|
-
|
|
118
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJEQVRFX0ZPUk1BVCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwidHhuU3RhdHVzIiwibWFwIiwidHhuIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwiT3BlcmF0aW9uTnVtYmVyIiwiZGF0ZSIsIm1vbWVudCIsIk9wZXJhdGlvbkRhdGUiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJWYWx1ZURhdGUiLCJvcmlnaW5hbEFtb3VudCIsIk9wZXJhdGlvbkFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheSIsInN0YXR1cyIsImZldGNoQWNjb3VudERhdGEiLCJwYWdlIiwib3B0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50RGF0YVVybCIsImFjY291bnRJbmZvIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwic3VjY2VzcyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsImFjY291bnROdW1iZXIiLCJVc2VyQWNjb3VudHNEYXRhIiwiRGVmYXVsdEFjY291bnROdW1iZXIiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4Iiwic3RhcnREYXRlU3RyIiwiZm9ybWF0IiwidHhuc1VybCIsInR4bnNSZXN1bHQiLCJFcnJvciIsIkN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucyIsIk1zZ1RleHQiLCJjb21wbGV0ZWRUeG5zIiwiT3BlcmF0aW9uRW50cnkiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicmF3RnV0dXJlVHhucyIsIl8iLCJnZXQiLCJwZW5kaW5nVHhucyIsIlBlbmRpbmciLCJhY2NvdW50RGF0YSIsImFjY291bnRzIiwiYmFsYW5jZSIsIkN1cnJlbnRBY2NvdW50SW5mbyIsIkFjY291bnRCYWxhbmNlIiwibmF2aWdhdGVPckVycm9yTGFiZWwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwiaWQiLCJwYXNzd29yZCIsIm51bSIsIkRpc2NvdW50U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Rpc2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQge1xuICB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vc3RhcnQudGVsZWJhbmsuY28uaWwnO1xuY29uc3QgREFURV9GT1JNQVQgPSAnWVlZWU1NREQnO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgT3BlcmF0aW9uTnVtYmVyOiBudW1iZXI7XG4gIE9wZXJhdGlvbkRhdGU6IHN0cmluZztcbiAgVmFsdWVEYXRlOiBzdHJpbmc7XG4gIE9wZXJhdGlvbkFtb3VudDogbnVtYmVyO1xuICBPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ3VycmVudEFjY291bnRJbmZvIHtcbiAgQWNjb3VudEJhbGFuY2U6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50RGF0YSB7XG4gIFVzZXJBY2NvdW50c0RhdGE6IHtcbiAgICBEZWZhdWx0QWNjb3VudE51bWJlcjogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uRGF0YSB7XG4gIEVycm9yPzogeyBNc2dUZXh0OiBzdHJpbmcgfTtcbiAgQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zPzoge1xuICAgIE9wZXJhdGlvbkVudHJ5OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICBDdXJyZW50QWNjb3VudEluZm86IEN1cnJlbnRBY2NvdW50SW5mbztcbiAgICBGdXR1cmVUcmFuc2FjdGlvbnNCbG9jazp7XG4gICAgICBGdXR1cmVUcmFuc2FjdGlvbkVudHJ5OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLCB0eG5TdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMpOiBUcmFuc2FjdGlvbltdIHtcbiAgaWYgKCF0eG5zKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLk9wZXJhdGlvbk51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uT3BlcmF0aW9uRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQodHhuLlZhbHVlRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXksXG4gICAgICBzdGF0dXM6IHR4blN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtCQVNFX1VSTH0vVGl0YW4vZ2F0ZXdheUFQSWA7XG5cbiAgY29uc3QgYWNjb3VudERhdGFVcmwgPSBgJHthcGlTaXRlVXJsfS91c2VyQWNjb3VudHNEYXRhYDtcbiAgY29uc3QgYWNjb3VudEluZm8gPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnREYXRhPihwYWdlLCBhY2NvdW50RGF0YVVybCk7XG5cbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgIGVycm9yTWVzc2FnZTogJ2ZhaWxlZCB0byBnZXQgYWNjb3VudCBkYXRhJyxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBhY2NvdW50SW5mby5Vc2VyQWNjb3VudHNEYXRhLkRlZmF1bHRBY2NvdW50TnVtYmVyO1xuXG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgyLCAnZGF5Jyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZVN0ciA9IHN0YXJ0TW9tZW50LmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGNvbnN0IHR4bnNVcmwgPSBgJHthcGlTaXRlVXJsfS9sYXN0VHJhbnNhY3Rpb25zLyR7YWNjb3VudE51bWJlcn0vRGF0ZT9Jc0NhdGVnb3J5RGVzY0NvZGU9VHJ1ZSZJc1RyYW5zYWN0aW9uRGV0YWlscz1UcnVlJklzRXZlbnROYW1lcz1UcnVlJklzRnV0dXJlVHJhbnNhY3Rpb25GbGFnPVRydWUmRnJvbURhdGU9JHtzdGFydERhdGVTdHJ9YDtcbiAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCB0eG5zVXJsKTtcbiAgaWYgKCF0eG5zUmVzdWx0IHx8IHR4bnNSZXN1bHQuRXJyb3IgfHxcbiAgICAhdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICBlcnJvck1lc3NhZ2U6IHR4bnNSZXN1bHQgJiYgdHhuc1Jlc3VsdC5FcnJvciA/IHR4bnNSZXN1bHQuRXJyb3IuTXNnVGV4dCA6ICd1bmtub3duIGVycm9yJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgY29tcGxldGVkVHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gICAgdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuT3BlcmF0aW9uRW50cnksXG4gICAgVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICk7XG4gIGNvbnN0IHJhd0Z1dHVyZVR4bnMgPSBfLmdldCh0eG5zUmVzdWx0LCAnQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLkZ1dHVyZVRyYW5zYWN0aW9uc0Jsb2NrLkZ1dHVyZVRyYW5zYWN0aW9uRW50cnknKSBhcyBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgY29uc3QgcGVuZGluZ1R4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHJhd0Z1dHVyZVR4bnMsIFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyk7XG5cbiAgY29uc3QgYWNjb3VudERhdGEgPSB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50czogW3tcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICBiYWxhbmNlOiB0eG5zUmVzdWx0LkN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucy5DdXJyZW50QWNjb3VudEluZm8uQWNjb3VudEJhbGFuY2UsXG4gICAgICB0eG5zOiBbLi4uY29tcGxldGVkVHhucywgLi4ucGVuZGluZ1R4bnNdLFxuICAgIH1dLFxuICB9O1xuXG4gIHJldHVybiBhY2NvdW50RGF0YTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVPckVycm9yTGFiZWwocGFnZTogUGFnZSkge1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjZ2VuZXJhbC1lcnJvcicsIGZhbHNlLCAxMDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9yZXRhaWwvIy9NWV9BQ0NPVU5UX0hPTUVQQUdFYF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9jb3JlL3RlbXBsYXRlcy9sb2JieS9tYXN0ZXJQYWdlLmh0bWwjL0xPR0lOX1BBR0VgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW2Ake0JBU0VfVVJMfS9hcG9sbG8vY29yZS90ZW1wbGF0ZXMvbG9iYnkvbWFzdGVyUGFnZS5odG1sIy9QV0RfUkVORVdgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdHpJZCcsIHZhbHVlOiBjcmVkZW50aWFscy5pZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjdHpQYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjYWlkbnVtJywgdmFsdWU6IGNyZWRlbnRpYWxzLm51bSB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBpZDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBudW06IHN0cmluZyB9O1xuXG5jbGFzcyBEaXNjb3VudFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0JBU0VfVVJMfS9sb2dpbi8jL0xPR0lOX1BBR0VgLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjdHpJZCcpLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJy5zZW5kQnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IG5hdmlnYXRlT3JFcnJvckxhYmVsKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICByZXR1cm4gZmV0Y2hBY2NvdW50RGF0YSh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGlzY291bnRTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFHQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQTZDLFNBQUFELHVCQUFBUyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRzdDLE1BQU1HLFFBQVEsR0FBRyw4QkFBOEI7QUFDL0MsTUFBTUMsV0FBVyxHQUFHLFVBQVU7QUErQjlCLFNBQVNDLG1CQUFtQkEsQ0FBQ0MsSUFBMEIsRUFBRUMsU0FBOEIsRUFBaUI7RUFDdEcsSUFBSSxDQUFDRCxJQUFJLEVBQUU7SUFDVCxPQUFPLEVBQUU7RUFDWDtFQUNBLE9BQU9BLElBQUksQ0FBQ0UsR0FBRyxDQUFFQyxHQUFHLElBQUs7SUFDdkIsT0FBTztNQUNMQyxJQUFJLEVBQUVDLDhCQUFnQixDQUFDQyxNQUFNO01BQzdCQyxVQUFVLEVBQUVKLEdBQUcsQ0FBQ0ssZUFBZTtNQUMvQkMsSUFBSSxFQUFFLElBQUFDLGVBQU0sRUFBQ1AsR0FBRyxDQUFDUSxhQUFhLEVBQUViLFdBQVcsQ0FBQyxDQUFDYyxXQUFXLENBQUMsQ0FBQztNQUMxREMsYUFBYSxFQUFFLElBQUFILGVBQU0sRUFBQ1AsR0FBRyxDQUFDVyxTQUFTLEVBQUVoQixXQUFXLENBQUMsQ0FBQ2MsV0FBVyxDQUFDLENBQUM7TUFDL0RHLGNBQWMsRUFBRVosR0FBRyxDQUFDYSxlQUFlO01BQ25DQyxnQkFBZ0IsRUFBRSxLQUFLO01BQ3ZCQyxhQUFhLEVBQUVmLEdBQUcsQ0FBQ2EsZUFBZTtNQUNsQ0csV0FBVyxFQUFFaEIsR0FBRyxDQUFDaUIsNkJBQTZCO01BQzlDQyxNQUFNLEVBQUVwQjtJQUNWLENBQUM7RUFDSCxDQUFDLENBQUM7QUFDSjtBQUVBLGVBQWVxQixnQkFBZ0JBLENBQUNDLElBQVUsRUFBRUMsT0FBdUIsRUFBa0M7RUFDbkcsTUFBTUMsVUFBVSxHQUFHLEdBQUc1QixRQUFRLG1CQUFtQjtFQUVqRCxNQUFNNkIsY0FBYyxHQUFHLEdBQUdELFVBQVUsbUJBQW1CO0VBQ3ZELE1BQU1FLFdBQVcsR0FBRyxNQUFNLElBQUFDLHlCQUFrQixFQUFxQkwsSUFBSSxFQUFFRyxjQUFjLENBQUM7RUFFdEYsSUFBSSxDQUFDQyxXQUFXLEVBQUU7SUFDaEIsT0FBTztNQUNMRSxPQUFPLEVBQUUsS0FBSztNQUNkQyxTQUFTLEVBQUVDLHlCQUFpQixDQUFDQyxPQUFPO01BQ3BDQyxZQUFZLEVBQUU7SUFDaEIsQ0FBQztFQUNIO0VBQ0EsTUFBTUMsYUFBYSxHQUFHUCxXQUFXLENBQUNRLGdCQUFnQixDQUFDQyxvQkFBb0I7RUFFdkUsTUFBTUMsa0JBQWtCLEdBQUcsSUFBQTNCLGVBQU0sRUFBQyxDQUFDLENBQUM0QixRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztFQUN0RSxNQUFNQyxTQUFTLEdBQUdoQixPQUFPLENBQUNnQixTQUFTLElBQUlILGtCQUFrQixDQUFDSSxNQUFNLENBQUMsQ0FBQztFQUNsRSxNQUFNQyxXQUFXLEdBQUdoQyxlQUFNLENBQUNpQyxHQUFHLENBQUNOLGtCQUFrQixFQUFFLElBQUEzQixlQUFNLEVBQUM4QixTQUFTLENBQUMsQ0FBQztFQUVyRSxNQUFNSSxZQUFZLEdBQUdGLFdBQVcsQ0FBQ0csTUFBTSxDQUFDL0MsV0FBVyxDQUFDO0VBQ3BELE1BQU1nRCxPQUFPLEdBQUcsR0FBR3JCLFVBQVUscUJBQXFCUyxhQUFhLG1IQUFtSFUsWUFBWSxFQUFFO0VBQ2hNLE1BQU1HLFVBQVUsR0FBRyxNQUFNLElBQUFuQix5QkFBa0IsRUFBeUJMLElBQUksRUFBRXVCLE9BQU8sQ0FBQztFQUNsRixJQUFJLENBQUNDLFVBQVUsSUFBSUEsVUFBVSxDQUFDQyxLQUFLLElBQ2pDLENBQUNELFVBQVUsQ0FBQ0UsOEJBQThCLEVBQUU7SUFDNUMsT0FBTztNQUNMcEIsT0FBTyxFQUFFLEtBQUs7TUFDZEMsU0FBUyxFQUFFQyx5QkFBaUIsQ0FBQ0MsT0FBTztNQUNwQ0MsWUFBWSxFQUFFYyxVQUFVLElBQUlBLFVBQVUsQ0FBQ0MsS0FBSyxHQUFHRCxVQUFVLENBQUNDLEtBQUssQ0FBQ0UsT0FBTyxHQUFHO0lBQzVFLENBQUM7RUFDSDtFQUVBLE1BQU1DLGFBQWEsR0FBR3BELG1CQUFtQixDQUN2Q2dELFVBQVUsQ0FBQ0UsOEJBQThCLENBQUNHLGNBQWMsRUFDeERDLGlDQUFtQixDQUFDQyxTQUN0QixDQUFDO0VBQ0QsTUFBTUMsYUFBYSxHQUFHQyxlQUFDLENBQUNDLEdBQUcsQ0FBQ1YsVUFBVSxFQUFFLCtFQUErRSxDQUF5QjtFQUNoSixNQUFNVyxXQUFXLEdBQUczRCxtQkFBbUIsQ0FBQ3dELGFBQWEsRUFBRUYsaUNBQW1CLENBQUNNLE9BQU8sQ0FBQztFQUVuRixNQUFNQyxXQUFXLEdBQUc7SUFDbEIvQixPQUFPLEVBQUUsSUFBSTtJQUNiZ0MsUUFBUSxFQUFFLENBQUM7TUFDVDNCLGFBQWE7TUFDYjRCLE9BQU8sRUFBRWYsVUFBVSxDQUFDRSw4QkFBOEIsQ0FBQ2Msa0JBQWtCLENBQUNDLGNBQWM7TUFDcEZoRSxJQUFJLEVBQUUsQ0FBQyxHQUFHbUQsYUFBYSxFQUFFLEdBQUdPLFdBQVc7SUFDekMsQ0FBQztFQUNILENBQUM7RUFFRCxPQUFPRSxXQUFXO0FBQ3BCO0FBRUEsZUFBZUssb0JBQW9CQSxDQUFDMUMsSUFBVSxFQUFFO0VBQzlDLElBQUk7SUFDRixNQUFNLElBQUEyQyw2QkFBaUIsRUFBQzNDLElBQUksQ0FBQztFQUMvQixDQUFDLENBQUMsT0FBTzdCLENBQUMsRUFBRTtJQUNWLE1BQU0sSUFBQXlFLDJDQUFxQixFQUFDNUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7RUFDakU7QUFDRjtBQUVBLFNBQVM2Qyx1QkFBdUJBLENBQUEsRUFBeUI7RUFDdkQsTUFBTUMsSUFBMEIsR0FBRyxDQUFDLENBQUM7RUFDckNBLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHMUUsUUFBUSxzQ0FBc0MsQ0FBQztFQUNoRndFLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0UsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHM0UsUUFBUSwwREFBMEQsQ0FBQztFQUM1R3dFLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0csY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHNUUsUUFBUSx5REFBeUQsQ0FBQztFQUMxRyxPQUFPd0UsSUFBSTtBQUNiO0FBRUEsU0FBU0ssaUJBQWlCQSxDQUFDQyxXQUF1QyxFQUFFO0VBQ2xFLE9BQU8sQ0FDTDtJQUFFQyxRQUFRLEVBQUUsT0FBTztJQUFFQyxLQUFLLEVBQUVGLFdBQVcsQ0FBQ0c7RUFBRyxDQUFDLEVBQzVDO0lBQUVGLFFBQVEsRUFBRSxhQUFhO0lBQUVDLEtBQUssRUFBRUYsV0FBVyxDQUFDSTtFQUFTLENBQUMsRUFDeEQ7SUFBRUgsUUFBUSxFQUFFLFNBQVM7SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNLO0VBQUksQ0FBQyxDQUNoRDtBQUNIO0FBSUEsTUFBTUMsZUFBZSxTQUFTQyw4Q0FBc0IsQ0FBNkI7RUFDL0VDLGVBQWVBLENBQUNSLFdBQXVDLEVBQUU7SUFDdkQsT0FBTztNQUNMUyxRQUFRLEVBQUUsR0FBR3ZGLFFBQVEscUJBQXFCO01BQzFDd0YsY0FBYyxFQUFFLE1BQUFBLENBQUEsS0FBWSxJQUFBbEIsMkNBQXFCLEVBQUMsSUFBSSxDQUFDNUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztNQUNyRStELE1BQU0sRUFBRVosaUJBQWlCLENBQUNDLFdBQVcsQ0FBQztNQUN0Q1ksb0JBQW9CLEVBQUUsVUFBVTtNQUNoQ0MsVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWXZCLG9CQUFvQixDQUFDLElBQUksQ0FBQzFDLElBQUksQ0FBQztNQUN2RGtFLGVBQWUsRUFBRXJCLHVCQUF1QixDQUFDO0lBQzNDLENBQUM7RUFDSDtFQUVBLE1BQU1zQixTQUFTQSxDQUFBLEVBQUc7SUFDaEIsT0FBT3BFLGdCQUFnQixDQUFDLElBQUksQ0FBQ0MsSUFBSSxFQUFFLElBQUksQ0FBQ0MsT0FBTyxDQUFDO0VBQ2xEO0FBQ0Y7QUFBQyxJQUFBbUUsUUFBQSxHQUFBQyxPQUFBLENBQUFoRyxPQUFBLEdBRWNxRixlQUFlIiwiaWdub3JlTGlzdCI6W119
|
|
111
|
+
exports.default = DiscountScraper;
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvZGlzY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBdUI7QUFDdkIsb0RBQTRCO0FBRTVCLDRFQUF5RTtBQUN6RSw0Q0FBc0Q7QUFDdEQsc0RBQTBEO0FBQzFELGtEQUEwRjtBQUMxRiwyRUFBOEc7QUFDOUcscUNBQTZDO0FBRzdDLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDO0FBQ2hELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQztBQStCL0IsU0FBUyxtQkFBbUIsQ0FBQyxJQUEwQixFQUFFLFNBQThCO0lBQ3JGLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDVCxPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3BCLE9BQU87WUFDTCxJQUFJLEVBQUUsK0JBQWdCLENBQUMsTUFBTTtZQUM3QixVQUFVLEVBQUUsR0FBRyxDQUFDLGVBQWU7WUFDL0IsSUFBSSxFQUFFLElBQUEsZ0JBQU0sRUFBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUMxRCxhQUFhLEVBQUUsSUFBQSxnQkFBTSxFQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQy9ELGNBQWMsRUFBRSxHQUFHLENBQUMsZUFBZTtZQUNuQyxnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLGFBQWEsRUFBRSxHQUFHLENBQUMsZUFBZTtZQUNsQyxXQUFXLEVBQUUsR0FBRyxDQUFDLDZCQUE2QjtZQUM5QyxNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLGdCQUFnQixDQUFDLElBQVUsRUFBRSxPQUF1QjtJQUNqRSxNQUFNLFVBQVUsR0FBRyxH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RUQsa0JBQWUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyB3YWl0VW50aWxFbGVtZW50Rm91bmQgfSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBmZXRjaEdldFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vc3RhcnQudGVsZWJhbmsuY28uaWwnO1xuY29uc3QgREFURV9GT1JNQVQgPSAnWVlZWU1NREQnO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgT3BlcmF0aW9uTnVtYmVyOiBudW1iZXI7XG4gIE9wZXJhdGlvbkRhdGU6IHN0cmluZztcbiAgVmFsdWVEYXRlOiBzdHJpbmc7XG4gIE9wZXJhdGlvbkFtb3VudDogbnVtYmVyO1xuICBPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ3VycmVudEFjY291bnRJbmZvIHtcbiAgQWNjb3VudEJhbGFuY2U6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50RGF0YSB7XG4gIFVzZXJBY2NvdW50c0RhdGE6IHtcbiAgICBEZWZhdWx0QWNjb3VudE51bWJlcjogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uRGF0YSB7XG4gIEVycm9yPzogeyBNc2dUZXh0OiBzdHJpbmcgfTtcbiAgQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zPzoge1xuICAgIE9wZXJhdGlvbkVudHJ5OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICBDdXJyZW50QWNjb3VudEluZm86IEN1cnJlbnRBY2NvdW50SW5mbztcbiAgICBGdXR1cmVUcmFuc2FjdGlvbnNCbG9jazoge1xuICAgICAgRnV0dXJlVHJhbnNhY3Rpb25FbnRyeTogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgdHhuU3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzKTogVHJhbnNhY3Rpb25bXSB7XG4gIGlmICghdHhucykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gdHhucy5tYXAodHhuID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4uT3BlcmF0aW9uTnVtYmVyLFxuICAgICAgZGF0ZTogbW9tZW50KHR4bi5PcGVyYXRpb25EYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudCh0eG4uVmFsdWVEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiB0eG4uT3BlcmF0aW9uQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogJ0lMUycsXG4gICAgICBjaGFyZ2VkQW1vdW50OiB0eG4uT3BlcmF0aW9uQW1vdW50LFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5PcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheSxcbiAgICAgIHN0YXR1czogdHhuU3RhdHVzLFxuICAgIH07XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnREYXRhKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgY29uc3QgYXBpU2l0ZVVybCA9IGAke0JBU0VfVVJMfS9UaXRhbi9nYXRld2F5QVBJYDtcblxuICBjb25zdCBhY2NvdW50RGF0YVVybCA9IGAke2FwaVNpdGVVcmx9L3VzZXJBY2NvdW50c0RhdGFgO1xuICBjb25zdCBhY2NvdW50SW5mbyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkQWNjb3VudERhdGE+KHBhZ2UsIGFjY291bnREYXRhVXJsKTtcblxuICBpZiAoIWFjY291bnRJbmZvKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmljLFxuICAgICAgZXJyb3JNZXNzYWdlOiAnZmFpbGVkIHRvIGdldCBhY2NvdW50IGRhdGEnLFxuICAgIH07XG4gIH1cbiAgY29uc3QgYWNjb3VudE51bWJlciA9IGFjY291bnRJbmZvLlVzZXJBY2NvdW50c0RhdGEuRGVmYXVsdEFjY291bnROdW1iZXI7XG5cbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDIsICdkYXknKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgY29uc3Qgc3RhcnREYXRlU3RyID0gc3RhcnRNb21lbnQuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgY29uc3QgdHhuc1VybCA9IGAke2FwaVNpdGVVcmx9L2xhc3RUcmFuc2FjdGlvbnMvJHthY2NvdW50TnVtYmVyfS9EYXRlP0lzQ2F0ZWdvcnlEZXNjQ29kZT1UcnVlJklzVHJhbnNhY3Rpb25EZXRhaWxzPVRydWUmSXNFdmVudE5hbWVzPVRydWUmSXNGdXR1cmVUcmFuc2FjdGlvbkZsYWc9VHJ1ZSZGcm9tRGF0ZT0ke3N0YXJ0RGF0ZVN0cn1gO1xuICBjb25zdCB0eG5zUmVzdWx0ID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbkRhdGE+KHBhZ2UsIHR4bnNVcmwpO1xuICBpZiAoIXR4bnNSZXN1bHQgfHwgdHhuc1Jlc3VsdC5FcnJvciB8fCAhdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICBlcnJvck1lc3NhZ2U6IHR4bnNSZXN1bHQgJiYgdHhuc1Jlc3VsdC5FcnJvciA/IHR4bnNSZXN1bHQuRXJyb3IuTXNnVGV4dCA6ICd1bmtub3duIGVycm9yJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgY29tcGxldGVkVHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gICAgdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuT3BlcmF0aW9uRW50cnksXG4gICAgVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICk7XG4gIGNvbnN0IHJhd0Z1dHVyZVR4bnMgPSBfLmdldChcbiAgICB0eG5zUmVzdWx0LFxuICAgICdDdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2suRnV0dXJlVHJhbnNhY3Rpb25FbnRyeScsXG4gICkgYXMgU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIGNvbnN0IHBlbmRpbmdUeG5zID0gY29udmVydFRyYW5zYWN0aW9ucyhyYXdGdXR1cmVUeG5zLCBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcpO1xuXG4gIGNvbnN0IGFjY291bnREYXRhID0ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgYWNjb3VudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgICAgYmFsYW5jZTogdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuQ3VycmVudEFjY291bnRJbmZvLkFjY291bnRCYWxhbmNlLFxuICAgICAgICB0eG5zOiBbLi4uY29tcGxldGVkVHhucywgLi4ucGVuZGluZ1R4bnNdLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIHJldHVybiBhY2NvdW50RGF0YTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVPckVycm9yTGFiZWwocGFnZTogUGFnZSkge1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjZ2VuZXJhbC1lcnJvcicsIGZhbHNlLCAxMDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9yZXRhaWwvIy9NWV9BQ0NPVU5UX0hPTUVQQUdFYF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9jb3JlL3RlbXBsYXRlcy9sb2JieS9tYXN0ZXJQYWdlLmh0bWwjL0xPR0lOX1BBR0VgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW2Ake0JBU0VfVVJMfS9hcG9sbG8vY29yZS90ZW1wbGF0ZXMvbG9iYnkvbWFzdGVyUGFnZS5odG1sIy9QV0RfUkVORVdgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdHpJZCcsIHZhbHVlOiBjcmVkZW50aWFscy5pZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjdHpQYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjYWlkbnVtJywgdmFsdWU6IGNyZWRlbnRpYWxzLm51bSB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBudW06IHN0cmluZyB9O1xuXG5jbGFzcyBEaXNjb3VudFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0JBU0VfVVJMfS9sb2dpbi8jL0xPR0lOX1BBR0VgLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjdHpJZCcpLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJy5zZW5kQnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IG5hdmlnYXRlT3JFcnJvckxhYmVsKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICByZXR1cm4gZmV0Y2hBY2NvdW50RGF0YSh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGlzY291bnRTY3JhcGVyO1xuIl19
|
package/lib/scrapers/errors.js
CHANGED
|
@@ -1,32 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
ScraperErrorTypes["AccountBlocked"] = "ACCOUNT_BLOCKED";
|
|
15
|
-
ScraperErrorTypes["Generic"] = "GENERIC";
|
|
16
|
-
ScraperErrorTypes["General"] = "GENERAL_ERROR";
|
|
17
|
-
return ScraperErrorTypes;
|
|
18
|
-
}({});
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGenericError = exports.createTimeoutError = exports.ScraperErrorTypes = void 0;
|
|
4
|
+
var ScraperErrorTypes;
|
|
5
|
+
(function (ScraperErrorTypes) {
|
|
6
|
+
ScraperErrorTypes["TwoFactorRetrieverMissing"] = "TWO_FACTOR_RETRIEVER_MISSING";
|
|
7
|
+
ScraperErrorTypes["InvalidPassword"] = "INVALID_PASSWORD";
|
|
8
|
+
ScraperErrorTypes["ChangePassword"] = "CHANGE_PASSWORD";
|
|
9
|
+
ScraperErrorTypes["Timeout"] = "TIMEOUT";
|
|
10
|
+
ScraperErrorTypes["AccountBlocked"] = "ACCOUNT_BLOCKED";
|
|
11
|
+
ScraperErrorTypes["Generic"] = "GENERIC";
|
|
12
|
+
ScraperErrorTypes["General"] = "GENERAL_ERROR";
|
|
13
|
+
})(ScraperErrorTypes = exports.ScraperErrorTypes || (exports.ScraperErrorTypes = {}));
|
|
19
14
|
function createErrorResult(errorType, errorMessage) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
return {
|
|
16
|
+
success: false,
|
|
17
|
+
errorType,
|
|
18
|
+
errorMessage,
|
|
19
|
+
};
|
|
25
20
|
}
|
|
26
21
|
function createTimeoutError(errorMessage) {
|
|
27
|
-
|
|
22
|
+
return createErrorResult(ScraperErrorTypes.Timeout, errorMessage);
|
|
28
23
|
}
|
|
24
|
+
exports.createTimeoutError = createTimeoutError;
|
|
29
25
|
function createGenericError(errorMessage) {
|
|
30
|
-
|
|
26
|
+
return createErrorResult(ScraperErrorTypes.Generic, errorMessage);
|
|
31
27
|
}
|
|
32
|
-
|
|
28
|
+
exports.createGenericError = createGenericError;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLGlCQVFYO0FBUkQsV0FBWSxpQkFBaUI7SUFDM0IsK0VBQTBELENBQUE7SUFDMUQseURBQW9DLENBQUE7SUFDcEMsdURBQWtDLENBQUE7SUFDbEMsd0NBQW1CLENBQUE7SUFDbkIsdURBQWtDLENBQUE7SUFDbEMsd0NBQW1CLENBQUE7SUFDbkIsOENBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVJXLGlCQUFpQixHQUFqQix5QkFBaUIsS0FBakIseUJBQWlCLFFBUTVCO0FBUUQsU0FBUyxpQkFBaUIsQ0FBQyxTQUE0QixFQUFFLFlBQW9CO0lBQzNFLE9BQU87UUFDTCxPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVM7UUFDVCxZQUFZO0tBQ2IsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxZQUFvQjtJQUNyRCxPQUFPLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRkQsZ0RBRUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxZQUFvQjtJQUNyRCxPQUFPLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRkQsZ0RBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTY3JhcGVyRXJyb3JUeXBlcyB7XG4gIFR3b0ZhY3RvclJldHJpZXZlck1pc3NpbmcgPSAnVFdPX0ZBQ1RPUl9SRVRSSUVWRVJfTUlTU0lORycsXG4gIEludmFsaWRQYXNzd29yZCA9ICdJTlZBTElEX1BBU1NXT1JEJyxcbiAgQ2hhbmdlUGFzc3dvcmQgPSAnQ0hBTkdFX1BBU1NXT1JEJyxcbiAgVGltZW91dCA9ICdUSU1FT1VUJyxcbiAgQWNjb3VudEJsb2NrZWQgPSAnQUNDT1VOVF9CTE9DS0VEJyxcbiAgR2VuZXJpYyA9ICdHRU5FUklDJyxcbiAgR2VuZXJhbCA9ICdHRU5FUkFMX0VSUk9SJyxcbn1cblxuZXhwb3J0IHR5cGUgRXJyb3JSZXN1bHQgPSB7XG4gIHN1Y2Nlc3M6IGZhbHNlO1xuICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yUmVzdWx0KGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMsIGVycm9yTWVzc2FnZTogc3RyaW5nKTogRXJyb3JSZXN1bHQge1xuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yVHlwZSxcbiAgICBlcnJvck1lc3NhZ2UsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUaW1lb3V0RXJyb3IoZXJyb3JNZXNzYWdlOiBzdHJpbmcpOiBFcnJvclJlc3VsdCB7XG4gIHJldHVybiBjcmVhdGVFcnJvclJlc3VsdChTY3JhcGVyRXJyb3JUeXBlcy5UaW1lb3V0LCBlcnJvck1lc3NhZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR2VuZXJpY0Vycm9yKGVycm9yTWVzc2FnZTogc3RyaW5nKTogRXJyb3JSZXN1bHQge1xuICByZXR1cm4gY3JlYXRlRXJyb3JSZXN1bHQoU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYywgZXJyb3JNZXNzYWdlKTtcbn1cbiJdfQ==
|
package/lib/scrapers/factory.js
CHANGED
|
@@ -1,70 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var _yahav = _interopRequireDefault(require("./yahav"));
|
|
27
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assertNever_1 = require("../assertNever");
|
|
7
|
+
const definitions_1 = require("../definitions");
|
|
8
|
+
const amex_1 = __importDefault(require("./amex"));
|
|
9
|
+
const behatsdaa_1 = __importDefault(require("./behatsdaa"));
|
|
10
|
+
const beinleumi_1 = __importDefault(require("./beinleumi"));
|
|
11
|
+
const beyahad_bishvilha_1 = __importDefault(require("./beyahad-bishvilha"));
|
|
12
|
+
const discount_1 = __importDefault(require("./discount"));
|
|
13
|
+
const hapoalim_1 = __importDefault(require("./hapoalim"));
|
|
14
|
+
const isracard_1 = __importDefault(require("./isracard"));
|
|
15
|
+
const leumi_1 = __importDefault(require("./leumi"));
|
|
16
|
+
const massad_1 = __importDefault(require("./massad"));
|
|
17
|
+
const max_1 = __importDefault(require("./max"));
|
|
18
|
+
const mercantile_1 = __importDefault(require("./mercantile"));
|
|
19
|
+
const mizrahi_1 = __importDefault(require("./mizrahi"));
|
|
20
|
+
const one_zero_1 = __importDefault(require("./one-zero"));
|
|
21
|
+
const otsar_hahayal_1 = __importDefault(require("./otsar-hahayal"));
|
|
22
|
+
const pagi_1 = __importDefault(require("./pagi"));
|
|
23
|
+
const union_bank_1 = __importDefault(require("./union-bank"));
|
|
24
|
+
const visa_cal_1 = __importDefault(require("./visa-cal"));
|
|
25
|
+
const yahav_1 = __importDefault(require("./yahav"));
|
|
28
26
|
function createScraper(options) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
27
|
+
switch (options.companyId) {
|
|
28
|
+
case definitions_1.CompanyTypes.hapoalim:
|
|
29
|
+
return new hapoalim_1.default(options);
|
|
30
|
+
case definitions_1.CompanyTypes.leumi:
|
|
31
|
+
return new leumi_1.default(options);
|
|
32
|
+
case definitions_1.CompanyTypes.beyahadBishvilha:
|
|
33
|
+
return new beyahad_bishvilha_1.default(options);
|
|
34
|
+
case definitions_1.CompanyTypes.mizrahi:
|
|
35
|
+
return new mizrahi_1.default(options);
|
|
36
|
+
case definitions_1.CompanyTypes.discount:
|
|
37
|
+
return new discount_1.default(options);
|
|
38
|
+
case definitions_1.CompanyTypes.mercantile:
|
|
39
|
+
return new mercantile_1.default(options);
|
|
40
|
+
case definitions_1.CompanyTypes.otsarHahayal:
|
|
41
|
+
return new otsar_hahayal_1.default(options);
|
|
42
|
+
case definitions_1.CompanyTypes.visaCal:
|
|
43
|
+
return new visa_cal_1.default(options);
|
|
44
|
+
case definitions_1.CompanyTypes.max:
|
|
45
|
+
return new max_1.default(options);
|
|
46
|
+
case definitions_1.CompanyTypes.isracard:
|
|
47
|
+
return new isracard_1.default(options);
|
|
48
|
+
case definitions_1.CompanyTypes.amex:
|
|
49
|
+
return new amex_1.default(options);
|
|
50
|
+
case definitions_1.CompanyTypes.union:
|
|
51
|
+
return new union_bank_1.default(options);
|
|
52
|
+
case definitions_1.CompanyTypes.beinleumi:
|
|
53
|
+
return new beinleumi_1.default(options);
|
|
54
|
+
case definitions_1.CompanyTypes.massad:
|
|
55
|
+
return new massad_1.default(options);
|
|
56
|
+
case definitions_1.CompanyTypes.yahav:
|
|
57
|
+
return new yahav_1.default(options);
|
|
58
|
+
case definitions_1.CompanyTypes.oneZero:
|
|
59
|
+
return new one_zero_1.default(options);
|
|
60
|
+
case definitions_1.CompanyTypes.behatsdaa:
|
|
61
|
+
return new behatsdaa_1.default(options);
|
|
62
|
+
case definitions_1.CompanyTypes.pagi:
|
|
63
|
+
return new pagi_1.default(options);
|
|
64
|
+
default:
|
|
65
|
+
return (0, assertNever_1.assertNever)(options.companyId, `unknown company id ${options.companyId}`);
|
|
66
|
+
}
|
|
69
67
|
}
|
|
70
|
-
|
|
68
|
+
exports.default = createScraper;
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0RBQTZDO0FBQzdDLGdEQUE4QztBQUM5QyxrREFBaUM7QUFDakMsNERBQTJDO0FBQzNDLDREQUEyQztBQUMzQyw0RUFBMEQ7QUFDMUQsMERBQXlDO0FBQ3pDLDBEQUF5QztBQUV6QywwREFBeUM7QUFDekMsb0RBQW1DO0FBQ25DLHNEQUFxQztBQUNyQyxnREFBK0I7QUFDL0IsOERBQTZDO0FBQzdDLHdEQUF1QztBQUN2QywwREFBd0M7QUFDeEMsb0VBQWtEO0FBQ2xELGtEQUFpQztBQUNqQyw4REFBNEM7QUFDNUMsMERBQXdDO0FBQ3hDLG9EQUFtQztBQUVuQyxTQUF3QixhQUFhLENBQUMsT0FBdUI7SUFDM0QsUUFBUSxPQUFPLENBQUMsU0FBUyxFQUFFO1FBQ3pCLEtBQUssMEJBQVksQ0FBQyxRQUFRO1lBQ3hCLE9BQU8sSUFBSSxrQkFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLEtBQUssMEJBQVksQ0FBQyxLQUFLO1lBQ3JCLE9BQU8sSUFBSSxlQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsS0FBSywwQkFBWSxDQUFDLGdCQUFnQjtZQUNoQyxPQUFPLElBQUksMkJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsS0FBSywwQkFBWSxDQUFDLE9BQU87WUFDdkIsT0FBTyxJQUFJLGlCQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsS0FBSywwQkFBWSxDQUFDLFFBQVE7WUFDeEIsT0FBTyxJQUFJLGtCQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsS0FBSywwQkFBWSxDQUFDLFVBQVU7WUFDMUIsT0FBTyxJQUFJLG9CQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLEtBQUssMEJBQVksQ0FBQyxZQUFZO1lBQzVCLE9BQU8sSUFBSSx1QkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxLQUFLLDBCQUFZLENBQUMsT0FBTztZQUN2QixPQUFPLElBQUksa0JBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxLQUFLLDBCQUFZLENBQUMsR0FBRztZQUNuQixPQUFPLElBQUksYUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLEtBQUssMEJBQVksQ0FBQyxRQUFRO1lBQ3hCLE9BQU8sSUFBSSxrQkFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLEtBQUssMEJBQVksQ0FBQyxJQUFJO1lBQ3BCLE9BQU8sSUFBSSxjQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsS0FBSywwQkFBWSxDQUFDLEtBQUs7WUFDckIsT0FBTyxJQUFJLG9CQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssMEJBQVksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sSUFBSSxtQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxLQUFLLDBCQUFZLENBQUMsTUFBTTtZQUN0QixPQUFPLElBQUksZ0JBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxLQUFLLDBCQUFZLENBQUMsS0FBSztZQUNyQixPQUFPLElBQUksZUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLEtBQUssMEJBQVksQ0FBQyxPQUFPO1lBQ3ZCLE9BQU8sSUFBSSxrQkFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLEtBQUssMEJBQVksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sSUFBSSxtQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxLQUFLLDBCQUFZLENBQUMsSUFBSTtZQUNwQixPQUFPLElBQUksY0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDO1lBQ0UsT0FBTyxJQUFBLHlCQUFXLEVBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDcEY7QUFDSCxDQUFDO0FBekNELGdDQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnLi4vYXNzZXJ0TmV2ZXInO1xuaW1wb3J0IHsgQ29tcGFueVR5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IEFtZXhTY3JhcGVyIGZyb20gJy4vYW1leCc7XG5pbXBvcnQgQmVoYXRzZGFhU2NyYXBlciBmcm9tICcuL2JlaGF0c2RhYSc7XG5pbXBvcnQgQmVpbmxldW1pU2NyYXBlciBmcm9tICcuL2JlaW5sZXVtaSc7XG5pbXBvcnQgQmV5YWhhZEJpc2h2aWxoYVNjcmFwZXIgZnJvbSAnLi9iZXlhaGFkLWJpc2h2aWxoYSc7XG5pbXBvcnQgRGlzY291bnRTY3JhcGVyIGZyb20gJy4vZGlzY291bnQnO1xuaW1wb3J0IEhhcG9hbGltU2NyYXBlciBmcm9tICcuL2hhcG9hbGltJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlciwgdHlwZSBTY3JhcGVyQ3JlZGVudGlhbHMsIHR5cGUgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgSXNyYWNhcmRTY3JhcGVyIGZyb20gJy4vaXNyYWNhcmQnO1xuaW1wb3J0IExldW1pU2NyYXBlciBmcm9tICcuL2xldW1pJztcbmltcG9ydCBNYXNzYWRTY3JhcGVyIGZyb20gJy4vbWFzc2FkJztcbmltcG9ydCBNYXhTY3JhcGVyIGZyb20gJy4vbWF4JztcbmltcG9ydCBNZXJjYW50aWxlU2NyYXBlciBmcm9tICcuL21lcmNhbnRpbGUnO1xuaW1wb3J0IE1penJhaGlTY3JhcGVyIGZyb20gJy4vbWl6cmFoaSc7XG5pbXBvcnQgT25lWmVyb1NjcmFwZXIgZnJvbSAnLi9vbmUtemVybyc7XG5pbXBvcnQgT3RzYXJIYWhheWFsU2NyYXBlciBmcm9tICcuL290c2FyLWhhaGF5YWwnO1xuaW1wb3J0IFBhZ2lTY3JhcGVyIGZyb20gJy4vcGFnaSc7XG5pbXBvcnQgVW5pb25CYW5rU2NyYXBlciBmcm9tICcuL3VuaW9uLWJhbmsnO1xuaW1wb3J0IFZpc2FDYWxTY3JhcGVyIGZyb20gJy4vdmlzYS1jYWwnO1xuaW1wb3J0IFlhaGF2U2NyYXBlciBmcm9tICcuL3lhaGF2JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU2NyYXBlcihvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFNjcmFwZXI8U2NyYXBlckNyZWRlbnRpYWxzPiB7XG4gIHN3aXRjaCAob3B0aW9ucy5jb21wYW55SWQpIHtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy5oYXBvYWxpbTpcbiAgICAgIHJldHVybiBuZXcgSGFwb2FsaW1TY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLmxldW1pOlxuICAgICAgcmV0dXJuIG5ldyBMZXVtaVNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMuYmV5YWhhZEJpc2h2aWxoYTpcbiAgICAgIHJldHVybiBuZXcgQmV5YWhhZEJpc2h2aWxoYVNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMubWl6cmFoaTpcbiAgICAgIHJldHVybiBuZXcgTWl6cmFoaVNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMuZGlzY291bnQ6XG4gICAgICByZXR1cm4gbmV3IERpc2NvdW50U2NyYXBlcihvcHRpb25zKTtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy5tZXJjYW50aWxlOlxuICAgICAgcmV0dXJuIG5ldyBNZXJjYW50aWxlU2NyYXBlcihvcHRpb25zKTtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy5vdHNhckhhaGF5YWw6XG4gICAgICByZXR1cm4gbmV3IE90c2FySGFoYXlhbFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMudmlzYUNhbDpcbiAgICAgIHJldHVybiBuZXcgVmlzYUNhbFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMubWF4OlxuICAgICAgcmV0dXJuIG5ldyBNYXhTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLmlzcmFjYXJkOlxuICAgICAgcmV0dXJuIG5ldyBJc3JhY2FyZFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMuYW1leDpcbiAgICAgIHJldHVybiBuZXcgQW1leFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMudW5pb246XG4gICAgICByZXR1cm4gbmV3IFVuaW9uQmFua1NjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMuYmVpbmxldW1pOlxuICAgICAgcmV0dXJuIG5ldyBCZWlubGV1bWlTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLm1hc3NhZDpcbiAgICAgIHJldHVybiBuZXcgTWFzc2FkU2NyYXBlcihvcHRpb25zKTtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy55YWhhdjpcbiAgICAgIHJldHVybiBuZXcgWWFoYXZTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLm9uZVplcm86XG4gICAgICByZXR1cm4gbmV3IE9uZVplcm9TY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLmJlaGF0c2RhYTpcbiAgICAgIHJldHVybiBuZXcgQmVoYXRzZGFhU2NyYXBlcihvcHRpb25zKTtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy5wYWdpOlxuICAgICAgcmV0dXJuIG5ldyBQYWdpU2NyYXBlcihvcHRpb25zKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFzc2VydE5ldmVyKG9wdGlvbnMuY29tcGFueUlkLCBgdW5rbm93biBjb21wYW55IGlkICR7b3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cbn1cbiJdfQ==
|