israeli-bank-scrapers 6.1.1 → 6.1.3
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/lib/assertNever.js +7 -5
- package/lib/constants.js +16 -13
- package/lib/definitions.js +113 -109
- package/lib/helpers/browser.js +13 -9
- package/lib/helpers/dates.js +19 -18
- package/lib/helpers/debug.js +9 -9
- package/lib/helpers/elements-interactions.js +82 -78
- package/lib/helpers/fetch.js +85 -82
- package/lib/helpers/navigation.js +28 -24
- package/lib/helpers/storage.js +11 -10
- package/lib/helpers/transactions.js +32 -33
- package/lib/helpers/waiting.js +42 -45
- package/lib/index.js +82 -15
- package/lib/scrapers/amex.js +13 -11
- package/lib/scrapers/amex.test.d.ts +1 -0
- package/lib/scrapers/amex.test.js +49 -0
- package/lib/scrapers/base-beinleumi-group.d.ts +32 -0
- package/lib/scrapers/base-beinleumi-group.js +350 -234
- package/lib/scrapers/base-isracard-amex.js +273 -273
- package/lib/scrapers/base-scraper-with-browser.js +263 -241
- package/lib/scrapers/base-scraper-with-browser.test.d.ts +1 -0
- package/lib/scrapers/base-scraper-with-browser.test.js +53 -0
- package/lib/scrapers/base-scraper.js +82 -82
- package/lib/scrapers/behatsdaa.js +103 -98
- package/lib/scrapers/behatsdaa.test.d.ts +1 -0
- package/lib/scrapers/behatsdaa.test.js +46 -0
- package/lib/scrapers/beinleumi.js +13 -11
- package/lib/scrapers/beinleumi.test.d.ts +1 -0
- package/lib/scrapers/beinleumi.test.js +47 -0
- package/lib/scrapers/beyahad-bishvilha.js +132 -132
- package/lib/scrapers/beyahad-bishvilha.test.d.ts +1 -0
- package/lib/scrapers/beyahad-bishvilha.test.js +47 -0
- package/lib/scrapers/discount.js +101 -97
- package/lib/scrapers/discount.test.d.ts +1 -0
- package/lib/scrapers/discount.test.js +49 -0
- package/lib/scrapers/errors.js +25 -22
- package/lib/scrapers/factory.js +67 -66
- package/lib/scrapers/factory.test.d.ts +1 -0
- package/lib/scrapers/factory.test.js +19 -0
- package/lib/scrapers/hapoalim.js +175 -162
- package/lib/scrapers/hapoalim.test.d.ts +1 -0
- package/lib/scrapers/hapoalim.test.js +47 -0
- package/lib/scrapers/interface.js +5 -2
- package/lib/scrapers/isracard.js +13 -11
- package/lib/scrapers/isracard.test.d.ts +1 -0
- package/lib/scrapers/isracard.test.js +49 -0
- package/lib/scrapers/leumi.js +170 -167
- package/lib/scrapers/leumi.test.d.ts +1 -0
- package/lib/scrapers/leumi.test.js +47 -0
- package/lib/scrapers/massad.js +13 -11
- package/lib/scrapers/max.js +261 -261
- package/lib/scrapers/max.test.d.ts +1 -0
- package/lib/scrapers/max.test.js +65 -0
- package/lib/scrapers/mercantile.js +16 -14
- package/lib/scrapers/mercantile.test.d.ts +1 -0
- package/lib/scrapers/mercantile.test.js +45 -0
- package/lib/scrapers/mizrahi.js +154 -158
- package/lib/scrapers/mizrahi.test.d.ts +1 -0
- package/lib/scrapers/mizrahi.test.js +53 -0
- package/lib/scrapers/one-zero-queries.js +7 -4
- package/lib/scrapers/one-zero.js +221 -176
- package/lib/scrapers/one-zero.test.d.ts +1 -0
- package/lib/scrapers/one-zero.test.js +51 -0
- package/lib/scrapers/otsar-hahayal.js +13 -11
- package/lib/scrapers/otsar-hahayal.test.d.ts +1 -0
- package/lib/scrapers/otsar-hahayal.test.js +47 -0
- package/lib/scrapers/pagi.js +13 -11
- package/lib/scrapers/pagi.test.d.ts +1 -0
- package/lib/scrapers/pagi.test.js +47 -0
- package/lib/scrapers/union-bank.js +173 -172
- package/lib/scrapers/union-bank.test.d.ts +1 -0
- package/lib/scrapers/union-bank.test.js +47 -0
- package/lib/scrapers/visa-cal.d.ts +2 -0
- package/lib/scrapers/visa-cal.js +263 -254
- package/lib/scrapers/visa-cal.test.d.ts +1 -0
- package/lib/scrapers/visa-cal.test.js +49 -0
- package/lib/scrapers/yahav.js +206 -190
- package/lib/scrapers/yahav.test.d.ts +1 -0
- package/lib/scrapers/yahav.test.js +49 -0
- package/lib/transactions.js +16 -13
- package/package.json +9 -4
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
3
6
|
exports.GET_MOVEMENTS = exports.GET_CUSTOMER = void 0;
|
|
4
|
-
exports.GET_CUSTOMER = `
|
|
7
|
+
const GET_CUSTOMER = exports.GET_CUSTOMER = `
|
|
5
8
|
query GetCustomer {
|
|
6
9
|
customer {
|
|
7
10
|
__typename
|
|
@@ -67,7 +70,7 @@ fragment Portfolio on Portfolio {
|
|
|
67
70
|
onboardingCompleted
|
|
68
71
|
}
|
|
69
72
|
`;
|
|
70
|
-
exports.GET_MOVEMENTS = `query GetMovements(
|
|
73
|
+
const GET_MOVEMENTS = exports.GET_MOVEMENTS = `query GetMovements(
|
|
71
74
|
$portfolioId: String!
|
|
72
75
|
$accountId: String!
|
|
73
76
|
$pagination: PaginationInput!
|
|
@@ -554,4 +557,4 @@ fragment MovementsFragment on Movements {
|
|
|
554
557
|
...PaginationFragment
|
|
555
558
|
}
|
|
556
559
|
}`;
|
|
557
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLXplcm8tcXVlcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vbmUtemVyby1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsWUFBWSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWlFM0IsQ0FBQztBQUVXLFFBQUEsYUFBYSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzZTNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgR0VUX0NVU1RPTUVSID0gYFxucXVlcnkgR2V0Q3VzdG9tZXIge1xuICBjdXN0b21lciB7XG4gICAgX190eXBlbmFtZVxuICAgIGN1c3RvbWVySWRcbiAgICB1c2VySWRcbiAgICBpZFR5cGVcbiAgICBpZE51bWJlclxuICAgIGhlYnJld0ZpcnN0TmFtZVxuICAgIGhlYnJld0xhc3ROYW1lXG4gICAgbGF0aW5GaXJzdE5hbWVcbiAgICBsYXRpbkxhc3ROYW1lXG4gICAgZGF0ZU9mQmlydGhcbiAgICBsYXN0TG9naW5EYXRlXG4gICAgdXNlckVtYWlsXG4gICAgZ2VuZGVyXG4gICAgcG9ydGZvbGlvUmVsYXRpb25zIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIGN1c3RvbWVySWRcbiAgICAgIGN1c3RvbWVyUm9sZVxuICAgICAgcG9ydGZvbGlvSWRcbiAgICAgIGluaXRpYXRvclxuICAgICAgcmVsYXRpb25Ub0luaXRpYXRvclxuICAgICAgc3RhdHVzXG4gICAgfVxuICAgIHBvcnRmb2xpb3Mge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uUG9ydGZvbGlvXG4gICAgfVxuICAgIHN0YXR1c1xuICB9XG59XG5mcmFnbWVudCBQb3J0Zm9saW8gb24gUG9ydGZvbGlvIHtcbiAgX190eXBlbmFtZVxuICBhY2NvdW50cyB7XG4gICAgX190eXBlbmFtZVxuICAgIGFjY291bnRJZFxuICAgIGFjY291bnRUeXBlXG4gICAgY2xvc2luZ0RhdGVcbiAgICBjdXJyZW5jeVxuICAgIG9wZW5pbmdEYXRlXG4gICAgc3RhdHVzXG4gICAgc3ViVHlwZVxuICB9XG4gIGFjdGl2YXRpb25EYXRlXG4gIGJhbmtcbiAgYmFzZUN1cnJlbmN5XG4gIGJyYW5jaFxuICBjbHViXG4gIGNsdWJEZXNjcmlwdGlvblxuICBpYmFuXG4gIGltYWdlVVJMXG4gIGlzSm9pbnRBY2NvdW50XG4gIHBhcnRuZXJOYW1lIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgcGFydG5lckZpcnN0TmFtZVxuICAgIHBhcnRuZXJMYXN0TmFtZVxuICB9XG4gIHBvcnRmb2xpb0lkXG4gIHBvcnRmb2xpb051bVxuICBwb3J0Zm9saW9UeXBlXG4gIHN0YXR1c1xuICBzdWJUeXBlXG4gIG9uYm9hcmRpbmdDb21wbGV0ZWRcbn1cbmA7XG5cbmV4cG9ydCBjb25zdCBHRVRfTU9WRU1FTlRTID0gYHF1ZXJ5IEdldE1vdmVtZW50cyhcbiAgJHBvcnRmb2xpb0lkOiBTdHJpbmchXG4gICRhY2NvdW50SWQ6IFN0cmluZyFcbiAgJHBhZ2luYXRpb246IFBhZ2luYXRpb25JbnB1dCFcbiAgJGxhbmd1YWdlOiBCZmZMYW5ndWFnZSFcbikge1xuICBtb3ZlbWVudHMoXG4gICAgcG9ydGZvbGlvSWQ6ICRwb3J0Zm9saW9JZFxuICAgIGFjY291bnRJZDogJGFjY291bnRJZFxuICAgIHBhZ2luYXRpb246ICRwYWdpbmF0aW9uXG4gICAgbGFuZ3VhZ2U6ICRsYW5ndWFnZVxuICApIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uTW92ZW1lbnRzRnJhZ21lbnRcbiAgfVxufVxuZnJhZ21lbnQgVHJhbnNhY3Rpb25JbnN0cnVtZW50QW1vdW50RnJhZ21lbnQgb24gVHJhbnNhY3Rpb25JbnN0cnVtZW50QW1vdW50IHtcbiAgX190eXBlbmFtZVxuICBpbnN0cnVtZW50QW1vdW50XG4gIGluc3RydW1lbnRTeW1ib2xcbiAgaW5zdHJ1bWVudFR5cGVcbn1cbmZyYWdtZW50IENvdW50ZXJQYXJ0eVJlZmVyZW5jZUZyYWdtZW50IG9uIENvdW50ZXJQYXJ0eVJlZmVyZW5jZSB7XG4gIF9fdHlwZW5hbWVcbiAgYmFua0lkXG4gIGJpY1xuICBicmFuY2hDb2RlXG4gIGlkXG4gIG5hbWVcbiAgdHlwZVxufVxuZnJhZ21lbnQgQmFzZVRyYW5zYWN0aW9uRnJhZ21lbnQgb24gQmFzZVRyYW5zYWN0aW9uIHtcbiAgX190eXBlbmFtZVxuICBhY2NvdW50SWRcbiAgYmV0d2Vlbk93bkFjY291bnRzXG4gIGJvb2tEYXRlXG4gIGNhbGN1bGF0ZWRTdGF0dXNcbiAgY2hhcmdlQW1vdW50IHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uVHJhbnNhY3Rpb25JbnN0cnVtZW50QW1vdW50RnJhZ21lbnRcbiAgfVxuICBjbGVhcmluZ1N5c3RlbVxuICBjb3VudGVyUGFydHkge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5Db3VudGVyUGFydHlSZWZlcmVuY2VGcmFnbWVudFxuICB9XG4gIGN1cnJlbnRQYXltZW50TnVtYmVyXG4gIGRpcmVjdGlvblxuICBkb21haW5UeXBlXG4gIGlzUmV2ZXJzYWxcbiAgbWV0aG9kXG4gIG9yaWdpbmFsQW1vdW50IHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uVHJhbnNhY3Rpb25JbnN0cnVtZW50QW1vdW50RnJhZ21lbnRcbiAgfVxuICBwb3J0Zm9saW9JZFxuICB0b3RhbFBheW1lbnRzQ291bnRcbiAgdHJhbnNhY3Rpb25JZFxuICB0cmFuc2FjdGlvblR5cGVcbiAgdmFsdWVEYXRlXG59XG5mcmFnbWVudCBDYXRlZ29yeUZyYWdtZW50IG9uIENhdGVnb3J5IHtcbiAgX190eXBlbmFtZVxuICBjYXRlZ29yeUlkXG4gIGRhdGFTb3VyY2VcbiAgc3ViQ2F0ZWdvcnlJZFxufVxuZnJhZ21lbnQgUmVjdXJyZW5jZUZyYWdtZW50IG9uIFJlY3VycmVuY2Uge1xuICBfX3R5cGVuYW1lXG4gIGRhdGFTb3VyY2VcbiAgaXNSZWN1cnJlbnRcbn1cbmZyYWdtZW50IFRyYW5zYWN0aW9uRW5yaWNobWVudEZyYWdtZW50IG9uIFRyYW5zYWN0aW9uRW5yaWNobWVudCB7XG4gIF9fdHlwZW5hbWVcbiAgY2F0ZWdvcmllcyB7XG4gICAgX190eXBlbmFtZVxuICAgIC4uLkNhdGVnb3J5RnJhZ21lbnRcbiAgfVxuICByZWN1cnJlbmNlcyB7XG4gICAgX190eXBlbmFtZVxuICAgIC4uLlJlY3VycmVuY2VGcmFnbWVudFxuICB9XG59XG5mcmFnbWVudCBUcmFuc2FjdGlvbkV2ZW50TWV0YWRhdGFGcmFnbWVudCBvbiBUcmFuc2FjdGlvbkV2ZW50TWV0YWRhdGEge1xuICBfX3R5cGVuYW1lXG4gIGNvcnJlbGF0aW9uSWRcbiAgcHJvY2Vzc2luZ09yZGVyXG59XG5mcmFnbWVudCBDb3VudGVyUGFydHlUcmFuc2ZlckRhdGEgb24gQ291bnRlclBhcnR5VHJhbnNmZXIge1xuICBfX3R5cGVuYW1lXG4gIGFjY291bnRJZFxuICBiYW5rX2lkXG4gIGJyYW5jaF9jb2RlXG4gIGNvdW50ZXJfcGFydHlfbmFtZVxufVxuZnJhZ21lbnQgQmFua1RyYW5zZmVyRGV0YWlsc0RhdGEgb24gQmFua1RyYW5zZmVyRGV0YWlscyB7XG4gIF9fdHlwZW5hbWVcbiAgLi4uIG9uIENhc2hCbG9ja1RyYW5zZmVyIHtcbiAgICBjb3VudGVyUGFydHkge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ291bnRlclBhcnR5VHJhbnNmZXJEYXRhXG4gICAgfVxuICAgIHRyYW5zZmVyRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gUlRHU1JldHVyblRyYW5zZmVyIHtcbiAgICB0cmFuc2ZlckRlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIFJUR1NUcmFuc2ZlciB7XG4gICAgdHJhbnNmZXJEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBTd2lmdFJldHVyblRyYW5zZmVyIHtcbiAgICB0cmFuc2ZlckNvbnZlcnNpb25SYXRlXG4gICAgdHJhbnNmZXJEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBTd2lmdFRyYW5zZmVyIHtcbiAgICB0cmFuc2ZlckNvbnZlcnNpb25SYXRlXG4gICAgdHJhbnNmZXJEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBUcmFuc2ZlciB7XG4gICAgY291bnRlclBhcnR5IHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNvdW50ZXJQYXJ0eVRyYW5zZmVyRGF0YVxuICAgIH1cbiAgICB0cmFuc2ZlckRlc2NyaXB0aW9uS2V5XG4gIH1cbn1cbmZyYWdtZW50IENhdGVnb3J5RGF0YSBvbiBDYXRlZ29yeSB7XG4gIF9fdHlwZW5hbWVcbiAgY2F0ZWdvcnlJZFxuICBkYXRhU291cmNlXG4gIHN1YkNhdGVnb3J5SWRcbn1cbmZyYWdtZW50IFJlY3VycmVuY2VEYXRhIG9uIFJlY3VycmVuY2Uge1xuICBfX3R5cGVuYW1lXG4gIGRhdGFTb3VyY2VcbiAgaXNSZWN1cnJlbnRcbn1cbmZyYWdtZW50IENhcmREZXRhaWxzRGF0YSBvbiBDYXJkRGV0YWlscyB7XG4gIF9fdHlwZW5hbWVcbiAgLi4uIG9uIENhcmRDaGFyZ2Uge1xuICAgIGJvb2tfZGF0ZVxuICAgIGNhcmREZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBDYXJkQ2hhcmdlRkNZIHtcbiAgICBib29rX2RhdGVcbiAgICBjYXJkQ29udmVyc2lvblJhdGVcbiAgICBjYXJkRGVzY3JpcHRpb25LZXlcbiAgICBjYXJkRkNZQW1vdW50XG4gICAgY2FyZEZDWUN1cnJlbmN5XG4gIH1cbiAgLi4uIG9uIENhcmRNb250aGx5U2V0dGxlbWVudCB7XG4gICAgY2FyZERlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIENhcmRSZWZ1bmQge1xuICAgIGNhcmREZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBDYXNoQmxvY2tDYXJkQ2hhcmdlIHtcbiAgICBjYXJkRGVzY3JpcHRpb25LZXlcbiAgfVxufVxuZnJhZ21lbnQgQ2FzaERldGFpbHNEYXRhIG9uIENhc2hEZXRhaWxzIHtcbiAgX190eXBlbmFtZVxuICAuLi4gb24gQ2FzaFdpdGhkcmF3YWwge1xuICAgIGNhc2hEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBDYXNoV2l0aGRyYXdhbEZDWSB7XG4gICAgRkNZQW1vdW50XG4gICAgRkNZQ3VycmVuY3lcbiAgICBjYXNoRGVzY3JpcHRpb25LZXlcbiAgICBjb252ZXJzaW9uUmF0ZVxuICB9XG59XG5mcmFnbWVudCBDaGVxdWVzRGV0YWlsc0RhdGEgb24gQ2hlcXVlc0RldGFpbHMge1xuICBfX3R5cGVuYW1lXG4gIC4uLiBvbiBDYXNoQmxvY2tDaGVxdWVEZXBvc2l0IHtcbiAgICBib29rRGF0ZVxuICAgIGNoZXF1ZXNEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBDaGVxdWVEZXBvc2l0IHtcbiAgICBib29rRGF0ZVxuICAgIGNoZXF1ZXNEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBDaGVxdWVSZXR1cm4ge1xuICAgIGJvb2tEYXRlXG4gICAgY2hlcXVlUmV0dXJuUmVhc29uXG4gICAgY2hlcXVlc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIENoZXF1ZVdpdGhkcmF3YWwge1xuICAgIGNoZXF1ZXNEZXNjcmlwdGlvbktleVxuICB9XG59XG5mcmFnbWVudCBEZWZhdWx0RGV0YWlsc0RhdGEgb24gRGVmYXVsdERldGFpbHMge1xuICBfX3R5cGVuYW1lXG4gIC4uLiBvbiBEZWZhdWx0V2l0aFRyYW5zYWN0aW9uIHtcbiAgICBkZWZhdWx0RGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gRGVmYXVsdFdpdGhvdXRUcmFuc2FjdGlvbiB7XG4gICAgY2F0ZWdvcmllcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5DYXRlZ29yeURhdGFcbiAgICB9XG4gICAgZGVmYXVsdERlc2NyaXB0aW9uS2V5XG4gIH1cbn1cbmZyYWdtZW50IEZlZURldGFpbHNEYXRhIG9uIEZlZURldGFpbHMge1xuICBfX3R5cGVuYW1lXG4gIC4uLiBvbiBHZW5lcmFsRmVlIHtcbiAgICBmZWVEZXNjcmlwdGlvbktleVxuICB9XG59XG5mcmFnbWVudCBMb2FuRGV0YWlsc0RhdGEgb24gTG9hbkRldGFpbHMge1xuICBfX3R5cGVuYW1lXG4gIC4uLiBvbiBGdWxsUHJlUGF5bWVudCB7XG4gICAgbG9hbkRlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIEluaXRpYXRlIHtcbiAgICBsb2FuRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gTW9udGhseVBheW1lbnQge1xuICAgIGxvYW5EZXNjcmlwdGlvbktleVxuICAgIGxvYW5QYXltZW50TnVtYmVyXG4gICAgbG9hblRvdGFsUGF5bWVudHNDb3VudFxuICB9XG4gIC4uLiBvbiBQYXJ0aWFsUHJlUGF5bWVudCB7XG4gICAgbG9hbkRlc2NyaXB0aW9uS2V5XG4gIH1cbn1cbmZyYWdtZW50IE1hbmRhdGVEZXRhaWxzRGF0YSBvbiBNYW5kYXRlRGV0YWlscyB7XG4gIF9fdHlwZW5hbWVcbiAgLi4uIG9uIE1hbmRhdGVQYXltZW50IHtcbiAgICBtYW5kYXRlRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gTWFuZGF0ZVJldHVyblBheW1lbnQge1xuICAgIG1hbmRhdGVEZXNjcmlwdGlvbktleVxuICB9XG59XG5mcmFnbWVudCBTYXZpbmdzRGV0YWlsc0RhdGEgb24gU2F2aW5nc0RldGFpbHMge1xuICBfX3R5cGVuYW1lXG4gIC4uLiBvbiBGdWxsU2F2aW5nc1dpdGhkcmF3YWwge1xuICAgIHNhdmluZ3NEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBNb250aGx5U2F2aW5nc0RlcG9zaXQge1xuICAgIHNhdmluZ3NEZXBvc2l0TnVtYmVyXG4gICAgc2F2aW5nc0Rlc2NyaXB0aW9uS2V5XG4gICAgc2F2aW5nc1RvdGFsRGVwb3NpdENvdW50XG4gIH1cbiAgLi4uIG9uIFBhcnRpYWxTYXZpbmdzV2l0aGRyYXdhbCB7XG4gICAgc2F2aW5nc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIFNhdmluZ3NDbG9zaW5nIHtcbiAgICBzYXZpbmdzRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gU2F2aW5nc0RlcG9zaXQge1xuICAgIHNhdmluZ3NEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBTYXZpbmdzSW50ZXJlc3Qge1xuICAgIHNhdmluZ3NEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBTYXZpbmdzUGVuYWx0eSB7XG4gICAgc2F2aW5nc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIFNhdmluZ3NUYXgge1xuICAgIHNhdmluZ3NEZXNjcmlwdGlvbktleVxuICB9XG59XG5mcmFnbWVudCBTdWJzY3JpcHRpb25EZXRhaWxzRGF0YSBvbiBTdWJzY3JpcHRpb25EZXRhaWxzIHtcbiAgX190eXBlbmFtZVxuICAuLi4gb24gU3Vic2NyaXB0aW9uUGF5bWVudCB7XG4gICAgc3Vic2NyaXB0aW9uRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gU3Vic2NyaXB0aW9uUmV0dXJuUGF5bWVudCB7XG4gICAgc3Vic2NyaXB0aW9uRGVzY3JpcHRpb25LZXlcbiAgfVxufVxuZnJhZ21lbnQgVHJhbnNhY3Rpb25zRGV0YWlsc0RhdGEgb24gVHJhbnNhY3Rpb25EZXRhaWxzIHtcbiAgX190eXBlbmFtZVxuICAuLi4gb24gQmFua1RyYW5zZmVyIHtcbiAgICBiYW5rX3RyYW5zZmVyX2RldGFpbHMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQmFua1RyYW5zZmVyRGV0YWlsc0RhdGFcbiAgICB9XG4gICAgYm9va19kYXRlXG4gICAgY2F0ZWdvcmllcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5DYXRlZ29yeURhdGFcbiAgICB9XG4gICAgcmVjdXJyZW5jZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uUmVjdXJyZW5jZURhdGFcbiAgICB9XG4gICAgdmFsdWVfZGF0ZVxuICB9XG4gIC4uLiBvbiBDYXJkIHtcbiAgICBjYXJkX2RldGFpbHMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2FyZERldGFpbHNEYXRhXG4gICAgfVxuICAgIGNhdGVnb3JpZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2F0ZWdvcnlEYXRhXG4gICAgfVxuICAgIHJlY3VycmVuY2VzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLlJlY3VycmVuY2VEYXRhXG4gICAgfVxuICAgIHZhbHVlX2RhdGVcbiAgfVxuICAuLi4gb24gQ2FzaCB7XG4gICAgY2FzaF9kZXRhaWxzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNhc2hEZXRhaWxzRGF0YVxuICAgIH1cbiAgICBjYXRlZ29yaWVzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNhdGVnb3J5RGF0YVxuICAgIH1cbiAgICByZWN1cnJlbmNlcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5SZWN1cnJlbmNlRGF0YVxuICAgIH1cbiAgICB2YWx1ZV9kYXRlXG4gIH1cbiAgLi4uIG9uIENoZXF1ZXMge1xuICAgIGNhdGVnb3JpZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2F0ZWdvcnlEYXRhXG4gICAgfVxuICAgIGNoZXF1ZXNEZXRhaWxzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNoZXF1ZXNEZXRhaWxzRGF0YVxuICAgIH1cbiAgICByZWN1cnJlbmNlcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5SZWN1cnJlbmNlRGF0YVxuICAgIH1cbiAgICB2YWx1ZURhdGVcbiAgICByZWZlcmVuY2VOdW1iZXJcbiAgICBmcm9udEltYWdlVXJsXG4gICAgYmFja0ltYWdlVXJsXG4gIH1cbiAgLi4uIG9uIERlZmF1bHQge1xuICAgIGRlZmF1bHRfZGV0YWlscyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5EZWZhdWx0RGV0YWlsc0RhdGFcbiAgICB9XG4gICAgcmVjdXJyZW5jZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uUmVjdXJyZW5jZURhdGFcbiAgICB9XG4gICAgdmFsdWVfZGF0ZVxuICB9XG4gIC4uLiBvbiBGZWUge1xuICAgIGNhdGVnb3JpZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2F0ZWdvcnlEYXRhXG4gICAgfVxuICAgIGZlZV9kZXRhaWxzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkZlZURldGFpbHNEYXRhXG4gICAgfVxuICAgIHZhbHVlX2RhdGVcbiAgfVxuICAuLi4gb24gTG9hbnMge1xuICAgIGNhdGVnb3JpZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2F0ZWdvcnlEYXRhXG4gICAgfVxuICAgIGxvYW5fZGV0YWlscyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5Mb2FuRGV0YWlsc0RhdGFcbiAgICB9XG4gICAgcmVjdXJyZW5jZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uUmVjdXJyZW5jZURhdGFcbiAgICB9XG4gICAgdmFsdWVfZGF0ZVxuICB9XG4gIC4uLiBvbiBNYW5kYXRlIHtcbiAgICBjYXRlZ29yaWVzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNhdGVnb3J5RGF0YVxuICAgIH1cbiAgICBtYW5kYXRlX2RldGFpbHMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uTWFuZGF0ZURldGFpbHNEYXRhXG4gICAgfVxuICAgIHJlY3VycmVuY2VzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLlJlY3VycmVuY2VEYXRhXG4gICAgfVxuICAgIHZhbHVlX2RhdGVcbiAgfVxuICAuLi4gb24gU2F2aW5ncyB7XG4gICAgY2F0ZWdvcmllcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5DYXRlZ29yeURhdGFcbiAgICB9XG4gICAgcmVjdXJyZW5jZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uUmVjdXJyZW5jZURhdGFcbiAgICB9XG4gICAgc2F2aW5nc19kZXRhaWxzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLlNhdmluZ3NEZXRhaWxzRGF0YVxuICAgIH1cbiAgICB2YWx1ZV9kYXRlXG4gIH1cbiAgLi4uIG9uIFN1YnNjcmlwdGlvblRyYW5zYWN0aW9uIHtcbiAgICBjYXRlZ29yaWVzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNhdGVnb3J5RGF0YVxuICAgIH1cbiAgICByZWN1cnJlbmNlcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5SZWN1cnJlbmNlRGF0YVxuICAgIH1cbiAgICBzdWJzY3JpcHRpb25fZGV0YWlscyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5TdWJzY3JpcHRpb25EZXRhaWxzRGF0YVxuICAgIH1cbiAgICB2YWx1ZV9kYXRlXG4gIH1cbn1cbmZyYWdtZW50IFRyYW5zYWN0aW9uRnJhZ21lbnQgb24gVHJhbnNhY3Rpb24ge1xuICBfX3R5cGVuYW1lXG4gIGJhc2VUcmFuc2FjdGlvbiB7XG4gICAgX190eXBlbmFtZVxuICAgIC4uLkJhc2VUcmFuc2FjdGlvbkZyYWdtZW50XG4gIH1cbiAgZW5yaWNobWVudCB7XG4gICAgX190eXBlbmFtZVxuICAgIC4uLlRyYW5zYWN0aW9uRW5yaWNobWVudEZyYWdtZW50XG4gIH1cbiAgbWV0YWRhdGEge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5UcmFuc2FjdGlvbkV2ZW50TWV0YWRhdGFGcmFnbWVudFxuICB9XG4gIHJlZmVyZW5jZU51bWJlclxuICB0cmFuc2FjdGlvbkRldGFpbHMge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5UcmFuc2FjdGlvbnNEZXRhaWxzRGF0YVxuICB9XG59XG5mcmFnbWVudCBNb3ZlbWVudEZyYWdtZW50IG9uIE1vdmVtZW50IHtcbiAgX190eXBlbmFtZVxuICBhY2NvdW50SWRcbiAgYmFua0N1cnJlbmN5QW1vdW50XG4gIGJvb2tpbmdEYXRlXG4gIGNvbnZlcnNpb25SYXRlXG4gIGNyZWRpdERlYml0XG4gIGRlc2NyaXB0aW9uXG4gIGlzUmV2ZXJzZWRcbiAgbGlua1RyYW5zYWN0aW9uIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uVHJhbnNhY3Rpb25GcmFnbWVudFxuICB9XG4gIG1vdmVtZW50QW1vdW50XG4gIG1vdmVtZW50Q3VycmVuY3lcbiAgbW92ZW1lbnRJZFxuICBtb3ZlbWVudFJldmVyc2VkSWRcbiAgbW92ZW1lbnRUaW1lc3RhbXBcbiAgbW92ZW1lbnRUeXBlXG4gIHBvcnRmb2xpb0lkXG4gIHJ1bm5pbmdCYWxhbmNlXG4gIHRyYW5zYWN0aW9uIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uVHJhbnNhY3Rpb25GcmFnbWVudFxuICB9XG4gIHZhbHVlRGF0ZVxufVxuZnJhZ21lbnQgUGFnaW5hdGlvbkZyYWdtZW50IG9uIFBhZ2luYXRpb24ge1xuICBfX3R5cGVuYW1lXG4gIGN1cnNvclxuICBoYXNNb3JlXG59XG5mcmFnbWVudCBNb3ZlbWVudHNGcmFnbWVudCBvbiBNb3ZlbWVudHMge1xuICBfX3R5cGVuYW1lXG4gIGlzUnVubmluZ0JhbGFuY2VJblN5bmNcbiAgbW92ZW1lbnRzIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uTW92ZW1lbnRGcmFnbWVudFxuICB9XG4gIHBhZ2luYXRpb24ge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5QYWdpbmF0aW9uRnJhZ21lbnRcbiAgfVxufWA7XG4iXX0=
|
|
560
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHRVRfQ1VTVE9NRVIiLCJleHBvcnRzIiwiR0VUX01PVkVNRU5UUyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vbmUtemVyby1xdWVyaWVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBHRVRfQ1VTVE9NRVIgPSBgXG5xdWVyeSBHZXRDdXN0b21lciB7XG4gIGN1c3RvbWVyIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgY3VzdG9tZXJJZFxuICAgIHVzZXJJZFxuICAgIGlkVHlwZVxuICAgIGlkTnVtYmVyXG4gICAgaGVicmV3Rmlyc3ROYW1lXG4gICAgaGVicmV3TGFzdE5hbWVcbiAgICBsYXRpbkZpcnN0TmFtZVxuICAgIGxhdGluTGFzdE5hbWVcbiAgICBkYXRlT2ZCaXJ0aFxuICAgIGxhc3RMb2dpbkRhdGVcbiAgICB1c2VyRW1haWxcbiAgICBnZW5kZXJcbiAgICBwb3J0Zm9saW9SZWxhdGlvbnMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgY3VzdG9tZXJJZFxuICAgICAgY3VzdG9tZXJSb2xlXG4gICAgICBwb3J0Zm9saW9JZFxuICAgICAgaW5pdGlhdG9yXG4gICAgICByZWxhdGlvblRvSW5pdGlhdG9yXG4gICAgICBzdGF0dXNcbiAgICB9XG4gICAgcG9ydGZvbGlvcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5Qb3J0Zm9saW9cbiAgICB9XG4gICAgc3RhdHVzXG4gIH1cbn1cbmZyYWdtZW50IFBvcnRmb2xpbyBvbiBQb3J0Zm9saW8ge1xuICBfX3R5cGVuYW1lXG4gIGFjY291bnRzIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgYWNjb3VudElkXG4gICAgYWNjb3VudFR5cGVcbiAgICBjbG9zaW5nRGF0ZVxuICAgIGN1cnJlbmN5XG4gICAgb3BlbmluZ0RhdGVcbiAgICBzdGF0dXNcbiAgICBzdWJUeXBlXG4gIH1cbiAgYWN0aXZhdGlvbkRhdGVcbiAgYmFua1xuICBiYXNlQ3VycmVuY3lcbiAgYnJhbmNoXG4gIGNsdWJcbiAgY2x1YkRlc2NyaXB0aW9uXG4gIGliYW5cbiAgaW1hZ2VVUkxcbiAgaXNKb2ludEFjY291bnRcbiAgcGFydG5lck5hbWUge1xuICAgIF9fdHlwZW5hbWVcbiAgICBwYXJ0bmVyRmlyc3ROYW1lXG4gICAgcGFydG5lckxhc3ROYW1lXG4gIH1cbiAgcG9ydGZvbGlvSWRcbiAgcG9ydGZvbGlvTnVtXG4gIHBvcnRmb2xpb1R5cGVcbiAgc3RhdHVzXG4gIHN1YlR5cGVcbiAgb25ib2FyZGluZ0NvbXBsZXRlZFxufVxuYDtcblxuZXhwb3J0IGNvbnN0IEdFVF9NT1ZFTUVOVFMgPSBgcXVlcnkgR2V0TW92ZW1lbnRzKFxuICAkcG9ydGZvbGlvSWQ6IFN0cmluZyFcbiAgJGFjY291bnRJZDogU3RyaW5nIVxuICAkcGFnaW5hdGlvbjogUGFnaW5hdGlvbklucHV0IVxuICAkbGFuZ3VhZ2U6IEJmZkxhbmd1YWdlIVxuKSB7XG4gIG1vdmVtZW50cyhcbiAgICBwb3J0Zm9saW9JZDogJHBvcnRmb2xpb0lkXG4gICAgYWNjb3VudElkOiAkYWNjb3VudElkXG4gICAgcGFnaW5hdGlvbjogJHBhZ2luYXRpb25cbiAgICBsYW5ndWFnZTogJGxhbmd1YWdlXG4gICkge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5Nb3ZlbWVudHNGcmFnbWVudFxuICB9XG59XG5mcmFnbWVudCBUcmFuc2FjdGlvbkluc3RydW1lbnRBbW91bnRGcmFnbWVudCBvbiBUcmFuc2FjdGlvbkluc3RydW1lbnRBbW91bnQge1xuICBfX3R5cGVuYW1lXG4gIGluc3RydW1lbnRBbW91bnRcbiAgaW5zdHJ1bWVudFN5bWJvbFxuICBpbnN0cnVtZW50VHlwZVxufVxuZnJhZ21lbnQgQ291bnRlclBhcnR5UmVmZXJlbmNlRnJhZ21lbnQgb24gQ291bnRlclBhcnR5UmVmZXJlbmNlIHtcbiAgX190eXBlbmFtZVxuICBiYW5rSWRcbiAgYmljXG4gIGJyYW5jaENvZGVcbiAgaWRcbiAgbmFtZVxuICB0eXBlXG59XG5mcmFnbWVudCBCYXNlVHJhbnNhY3Rpb25GcmFnbWVudCBvbiBCYXNlVHJhbnNhY3Rpb24ge1xuICBfX3R5cGVuYW1lXG4gIGFjY291bnRJZFxuICBiZXR3ZWVuT3duQWNjb3VudHNcbiAgYm9va0RhdGVcbiAgY2FsY3VsYXRlZFN0YXR1c1xuICBjaGFyZ2VBbW91bnQge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5UcmFuc2FjdGlvbkluc3RydW1lbnRBbW91bnRGcmFnbWVudFxuICB9XG4gIGNsZWFyaW5nU3lzdGVtXG4gIGNvdW50ZXJQYXJ0eSB7XG4gICAgX190eXBlbmFtZVxuICAgIC4uLkNvdW50ZXJQYXJ0eVJlZmVyZW5jZUZyYWdtZW50XG4gIH1cbiAgY3VycmVudFBheW1lbnROdW1iZXJcbiAgZGlyZWN0aW9uXG4gIGRvbWFpblR5cGVcbiAgaXNSZXZlcnNhbFxuICBtZXRob2RcbiAgb3JpZ2luYWxBbW91bnQge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5UcmFuc2FjdGlvbkluc3RydW1lbnRBbW91bnRGcmFnbWVudFxuICB9XG4gIHBvcnRmb2xpb0lkXG4gIHRvdGFsUGF5bWVudHNDb3VudFxuICB0cmFuc2FjdGlvbklkXG4gIHRyYW5zYWN0aW9uVHlwZVxuICB2YWx1ZURhdGVcbn1cbmZyYWdtZW50IENhdGVnb3J5RnJhZ21lbnQgb24gQ2F0ZWdvcnkge1xuICBfX3R5cGVuYW1lXG4gIGNhdGVnb3J5SWRcbiAgZGF0YVNvdXJjZVxuICBzdWJDYXRlZ29yeUlkXG59XG5mcmFnbWVudCBSZWN1cnJlbmNlRnJhZ21lbnQgb24gUmVjdXJyZW5jZSB7XG4gIF9fdHlwZW5hbWVcbiAgZGF0YVNvdXJjZVxuICBpc1JlY3VycmVudFxufVxuZnJhZ21lbnQgVHJhbnNhY3Rpb25FbnJpY2htZW50RnJhZ21lbnQgb24gVHJhbnNhY3Rpb25FbnJpY2htZW50IHtcbiAgX190eXBlbmFtZVxuICBjYXRlZ29yaWVzIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uQ2F0ZWdvcnlGcmFnbWVudFxuICB9XG4gIHJlY3VycmVuY2VzIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uUmVjdXJyZW5jZUZyYWdtZW50XG4gIH1cbn1cbmZyYWdtZW50IFRyYW5zYWN0aW9uRXZlbnRNZXRhZGF0YUZyYWdtZW50IG9uIFRyYW5zYWN0aW9uRXZlbnRNZXRhZGF0YSB7XG4gIF9fdHlwZW5hbWVcbiAgY29ycmVsYXRpb25JZFxuICBwcm9jZXNzaW5nT3JkZXJcbn1cbmZyYWdtZW50IENvdW50ZXJQYXJ0eVRyYW5zZmVyRGF0YSBvbiBDb3VudGVyUGFydHlUcmFuc2ZlciB7XG4gIF9fdHlwZW5hbWVcbiAgYWNjb3VudElkXG4gIGJhbmtfaWRcbiAgYnJhbmNoX2NvZGVcbiAgY291bnRlcl9wYXJ0eV9uYW1lXG59XG5mcmFnbWVudCBCYW5rVHJhbnNmZXJEZXRhaWxzRGF0YSBvbiBCYW5rVHJhbnNmZXJEZXRhaWxzIHtcbiAgX190eXBlbmFtZVxuICAuLi4gb24gQ2FzaEJsb2NrVHJhbnNmZXIge1xuICAgIGNvdW50ZXJQYXJ0eSB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5Db3VudGVyUGFydHlUcmFuc2ZlckRhdGFcbiAgICB9XG4gICAgdHJhbnNmZXJEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBSVEdTUmV0dXJuVHJhbnNmZXIge1xuICAgIHRyYW5zZmVyRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gUlRHU1RyYW5zZmVyIHtcbiAgICB0cmFuc2ZlckRlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIFN3aWZ0UmV0dXJuVHJhbnNmZXIge1xuICAgIHRyYW5zZmVyQ29udmVyc2lvblJhdGVcbiAgICB0cmFuc2ZlckRlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIFN3aWZ0VHJhbnNmZXIge1xuICAgIHRyYW5zZmVyQ29udmVyc2lvblJhdGVcbiAgICB0cmFuc2ZlckRlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIFRyYW5zZmVyIHtcbiAgICBjb3VudGVyUGFydHkge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ291bnRlclBhcnR5VHJhbnNmZXJEYXRhXG4gICAgfVxuICAgIHRyYW5zZmVyRGVzY3JpcHRpb25LZXlcbiAgfVxufVxuZnJhZ21lbnQgQ2F0ZWdvcnlEYXRhIG9uIENhdGVnb3J5IHtcbiAgX190eXBlbmFtZVxuICBjYXRlZ29yeUlkXG4gIGRhdGFTb3VyY2VcbiAgc3ViQ2F0ZWdvcnlJZFxufVxuZnJhZ21lbnQgUmVjdXJyZW5jZURhdGEgb24gUmVjdXJyZW5jZSB7XG4gIF9fdHlwZW5hbWVcbiAgZGF0YVNvdXJjZVxuICBpc1JlY3VycmVudFxufVxuZnJhZ21lbnQgQ2FyZERldGFpbHNEYXRhIG9uIENhcmREZXRhaWxzIHtcbiAgX190eXBlbmFtZVxuICAuLi4gb24gQ2FyZENoYXJnZSB7XG4gICAgYm9va19kYXRlXG4gICAgY2FyZERlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIENhcmRDaGFyZ2VGQ1kge1xuICAgIGJvb2tfZGF0ZVxuICAgIGNhcmRDb252ZXJzaW9uUmF0ZVxuICAgIGNhcmREZXNjcmlwdGlvbktleVxuICAgIGNhcmRGQ1lBbW91bnRcbiAgICBjYXJkRkNZQ3VycmVuY3lcbiAgfVxuICAuLi4gb24gQ2FyZE1vbnRobHlTZXR0bGVtZW50IHtcbiAgICBjYXJkRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gQ2FyZFJlZnVuZCB7XG4gICAgY2FyZERlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIENhc2hCbG9ja0NhcmRDaGFyZ2Uge1xuICAgIGNhcmREZXNjcmlwdGlvbktleVxuICB9XG59XG5mcmFnbWVudCBDYXNoRGV0YWlsc0RhdGEgb24gQ2FzaERldGFpbHMge1xuICBfX3R5cGVuYW1lXG4gIC4uLiBvbiBDYXNoV2l0aGRyYXdhbCB7XG4gICAgY2FzaERlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIENhc2hXaXRoZHJhd2FsRkNZIHtcbiAgICBGQ1lBbW91bnRcbiAgICBGQ1lDdXJyZW5jeVxuICAgIGNhc2hEZXNjcmlwdGlvbktleVxuICAgIGNvbnZlcnNpb25SYXRlXG4gIH1cbn1cbmZyYWdtZW50IENoZXF1ZXNEZXRhaWxzRGF0YSBvbiBDaGVxdWVzRGV0YWlscyB7XG4gIF9fdHlwZW5hbWVcbiAgLi4uIG9uIENhc2hCbG9ja0NoZXF1ZURlcG9zaXQge1xuICAgIGJvb2tEYXRlXG4gICAgY2hlcXVlc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIENoZXF1ZURlcG9zaXQge1xuICAgIGJvb2tEYXRlXG4gICAgY2hlcXVlc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIENoZXF1ZVJldHVybiB7XG4gICAgYm9va0RhdGVcbiAgICBjaGVxdWVSZXR1cm5SZWFzb25cbiAgICBjaGVxdWVzRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gQ2hlcXVlV2l0aGRyYXdhbCB7XG4gICAgY2hlcXVlc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbn1cbmZyYWdtZW50IERlZmF1bHREZXRhaWxzRGF0YSBvbiBEZWZhdWx0RGV0YWlscyB7XG4gIF9fdHlwZW5hbWVcbiAgLi4uIG9uIERlZmF1bHRXaXRoVHJhbnNhY3Rpb24ge1xuICAgIGRlZmF1bHREZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBEZWZhdWx0V2l0aG91dFRyYW5zYWN0aW9uIHtcbiAgICBjYXRlZ29yaWVzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNhdGVnb3J5RGF0YVxuICAgIH1cbiAgICBkZWZhdWx0RGVzY3JpcHRpb25LZXlcbiAgfVxufVxuZnJhZ21lbnQgRmVlRGV0YWlsc0RhdGEgb24gRmVlRGV0YWlscyB7XG4gIF9fdHlwZW5hbWVcbiAgLi4uIG9uIEdlbmVyYWxGZWUge1xuICAgIGZlZURlc2NyaXB0aW9uS2V5XG4gIH1cbn1cbmZyYWdtZW50IExvYW5EZXRhaWxzRGF0YSBvbiBMb2FuRGV0YWlscyB7XG4gIF9fdHlwZW5hbWVcbiAgLi4uIG9uIEZ1bGxQcmVQYXltZW50IHtcbiAgICBsb2FuRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gSW5pdGlhdGUge1xuICAgIGxvYW5EZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBNb250aGx5UGF5bWVudCB7XG4gICAgbG9hbkRlc2NyaXB0aW9uS2V5XG4gICAgbG9hblBheW1lbnROdW1iZXJcbiAgICBsb2FuVG90YWxQYXltZW50c0NvdW50XG4gIH1cbiAgLi4uIG9uIFBhcnRpYWxQcmVQYXltZW50IHtcbiAgICBsb2FuRGVzY3JpcHRpb25LZXlcbiAgfVxufVxuZnJhZ21lbnQgTWFuZGF0ZURldGFpbHNEYXRhIG9uIE1hbmRhdGVEZXRhaWxzIHtcbiAgX190eXBlbmFtZVxuICAuLi4gb24gTWFuZGF0ZVBheW1lbnQge1xuICAgIG1hbmRhdGVEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBNYW5kYXRlUmV0dXJuUGF5bWVudCB7XG4gICAgbWFuZGF0ZURlc2NyaXB0aW9uS2V5XG4gIH1cbn1cbmZyYWdtZW50IFNhdmluZ3NEZXRhaWxzRGF0YSBvbiBTYXZpbmdzRGV0YWlscyB7XG4gIF9fdHlwZW5hbWVcbiAgLi4uIG9uIEZ1bGxTYXZpbmdzV2l0aGRyYXdhbCB7XG4gICAgc2F2aW5nc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIE1vbnRobHlTYXZpbmdzRGVwb3NpdCB7XG4gICAgc2F2aW5nc0RlcG9zaXROdW1iZXJcbiAgICBzYXZpbmdzRGVzY3JpcHRpb25LZXlcbiAgICBzYXZpbmdzVG90YWxEZXBvc2l0Q291bnRcbiAgfVxuICAuLi4gb24gUGFydGlhbFNhdmluZ3NXaXRoZHJhd2FsIHtcbiAgICBzYXZpbmdzRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gU2F2aW5nc0Nsb3Npbmcge1xuICAgIHNhdmluZ3NEZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBTYXZpbmdzRGVwb3NpdCB7XG4gICAgc2F2aW5nc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIFNhdmluZ3NJbnRlcmVzdCB7XG4gICAgc2F2aW5nc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbiAgLi4uIG9uIFNhdmluZ3NQZW5hbHR5IHtcbiAgICBzYXZpbmdzRGVzY3JpcHRpb25LZXlcbiAgfVxuICAuLi4gb24gU2F2aW5nc1RheCB7XG4gICAgc2F2aW5nc0Rlc2NyaXB0aW9uS2V5XG4gIH1cbn1cbmZyYWdtZW50IFN1YnNjcmlwdGlvbkRldGFpbHNEYXRhIG9uIFN1YnNjcmlwdGlvbkRldGFpbHMge1xuICBfX3R5cGVuYW1lXG4gIC4uLiBvbiBTdWJzY3JpcHRpb25QYXltZW50IHtcbiAgICBzdWJzY3JpcHRpb25EZXNjcmlwdGlvbktleVxuICB9XG4gIC4uLiBvbiBTdWJzY3JpcHRpb25SZXR1cm5QYXltZW50IHtcbiAgICBzdWJzY3JpcHRpb25EZXNjcmlwdGlvbktleVxuICB9XG59XG5mcmFnbWVudCBUcmFuc2FjdGlvbnNEZXRhaWxzRGF0YSBvbiBUcmFuc2FjdGlvbkRldGFpbHMge1xuICBfX3R5cGVuYW1lXG4gIC4uLiBvbiBCYW5rVHJhbnNmZXIge1xuICAgIGJhbmtfdHJhbnNmZXJfZGV0YWlscyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5CYW5rVHJhbnNmZXJEZXRhaWxzRGF0YVxuICAgIH1cbiAgICBib29rX2RhdGVcbiAgICBjYXRlZ29yaWVzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNhdGVnb3J5RGF0YVxuICAgIH1cbiAgICByZWN1cnJlbmNlcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5SZWN1cnJlbmNlRGF0YVxuICAgIH1cbiAgICB2YWx1ZV9kYXRlXG4gIH1cbiAgLi4uIG9uIENhcmQge1xuICAgIGNhcmRfZGV0YWlscyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5DYXJkRGV0YWlsc0RhdGFcbiAgICB9XG4gICAgY2F0ZWdvcmllcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5DYXRlZ29yeURhdGFcbiAgICB9XG4gICAgcmVjdXJyZW5jZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uUmVjdXJyZW5jZURhdGFcbiAgICB9XG4gICAgdmFsdWVfZGF0ZVxuICB9XG4gIC4uLiBvbiBDYXNoIHtcbiAgICBjYXNoX2RldGFpbHMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2FzaERldGFpbHNEYXRhXG4gICAgfVxuICAgIGNhdGVnb3JpZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2F0ZWdvcnlEYXRhXG4gICAgfVxuICAgIHJlY3VycmVuY2VzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLlJlY3VycmVuY2VEYXRhXG4gICAgfVxuICAgIHZhbHVlX2RhdGVcbiAgfVxuICAuLi4gb24gQ2hlcXVlcyB7XG4gICAgY2F0ZWdvcmllcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5DYXRlZ29yeURhdGFcbiAgICB9XG4gICAgY2hlcXVlc0RldGFpbHMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2hlcXVlc0RldGFpbHNEYXRhXG4gICAgfVxuICAgIHJlY3VycmVuY2VzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLlJlY3VycmVuY2VEYXRhXG4gICAgfVxuICAgIHZhbHVlRGF0ZVxuICAgIHJlZmVyZW5jZU51bWJlclxuICAgIGZyb250SW1hZ2VVcmxcbiAgICBiYWNrSW1hZ2VVcmxcbiAgfVxuICAuLi4gb24gRGVmYXVsdCB7XG4gICAgZGVmYXVsdF9kZXRhaWxzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkRlZmF1bHREZXRhaWxzRGF0YVxuICAgIH1cbiAgICByZWN1cnJlbmNlcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5SZWN1cnJlbmNlRGF0YVxuICAgIH1cbiAgICB2YWx1ZV9kYXRlXG4gIH1cbiAgLi4uIG9uIEZlZSB7XG4gICAgY2F0ZWdvcmllcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5DYXRlZ29yeURhdGFcbiAgICB9XG4gICAgZmVlX2RldGFpbHMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uRmVlRGV0YWlsc0RhdGFcbiAgICB9XG4gICAgdmFsdWVfZGF0ZVxuICB9XG4gIC4uLiBvbiBMb2FucyB7XG4gICAgY2F0ZWdvcmllcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5DYXRlZ29yeURhdGFcbiAgICB9XG4gICAgbG9hbl9kZXRhaWxzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkxvYW5EZXRhaWxzRGF0YVxuICAgIH1cbiAgICByZWN1cnJlbmNlcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5SZWN1cnJlbmNlRGF0YVxuICAgIH1cbiAgICB2YWx1ZV9kYXRlXG4gIH1cbiAgLi4uIG9uIE1hbmRhdGUge1xuICAgIGNhdGVnb3JpZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2F0ZWdvcnlEYXRhXG4gICAgfVxuICAgIG1hbmRhdGVfZGV0YWlscyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5NYW5kYXRlRGV0YWlsc0RhdGFcbiAgICB9XG4gICAgcmVjdXJyZW5jZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uUmVjdXJyZW5jZURhdGFcbiAgICB9XG4gICAgdmFsdWVfZGF0ZVxuICB9XG4gIC4uLiBvbiBTYXZpbmdzIHtcbiAgICBjYXRlZ29yaWVzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLkNhdGVnb3J5RGF0YVxuICAgIH1cbiAgICByZWN1cnJlbmNlcyB7XG4gICAgICBfX3R5cGVuYW1lXG4gICAgICAuLi5SZWN1cnJlbmNlRGF0YVxuICAgIH1cbiAgICBzYXZpbmdzX2RldGFpbHMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uU2F2aW5nc0RldGFpbHNEYXRhXG4gICAgfVxuICAgIHZhbHVlX2RhdGVcbiAgfVxuICAuLi4gb24gU3Vic2NyaXB0aW9uVHJhbnNhY3Rpb24ge1xuICAgIGNhdGVnb3JpZXMge1xuICAgICAgX190eXBlbmFtZVxuICAgICAgLi4uQ2F0ZWdvcnlEYXRhXG4gICAgfVxuICAgIHJlY3VycmVuY2VzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLlJlY3VycmVuY2VEYXRhXG4gICAgfVxuICAgIHN1YnNjcmlwdGlvbl9kZXRhaWxzIHtcbiAgICAgIF9fdHlwZW5hbWVcbiAgICAgIC4uLlN1YnNjcmlwdGlvbkRldGFpbHNEYXRhXG4gICAgfVxuICAgIHZhbHVlX2RhdGVcbiAgfVxufVxuZnJhZ21lbnQgVHJhbnNhY3Rpb25GcmFnbWVudCBvbiBUcmFuc2FjdGlvbiB7XG4gIF9fdHlwZW5hbWVcbiAgYmFzZVRyYW5zYWN0aW9uIHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uQmFzZVRyYW5zYWN0aW9uRnJhZ21lbnRcbiAgfVxuICBlbnJpY2htZW50IHtcbiAgICBfX3R5cGVuYW1lXG4gICAgLi4uVHJhbnNhY3Rpb25FbnJpY2htZW50RnJhZ21lbnRcbiAgfVxuICBtZXRhZGF0YSB7XG4gICAgX190eXBlbmFtZVxuICAgIC4uLlRyYW5zYWN0aW9uRXZlbnRNZXRhZGF0YUZyYWdtZW50XG4gIH1cbiAgcmVmZXJlbmNlTnVtYmVyXG4gIHRyYW5zYWN0aW9uRGV0YWlscyB7XG4gICAgX190eXBlbmFtZVxuICAgIC4uLlRyYW5zYWN0aW9uc0RldGFpbHNEYXRhXG4gIH1cbn1cbmZyYWdtZW50IE1vdmVtZW50RnJhZ21lbnQgb24gTW92ZW1lbnQge1xuICBfX3R5cGVuYW1lXG4gIGFjY291bnRJZFxuICBiYW5rQ3VycmVuY3lBbW91bnRcbiAgYm9va2luZ0RhdGVcbiAgY29udmVyc2lvblJhdGVcbiAgY3JlZGl0RGViaXRcbiAgZGVzY3JpcHRpb25cbiAgaXNSZXZlcnNlZFxuICBsaW5rVHJhbnNhY3Rpb24ge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5UcmFuc2FjdGlvbkZyYWdtZW50XG4gIH1cbiAgbW92ZW1lbnRBbW91bnRcbiAgbW92ZW1lbnRDdXJyZW5jeVxuICBtb3ZlbWVudElkXG4gIG1vdmVtZW50UmV2ZXJzZWRJZFxuICBtb3ZlbWVudFRpbWVzdGFtcFxuICBtb3ZlbWVudFR5cGVcbiAgcG9ydGZvbGlvSWRcbiAgcnVubmluZ0JhbGFuY2VcbiAgdHJhbnNhY3Rpb24ge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5UcmFuc2FjdGlvbkZyYWdtZW50XG4gIH1cbiAgdmFsdWVEYXRlXG59XG5mcmFnbWVudCBQYWdpbmF0aW9uRnJhZ21lbnQgb24gUGFnaW5hdGlvbiB7XG4gIF9fdHlwZW5hbWVcbiAgY3Vyc29yXG4gIGhhc01vcmVcbn1cbmZyYWdtZW50IE1vdmVtZW50c0ZyYWdtZW50IG9uIE1vdmVtZW50cyB7XG4gIF9fdHlwZW5hbWVcbiAgaXNSdW5uaW5nQmFsYW5jZUluU3luY1xuICBtb3ZlbWVudHMge1xuICAgIF9fdHlwZW5hbWVcbiAgICAuLi5Nb3ZlbWVudEZyYWdtZW50XG4gIH1cbiAgcGFnaW5hdGlvbiB7XG4gICAgX190eXBlbmFtZVxuICAgIC4uLlBhZ2luYXRpb25GcmFnbWVudFxuICB9XG59YDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sTUFBTUEsWUFBWSxHQUFBQyxPQUFBLENBQUFELFlBQUEsR0FBRztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFFTSxNQUFNRSxhQUFhLEdBQUFELE9BQUEsQ0FBQUMsYUFBQSxHQUFHO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFIiwiaWdub3JlTGlzdCI6W119
|
package/lib/scrapers/one-zero.js
CHANGED
|
@@ -1,193 +1,238 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _moment = _interopRequireDefault(require("moment/moment"));
|
|
8
|
+
var _debug = require("../helpers/debug");
|
|
9
|
+
var _fetch = require("../helpers/fetch");
|
|
10
|
+
var _transactions = require("../transactions");
|
|
11
|
+
var _baseScraper = require("./base-scraper");
|
|
12
|
+
var _errors = require("./errors");
|
|
13
|
+
var _oneZeroQueries = require("./one-zero-queries");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
15
|
const HEBREW_WORDS_REGEX = /[\u0590-\u05FF][\u0590-\u05FF"'\-_ /\\]*[\u0590-\u05FF]/g;
|
|
14
|
-
const debug = (0,
|
|
16
|
+
const debug = (0, _debug.getDebug)('one-zero');
|
|
15
17
|
const IDENTITY_SERVER_URL = 'https://identity.tfd-bank.com/v1/';
|
|
16
18
|
const GRAPHQL_API_URL = 'https://mobile.tfd-bank.com/mobile-graph/graphql';
|
|
17
|
-
class OneZeroScraper extends
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (!phoneNumber.startsWith('+')) {
|
|
22
|
-
return (0, errors_1.createGenericError)('A full international phone number starting with + and a three digit country code is required');
|
|
23
|
-
}
|
|
24
|
-
debug('Fetching device token');
|
|
25
|
-
const deviceTokenResponse = await (0, fetch_1.fetchPost)(`${IDENTITY_SERVER_URL}/devices/token`, {
|
|
26
|
-
extClientId: 'mobile',
|
|
27
|
-
os: 'Android',
|
|
28
|
-
});
|
|
29
|
-
const { resultData: { deviceToken }, } = deviceTokenResponse;
|
|
30
|
-
debug(`Sending OTP to phone number ${phoneNumber}`);
|
|
31
|
-
const otpPrepareResponse = await (0, fetch_1.fetchPost)(`${IDENTITY_SERVER_URL}/otp/prepare`, {
|
|
32
|
-
factorValue: phoneNumber,
|
|
33
|
-
deviceToken,
|
|
34
|
-
otpChannel: 'SMS_OTP',
|
|
35
|
-
});
|
|
36
|
-
const { resultData: { otpContext }, } = otpPrepareResponse;
|
|
37
|
-
this.otpContext = otpContext;
|
|
38
|
-
return {
|
|
39
|
-
success: true,
|
|
40
|
-
};
|
|
19
|
+
class OneZeroScraper extends _baseScraper.BaseScraper {
|
|
20
|
+
async triggerTwoFactorAuth(phoneNumber) {
|
|
21
|
+
if (!phoneNumber.startsWith('+')) {
|
|
22
|
+
return (0, _errors.createGenericError)('A full international phone number starting with + and a three digit country code is required');
|
|
41
23
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
24
|
+
debug('Fetching device token');
|
|
25
|
+
const deviceTokenResponse = await (0, _fetch.fetchPost)(`${IDENTITY_SERVER_URL}/devices/token`, {
|
|
26
|
+
extClientId: 'mobile',
|
|
27
|
+
os: 'Android'
|
|
28
|
+
});
|
|
29
|
+
const {
|
|
30
|
+
resultData: {
|
|
31
|
+
deviceToken
|
|
32
|
+
}
|
|
33
|
+
} = deviceTokenResponse;
|
|
34
|
+
debug(`Sending OTP to phone number ${phoneNumber}`);
|
|
35
|
+
const otpPrepareResponse = await (0, _fetch.fetchPost)(`${IDENTITY_SERVER_URL}/otp/prepare`, {
|
|
36
|
+
factorValue: phoneNumber,
|
|
37
|
+
deviceToken,
|
|
38
|
+
otpChannel: 'SMS_OTP'
|
|
39
|
+
});
|
|
40
|
+
const {
|
|
41
|
+
resultData: {
|
|
42
|
+
otpContext
|
|
43
|
+
}
|
|
44
|
+
} = otpPrepareResponse;
|
|
45
|
+
this.otpContext = otpContext;
|
|
46
|
+
return {
|
|
47
|
+
success: true
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async getLongTermTwoFactorToken(otpCode) {
|
|
51
|
+
if (!this.otpContext) {
|
|
52
|
+
return (0, _errors.createGenericError)('triggerOtp was not called before calling getPermenantOtpToken()');
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (!otpTokenResult.success) {
|
|
79
|
-
return otpTokenResult;
|
|
80
|
-
}
|
|
81
|
-
return { success: true, longTermTwoFactorAuthToken: otpTokenResult.longTermTwoFactorAuthToken };
|
|
54
|
+
debug('Requesting OTP token');
|
|
55
|
+
const otpVerifyResponse = await (0, _fetch.fetchPost)(`${IDENTITY_SERVER_URL}/otp/verify`, {
|
|
56
|
+
otpContext: this.otpContext,
|
|
57
|
+
otpCode
|
|
58
|
+
});
|
|
59
|
+
const {
|
|
60
|
+
resultData: {
|
|
61
|
+
otpToken
|
|
62
|
+
}
|
|
63
|
+
} = otpVerifyResponse;
|
|
64
|
+
return {
|
|
65
|
+
success: true,
|
|
66
|
+
longTermTwoFactorAuthToken: otpToken
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async resolveOtpToken(credentials) {
|
|
70
|
+
if ('otpLongTermToken' in credentials) {
|
|
71
|
+
if (!credentials.otpLongTermToken) {
|
|
72
|
+
return (0, _errors.createGenericError)('Invalid otpLongTermToken');
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
success: true,
|
|
76
|
+
longTermTwoFactorAuthToken: credentials.otpLongTermToken
|
|
77
|
+
};
|
|
82
78
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const getIdTokenResponse = await (0, fetch_1.fetchPost)(`${IDENTITY_SERVER_URL}/getIdToken`, {
|
|
90
|
-
otpSmsToken: otpTokenResult.longTermTwoFactorAuthToken,
|
|
91
|
-
email: credentials.email,
|
|
92
|
-
pass: credentials.password,
|
|
93
|
-
pinCode: '',
|
|
94
|
-
});
|
|
95
|
-
const { resultData: { idToken }, } = getIdTokenResponse;
|
|
96
|
-
debug('Requesting session token');
|
|
97
|
-
const getSessionTokenResponse = await (0, fetch_1.fetchPost)(`${IDENTITY_SERVER_URL}/sessions/token`, {
|
|
98
|
-
idToken,
|
|
99
|
-
pass: credentials.password,
|
|
100
|
-
});
|
|
101
|
-
const { resultData: { accessToken }, } = getSessionTokenResponse;
|
|
102
|
-
this.accessToken = accessToken;
|
|
103
|
-
return {
|
|
104
|
-
success: true,
|
|
105
|
-
persistentOtpToken: otpTokenResult.longTermTwoFactorAuthToken,
|
|
106
|
-
};
|
|
79
|
+
if (!credentials.otpCodeRetriever) {
|
|
80
|
+
return {
|
|
81
|
+
success: false,
|
|
82
|
+
errorType: _errors.ScraperErrorTypes.TwoFactorRetrieverMissing,
|
|
83
|
+
errorMessage: 'otpCodeRetriever is required when otpPermanentToken is not provided'
|
|
84
|
+
};
|
|
107
85
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const { movements: { movements: newMovements, pagination }, } = await (0, fetch_1.fetchGraphql)(GRAPHQL_API_URL, one_zero_queries_1.GET_MOVEMENTS, {
|
|
116
|
-
portfolioId: portfolio.portfolioId,
|
|
117
|
-
accountId: account.accountId,
|
|
118
|
-
language: 'HEBREW',
|
|
119
|
-
pagination: {
|
|
120
|
-
cursor,
|
|
121
|
-
limit: 50,
|
|
122
|
-
},
|
|
123
|
-
}, { authorization: `Bearer ${this.accessToken}` });
|
|
124
|
-
movements.unshift(...newMovements);
|
|
125
|
-
cursor = pagination.cursor;
|
|
126
|
-
if (!pagination.hasMore) {
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
movements.sort((x, y) => new Date(x.movementTimestamp).valueOf() - new Date(y.movementTimestamp).valueOf());
|
|
131
|
-
const matchingMovements = movements.filter(movement => new Date(movement.movementTimestamp) >= startDate);
|
|
132
|
-
return {
|
|
133
|
-
accountNumber: portfolio.portfolioNum,
|
|
134
|
-
balance: !movements.length ? 0 : parseFloat(movements[movements.length - 1].runningBalance),
|
|
135
|
-
txns: matchingMovements.map((movement) => {
|
|
136
|
-
const hasInstallments = movement.transaction?.enrichment?.recurrences?.some(x => x.isRecurrent);
|
|
137
|
-
const modifier = movement.creditDebit === 'DEBIT' ? -1 : 1;
|
|
138
|
-
return {
|
|
139
|
-
identifier: movement.movementId,
|
|
140
|
-
date: movement.valueDate,
|
|
141
|
-
chargedAmount: +movement.movementAmount * modifier,
|
|
142
|
-
chargedCurrency: movement.movementCurrency,
|
|
143
|
-
originalAmount: +movement.movementAmount * modifier,
|
|
144
|
-
originalCurrency: movement.movementCurrency,
|
|
145
|
-
description: this.sanitizeHebrew(movement.description),
|
|
146
|
-
processedDate: movement.movementTimestamp,
|
|
147
|
-
status: transactions_1.TransactionStatuses.Completed,
|
|
148
|
-
type: hasInstallments ? transactions_1.TransactionTypes.Installments : transactions_1.TransactionTypes.Normal,
|
|
149
|
-
};
|
|
150
|
-
}),
|
|
151
|
-
};
|
|
86
|
+
if (!credentials.phoneNumber) {
|
|
87
|
+
return (0, _errors.createGenericError)('phoneNumber is required when providing a otpCodeRetriever callback');
|
|
88
|
+
}
|
|
89
|
+
debug('Triggering user supplied otpCodeRetriever callback');
|
|
90
|
+
const triggerResult = await this.triggerTwoFactorAuth(credentials.phoneNumber);
|
|
91
|
+
if (!triggerResult.success) {
|
|
92
|
+
return triggerResult;
|
|
152
93
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
94
|
+
const otpCode = await credentials.otpCodeRetriever();
|
|
95
|
+
const otpTokenResult = await this.getLongTermTwoFactorToken(otpCode);
|
|
96
|
+
if (!otpTokenResult.success) {
|
|
97
|
+
return otpTokenResult;
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
success: true,
|
|
101
|
+
longTermTwoFactorAuthToken: otpTokenResult.longTermTwoFactorAuthToken
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async login(credentials) {
|
|
105
|
+
const otpTokenResult = await this.resolveOtpToken(credentials);
|
|
106
|
+
if (!otpTokenResult.success) {
|
|
107
|
+
return otpTokenResult;
|
|
108
|
+
}
|
|
109
|
+
debug('Requesting id token');
|
|
110
|
+
const getIdTokenResponse = await (0, _fetch.fetchPost)(`${IDENTITY_SERVER_URL}/getIdToken`, {
|
|
111
|
+
otpSmsToken: otpTokenResult.longTermTwoFactorAuthToken,
|
|
112
|
+
email: credentials.email,
|
|
113
|
+
pass: credentials.password,
|
|
114
|
+
pinCode: ''
|
|
115
|
+
});
|
|
116
|
+
const {
|
|
117
|
+
resultData: {
|
|
118
|
+
idToken
|
|
119
|
+
}
|
|
120
|
+
} = getIdTokenResponse;
|
|
121
|
+
debug('Requesting session token');
|
|
122
|
+
const getSessionTokenResponse = await (0, _fetch.fetchPost)(`${IDENTITY_SERVER_URL}/sessions/token`, {
|
|
123
|
+
idToken,
|
|
124
|
+
pass: credentials.password
|
|
125
|
+
});
|
|
126
|
+
const {
|
|
127
|
+
resultData: {
|
|
128
|
+
accessToken
|
|
129
|
+
}
|
|
130
|
+
} = getSessionTokenResponse;
|
|
131
|
+
this.accessToken = accessToken;
|
|
132
|
+
return {
|
|
133
|
+
success: true,
|
|
134
|
+
persistentOtpToken: otpTokenResult.longTermTwoFactorAuthToken
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
async fetchPortfolioMovements(portfolio, startDate) {
|
|
138
|
+
// TODO: Find out if we need the other accounts, there seems to always be one
|
|
139
|
+
const account = portfolio.accounts[0];
|
|
140
|
+
let cursor = null;
|
|
141
|
+
const movements = [];
|
|
142
|
+
while (!movements.length || new Date(movements[0].movementTimestamp) >= startDate) {
|
|
143
|
+
debug(`Fetching transactions for account ${portfolio.portfolioNum}...`);
|
|
144
|
+
const {
|
|
145
|
+
movements: {
|
|
146
|
+
movements: newMovements,
|
|
147
|
+
pagination
|
|
160
148
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
index += start - index;
|
|
169
|
-
const reversed = [...plainString.substring(start, end)].reverse();
|
|
170
|
-
out.push(...reversed);
|
|
171
|
-
index += end - start;
|
|
149
|
+
} = await (0, _fetch.fetchGraphql)(GRAPHQL_API_URL, _oneZeroQueries.GET_MOVEMENTS, {
|
|
150
|
+
portfolioId: portfolio.portfolioId,
|
|
151
|
+
accountId: account.accountId,
|
|
152
|
+
language: 'HEBREW',
|
|
153
|
+
pagination: {
|
|
154
|
+
cursor,
|
|
155
|
+
limit: 50
|
|
172
156
|
}
|
|
173
|
-
|
|
174
|
-
|
|
157
|
+
}, {
|
|
158
|
+
authorization: `Bearer ${this.accessToken}`
|
|
159
|
+
});
|
|
160
|
+
movements.unshift(...newMovements);
|
|
161
|
+
cursor = pagination.cursor;
|
|
162
|
+
if (!pagination.hasMore) {
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
175
165
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
const result = await (0, fetch_1.fetchGraphql)(GRAPHQL_API_URL, one_zero_queries_1.GET_CUSTOMER, {}, { authorization: `Bearer ${this.accessToken}` });
|
|
185
|
-
const portfolios = result.customer.flatMap(customer => customer.portfolios || []);
|
|
166
|
+
movements.sort((x, y) => new Date(x.movementTimestamp).valueOf() - new Date(y.movementTimestamp).valueOf());
|
|
167
|
+
const matchingMovements = movements.filter(movement => new Date(movement.movementTimestamp) >= startDate);
|
|
168
|
+
return {
|
|
169
|
+
accountNumber: portfolio.portfolioNum,
|
|
170
|
+
balance: !movements.length ? 0 : parseFloat(movements[movements.length - 1].runningBalance),
|
|
171
|
+
txns: matchingMovements.map(movement => {
|
|
172
|
+
const hasInstallments = movement.transaction?.enrichment?.recurrences?.some(x => x.isRecurrent);
|
|
173
|
+
const modifier = movement.creditDebit === 'DEBIT' ? -1 : 1;
|
|
186
174
|
return {
|
|
187
|
-
|
|
188
|
-
|
|
175
|
+
identifier: movement.movementId,
|
|
176
|
+
date: movement.valueDate,
|
|
177
|
+
chargedAmount: +movement.movementAmount * modifier,
|
|
178
|
+
chargedCurrency: movement.movementCurrency,
|
|
179
|
+
originalAmount: +movement.movementAmount * modifier,
|
|
180
|
+
originalCurrency: movement.movementCurrency,
|
|
181
|
+
description: this.sanitizeHebrew(movement.description),
|
|
182
|
+
processedDate: movement.movementTimestamp,
|
|
183
|
+
status: _transactions.TransactionStatuses.Completed,
|
|
184
|
+
type: hasInstallments ? _transactions.TransactionTypes.Installments : _transactions.TransactionTypes.Normal
|
|
189
185
|
};
|
|
186
|
+
})
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* one zero hebrew strings are reversed with a unicode control character that forces display in LTR order
|
|
192
|
+
* We need to remove the unicode control character, and then reverse hebrew substrings inside the string
|
|
193
|
+
*/
|
|
194
|
+
sanitizeHebrew(text) {
|
|
195
|
+
if (!text.includes('\u202d')) {
|
|
196
|
+
return text.trim();
|
|
197
|
+
}
|
|
198
|
+
const plainString = text.replace(/\u202d/gi, '').trim();
|
|
199
|
+
const hebrewSubStringsRanges = [...plainString.matchAll(HEBREW_WORDS_REGEX)];
|
|
200
|
+
const rangesToReverse = hebrewSubStringsRanges.map(str => ({
|
|
201
|
+
start: str.index,
|
|
202
|
+
end: str.index + str[0].length
|
|
203
|
+
}));
|
|
204
|
+
const out = [];
|
|
205
|
+
let index = 0;
|
|
206
|
+
for (const {
|
|
207
|
+
start,
|
|
208
|
+
end
|
|
209
|
+
} of rangesToReverse) {
|
|
210
|
+
out.push(...plainString.substring(index, start));
|
|
211
|
+
index += start - index;
|
|
212
|
+
const reversed = [...plainString.substring(start, end)].reverse();
|
|
213
|
+
out.push(...reversed);
|
|
214
|
+
index += end - start;
|
|
215
|
+
}
|
|
216
|
+
out.push(...plainString.substring(index, plainString.length));
|
|
217
|
+
return out.join('');
|
|
218
|
+
}
|
|
219
|
+
async fetchData() {
|
|
220
|
+
if (!this.accessToken) {
|
|
221
|
+
return (0, _errors.createGenericError)('login() was not called');
|
|
190
222
|
}
|
|
223
|
+
const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(1, 'day');
|
|
224
|
+
const startDate = this.options.startDate || defaultStartMoment.toDate();
|
|
225
|
+
const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
|
|
226
|
+
debug('Fetching account list');
|
|
227
|
+
const result = await (0, _fetch.fetchGraphql)(GRAPHQL_API_URL, _oneZeroQueries.GET_CUSTOMER, {}, {
|
|
228
|
+
authorization: `Bearer ${this.accessToken}`
|
|
229
|
+
});
|
|
230
|
+
const portfolios = result.customer.flatMap(customer => customer.portfolios || []);
|
|
231
|
+
return {
|
|
232
|
+
success: true,
|
|
233
|
+
accounts: await Promise.all(portfolios.map(portfolio => this.fetchPortfolioMovements(portfolio, startMoment.toDate())))
|
|
234
|
+
};
|
|
235
|
+
}
|
|
191
236
|
}
|
|
192
237
|
exports.default = OneZeroScraper;
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lLXplcm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvb25lLXplcm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyREFBbUM7QUFDbkMsNENBQTRDO0FBQzVDLDRDQUEyRDtBQUMzRCxrREFLeUI7QUFDekIsaURBQTZDO0FBQzdDLHFDQUFpRTtBQU9qRSx5REFBaUU7QUFFakUsTUFBTSxrQkFBa0IsR0FBRywwREFBMEQsQ0FBQztBQUV0RixNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFRLEVBQUMsVUFBVSxDQUFDLENBQUM7QUE2RG5DLE1BQU0sbUJBQW1CLEdBQUcsbUNBQW1DLENBQUM7QUFFaEUsTUFBTSxlQUFlLEdBQUcsa0RBQWtELENBQUM7QUFZM0UsTUFBcUIsY0FBZSxTQUFRLDBCQUF1QztJQUN6RSxVQUFVLENBQVU7SUFFcEIsV0FBVyxDQUFVO0lBRTdCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxXQUFtQjtRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQyxPQUFPLElBQUEsMkJBQWtCLEVBQ3ZCLDhGQUE4RixDQUMvRixDQUFDO1NBQ0g7UUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMvQixNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBQSxpQkFBUyxFQUFDLEdBQUcsbUJBQW1CLGdCQUFnQixFQUFFO1lBQ2xGLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLEVBQUUsRUFBRSxTQUFTO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUNKLFVBQVUsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUM1QixHQUFHLG1CQUFtQixDQUFDO1FBRXhCLEtBQUssQ0FBQywrQkFBK0IsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVwRCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBQSxpQkFBUyxFQUFDLEdBQUcsbUJBQW1CLGNBQWMsRUFBRTtZQUMv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dCc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHcmFwaHFsLCBmZXRjaFBvc3QgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7XG4gIHR5cGUgVHJhbnNhY3Rpb24gYXMgU2NyYXBpbmdUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXIgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcywgY3JlYXRlR2VuZXJpY0Vycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgdHlwZSBTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdCxcbiAgdHlwZSBTY3JhcGVyTG9naW5SZXN1bHQsXG4gIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0LFxuICB0eXBlIFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdCxcbn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR0VUX0NVU1RPTUVSLCBHRVRfTU9WRU1FTlRTIH0gZnJvbSAnLi9vbmUtemVyby1xdWVyaWVzJztcblxuY29uc3QgSEVCUkVXX1dPUkRTX1JFR0VYID0gL1tcXHUwNTkwLVxcdTA1RkZdW1xcdTA1OTAtXFx1MDVGRlwiJ1xcLV8gL1xcXFxdKltcXHUwNTkwLVxcdTA1RkZdL2c7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ29uZS16ZXJvJyk7XG5cbnR5cGUgQWNjb3VudCA9IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG59O1xuXG50eXBlIFBvcnRmb2xpbyA9IHtcbiAgYWNjb3VudHM6IEFycmF5PEFjY291bnQ+O1xuICBwb3J0Zm9saW9JZDogc3RyaW5nO1xuICBwb3J0Zm9saW9OdW06IHN0cmluZztcbn07XG5cbnR5cGUgQ3VzdG9tZXIgPSB7XG4gIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgcG9ydGZvbGlvcz86IEFycmF5PFBvcnRmb2xpbz4gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgQ2F0ZWdvcnkgPSB7XG4gIGNhdGVnb3J5SWQ6IG51bWJlcjtcbiAgZGF0YVNvdXJjZTogc3RyaW5nO1xuICBzdWJDYXRlZ29yeUlkPzogbnVtYmVyIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFJlY3VycmVuY2UgPSB7XG4gIGRhdGFTb3VyY2U6IHN0cmluZztcbiAgaXNSZWN1cnJlbnQ6IGJvb2xlYW47XG59O1xuXG50eXBlIFRyYW5zYWN0aW9uRW5yaWNobWVudCA9IHtcbiAgY2F0ZWdvcmllcz86IENhdGVnb3J5W10gfCBudWxsO1xuICByZWN1cnJlbmNlcz86IFJlY3VycmVuY2VbXSB8IG51bGw7XG59O1xuXG50eXBlIFRyYW5zYWN0aW9uID0ge1xuICBlbnJpY2htZW50PzogVHJhbnNhY3Rpb25FbnJpY2htZW50IHwgbnVsbDtcbiAgLy8gVE9ETzogR2V0IGluc3RhbGxtZW50cyBpbmZvcm1hdGlvbiBoZXJlXG4gIC8vIHRyYW5zYWN0aW9uRGV0YWlsczogVHJhbnNhY3Rpb25EZXRhaWxzO1xufTtcblxudHlwZSBNb3ZlbWVudCA9IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGJhbmtDdXJyZW5jeUFtb3VudDogc3RyaW5nO1xuICBib29raW5nRGF0ZTogc3RyaW5nO1xuICBjb252ZXJzaW9uUmF0ZTogc3RyaW5nO1xuICBjcmVkaXREZWJpdDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpc1JldmVyc2VkOiBib29sZWFuO1xuICBtb3ZlbWVudEFtb3VudDogc3RyaW5nO1xuICBtb3ZlbWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIG1vdmVtZW50SWQ6IHN0cmluZztcbiAgbW92ZW1lbnRSZXZlcnNlZElkPzogc3RyaW5nIHwgbnVsbDtcbiAgbW92ZW1lbnRUaW1lc3RhbXA6IHN0cmluZztcbiAgbW92ZW1lbnRUeXBlOiBzdHJpbmc7XG4gIHBvcnRmb2xpb0lkOiBzdHJpbmc7XG4gIHJ1bm5pbmdCYWxhbmNlOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24gfCBudWxsO1xuICB2YWx1ZURhdGU6IHN0cmluZztcbn07XG5cbnR5cGUgUXVlcnlQYWdpbmF0aW9uID0geyBoYXNNb3JlOiBib29sZWFuOyBjdXJzb3I6IHN0cmluZyB9O1xuXG5jb25zdCBJREVOVElUWV9TRVJWRVJfVVJMID0gJ2h0dHBzOi8vaWRlbnRpdHkudGZkLWJhbmsuY29tL3YxLyc7XG5cbmNvbnN0IEdSQVBIUUxfQVBJX1VSTCA9ICdodHRwczovL21vYmlsZS50ZmQtYmFuay5jb20vbW9iaWxlLWdyYXBoL2dyYXBocWwnO1xuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gIHwge1xuICAgICAgb3RwQ29kZVJldHJpZXZlcjogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9uZVplcm9TY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJpdmF0ZSBvdHBDb250ZXh0Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG5cbiAgYXN5bmMgdHJpZ2dlclR3b0ZhY3RvckF1dGgocGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PiB7XG4gICAgaWYgKCFwaG9uZU51bWJlci5zdGFydHNXaXRoKCcrJykpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoXG4gICAgICAgICdBIGZ1bGwgaW50ZXJuYXRpb25hbCBwaG9uZSBudW1iZXIgc3RhcnRpbmcgd2l0aCArIGFuZCBhIHRocmVlIGRpZ2l0IGNvdW50cnkgY29kZSBpcyByZXF1aXJlZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGRlYnVnKCdGZXRjaGluZyBkZXZpY2UgdG9rZW4nKTtcbiAgICBjb25zdCBkZXZpY2VUb2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L2RldmljZXMvdG9rZW5gLCB7XG4gICAgICBleHRDbGllbnRJZDogJ21vYmlsZScsXG4gICAgICBvczogJ0FuZHJvaWQnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBkZXZpY2VUb2tlbiB9LFxuICAgIH0gPSBkZXZpY2VUb2tlblJlc3BvbnNlO1xuXG4gICAgZGVidWcoYFNlbmRpbmcgT1RQIHRvIHBob25lIG51bWJlciAke3Bob25lTnVtYmVyfWApO1xuXG4gICAgY29uc3Qgb3RwUHJlcGFyZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L290cC9wcmVwYXJlYCwge1xuICAgICAgZmFjdG9yVmFsdWU6IHBob25lTnVtYmVyLFxuICAgICAgZGV2aWNlVG9rZW4sXG4gICAgICBvdHBDaGFubmVsOiAnU01TX09UUCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IG90cENvbnRleHQgfSxcbiAgICB9ID0gb3RwUHJlcGFyZVJlc3BvbnNlO1xuXG4gICAgdGhpcy5vdHBDb250ZXh0ID0gb3RwQ29udGV4dDtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0PiB7XG4gICAgaWYgKCF0aGlzLm90cENvbnRleHQpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ3RyaWdnZXJPdHAgd2FzIG5vdCBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgZ2V0UGVybWVuYW50T3RwVG9rZW4oKScpO1xuICAgIH1cblxuICAgIGRlYnVnKCdSZXF1ZXN0aW5nIE9UUCB0b2tlbicpO1xuICAgIGNvbnN0IG90cFZlcmlmeVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L290cC92ZXJpZnlgLCB7XG4gICAgICBvdHBDb250ZXh0OiB0aGlzLm90cENvbnRleHQsXG4gICAgICBvdHBDb2RlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBvdHBUb2tlbiB9LFxuICAgIH0gPSBvdHBWZXJpZnlSZXNwb25zZTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogb3RwVG9rZW4gfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZU90cFRva2VuKFxuICAgIGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyxcbiAgKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD4ge1xuICAgIGlmICgnb3RwTG9uZ1Rlcm1Ub2tlbicgaW4gY3JlZGVudGlhbHMpIHtcbiAgICAgIGlmICghY3JlZGVudGlhbHMub3RwTG9uZ1Rlcm1Ub2tlbikge1xuICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0Vycm9yKCdJbnZhbGlkIG90cExvbmdUZXJtVG9rZW4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuOiBjcmVkZW50aWFscy5vdHBMb25nVGVybVRva2VuIH07XG4gICAgfVxuXG4gICAgaWYgKCFjcmVkZW50aWFscy5vdHBDb2RlUmV0cmlldmVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5Ud29GYWN0b3JSZXRyaWV2ZXJNaXNzaW5nLFxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdvdHBDb2RlUmV0cmlldmVyIGlzIHJlcXVpcmVkIHdoZW4gb3RwUGVybWFuZW50VG9rZW4gaXMgbm90IHByb3ZpZGVkJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCFjcmVkZW50aWFscy5waG9uZU51bWJlcikge1xuICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcigncGhvbmVOdW1iZXIgaXMgcmVxdWlyZWQgd2hlbiBwcm92aWRpbmcgYSBvdHBDb2RlUmV0cmlldmVyIGNhbGxiYWNrJyk7XG4gICAgfVxuXG4gICAgZGVidWcoJ1RyaWdnZXJpbmcgdXNlciBzdXBwbGllZCBvdHBDb2RlUmV0cmlldmVyIGNhbGxiYWNrJyk7XG4gICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRoaXMudHJpZ2dlclR3b0ZhY3RvckF1dGgoY3JlZGVudGlhbHMucGhvbmVOdW1iZXIpO1xuXG4gICAgaWYgKCF0cmlnZ2VyUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB0cmlnZ2VyUmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IG90cENvZGUgPSBhd2FpdCBjcmVkZW50aWFscy5vdHBDb2RlUmV0cmlldmVyKCk7XG5cbiAgICBjb25zdCBvdHBUb2tlblJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlKTtcbiAgICBpZiAoIW90cFRva2VuUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiBvdHBUb2tlblJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogb3RwVG9rZW5SZXN1bHQubG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW4gfTtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlckxvZ2luUmVzdWx0PiB7XG4gICAgY29uc3Qgb3RwVG9rZW5SZXN1bHQgPSBhd2FpdCB0aGlzLnJlc29sdmVPdHBUb2tlbihjcmVkZW50aWFscyk7XG4gICAgaWYgKCFvdHBUb2tlblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gb3RwVG9rZW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgZGVidWcoJ1JlcXVlc3RpbmcgaWQgdG9rZW4nKTtcbiAgICBjb25zdCBnZXRJZFRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3QoYCR7SURFTlRJVFlfU0VSVkVSX1VSTH0vZ2V0SWRUb2tlbmAsIHtcbiAgICAgIG90cFNtc1Rva2VuOiBvdHBUb2tlblJlc3VsdC5sb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbixcbiAgICAgIGVtYWlsOiBjcmVkZW50aWFscy5lbWFpbCxcbiAgICAgIHBhc3M6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgcGluQ29kZTogJycsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IGlkVG9rZW4gfSxcbiAgICB9ID0gZ2V0SWRUb2tlblJlc3BvbnNlO1xuXG4gICAgZGVidWcoJ1JlcXVlc3Rpbmcgc2Vzc2lvbiB0b2tlbicpO1xuXG4gICAgY29uc3QgZ2V0U2Vzc2lvblRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3QoYCR7SURFTlRJVFlfU0VSVkVSX1VSTH0vc2Vzc2lvbnMvdG9rZW5gLCB7XG4gICAgICBpZFRva2VuLFxuICAgICAgcGFzczogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IGFjY2Vzc1Rva2VuIH0sXG4gICAgfSA9IGdldFNlc3Npb25Ub2tlblJlc3BvbnNlO1xuXG4gICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBwZXJzaXN0ZW50T3RwVG9rZW46IG90cFRva2VuUmVzdWx0LmxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoUG9ydGZvbGlvTW92ZW1lbnRzKHBvcnRmb2xpbzogUG9ydGZvbGlvLCBzdGFydERhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgICAvLyBUT0RPOiBGaW5kIG91dCBpZiB3ZSBuZWVkIHRoZSBvdGhlciBhY2NvdW50cywgdGhlcmUgc2VlbXMgdG8gYWx3YXlzIGJlIG9uZVxuICAgIGNvbnN0IGFjY291bnQgPSBwb3J0Zm9saW8uYWNjb3VudHNbMF07XG4gICAgbGV0IGN1cnNvciA9IG51bGw7XG4gICAgY29uc3QgbW92ZW1lbnRzID0gW107XG5cbiAgICB3aGlsZSAoIW1vdmVtZW50cy5sZW5ndGggfHwgbmV3IERhdGUobW92ZW1lbnRzWzBdLm1vdmVtZW50VGltZXN0YW1wKSA+PSBzdGFydERhdGUpIHtcbiAgICAgIGRlYnVnKGBGZXRjaGluZyB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgJHtwb3J0Zm9saW8ucG9ydGZvbGlvTnVtfS4uLmApO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtb3ZlbWVudHM6IHsgbW92ZW1lbnRzOiBuZXdNb3ZlbWVudHMsIHBhZ2luYXRpb24gfSxcbiAgICAgIH06IHsgbW92ZW1lbnRzOiB7IG1vdmVtZW50czogTW92ZW1lbnRbXTsgcGFnaW5hdGlvbjogUXVlcnlQYWdpbmF0aW9uIH0gfSA9IGF3YWl0IGZldGNoR3JhcGhxbChcbiAgICAgICAgR1JBUEhRTF9BUElfVVJMLFxuICAgICAgICBHRVRfTU9WRU1FTlRTLFxuICAgICAgICB7XG4gICAgICAgICAgcG9ydGZvbGlvSWQ6IHBvcnRmb2xpby5wb3J0Zm9saW9JZCxcbiAgICAgICAgICBhY2NvdW50SWQ6IGFjY291bnQuYWNjb3VudElkLFxuICAgICAgICAgIGxhbmd1YWdlOiAnSEVCUkVXJyxcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICBjdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlbn1gIH0sXG4gICAgICApO1xuXG4gICAgICBtb3ZlbWVudHMudW5zaGlmdCguLi5uZXdNb3ZlbWVudHMpO1xuICAgICAgY3Vyc29yID0gcGFnaW5hdGlvbi5jdXJzb3I7XG4gICAgICBpZiAoIXBhZ2luYXRpb24uaGFzTW9yZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlbWVudHMuc29ydCgoeCwgeSkgPT4gbmV3IERhdGUoeC5tb3ZlbWVudFRpbWVzdGFtcCkudmFsdWVPZigpIC0gbmV3IERhdGUoeS5tb3ZlbWVudFRpbWVzdGFtcCkudmFsdWVPZigpKTtcblxuICAgIGNvbnN0IG1hdGNoaW5nTW92ZW1lbnRzID0gbW92ZW1lbnRzLmZpbHRlcihtb3ZlbWVudCA9PiBuZXcgRGF0ZShtb3ZlbWVudC5tb3ZlbWVudFRpbWVzdGFtcCkgPj0gc3RhcnREYXRlKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcjogcG9ydGZvbGlvLnBvcnRmb2xpb051bSxcbiAgICAgIGJhbGFuY2U6ICFtb3ZlbWVudHMubGVuZ3RoID8gMCA6IHBhcnNlRmxvYXQobW92ZW1lbnRzW21vdmVtZW50cy5sZW5ndGggLSAxXS5ydW5uaW5nQmFsYW5jZSksXG4gICAgICB0eG5zOiBtYXRjaGluZ01vdmVtZW50cy5tYXAoKG1vdmVtZW50KTogU2NyYXBpbmdUcmFuc2FjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0luc3RhbGxtZW50cyA9IG1vdmVtZW50LnRyYW5zYWN0aW9uPy5lbnJpY2htZW50Py5yZWN1cnJlbmNlcz8uc29tZSh4ID0+IHguaXNSZWN1cnJlbnQpO1xuICAgICAgICBjb25zdCBtb2RpZmllciA9IG1vdmVtZW50LmNyZWRpdERlYml0ID09PSAnREVCSVQnID8gLTEgOiAxO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkZW50aWZpZXI6IG1vdmVtZW50Lm1vdmVtZW50SWQsXG4gICAgICAgICAgZGF0ZTogbW92ZW1lbnQudmFsdWVEYXRlLFxuICAgICAgICAgIGNoYXJnZWRBbW91bnQ6ICttb3ZlbWVudC5tb3ZlbWVudEFtb3VudCAqIG1vZGlmaWVyLFxuICAgICAgICAgIGNoYXJnZWRDdXJyZW5jeTogbW92ZW1lbnQubW92ZW1lbnRDdXJyZW5jeSxcbiAgICAgICAgICBvcmlnaW5hbEFtb3VudDogK21vdmVtZW50Lm1vdmVtZW50QW1vdW50ICogbW9kaWZpZXIsXG4gICAgICAgICAgb3JpZ2luYWxDdXJyZW5jeTogbW92ZW1lbnQubW92ZW1lbnRDdXJyZW5jeSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5zYW5pdGl6ZUhlYnJldyhtb3ZlbWVudC5kZXNjcmlwdGlvbiksXG4gICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogbW92ZW1lbnQubW92ZW1lbnRUaW1lc3RhbXAsXG4gICAgICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgICAgICB0eXBlOiBoYXNJbnN0YWxsbWVudHMgPyBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cyA6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvbmUgemVybyBoZWJyZXcgc3RyaW5ncyBhcmUgcmV2ZXJzZWQgd2l0aCBhIHVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIgdGhhdCBmb3JjZXMgZGlzcGxheSBpbiBMVFIgb3JkZXJcbiAgICogV2UgbmVlZCB0byByZW1vdmUgdGhlIHVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIsIGFuZCB0aGVuIHJldmVyc2UgaGVicmV3IHN1YnN0cmluZ3MgaW5zaWRlIHRoZSBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgc2FuaXRpemVIZWJyZXcodGV4dDogc3RyaW5nKSB7XG4gICAgaWYgKCF0ZXh0LmluY2x1ZGVzKCdcXHUyMDJkJykpIHtcbiAgICAgIHJldHVybiB0ZXh0LnRyaW0oKTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGFpblN0cmluZyA9IHRleHQucmVwbGFjZSgvXFx1MjAyZC9naSwgJycpLnRyaW0oKTtcbiAgICBjb25zdCBoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzID0gWy4uLnBsYWluU3RyaW5nLm1hdGNoQWxsKEhFQlJFV19XT1JEU19SRUdFWCldO1xuICAgIGNvbnN0IHJhbmdlc1RvUmV2ZXJzZSA9IGhlYnJld1N1YlN0cmluZ3NSYW5nZXMubWFwKHN0ciA9PiAoeyBzdGFydDogc3RyLmluZGV4ISwgZW5kOiBzdHIuaW5kZXghICsgc3RyWzBdLmxlbmd0aCB9KSk7XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIGZvciAoY29uc3QgeyBzdGFydCwgZW5kIH0gb2YgcmFuZ2VzVG9SZXZlcnNlKSB7XG4gICAgICBvdXQucHVzaCguLi5wbGFpblN0cmluZy5zdWJzdHJpbmcoaW5kZXgsIHN0YXJ0KSk7XG4gICAgICBpbmRleCArPSBzdGFydCAtIGluZGV4O1xuICAgICAgY29uc3QgcmV2ZXJzZWQgPSBbLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpXS5yZXZlcnNlKCk7XG4gICAgICBvdXQucHVzaCguLi5yZXZlcnNlZCk7XG4gICAgICBpbmRleCArPSBlbmQgLSBzdGFydDtcbiAgICB9XG5cbiAgICBvdXQucHVzaCguLi5wbGFpblN0cmluZy5zdWJzdHJpbmcoaW5kZXgsIHBsYWluU3RyaW5nLmxlbmd0aCkpO1xuXG4gICAgcmV0dXJuIG91dC5qb2luKCcnKTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGlmICghdGhpcy5hY2Nlc3NUb2tlbikge1xuICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcignbG9naW4oKSB3YXMgbm90IGNhbGxlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgZGVidWcoJ0ZldGNoaW5nIGFjY291bnQgbGlzdCcpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoR3JhcGhxbDx7IGN1c3RvbWVyOiBDdXN0b21lcltdIH0+KFxuICAgICAgR1JBUEhRTF9BUElfVVJMLFxuICAgICAgR0VUX0NVU1RPTUVSLFxuICAgICAge30sXG4gICAgICB7IGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmFjY2Vzc1Rva2VufWAgfSxcbiAgICApO1xuICAgIGNvbnN0IHBvcnRmb2xpb3MgPSByZXN1bHQuY3VzdG9tZXIuZmxhdE1hcChjdXN0b21lciA9PiBjdXN0b21lci5wb3J0Zm9saW9zIHx8IFtdKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBwb3J0Zm9saW9zLm1hcChwb3J0Zm9saW8gPT4gdGhpcy5mZXRjaFBvcnRmb2xpb01vdmVtZW50cyhwb3J0Zm9saW8sIHN0YXJ0TW9tZW50LnRvRGF0ZSgpKSksXG4gICAgICApLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZmV0Y2giLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyIiwiX2Vycm9ycyIsIl9vbmVaZXJvUXVlcmllcyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkhFQlJFV19XT1JEU19SRUdFWCIsImRlYnVnIiwiZ2V0RGVidWciLCJJREVOVElUWV9TRVJWRVJfVVJMIiwiR1JBUEhRTF9BUElfVVJMIiwiT25lWmVyb1NjcmFwZXIiLCJCYXNlU2NyYXBlciIsInRyaWdnZXJUd29GYWN0b3JBdXRoIiwicGhvbmVOdW1iZXIiLCJzdGFydHNXaXRoIiwiY3JlYXRlR2VuZXJpY0Vycm9yIiwiZGV2aWNlVG9rZW5SZXNwb25zZSIsImZldGNoUG9zdCIsImV4dENsaWVudElkIiwib3MiLCJyZXN1bHREYXRhIiwiZGV2aWNlVG9rZW4iLCJvdHBQcmVwYXJlUmVzcG9uc2UiLCJmYWN0b3JWYWx1ZSIsIm90cENoYW5uZWwiLCJvdHBDb250ZXh0Iiwic3VjY2VzcyIsImdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4iLCJvdHBDb2RlIiwib3RwVmVyaWZ5UmVzcG9uc2UiLCJvdHBUb2tlbiIsImxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuIiwicmVzb2x2ZU90cFRva2VuIiwiY3JlZGVudGlhbHMiLCJvdHBMb25nVGVybVRva2VuIiwib3RwQ29kZVJldHJpZXZlciIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiVHdvRmFjdG9yUmV0cmlldmVyTWlzc2luZyIsImVycm9yTWVzc2FnZSIsInRyaWdnZXJSZXN1bHQiLCJvdHBUb2tlblJlc3VsdCIsImxvZ2luIiwiZ2V0SWRUb2tlblJlc3BvbnNlIiwib3RwU21zVG9rZW4iLCJlbWFpbCIsInBhc3MiLCJwYXNzd29yZCIsInBpbkNvZGUiLCJpZFRva2VuIiwiZ2V0U2Vzc2lvblRva2VuUmVzcG9uc2UiLCJhY2Nlc3NUb2tlbiIsInBlcnNpc3RlbnRPdHBUb2tlbiIsImZldGNoUG9ydGZvbGlvTW92ZW1lbnRzIiwicG9ydGZvbGlvIiwic3RhcnREYXRlIiwiYWNjb3VudCIsImFjY291bnRzIiwiY3Vyc29yIiwibW92ZW1lbnRzIiwibGVuZ3RoIiwiRGF0ZSIsIm1vdmVtZW50VGltZXN0YW1wIiwicG9ydGZvbGlvTnVtIiwibmV3TW92ZW1lbnRzIiwicGFnaW5hdGlvbiIsImZldGNoR3JhcGhxbCIsIkdFVF9NT1ZFTUVOVFMiLCJwb3J0Zm9saW9JZCIsImFjY291bnRJZCIsImxhbmd1YWdlIiwibGltaXQiLCJhdXRob3JpemF0aW9uIiwidW5zaGlmdCIsImhhc01vcmUiLCJzb3J0IiwieCIsInkiLCJ2YWx1ZU9mIiwibWF0Y2hpbmdNb3ZlbWVudHMiLCJmaWx0ZXIiLCJtb3ZlbWVudCIsImFjY291bnROdW1iZXIiLCJiYWxhbmNlIiwicGFyc2VGbG9hdCIsInJ1bm5pbmdCYWxhbmNlIiwidHhucyIsIm1hcCIsImhhc0luc3RhbGxtZW50cyIsInRyYW5zYWN0aW9uIiwiZW5yaWNobWVudCIsInJlY3VycmVuY2VzIiwic29tZSIsImlzUmVjdXJyZW50IiwibW9kaWZpZXIiLCJjcmVkaXREZWJpdCIsImlkZW50aWZpZXIiLCJtb3ZlbWVudElkIiwiZGF0ZSIsInZhbHVlRGF0ZSIsImNoYXJnZWRBbW91bnQiLCJtb3ZlbWVudEFtb3VudCIsImNoYXJnZWRDdXJyZW5jeSIsIm1vdmVtZW50Q3VycmVuY3kiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsInNhbml0aXplSGVicmV3IiwicHJvY2Vzc2VkRGF0ZSIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIk5vcm1hbCIsInRleHQiLCJpbmNsdWRlcyIsInRyaW0iLCJwbGFpblN0cmluZyIsInJlcGxhY2UiLCJoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzIiwibWF0Y2hBbGwiLCJyYW5nZXNUb1JldmVyc2UiLCJzdHIiLCJzdGFydCIsImluZGV4IiwiZW5kIiwib3V0IiwicHVzaCIsInN1YnN0cmluZyIsInJldmVyc2VkIiwicmV2ZXJzZSIsImpvaW4iLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJtb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsIm9wdGlvbnMiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsInJlc3VsdCIsIkdFVF9DVVNUT01FUiIsInBvcnRmb2xpb3MiLCJjdXN0b21lciIsImZsYXRNYXAiLCJQcm9taXNlIiwiYWxsIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vbmUtemVyby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGZldGNoR3JhcGhxbCwgZmV0Y2hQb3N0IH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQge1xuICB0eXBlIFRyYW5zYWN0aW9uIGFzIFNjcmFwaW5nVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4gIFRyYW5zYWN0aW9uVHlwZXMsXG4gIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHsgU2NyYXBlckVycm9yVHlwZXMsIGNyZWF0ZUdlbmVyaWNFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7XG4gIHR5cGUgU2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQsXG4gIHR5cGUgU2NyYXBlckxvZ2luUmVzdWx0LFxuICB0eXBlIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCxcbiAgdHlwZSBTY3JhcGVyVHdvRmFjdG9yQXV0aFRyaWdnZXJSZXN1bHQsXG59IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IEdFVF9DVVNUT01FUiwgR0VUX01PVkVNRU5UUyB9IGZyb20gJy4vb25lLXplcm8tcXVlcmllcyc7XG5cbmNvbnN0IEhFQlJFV19XT1JEU19SRUdFWCA9IC9bXFx1MDU5MC1cXHUwNUZGXVtcXHUwNTkwLVxcdTA1RkZcIidcXC1fIC9cXFxcXSpbXFx1MDU5MC1cXHUwNUZGXS9nO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdvbmUtemVybycpO1xuXG50eXBlIEFjY291bnQgPSB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xufTtcblxudHlwZSBQb3J0Zm9saW8gPSB7XG4gIGFjY291bnRzOiBBcnJheTxBY2NvdW50PjtcbiAgcG9ydGZvbGlvSWQ6IHN0cmluZztcbiAgcG9ydGZvbGlvTnVtOiBzdHJpbmc7XG59O1xuXG50eXBlIEN1c3RvbWVyID0ge1xuICBjdXN0b21lcklkOiBzdHJpbmc7XG4gIHBvcnRmb2xpb3M/OiBBcnJheTxQb3J0Zm9saW8+IHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGVnb3J5ID0ge1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGRhdGFTb3VyY2U6IHN0cmluZztcbiAgc3ViQ2F0ZWdvcnlJZD86IG51bWJlciB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBSZWN1cnJlbmNlID0ge1xuICBkYXRhU291cmNlOiBzdHJpbmc7XG4gIGlzUmVjdXJyZW50OiBib29sZWFuO1xufTtcblxudHlwZSBUcmFuc2FjdGlvbkVucmljaG1lbnQgPSB7XG4gIGNhdGVnb3JpZXM/OiBDYXRlZ29yeVtdIHwgbnVsbDtcbiAgcmVjdXJyZW5jZXM/OiBSZWN1cnJlbmNlW10gfCBudWxsO1xufTtcblxudHlwZSBUcmFuc2FjdGlvbiA9IHtcbiAgZW5yaWNobWVudD86IFRyYW5zYWN0aW9uRW5yaWNobWVudCB8IG51bGw7XG4gIC8vIFRPRE86IEdldCBpbnN0YWxsbWVudHMgaW5mb3JtYXRpb24gaGVyZVxuICAvLyB0cmFuc2FjdGlvbkRldGFpbHM6IFRyYW5zYWN0aW9uRGV0YWlscztcbn07XG5cbnR5cGUgTW92ZW1lbnQgPSB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xuICBiYW5rQ3VycmVuY3lBbW91bnQ6IHN0cmluZztcbiAgYm9va2luZ0RhdGU6IHN0cmluZztcbiAgY29udmVyc2lvblJhdGU6IHN0cmluZztcbiAgY3JlZGl0RGViaXQ6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaXNSZXZlcnNlZDogYm9vbGVhbjtcbiAgbW92ZW1lbnRBbW91bnQ6IHN0cmluZztcbiAgbW92ZW1lbnRDdXJyZW5jeTogc3RyaW5nO1xuICBtb3ZlbWVudElkOiBzdHJpbmc7XG4gIG1vdmVtZW50UmV2ZXJzZWRJZD86IHN0cmluZyB8IG51bGw7XG4gIG1vdmVtZW50VGltZXN0YW1wOiBzdHJpbmc7XG4gIG1vdmVtZW50VHlwZTogc3RyaW5nO1xuICBwb3J0Zm9saW9JZDogc3RyaW5nO1xuICBydW5uaW5nQmFsYW5jZTogc3RyaW5nO1xuICB0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uIHwgbnVsbDtcbiAgdmFsdWVEYXRlOiBzdHJpbmc7XG59O1xuXG50eXBlIFF1ZXJ5UGFnaW5hdGlvbiA9IHsgaGFzTW9yZTogYm9vbGVhbjsgY3Vyc29yOiBzdHJpbmcgfTtcblxuY29uc3QgSURFTlRJVFlfU0VSVkVSX1VSTCA9ICdodHRwczovL2lkZW50aXR5LnRmZC1iYW5rLmNvbS92MS8nO1xuXG5jb25zdCBHUkFQSFFMX0FQSV9VUkwgPSAnaHR0cHM6Ly9tb2JpbGUudGZkLWJhbmsuY29tL21vYmlsZS1ncmFwaC9ncmFwaHFsJztcblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9ICYgKFxuICB8IHtcbiAgICAgIG90cENvZGVSZXRyaWV2ZXI6ICgpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgICAgIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIG90cExvbmdUZXJtVG9rZW46IHN0cmluZztcbiAgICB9XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPbmVaZXJvU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgb3RwQ29udGV4dD86IHN0cmluZztcblxuICBwcml2YXRlIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuXG4gIGFzeW5jIHRyaWdnZXJUd29GYWN0b3JBdXRoKHBob25lTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdD4ge1xuICAgIGlmICghcGhvbmVOdW1iZXIuc3RhcnRzV2l0aCgnKycpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0Vycm9yKFxuICAgICAgICAnQSBmdWxsIGludGVybmF0aW9uYWwgcGhvbmUgbnVtYmVyIHN0YXJ0aW5nIHdpdGggKyBhbmQgYSB0aHJlZSBkaWdpdCBjb3VudHJ5IGNvZGUgaXMgcmVxdWlyZWQnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnRmV0Y2hpbmcgZGV2aWNlIHRva2VuJyk7XG4gICAgY29uc3QgZGV2aWNlVG9rZW5SZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdChgJHtJREVOVElUWV9TRVJWRVJfVVJMfS9kZXZpY2VzL3Rva2VuYCwge1xuICAgICAgZXh0Q2xpZW50SWQ6ICdtb2JpbGUnLFxuICAgICAgb3M6ICdBbmRyb2lkJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHJlc3VsdERhdGE6IHsgZGV2aWNlVG9rZW4gfSxcbiAgICB9ID0gZGV2aWNlVG9rZW5SZXNwb25zZTtcblxuICAgIGRlYnVnKGBTZW5kaW5nIE9UUCB0byBwaG9uZSBudW1iZXIgJHtwaG9uZU51bWJlcn1gKTtcblxuICAgIGNvbnN0IG90cFByZXBhcmVSZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdChgJHtJREVOVElUWV9TRVJWRVJfVVJMfS9vdHAvcHJlcGFyZWAsIHtcbiAgICAgIGZhY3RvclZhbHVlOiBwaG9uZU51bWJlcixcbiAgICAgIGRldmljZVRva2VuLFxuICAgICAgb3RwQ2hhbm5lbDogJ1NNU19PVFAnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBvdHBDb250ZXh0IH0sXG4gICAgfSA9IG90cFByZXBhcmVSZXNwb25zZTtcblxuICAgIHRoaXMub3RwQ29udGV4dCA9IG90cENvbnRleHQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4ob3RwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD4ge1xuICAgIGlmICghdGhpcy5vdHBDb250ZXh0KSB7XG4gICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0Vycm9yKCd0cmlnZ2VyT3RwIHdhcyBub3QgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIGdldFBlcm1lbmFudE90cFRva2VuKCknKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnUmVxdWVzdGluZyBPVFAgdG9rZW4nKTtcbiAgICBjb25zdCBvdHBWZXJpZnlSZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdChgJHtJREVOVElUWV9TRVJWRVJfVVJMfS9vdHAvdmVyaWZ5YCwge1xuICAgICAgb3RwQ29udGV4dDogdGhpcy5vdHBDb250ZXh0LFxuICAgICAgb3RwQ29kZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHtcbiAgICAgIHJlc3VsdERhdGE6IHsgb3RwVG9rZW4gfSxcbiAgICB9ID0gb3RwVmVyaWZ5UmVzcG9uc2U7XG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgbG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW46IG90cFRva2VuIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc29sdmVPdHBUb2tlbihcbiAgICBjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMsXG4gICk6IFByb21pc2U8U2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQ+IHtcbiAgICBpZiAoJ290cExvbmdUZXJtVG9rZW4nIGluIGNyZWRlbnRpYWxzKSB7XG4gICAgICBpZiAoIWNyZWRlbnRpYWxzLm90cExvbmdUZXJtVG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcignSW52YWxpZCBvdHBMb25nVGVybVRva2VuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogY3JlZGVudGlhbHMub3RwTG9uZ1Rlcm1Ub2tlbiB9O1xuICAgIH1cblxuICAgIGlmICghY3JlZGVudGlhbHMub3RwQ29kZVJldHJpZXZlcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuVHdvRmFjdG9yUmV0cmlldmVyTWlzc2luZyxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnb3RwQ29kZVJldHJpZXZlciBpcyByZXF1aXJlZCB3aGVuIG90cFBlcm1hbmVudFRva2VuIGlzIG5vdCBwcm92aWRlZCcsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghY3JlZGVudGlhbHMucGhvbmVOdW1iZXIpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ3Bob25lTnVtYmVyIGlzIHJlcXVpcmVkIHdoZW4gcHJvdmlkaW5nIGEgb3RwQ29kZVJldHJpZXZlciBjYWxsYmFjaycpO1xuICAgIH1cblxuICAgIGRlYnVnKCdUcmlnZ2VyaW5nIHVzZXIgc3VwcGxpZWQgb3RwQ29kZVJldHJpZXZlciBjYWxsYmFjaycpO1xuICAgIGNvbnN0IHRyaWdnZXJSZXN1bHQgPSBhd2FpdCB0aGlzLnRyaWdnZXJUd29GYWN0b3JBdXRoKGNyZWRlbnRpYWxzLnBob25lTnVtYmVyKTtcblxuICAgIGlmICghdHJpZ2dlclJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gdHJpZ2dlclJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBvdHBDb2RlID0gYXdhaXQgY3JlZGVudGlhbHMub3RwQ29kZVJldHJpZXZlcigpO1xuXG4gICAgY29uc3Qgb3RwVG9rZW5SZXN1bHQgPSBhd2FpdCB0aGlzLmdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4ob3RwQ29kZSk7XG4gICAgaWYgKCFvdHBUb2tlblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gb3RwVG9rZW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgbG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW46IG90cFRva2VuUmVzdWx0LmxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuIH07XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJMb2dpblJlc3VsdD4ge1xuICAgIGNvbnN0IG90cFRva2VuUmVzdWx0ID0gYXdhaXQgdGhpcy5yZXNvbHZlT3RwVG9rZW4oY3JlZGVudGlhbHMpO1xuICAgIGlmICghb3RwVG9rZW5SZXN1bHQuc3VjY2Vzcykge1xuICAgICAgcmV0dXJuIG90cFRva2VuUmVzdWx0O1xuICAgIH1cblxuICAgIGRlYnVnKCdSZXF1ZXN0aW5nIGlkIHRva2VuJyk7XG4gICAgY29uc3QgZ2V0SWRUb2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L2dldElkVG9rZW5gLCB7XG4gICAgICBvdHBTbXNUb2tlbjogb3RwVG9rZW5SZXN1bHQubG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW4sXG4gICAgICBlbWFpbDogY3JlZGVudGlhbHMuZW1haWwsXG4gICAgICBwYXNzOiBjcmVkZW50aWFscy5wYXNzd29yZCxcbiAgICAgIHBpbkNvZGU6ICcnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBpZFRva2VuIH0sXG4gICAgfSA9IGdldElkVG9rZW5SZXNwb25zZTtcblxuICAgIGRlYnVnKCdSZXF1ZXN0aW5nIHNlc3Npb24gdG9rZW4nKTtcblxuICAgIGNvbnN0IGdldFNlc3Npb25Ub2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L3Nlc3Npb25zL3Rva2VuYCwge1xuICAgICAgaWRUb2tlbixcbiAgICAgIHBhc3M6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBhY2Nlc3NUb2tlbiB9LFxuICAgIH0gPSBnZXRTZXNzaW9uVG9rZW5SZXNwb25zZTtcblxuICAgIHRoaXMuYWNjZXNzVG9rZW4gPSBhY2Nlc3NUb2tlbjtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgcGVyc2lzdGVudE90cFRva2VuOiBvdHBUb2tlblJlc3VsdC5sb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbixcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFBvcnRmb2xpb01vdmVtZW50cyhwb3J0Zm9saW86IFBvcnRmb2xpbywgc3RhcnREYXRlOiBEYXRlKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50PiB7XG4gICAgLy8gVE9ETzogRmluZCBvdXQgaWYgd2UgbmVlZCB0aGUgb3RoZXIgYWNjb3VudHMsIHRoZXJlIHNlZW1zIHRvIGFsd2F5cyBiZSBvbmVcbiAgICBjb25zdCBhY2NvdW50ID0gcG9ydGZvbGlvLmFjY291bnRzWzBdO1xuICAgIGxldCBjdXJzb3IgPSBudWxsO1xuICAgIGNvbnN0IG1vdmVtZW50cyA9IFtdO1xuXG4gICAgd2hpbGUgKCFtb3ZlbWVudHMubGVuZ3RoIHx8IG5ldyBEYXRlKG1vdmVtZW50c1swXS5tb3ZlbWVudFRpbWVzdGFtcCkgPj0gc3RhcnREYXRlKSB7XG4gICAgICBkZWJ1ZyhgRmV0Y2hpbmcgdHJhbnNhY3Rpb25zIGZvciBhY2NvdW50ICR7cG9ydGZvbGlvLnBvcnRmb2xpb051bX0uLi5gKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbW92ZW1lbnRzOiB7IG1vdmVtZW50czogbmV3TW92ZW1lbnRzLCBwYWdpbmF0aW9uIH0sXG4gICAgICB9OiB7IG1vdmVtZW50czogeyBtb3ZlbWVudHM6IE1vdmVtZW50W107IHBhZ2luYXRpb246IFF1ZXJ5UGFnaW5hdGlvbiB9IH0gPSBhd2FpdCBmZXRjaEdyYXBocWwoXG4gICAgICAgIEdSQVBIUUxfQVBJX1VSTCxcbiAgICAgICAgR0VUX01PVkVNRU5UUyxcbiAgICAgICAge1xuICAgICAgICAgIHBvcnRmb2xpb0lkOiBwb3J0Zm9saW8ucG9ydGZvbGlvSWQsXG4gICAgICAgICAgYWNjb3VudElkOiBhY2NvdW50LmFjY291bnRJZCxcbiAgICAgICAgICBsYW5ndWFnZTogJ0hFQlJFVycsXG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IDUwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYWNjZXNzVG9rZW59YCB9LFxuICAgICAgKTtcblxuICAgICAgbW92ZW1lbnRzLnVuc2hpZnQoLi4ubmV3TW92ZW1lbnRzKTtcbiAgICAgIGN1cnNvciA9IHBhZ2luYXRpb24uY3Vyc29yO1xuICAgICAgaWYgKCFwYWdpbmF0aW9uLmhhc01vcmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbW92ZW1lbnRzLnNvcnQoKHgsIHkpID0+IG5ldyBEYXRlKHgubW92ZW1lbnRUaW1lc3RhbXApLnZhbHVlT2YoKSAtIG5ldyBEYXRlKHkubW92ZW1lbnRUaW1lc3RhbXApLnZhbHVlT2YoKSk7XG5cbiAgICBjb25zdCBtYXRjaGluZ01vdmVtZW50cyA9IG1vdmVtZW50cy5maWx0ZXIobW92ZW1lbnQgPT4gbmV3IERhdGUobW92ZW1lbnQubW92ZW1lbnRUaW1lc3RhbXApID49IHN0YXJ0RGF0ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXI6IHBvcnRmb2xpby5wb3J0Zm9saW9OdW0sXG4gICAgICBiYWxhbmNlOiAhbW92ZW1lbnRzLmxlbmd0aCA/IDAgOiBwYXJzZUZsb2F0KG1vdmVtZW50c1ttb3ZlbWVudHMubGVuZ3RoIC0gMV0ucnVubmluZ0JhbGFuY2UpLFxuICAgICAgdHhuczogbWF0Y2hpbmdNb3ZlbWVudHMubWFwKChtb3ZlbWVudCk6IFNjcmFwaW5nVHJhbnNhY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBoYXNJbnN0YWxsbWVudHMgPSBtb3ZlbWVudC50cmFuc2FjdGlvbj8uZW5yaWNobWVudD8ucmVjdXJyZW5jZXM/LnNvbWUoeCA9PiB4LmlzUmVjdXJyZW50KTtcbiAgICAgICAgY29uc3QgbW9kaWZpZXIgPSBtb3ZlbWVudC5jcmVkaXREZWJpdCA9PT0gJ0RFQklUJyA/IC0xIDogMTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZGVudGlmaWVyOiBtb3ZlbWVudC5tb3ZlbWVudElkLFxuICAgICAgICAgIGRhdGU6IG1vdmVtZW50LnZhbHVlRGF0ZSxcbiAgICAgICAgICBjaGFyZ2VkQW1vdW50OiArbW92ZW1lbnQubW92ZW1lbnRBbW91bnQgKiBtb2RpZmllcixcbiAgICAgICAgICBjaGFyZ2VkQ3VycmVuY3k6IG1vdmVtZW50Lm1vdmVtZW50Q3VycmVuY3ksXG4gICAgICAgICAgb3JpZ2luYWxBbW91bnQ6ICttb3ZlbWVudC5tb3ZlbWVudEFtb3VudCAqIG1vZGlmaWVyLFxuICAgICAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IG1vdmVtZW50Lm1vdmVtZW50Q3VycmVuY3ksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuc2FuaXRpemVIZWJyZXcobW92ZW1lbnQuZGVzY3JpcHRpb24pLFxuICAgICAgICAgIHByb2Nlc3NlZERhdGU6IG1vdmVtZW50Lm1vdmVtZW50VGltZXN0YW1wLFxuICAgICAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICAgICAgdHlwZTogaGFzSW5zdGFsbG1lbnRzID8gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMgOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogb25lIHplcm8gaGVicmV3IHN0cmluZ3MgYXJlIHJldmVyc2VkIHdpdGggYSB1bmljb2RlIGNvbnRyb2wgY2hhcmFjdGVyIHRoYXQgZm9yY2VzIGRpc3BsYXkgaW4gTFRSIG9yZGVyXG4gICAqIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSB1bmljb2RlIGNvbnRyb2wgY2hhcmFjdGVyLCBhbmQgdGhlbiByZXZlcnNlIGhlYnJldyBzdWJzdHJpbmdzIGluc2lkZSB0aGUgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIHNhbml0aXplSGVicmV3KHRleHQ6IHN0cmluZykge1xuICAgIGlmICghdGV4dC5pbmNsdWRlcygnXFx1MjAyZCcpKSB7XG4gICAgICByZXR1cm4gdGV4dC50cmltKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGxhaW5TdHJpbmcgPSB0ZXh0LnJlcGxhY2UoL1xcdTIwMmQvZ2ksICcnKS50cmltKCk7XG4gICAgY29uc3QgaGVicmV3U3ViU3RyaW5nc1JhbmdlcyA9IFsuLi5wbGFpblN0cmluZy5tYXRjaEFsbChIRUJSRVdfV09SRFNfUkVHRVgpXTtcbiAgICBjb25zdCByYW5nZXNUb1JldmVyc2UgPSBoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzLm1hcChzdHIgPT4gKHsgc3RhcnQ6IHN0ci5pbmRleCEsIGVuZDogc3RyLmluZGV4ISArIHN0clswXS5sZW5ndGggfSkpO1xuICAgIGNvbnN0IG91dCA9IFtdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IHsgc3RhcnQsIGVuZCB9IG9mIHJhbmdlc1RvUmV2ZXJzZSkge1xuICAgICAgb3V0LnB1c2goLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKGluZGV4LCBzdGFydCkpO1xuICAgICAgaW5kZXggKz0gc3RhcnQgLSBpbmRleDtcbiAgICAgIGNvbnN0IHJldmVyc2VkID0gWy4uLnBsYWluU3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kKV0ucmV2ZXJzZSgpO1xuICAgICAgb3V0LnB1c2goLi4ucmV2ZXJzZWQpO1xuICAgICAgaW5kZXggKz0gZW5kIC0gc3RhcnQ7XG4gICAgfVxuXG4gICAgb3V0LnB1c2goLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKGluZGV4LCBwbGFpblN0cmluZy5sZW5ndGgpKTtcblxuICAgIHJldHVybiBvdXQuam9pbignJyk7XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMuYWNjZXNzVG9rZW4pIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ2xvZ2luKCkgd2FzIG5vdCBjYWxsZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIGRlYnVnKCdGZXRjaGluZyBhY2NvdW50IGxpc3QnKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaEdyYXBocWw8eyBjdXN0b21lcjogQ3VzdG9tZXJbXSB9PihcbiAgICAgIEdSQVBIUUxfQVBJX1VSTCxcbiAgICAgIEdFVF9DVVNUT01FUixcbiAgICAgIHt9LFxuICAgICAgeyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlbn1gIH0sXG4gICAgKTtcbiAgICBjb25zdCBwb3J0Zm9saW9zID0gcmVzdWx0LmN1c3RvbWVyLmZsYXRNYXAoY3VzdG9tZXIgPT4gY3VzdG9tZXIucG9ydGZvbGlvcyB8fCBbXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcG9ydGZvbGlvcy5tYXAocG9ydGZvbGlvID0+IHRoaXMuZmV0Y2hQb3J0Zm9saW9Nb3ZlbWVudHMocG9ydGZvbGlvLCBzdGFydE1vbWVudC50b0RhdGUoKSkpLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQU1BLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLGVBQUEsR0FBQU4sT0FBQTtBQUFpRSxTQUFBRCx1QkFBQVEsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVqRSxNQUFNRyxrQkFBa0IsR0FBRywwREFBMEQ7QUFFckYsTUFBTUMsS0FBSyxHQUFHLElBQUFDLGVBQVEsRUFBQyxVQUFVLENBQUM7QUE2RGxDLE1BQU1DLG1CQUFtQixHQUFHLG1DQUFtQztBQUUvRCxNQUFNQyxlQUFlLEdB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|