bx-rest 1.6.0 → 1.7.0
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/CHANGELOG.md +69 -0
- package/README.en.md +96 -4
- package/README.md +96 -4
- package/consts/part-name-methods.d.ts +1 -0
- package/esm2022/consts/part-name-methods.mjs +2 -1
- package/esm2022/map/pull/application/config.mjs +25 -29
- package/esm2022/map/pull.mjs +8 -13
- package/esm2022/public-api.mjs +2 -1
- package/esm2022/request-navvy/booking/v1/resource.mjs +2 -2
- package/esm2022/request-navvy/booking/v1/resourcetype.mjs +2 -2
- package/esm2022/request-navvy/catalog/catalog.mjs +2 -2
- package/esm2022/request-navvy/catalog/document/element.mjs +2 -2
- package/esm2022/request-navvy/catalog/document.mjs +2 -2
- package/esm2022/request-navvy/catalog/documentcontractor.mjs +2 -2
- package/esm2022/request-navvy/catalog/extra.mjs +2 -2
- package/esm2022/request-navvy/catalog/measure.mjs +2 -2
- package/esm2022/request-navvy/catalog/price.mjs +2 -2
- package/esm2022/request-navvy/catalog/pricetype.mjs +2 -2
- package/esm2022/request-navvy/catalog/pricetypegroup.mjs +2 -2
- package/esm2022/request-navvy/catalog/pricetypelang.mjs +2 -2
- package/esm2022/request-navvy/catalog/product/offer.mjs +2 -2
- package/esm2022/request-navvy/catalog/product/service.mjs +2 -2
- package/esm2022/request-navvy/catalog/product/sku.mjs +2 -2
- package/esm2022/request-navvy/catalog/product.mjs +2 -2
- package/esm2022/request-navvy/catalog/productproperty.mjs +2 -2
- package/esm2022/request-navvy/catalog/productpropertyenum.mjs +2 -2
- package/esm2022/request-navvy/catalog/productpropertyfeature.mjs +2 -2
- package/esm2022/request-navvy/catalog/productpropertysection.mjs +2 -2
- package/esm2022/request-navvy/catalog/ratio.mjs +2 -2
- package/esm2022/request-navvy/catalog/roundingrule.mjs +2 -2
- package/esm2022/request-navvy/catalog/section.mjs +2 -2
- package/esm2022/request-navvy/catalog/store.mjs +2 -2
- package/esm2022/request-navvy/catalog/storeproduct.mjs +2 -2
- package/esm2022/request-navvy/catalog/userfield/document.mjs +2 -2
- package/esm2022/request-navvy/catalog/vat.mjs +2 -2
- package/esm2022/request-navvy/crm/activity.mjs +2 -2
- package/esm2022/request-navvy/crm/deal/recurring.mjs +2 -2
- package/esm2022/request-navvy/crm/item/product/row.mjs +2 -2
- package/esm2022/request-navvy/crm/orderentity.mjs +2 -2
- package/esm2022/request-navvy/crm/requisite/link.mjs +2 -2
- package/esm2022/request-navvy/crm/stagehistory.mjs +2 -2
- package/esm2022/request-navvy/crm/timeline/bindings.mjs +2 -2
- package/esm2022/request-navvy/documentgenerator/document.mjs +2 -2
- package/esm2022/request-navvy/documentgenerator/numerator.mjs +2 -2
- package/esm2022/request-navvy/documentgenerator/role.mjs +2 -2
- package/esm2022/request-navvy/documentgenerator/template.mjs +2 -2
- package/esm2022/request-navvy/pull/application/config.mjs +10 -4
- package/esm2022/request-navvy/pull/application/event.mjs +23 -0
- package/esm2022/request-navvy/pull/application/push.mjs +23 -0
- package/esm2022/request-navvy/pull/channel/public.mjs +4 -4
- package/esm2022/request-navvy/pull/config.mjs +8 -4
- package/esm2022/request-navvy/pull.mjs +12 -1
- package/esm2022/request-navvy/sale/basketitem.mjs +2 -2
- package/esm2022/request-navvy/sale/basketproperties.mjs +2 -2
- package/esm2022/request-navvy/sale/businessvaluepersondomain.mjs +2 -2
- package/esm2022/request-navvy/sale/order.mjs +2 -2
- package/esm2022/request-navvy/sale/payment.mjs +2 -2
- package/esm2022/request-navvy/sale/paymentitembasket.mjs +2 -2
- package/esm2022/request-navvy/sale/paymentitemshipment.mjs +2 -2
- package/esm2022/request-navvy/sale/persontype.mjs +2 -2
- package/esm2022/request-navvy/sale/property.mjs +2 -2
- package/esm2022/request-navvy/sale/propertyrelation.mjs +2 -2
- package/esm2022/request-navvy/sale/propertyvalue.mjs +2 -2
- package/esm2022/request-navvy/sale/propertyvariant.mjs +2 -2
- package/esm2022/request-navvy/sale/shipment.mjs +2 -2
- package/esm2022/request-navvy/sale/shipmentitem.mjs +2 -2
- package/esm2022/request-navvy/sale/shipmentproperty.mjs +2 -2
- package/esm2022/request-navvy/sale/shipmentpropertyvalue.mjs +2 -2
- package/esm2022/request-navvy/sale/status.mjs +2 -2
- package/esm2022/request-navvy/sale/statuslang.mjs +2 -2
- package/esm2022/request-navvy/sale/tradebinding.mjs +2 -2
- package/esm2022/request-navvy/sale/tradeplatform.mjs +2 -2
- package/esm2022/request-navvy/task/operation/elapseditem.mjs +44 -21
- package/esm2022/request-navvy/userfieldtype.mjs +2 -2
- package/esm2022/services/http/HttpBX.mjs +9 -6
- package/esm2022/services/http/fetch.mjs +45 -0
- package/esm2022/services/http/http.mjs +12 -3
- package/esm2022/services/http/middleware.mjs +56 -2
- package/esm2022/services/navvy/navvy-pag-nav-keyed.mjs +31 -0
- package/esm2022/services/navvy.mjs +20 -6
- package/esm2022/typification/rest/crm/requisite.mjs +1 -1
- package/esm2022/typification/rest/crm/timeline/bindings.mjs +1 -1
- package/esm2022/typification/rest/pull/application/config/get.mjs +1 -1
- package/esm2022/typification/rest/pull/application/event/add.mjs +2 -0
- package/esm2022/typification/rest/pull/application/push/add.mjs +2 -0
- package/esm2022/typification/rest/pull/config/get.mjs +1 -1
- package/esm2022/typification/rest/pull.mjs +3 -1
- package/esm2022/typification/settings.mjs +1 -1
- package/fesm2022/bx-rest.mjs +365 -140
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/map/pull/application/config.d.ts +3 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -1
- package/request-navvy/booking/v1/resource.d.ts +1 -1
- package/request-navvy/booking/v1/resourcetype.d.ts +1 -1
- package/request-navvy/catalog/catalog.d.ts +1 -1
- package/request-navvy/catalog/document/element.d.ts +1 -1
- package/request-navvy/catalog/document.d.ts +1 -1
- package/request-navvy/catalog/documentcontractor.d.ts +1 -1
- package/request-navvy/catalog/extra.d.ts +1 -1
- package/request-navvy/catalog/measure.d.ts +1 -1
- package/request-navvy/catalog/price.d.ts +1 -1
- package/request-navvy/catalog/pricetype.d.ts +1 -1
- package/request-navvy/catalog/pricetypegroup.d.ts +1 -1
- package/request-navvy/catalog/pricetypelang.d.ts +1 -1
- package/request-navvy/catalog/product/offer.d.ts +1 -1
- package/request-navvy/catalog/product/service.d.ts +1 -1
- package/request-navvy/catalog/product/sku.d.ts +1 -1
- package/request-navvy/catalog/product.d.ts +1 -1
- package/request-navvy/catalog/productproperty.d.ts +1 -1
- package/request-navvy/catalog/productpropertyenum.d.ts +1 -1
- package/request-navvy/catalog/productpropertyfeature.d.ts +1 -1
- package/request-navvy/catalog/productpropertysection.d.ts +1 -1
- package/request-navvy/catalog/ratio.d.ts +1 -1
- package/request-navvy/catalog/roundingrule.d.ts +1 -1
- package/request-navvy/catalog/section.d.ts +1 -1
- package/request-navvy/catalog/store.d.ts +1 -1
- package/request-navvy/catalog/storeproduct.d.ts +1 -1
- package/request-navvy/catalog/userfield/document.d.ts +1 -1
- package/request-navvy/catalog/vat.d.ts +1 -1
- package/request-navvy/crm/activity.d.ts +1 -1
- package/request-navvy/crm/deal/recurring.d.ts +1 -1
- package/request-navvy/crm/item/product/row.d.ts +5 -1
- package/request-navvy/crm/orderentity.d.ts +5 -1
- package/request-navvy/crm/requisite/link.d.ts +1 -1
- package/request-navvy/crm/stagehistory.d.ts +5 -1
- package/request-navvy/crm/timeline/bindings.d.ts +1 -1
- package/request-navvy/documentgenerator/document.d.ts +1 -1
- package/request-navvy/documentgenerator/numerator.d.ts +1 -1
- package/request-navvy/documentgenerator/role.d.ts +1 -1
- package/request-navvy/documentgenerator/template.d.ts +1 -1
- package/request-navvy/pull/application/config.d.ts +9 -3
- package/request-navvy/pull/application/event.d.ts +17 -0
- package/request-navvy/pull/application/push.d.ts +17 -0
- package/request-navvy/pull/config.d.ts +7 -3
- package/request-navvy/pull.d.ts +11 -0
- package/request-navvy/sale/basketitem.d.ts +1 -1
- package/request-navvy/sale/basketproperties.d.ts +1 -1
- package/request-navvy/sale/businessvaluepersondomain.d.ts +1 -1
- package/request-navvy/sale/order.d.ts +1 -1
- package/request-navvy/sale/payment.d.ts +1 -1
- package/request-navvy/sale/paymentitembasket.d.ts +1 -1
- package/request-navvy/sale/paymentitemshipment.d.ts +1 -1
- package/request-navvy/sale/persontype.d.ts +1 -1
- package/request-navvy/sale/property.d.ts +1 -1
- package/request-navvy/sale/propertyrelation.d.ts +1 -1
- package/request-navvy/sale/propertyvalue.d.ts +1 -1
- package/request-navvy/sale/propertyvariant.d.ts +1 -1
- package/request-navvy/sale/shipment.d.ts +1 -1
- package/request-navvy/sale/shipmentitem.d.ts +1 -1
- package/request-navvy/sale/shipmentproperty.d.ts +1 -1
- package/request-navvy/sale/shipmentpropertyvalue.d.ts +1 -1
- package/request-navvy/sale/status.d.ts +1 -1
- package/request-navvy/sale/statuslang.d.ts +1 -1
- package/request-navvy/sale/tradebinding.d.ts +1 -1
- package/request-navvy/sale/tradeplatform.d.ts +1 -1
- package/request-navvy/task/operation/elapseditem.d.ts +15 -10
- package/request-navvy/userfieldtype.d.ts +1 -1
- package/services/http/HttpBX.d.ts +5 -4
- package/services/http/fetch.d.ts +22 -0
- package/services/http/http.d.ts +8 -0
- package/services/http/middleware.d.ts +2 -1
- package/services/navvy/navvy-pag-nav-keyed.d.ts +18 -0
- package/services/navvy.d.ts +16 -0
- package/typification/rest/crm/requisite.d.ts +1 -1
- package/typification/rest/crm/timeline/bindings.d.ts +2 -1
- package/typification/rest/pull/application/config/get.d.ts +1 -1
- package/typification/rest/pull/application/event/add.d.ts +24 -0
- package/typification/rest/pull/application/push/add.d.ts +16 -0
- package/typification/rest/pull/config/get.d.ts +28 -3
- package/typification/rest/pull.d.ts +2 -0
- package/typification/settings.d.ts +35 -1
|
@@ -9,6 +9,7 @@ import { serializeBitrixParams as stringifyBitrixParams } from '../../functions/
|
|
|
9
9
|
import { withAuthRefresh } from './authRefresh';
|
|
10
10
|
import { composeMiddleware } from './transport';
|
|
11
11
|
import { builtInMiddleware } from './middleware';
|
|
12
|
+
import { fetchSend } from './fetch';
|
|
12
13
|
export class HttpBXServices extends HttpServices {
|
|
13
14
|
/**
|
|
14
15
|
* Не считайте этот метод образцом/финальным API.
|
|
@@ -156,16 +157,18 @@ export class HttpBXServices extends HttpServices {
|
|
|
156
157
|
}
|
|
157
158
|
/**
|
|
158
159
|
* Отправка через шаги из настроек: `retryOnQueryLimit`, `throttle`,
|
|
159
|
-
* `timeout`, затем `middleware`; последним идёт
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
160
|
+
* `timeout`, `logRequests`, затем `middleware`; последним идёт транспорт
|
|
161
|
+
* клиента — axios или `fetch` (`transport`). Настройки читаются при
|
|
162
|
+
* подписке. Отписка отменяет HTTP-запрос (AbortSignal). Ошибка транспорта
|
|
163
|
+
* уходит дальше как есть: у axios в ней весь запрос, вместе с токеном и
|
|
164
|
+
* секретом вебхука (см. README, «Обработка ошибок»).
|
|
163
165
|
*/
|
|
164
166
|
send(config) {
|
|
165
167
|
return new Observable(subscriber => {
|
|
166
168
|
const controller = new AbortController();
|
|
167
169
|
const ctx = this.session.ctx;
|
|
168
|
-
const
|
|
170
|
+
const settings = ctx.settings;
|
|
171
|
+
const send = composeMiddleware([...builtInMiddleware(settings, ctx), ...this.session.getMiddleware()], (settings.transport === 'fetch') ? fetchSend : request => this.axiosSend(request));
|
|
169
172
|
send({ ...config, signal: controller.signal }).then(data => {
|
|
170
173
|
subscriber.next(data);
|
|
171
174
|
subscriber.complete();
|
|
@@ -197,4 +200,4 @@ export class HttpBXServices extends HttpServices {
|
|
|
197
200
|
return arr.join('.');
|
|
198
201
|
}
|
|
199
202
|
}
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5RCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDL0MsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFaEQsTUFBTSxPQUFPLGNBQWUsU0FBUSxZQUFZO0lBRTlDOzs7O09BSUc7SUFDSCxNQUFNLENBQU8sS0FBeUQ7UUFFcEUsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFJLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBLENBQUMsbUJBQW1CO1FBQ25DLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQSxDQUFDLDJDQUEyQztRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMs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QUMsTUFBTSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFhO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBmb3JrSm9pbiwgZGVmZXIgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgY2xvbmUgZnJvbSAnanVzdC1jbG9uZSdcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VzIH0gZnJvbSAnLi9odHRwJ1xyXG5pbXBvcnQge1xyXG4gIGlCYXRjaFJlcXVlc3RBbnN3ZXIsIGlCYXRjaFJlcXVlc3RQYXJhbSwgaUJhdGNoUmVxdWVzdFBhcmFtQXJyLCBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwLCBrZXlCYXRjaCxcclxufSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXRjaC9iYXRjaFJlcXVlc3RQYXJhbSdcclxuaW1wb3J0IHsgaUJYUmVzdEFuc3dlciB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvYW5zd2VyJ1xyXG5pbXBvcnQgZmxhdHRlbiBmcm9tICdqdXN0LWZsYXR0ZW4taXQnXHJcbmltcG9ydCB7IGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tYXBSZXN1bHQnXHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBwcmVwYXJlQmFzZUFkZHJlc3MgfSBmcm9tICcuLi9iYXNlJ1xyXG5pbXBvcnQgeyBzZXJpYWxpemVCaXRyaXhQYXJhbXMgYXMgc3RyaW5naWZ5Qml0cml4UGFyYW1zIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3NlcmlhbGl6ZUJpdHJpeFBhcmFtcydcclxuaW1wb3J0IHsgaUh0dHBQYXJhbVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3Qvc2V0dGluZ3MnXHJcbmltcG9ydCB7IHdpdGhBdXRoUmVmcmVzaCB9IGZyb20gJy4vYXV0aFJlZnJlc2gnXHJcbmltcG9ydCB7IEJYUmVzdFJlcXVlc3RDb25maWcsIGNvbXBvc2VNaWRkbGV3YXJlIH0gZnJvbSAnLi90cmFuc3BvcnQnXHJcbmltcG9ydCB7IGJ1aWx0SW5NaWRkbGV3YXJlIH0gZnJvbSAnLi9taWRkbGV3YXJlJ1xyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBCWFNlcnZpY2VzIGV4dGVuZHMgSHR0cFNlcnZpY2VzIHtcclxuXHJcbiAgLyoqXHJcbiAgICog0J3QtSDRgdGH0LjRgtCw0LnRgtC1INGN0YLQvtGCINC80LXRgtC+0LQg0L7QsdGA0LDQt9GG0L7QvC/RhNC40L3QsNC70YzQvdGL0LwgQVBJLlxyXG4gICAqIFRPRE86INCj0LTQsNC70LjRgtGMINC00LDQvdC90YvQuSDQvNC10YLQvtC0INC/0L7RgdC70LUg0YDQtdCw0LvQuNC30LDRhtC40Lgg0LXQs9C+INCyINGA0LDQt9C00LXQu9C1IE5hdnZ5XHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgYnJhbmNoPFQsIEE+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSlcclxuICAgIDogT2JzZXJ2YWJsZTxpQmF0Y2hSZXF1ZXN0QW5zd2VyPEE+W10gfCB1bmRlZmluZWQ+IHtcclxuICAgIGxldCBwcmVwYXJlUGFyYW0gPSBPYmplY3QuZW50cmllczxzdHJpbmc+KHRoaXMucHJlcGFyZUJhdGNoPFQ+KHBhcmFtKSlcclxuICAgIGNvbnN0IHNpemUgPSA1MCAvLyDQsdC+0LvRjNGI0LUg0L3QtSDQvtGC0LTQsNGB0YJcclxuICAgIGxldCBzdWJhcnJheSA9IFtdIC8v0LzQsNGB0YHQuNCyINCyINC60L7RgtC+0YDRi9C5INCx0YPQtNC10YIg0LLRi9Cy0LXQtNC10L0g0YDQtdC30YPQu9GM0YLQsNGCLlxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLmNlaWwocHJlcGFyZVBhcmFtLmxlbmd0aCAvIHNpemUpOyBpKyspIHtcclxuICAgICAgc3ViYXJyYXlbaV0gPSBwcmVwYXJlUGFyYW0uc2xpY2UoKGkgKiBzaXplKSwgKGkgKiBzaXplKSArIHNpemUpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcmtKb2luKFxyXG4gICAgICBzdWJhcnJheS5tYXAoaSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFBvc3QoJ2JhdGNoLmpzb24nLCB7XHJcbiAgICAgICAgICBoYWx0OiAwLFxyXG4gICAgICAgICAgY21kOiBPYmplY3QuYXNzaWduKHt9LCAuLi5pLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtbeFswXV06IHhbMV19XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKSBhcyBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXT5cclxuICB9XHJcblxyXG4gIHByZXBhcmVCYXRjaDxUPihwYXJhbTogaUJhdGNoUmVxdWVzdFBhcmFtQXJyPFQ+IHwgaUJhdGNoUmVxdWVzdFBhcmFtPFQ+W10pOiBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwIHtcclxuICAgIGxldCByZXM6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAgPSBPYmplY3Qua2V5cyhwYXJhbSkucmVkdWNlKFxyXG4gICAgICAob2JqLCBrZXkpID0+IHtcclxuICAgICAgICBvYmpba2V5XSA9ICcnXHJcbiAgICAgICAgcmV0dXJuIG9ialxyXG4gICAgICB9LFxyXG4gICAgICB7fSBhcyBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwXHJcbiAgICApXHJcbiAgICBmb3IgKGxldCBrZXkgaW4gcGFyYW0pIHtcclxuICAgICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBrZXkgPT09ICdudW1iZXInICYmIHBhcmFtW2tleV0ucGFyYW0pIHtcclxuICAgICAgICByZXNba2V5XSA9IHBhcmFtW2tleV0ubmFtZSArICc/JyArIHN0cmluZ2lmeUJpdHJpeFBhcmFtcyhwYXJhbVtrZXldLnBhcmFtKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzXHJcbiAgfVxyXG5cclxuICBtYXBCcmFuY2hSZXN1bHQ8VD4ocmVzOiBpQmF0Y2hSZXF1ZXN0QW5zd2VyPFQ+W10pIHtcclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFtdLCAuLi5yZXMubWFwKGkgPT5cclxuICAgICAgKGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpKSAmJiBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaS5yZXN1bHQpKSA/IGkucmVzdWx0LnJlc3VsdCA6IHVuZGVmaW5lZClcclxuICAgICkgYXMgUmVjb3JkPGtleUJhdGNoLCBUPlxyXG4gIH1cclxuXHJcbiAgbWFwQnJhbmNoUmVzdWx0V2l0aG91dEtleTxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSk6IFRbXSB7XHJcbiAgICByZXR1cm4gZmxhdHRlbjxUPihPYmplY3QuYXNzaWduKFtdLCAuLi5yZXMubWFwKGkgPT5cclxuICAgICAgKGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpKSAmJiBpbnN0YW5jZU9maUJYUmVzdEFuc3dlclN1Y2Nlc3MoaS5yZXN1bHQpKVxyXG4gICAgICAgID8gaS5yZXN1bHQucmVzdWx0XHJcbiAgICAgICAgOiB1bmRlZmluZWQpKVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0J7RgdC90L7QstC90L7QuSDQvNC10YLQvtC0INC00LvRjyDQt9Cw0L/RgNC+0YHQvtCyXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKiBAcGFyYW0gcmVzdEFwaVxyXG4gICAqIEBwYXJhbSBoZWFkZXJzINC30LDQs9C+0LvQvtCy0LrQuCDRgtC+0LvRjNC60L4g0LTQu9GPINGN0YLQvtCz0L4g0LfQsNC/0YDQvtGB0LAsINC/0L7QstC10YDRhSBgQlhSZXN0U2V0dGluZ3MuaGVhZGVyc2BcclxuICAgKi9cclxuICBwb3N0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9LCByZXN0QXBpID0gZmFsc2UsIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XHJcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmdldE5hbWVNZXRob2QobmFtZSlcclxuICAgIHJldHVybiB0aGlzLmh0dHBQb3N0PGlCWFJlc3RBbnN3ZXI8VD4+KHJlc3RBcGkgPyBgYXBpLyR7bWV0aG9kfWAgOiBtZXRob2QsIHBhcmFtcywgdW5kZWZpbmVkLCBoZWFkZXJzKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLRgtC+0YDQvtGB0YLQtdC/0LXQvdC90YvQuSDQvNC10YLQvtC0INC00LvRjyDQt9Cw0L/RgNC+0YHQvtCyLiDQn9C+INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0LvRg9GH0YjQtSDQvdC1INC40YHQv9C+0LvRjNC30L7QstCw0YLRjFxyXG4gICAqXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gcGFyYW1zXHJcbiAgICogQHBhcmFtIGhlYWRlcnMg0LfQsNCz0L7Qu9C+0LLQutC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0Y3RgtC+0LPQviDQt9Cw0L/RgNC+0YHQsCwg0L/QvtCy0LXRgNGFIGBCWFJlc3RTZXR0aW5ncy5oZWFkZXJzYFxyXG4gICAqL1xyXG4gIGdldDxUPihuYW1lOiBzdHJpbmdbXSwgcGFyYW1zOiBhbnkgPSB7fSwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBHZXQ8aUJYUmVzdEFuc3dlcjxUPj4odGhpcy5nZXROYW1lTWV0aG9kKG5hbWUpLCBwYXJhbXMsIHVuZGVmaW5lZCwgaGVhZGVycylcclxuICB9XHJcblxyXG4gIC8vIHNldHRpbmdzINC90LUg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC4INC+0YHRgtCw0LLQu9C10L0g0YDQsNC00Lgg0L/RgNC10LbQvdC10Lkg0YHQuNCz0L3QsNGC0YPRgNGLOiBoZWFkZXJzXHJcbiAgLy8g0L7RgdGC0LDRkdGC0YHRjyDRh9C10YLQstGR0YDRgtGL0Lwg0L/QsNGA0LDQvNC10YLRgNC+0Lwg0YMgaHR0cFBvc3Qg0LggaHR0cEdldC5cclxuICBodHRwUG9zdDxUPihcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgcGFyYW1zOiBhbnkgPSB7fSxcclxuICAgIHNldHRpbmdzPzogaUh0dHBQYXJhbVNldHRpbmdzLFxyXG4gICAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cclxuICApOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcclxuICAgIC8vIGRlZmVyKCkg0L7RgtC60LvQsNC00YvQstCw0LXRgiDQstGB0ZEg0YHQvtC00LXRgNC20LjQvNC+0LUgKNCyINGC0L7QvCDRh9C40YHQu9C1INGH0YLQtdC90LjQtSBCWFJlc3RTZXR0aW5nc1xyXG4gICAgLy8g0YfQtdGA0LXQtyB0aGlzLnNlc3Npb24uKikg0LTQviDRgNC10LDQu9GM0L3QvtC5INC/0L7QtNC/0LjRgdC60Lgg4oCUINC40L3QsNGH0LUg0LTQsNC20LUg0YEgXCLQttC40LLRi9C8XCJcclxuICAgIC8vINCz0LXRgtGC0LXRgNC+0Lwg0LIgU2Vzc2lvbktleVNlcnZpY2VzINC90LDRgdGC0YDQvtC50LrQuCDRh9C40YLQsNC70LjRgdGMINCx0Ysg0LIg0LzQvtC80LXQvdGCINCy0YvQt9C+0LLQsFxyXG4gICAgLy8gLnJlcygpLCDQsCDQvdC1INCyINC80L7QvNC10L3RgiBzdWJzY3JpYmUoKS9maXJzdFZhbHVlRnJvbSgpLCDRh9GC0L4g0Lgg0L7QsdC10YnQsNC90L5cclxuICAgIC8vINCyIFJFQURNRSDQutCw0Log0L/QvtCy0LXQtNC10L3QuNC1IFwi0LvQtdC90LjQstC+0LPQvlwiIFJFU1Qt0LLRi9C30L7QstCwLlxyXG4gICAgLy9cclxuICAgIC8vIHdpdGhBdXRoUmVmcmVzaCgpINC/0L7QstGC0L7RgNGP0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtGB0LvQtSBCWFJlc3RTZXR0aW5ncy5hdXRoLnJlZnJlc2gg4oCUXHJcbiAgICAvLyDQv9C+0LLRgtC+0YDQvdC+0Lkg0L/QvtC00L/QuNGB0LrQvtC5INC90LAg0Y3RgtC+0YIg0LbQtSBkZWZlcigpLCDQv9C+0Y3RgtC+0LzRgyDQv9C+0LLRgtC+0YAg0LfQsNC90L7QstC+INGH0LjRgtCw0LXRglxyXG4gICAgLy8g0YLQvtC60LXQvSwg0LDQtNGA0LXRgSDQuCDQt9Cw0LPQvtC70L7QstC60LguINCn0LXRgNC10LcgaHR0cFBvc3QvaHR0cEdldCDQuNC00YPRgiDQstGB0LUg0LfQsNC/0YDQvtGB0YtcclxuICAgIC8vINCx0LjQsdC70LjQvtGC0LXQutC4IChwb3N0L2dldCwgYmF0Y2gsINCy0YHQtSDQstC40LTRiyBOYXZ2eS3Qt9Cw0L/RgNC+0YHQvtCyKSwg0YLQsNC6INGH0YLQviDQv9C+0LLRgtC+0YBcclxuICAgIC8vINCy0YHRgtGA0L7QtdC9INGC0L7Qu9GM0LrQviDQt9C00LXRgdGMLlxyXG4gICAgcmV0dXJuIHdpdGhBdXRoUmVmcmVzaChkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnNlc3Npb24uZ2V0S2V5QXV0aCgpXHJcbiAgICAgIGNvbnN0IGF1dGggPSB0aGlzLnNlc3Npb24uZ2V0QXV0aFBhcmFtcygpXHJcbiAgICAgIGNvbnN0IGNoZWNrSXNPbiA9IHRoaXMuc2Vzc2lvbi5nZXRDaGVja0F1dGhQYXJhbXNJc09uKClcclxuXHJcbiAgICAgIGlmIChjaGVja0lzT24pIHtcclxuICAgICAgICBpZiAoIWF1dGgpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRBdXRoRXJyb3IoJ3Bvc3QnKSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChrZXkgIT09ICdPQXV0aDInKSB7XHJcbiAgICAgICAgICBwYXJhbXNDbG9uZVtrZXldID0gYXV0aFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsKCkucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKGJhc2VVcmwpID0+IHtcclxuICAgICAgICAgIGlmICghYmFzZVVybCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybEVycm9yKCdwb3N0JykpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxyXG4gICAgICAgICAgLy8gc2Vzc2lkIOKAlCDRgtC10LvQviB4LXd3dy1mb3JtLXVybGVuY29kZWQsINC+0YHRgtCw0LvRjNC90YvQtSDQutC70Y7Rh9C4IOKAlCBKU09OXHJcbiAgICAgICAgICBjb25zdCB1cmxlbmNvZGVkID0ga2V5ID09PSAnc2Vzc2lkJ1xyXG5cclxuICAgICAgICAgIHJldHVybiB0aGlzLnNlbmQ8VD4oe1xyXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgdXJsOiBmdWxsVXJsLFxyXG4gICAgICAgICAgICBkYXRhOiB1cmxlbmNvZGVkID8gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpIDogcGFyYW1zQ2xvbmUsXHJcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmJ1aWxkSGVhZGVycyhoZWFkZXJzLCB7XHJcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IHVybGVuY29kZWQgPyAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyA6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSksIHRoaXMuc2Vzc2lvbi5jdHgpXHJcbiAgfVxyXG5cclxuICBodHRwR2V0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8g0KLQsCDQttC1INC/0YDQuNGH0LjQvdCwLCDRh9GC0L4g0Lgg0YMgaHR0cFBvc3Qg0LLRi9GI0LU6INC+0YLQutC70LDQtNGL0LLQsNC10Lwg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDQtNC+INC/0L7QtNC/0LjRgdC60LgsINGH0YLQvtCx0YsgYGdldCgpYCDQstGR0Lsg0YHQtdCx0Y8g0YLQsNC6INC20LUgXCLQu9C10L3QuNCy0L5cIiwg0LrQsNC6INC4IGBwb3N0KClgXHJcbiAgICAvLyAo0YHQuNC80LzQtdGC0YDQuNGPLCDQutC+0YLQvtGA0L7QuSDQvdC1INCx0YvQu9C+INC00L4g0Y3RgtC+0LPQviDigJQgR0VUINGA0LXQt9C+0LvQstC40Lsg0L3QsNGB0YLRgNC+0LnQutC4INCyINC80L7QvNC10L3RglxyXG4gICAgLy8g0LLRi9C30L7QstCwLCDQsCDQvdC1INCyINC80L7QvNC10L3RgiBzdWJzY3JpYmUoKSkuINCf0L7QstGC0L7RgCDQv9C+0YHQu9C1INC/0YDQvtC00LvQtdC90LjRj1xyXG4gICAgLy8g0LDQstGC0L7RgNC40LfQsNGG0LjQuCDigJQg0LrQsNC6INCyIGh0dHBQb3N0LlxyXG4gICAgcmV0dXJuIHdpdGhBdXRoUmVmcmVzaChkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnNlc3Npb24uZ2V0S2V5QXV0aCgpXHJcbiAgICAgIGNvbnN0IGF1dGggPSB0aGlzLnNlc3Npb24uZ2V0QXV0aFBhcmFtcygpXHJcbiAgICAgIGNvbnN0IGNoZWNrSXNPbiA9IHRoaXMuc2Vzc2lvbi5nZXRDaGVja0F1dGhQYXJhbXNJc09uKClcclxuXHJcbiAgICAgIGlmIChjaGVja0lzT24pIHtcclxuICAgICAgICBpZiAoIWF1dGgpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRBdXRoRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBwcmVwYXJlQmFzZUFkZHJlc3MoYmFzZVVybCkgKyB1cmxcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpXHJcbiAgICAgICAgICBjb25zdCBmaW5hbFVybCA9IGAke2Z1bGxVcmx9PyR7cXVlcnlTdHJpbmd9YFxyXG5cclxuICAgICAgICAgIHJldHVybiB0aGlzLnNlbmQ8VD4oe1xyXG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICAgICAgICB1cmw6IGZpbmFsVXJsLFxyXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuc2Vzc2lvbi5nZXRXaXRoQ3JlZGVudGlhbHMoKSxcclxuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycyksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0pLCB0aGlzLnNlc3Npb24uY3R4KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0J7RgtC/0YDQsNCy0LrQsCDRh9C10YDQtdC3INGI0LDQs9C4INC40Lcg0L3QsNGB0YLRgNC+0LXQujogYHJldHJ5T25RdWVyeUxpbWl0YCwgYHRocm90dGxlYCxcclxuICAgKiBgdGltZW91dGAsINC30LDRgtC10LwgYG1pZGRsZXdhcmVgOyDQv9C+0YHQu9C10LTQvdC40Lwg0LjQtNGR0YIgYXhpb3Mg0LrQu9C40LXQvdGC0LAuINCd0LDRgdGC0YDQvtC50LrQuFxyXG4gICAqINGH0LjRgtCw0Y7RgtGB0Y8g0L/RgNC4INC/0L7QtNC/0LjRgdC60LUuINCe0YLQv9C40YHQutCwINC+0YLQvNC10L3Rj9C10YIgSFRUUC3Qt9Cw0L/RgNC+0YEgKEFib3J0U2lnbmFsKS5cclxuICAgKiDQntGI0LjQsdC60LAg0YLRgNCw0L3RgdC/0L7RgNGC0LAg0YPRhdC+0LTQuNGCINC00LDQu9GM0YjQtSDQutCw0Log0LXRgdGC0Yw6INGDIGF4aW9zINCyINC90LXQuSDQstC10YHRjCDQt9Cw0L/RgNC+0YEsXHJcbiAgICog0LLQvNC10YHRgtC1INGBINGC0L7QutC10L3QvtC8INC4INGB0LXQutGA0LXRgtC+0Lwg0LLQtdCx0YXRg9C60LAgKNGB0LwuIFJFQURNRSwgwqvQntCx0YDQsNCx0L7RgtC60LAg0L7RiNC40LHQvtC6wrspLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2VuZDxUPihjb25maWc6IEJYUmVzdFJlcXVlc3RDb25maWcpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPihzdWJzY3JpYmVyID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxyXG4gICAgICBjb25zdCBjdHggPSB0aGlzLnNlc3Npb24uY3R4XHJcbiAgICAgIGNvbnN0IHNlbmQgPSBjb21wb3NlTWlkZGxld2FyZShcclxuICAgICAgICBbLi4uYnVpbHRJbk1pZGRsZXdhcmUoY3R4LnNldHRpbmdzLCBjdHgpLCAuLi50aGlzLnNlc3Npb24uZ2V0TWlkZGxld2FyZSgpXSxcclxuICAgICAgICByZXF1ZXN0ID0+IHRoaXMuYXhpb3NTZW5kKHJlcXVlc3QpXHJcbiAgICAgIClcclxuICAgICAgc2VuZCh7IC4uLmNvbmZpZywgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KS50aGVuKFxyXG4gICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGRhdGEgYXMgVCB8IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yOiB1bmtub3duKSA9PiBzdWJzY3JpYmVyLmVycm9yKGVycm9yKVxyXG4gICAgICApXHJcbiAgICAgIHJldHVybiAoKSA9PiBjb250cm9sbGVyLmFib3J0KClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKiog0KLRgNCw0L3RgdC/0L7RgNGCINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOOiBheGlvcyDQutC70LjQtdC90YLQsCwg0LrQsNC6INC4INGA0LDQvdGM0YjQtSDRh9C10YDQtdC3IHBvc3QoKS9nZXQoKS4gKi9cclxuICBwcml2YXRlIGF4aW9zU2VuZChjb25maWc6IEJYUmVzdFJlcXVlc3RDb25maWcpOiBQcm9taXNlPHVua25vd24+IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGNvbmZpZy5oZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGNvbmZpZy53aXRoQ3JlZGVudGlhbHMsIHNpZ25hbDogY29uZmlnLnNpZ25hbCB9XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gKGNvbmZpZy5tZXRob2QgPT09ICdHRVQnKVxyXG4gICAgICA/IHRoaXMuYXhpb3NJbnN0YW5jZS5nZXQoY29uZmlnLnVybCwgb3B0aW9ucylcclxuICAgICAgOiB0aGlzLmF4aW9zSW5zdGFuY2UucG9zdChjb25maWcudXJsLCBjb25maWcuZGF0YSwgb3B0aW9ucylcclxuICAgIHJldHVybiByZXF1ZXN0LnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCX0LDQs9C+0LvQvtCy0LrQuCDQt9Cw0L/RgNC+0YHQsDogYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgLCDQv9C+0LLQtdGA0YUg0L3QuNGFIOKAlCDQt9Cw0LPQvtC70L7QstC60LhcclxuICAgKiDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUg0LLRgdC10LPQviDigJQgYHJlcXVpcmVkYC4g0JIgYHJlcXVpcmVkYCDQuNC00ZHRglxyXG4gICAqIGBDb250ZW50LVR5cGVgOiDQvtGCINC90LXQs9C+INC30LDQstC40YHQuNGCLCDQutCw0Log0YHQtdGA0LLQtdGAINGA0LDQt9Cx0LXRgNGR0YIg0YLQtdC70L4sINC/0L7RjdGC0L7QvNGDXHJcbiAgICog0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40LUg0LfQsNCz0L7Qu9C+0LLQutC4INC10LPQviDQvdC1INC/0LXRgNC10LHQuNCy0LDRjtGCLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRIZWFkZXJzKGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCByZXF1aXJlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9KSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnNlc3Npb24uZ2V0SGVhZGVycygpLCAuLi5oZWFkZXJzLCAuLi5yZXF1aXJlZCB9XHJcbiAgfVxyXG5cclxuICBzZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzdHJpbmdpZnlCaXRyaXhQYXJhbXMocGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZU1ldGhvZChhcnI6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gYXJyLmpvaW4oJy4nKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5RCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDL0MsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUVuQyxNQUFNLE9BQU8sY0FBZSxTQUFRLFlBQVk7SUFFOUM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBTyxLQUF5RDtRQUVwRSxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFTLElBQUksQ0FBQyxZQUFZLENBQUksS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUN0RSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUEsQ0FBQyxtQkFBbUI7UUFDbkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFBLENB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QUMxRixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUE7SUFDbEUsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQWU7UUFDbkMsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQWE7UUFDekIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIGZvcmtKb2luLCBkZWZlciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZXMgfSBmcm9tICcuL2h0dHAnXHJcbmltcG9ydCB7XHJcbiAgaUJhdGNoUmVxdWVzdEFuc3dlciwgaUJhdGNoUmVxdWVzdFBhcmFtLCBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnIsIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAsIGtleUJhdGNoLFxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2JhdGNoL2JhdGNoUmVxdWVzdFBhcmFtJ1xyXG5pbXBvcnQgeyBpQlhSZXN0QW5zd2VyIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmFzZS9hbnN3ZXInXHJcbmltcG9ydCBmbGF0dGVuIGZyb20gJ2p1c3QtZmxhdHRlbi1pdCdcclxuaW1wb3J0IHsgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21hcFJlc3VsdCdcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IHByZXBhcmVCYXNlQWRkcmVzcyB9IGZyb20gJy4uL2Jhc2UnXHJcbmltcG9ydCB7IHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyBhcyBzdHJpbmdpZnlCaXRyaXhQYXJhbXMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvc2VyaWFsaXplQml0cml4UGFyYW1zJ1xyXG5pbXBvcnQgeyBpSHR0cFBhcmFtU2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9zZXR0aW5ncydcclxuaW1wb3J0IHsgd2l0aEF1dGhSZWZyZXNoIH0gZnJvbSAnLi9hdXRoUmVmcmVzaCdcclxuaW1wb3J0IHsgQlhSZXN0UmVxdWVzdENvbmZpZywgY29tcG9zZU1pZGRsZXdhcmUgfSBmcm9tICcuL3RyYW5zcG9ydCdcclxuaW1wb3J0IHsgYnVpbHRJbk1pZGRsZXdhcmUgfSBmcm9tICcuL21pZGRsZXdhcmUnXHJcbmltcG9ydCB7IGZldGNoU2VuZCB9IGZyb20gJy4vZmV0Y2gnXHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cEJYU2VydmljZXMgZXh0ZW5kcyBIdHRwU2VydmljZXMge1xyXG5cclxuICAvKipcclxuICAgKiDQndC1INGB0YfQuNGC0LDQudGC0LUg0Y3RgtC+0YIg0LzQtdGC0L7QtCDQvtCx0YDQsNC30YbQvtC8L9GE0LjQvdCw0LvRjNC90YvQvCBBUEkuXHJcbiAgICogVE9ETzog0KPQtNCw0LvQuNGC0Ywg0LTQsNC90L3Ri9C5INC80LXRgtC+0LQg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCDQtdCz0L4g0LIg0YDQsNC30LTQtdC70LUgTmF2dnlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBicmFuY2g8VCwgQT4ocGFyYW06IGlCYXRjaFJlcXVlc3RQYXJhbUFycjxUPiB8IGlCYXRjaFJlcXVlc3RQYXJhbTxUPltdKVxyXG4gICAgOiBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgbGV0IHByZXBhcmVQYXJhbSA9IE9iamVjdC5lbnRyaWVzPHN0cmluZz4odGhpcy5wcmVwYXJlQmF0Y2g8VD4ocGFyYW0pKVxyXG4gICAgY29uc3Qgc2l6ZSA9IDUwIC8vINCx0L7Qu9GM0YjQtSDQvdC1INC+0YLQtNCw0YHRglxyXG4gICAgbGV0IHN1YmFycmF5ID0gW10gLy/QvNCw0YHRgdC40LIg0LIg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQstGL0LLQtdC00LXQvSDRgNC10LfRg9C70YzRgtCw0YIuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGguY2VpbChwcmVwYXJlUGFyYW0ubGVuZ3RoIC8gc2l6ZSk7IGkrKykge1xyXG4gICAgICBzdWJhcnJheVtpXSA9IHByZXBhcmVQYXJhbS5zbGljZSgoaSAqIHNpemUpLCAoaSAqIHNpemUpICsgc2l6ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ya0pvaW4oXHJcbiAgICAgIHN1YmFycmF5Lm1hcChpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwUG9zdCgnYmF0Y2guanNvbicsIHtcclxuICAgICAgICAgIGhhbHQ6IDAsXHJcbiAgICAgICAgICBjbWQ6IE9iamVjdC5hc3NpZ24oe30sIC4uLmkubWFwKHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1t4WzBdXTogeFsxXX1cclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApIGFzIE9ic2VydmFibGU8aUJhdGNoUmVxdWVzdEFuc3dlcjxBPltdPlxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZUJhdGNoPFQ+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSk6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAge1xyXG4gICAgbGV0IHJlczogaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCA9IE9iamVjdC5rZXlzKHBhcmFtKS5yZWR1Y2UoXHJcbiAgICAgIChvYmosIGtleSkgPT4ge1xyXG4gICAgICAgIG9ialtrZXldID0gJydcclxuICAgICAgICByZXR1cm4gb2JqXHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHBcclxuICAgIClcclxuICAgIGZvciAobGV0IGtleSBpbiBwYXJhbSkge1xyXG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicgJiYgcGFyYW1ba2V5XS5wYXJhbSkge1xyXG4gICAgICAgIHJlc1trZXldID0gcGFyYW1ba2V5XS5uYW1lICsgJz8nICsgc3RyaW5naWZ5Qml0cml4UGFyYW1zKHBhcmFtW2tleV0ucGFyYW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNcclxuICB9XHJcblxyXG4gIG1hcEJyYW5jaFJlc3VsdDxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpID8gaS5yZXN1bHQucmVzdWx0IDogdW5kZWZpbmVkKVxyXG4gICAgKSBhcyBSZWNvcmQ8a2V5QmF0Y2gsIFQ+XHJcbiAgfVxyXG5cclxuICBtYXBCcmFuY2hSZXN1bHRXaXRob3V0S2V5PFQ+KHJlczogaUJhdGNoUmVxdWVzdEFuc3dlcjxUPltdKTogVFtdIHtcclxuICAgIHJldHVybiBmbGF0dGVuPFQ+KE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpXHJcbiAgICAgICAgPyBpLnJlc3VsdC5yZXN1bHRcclxuICAgICAgICA6IHVuZGVmaW5lZCkpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGB0L3QvtCy0L3QvtC5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIHBhcmFtc1xyXG4gICAqIEBwYXJhbSByZXN0QXBpXHJcbiAgICogQHBhcmFtIGhlYWRlcnMg0LfQsNCz0L7Qu9C+0LLQutC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0Y3RgtC+0LPQviDQt9Cw0L/RgNC+0YHQsCwg0L/QvtCy0LXRgNGFIGBCWFJlc3RTZXR0aW5ncy5oZWFkZXJzYFxyXG4gICAqL1xyXG4gIHBvc3Q8VD4obmFtZTogc3RyaW5nW10sIHBhcmFtczogYW55ID0ge30sIHJlc3RBcGkgPSBmYWxzZSwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFBvc3Q8aUJYUmVzdEFuc3dlcjxUPj4ocmVzdEFwaSA/IGBhcGkvJHttZXRob2R9YCA6IG1ldGhvZCwgcGFyYW1zLCB1bmRlZmluZWQsIGhlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktGC0L7RgNC+0YHRgtC10L/QtdC90L3Ri9C5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LIuINCf0L4g0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQu9GD0YfRiNC1INC90LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKiBAcGFyYW0gaGVhZGVycyDQt9Cw0LPQvtC70L7QstC60Lgg0YLQvtC70YzQutC+INC00LvRjyDRjdGC0L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUgYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgXHJcbiAgICovXHJcbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cEdldDxpQlhSZXN0QW5zd2VyPFQ+Pih0aGlzLmdldE5hbWVNZXRob2QobmFtZSksIHBhcmFtcywgdW5kZWZpbmVkLCBoZWFkZXJzKVxyXG4gIH1cclxuXHJcbiAgLy8gc2V0dGluZ3Mg0L3QtSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0Lgg0L7RgdGC0LDQstC70LXQvSDRgNCw0LTQuCDQv9GA0LXQttC90LXQuSDRgdC40LPQvdCw0YLRg9GA0Ys6IGhlYWRlcnNcclxuICAvLyDQvtGB0YLQsNGR0YLRgdGPINGH0LXRgtCy0ZHRgNGC0YvQvCDQv9Cw0YDQsNC80LXRgtGA0L7QvCDRgyBodHRwUG9zdCDQuCBodHRwR2V0LlxyXG4gIGh0dHBQb3N0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8gZGVmZXIoKSDQvtGC0LrQu9Cw0LTRi9Cy0LDQtdGCINCy0YHRkSDRgdC+0LTQtdGA0LbQuNC80L7QtSAo0LIg0YLQvtC8INGH0LjRgdC70LUg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDRh9C10YDQtdC3IHRoaXMuc2Vzc2lvbi4qKSDQtNC+INGA0LXQsNC70YzQvdC+0Lkg0L/QvtC00L/QuNGB0LrQuCDigJQg0LjQvdCw0YfQtSDQtNCw0LbQtSDRgSBcItC20LjQstGL0LxcIlxyXG4gICAgLy8g0LPQtdGC0YLQtdGA0L7QvCDQsiBTZXNzaW9uS2V5U2VydmljZXMg0L3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0LvQuNGB0Ywg0LHRiyDQsiDQvNC+0LzQtdC90YIg0LLRi9C30L7QstCwXHJcbiAgICAvLyAucmVzKCksINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpL2ZpcnN0VmFsdWVGcm9tKCksINGH0YLQviDQuCDQvtCx0LXRidCw0L3QvlxyXG4gICAgLy8g0LIgUkVBRE1FINC60LDQuiDQv9C+0LLQtdC00LXQvdC40LUgXCLQu9C10L3QuNCy0L7Qs9C+XCIgUkVTVC3QstGL0LfQvtCy0LAuXHJcbiAgICAvL1xyXG4gICAgLy8gd2l0aEF1dGhSZWZyZXNoKCkg0L/QvtCy0YLQvtGA0Y/QtdGCINC30LDQv9GA0L7RgSDQv9C+0YHQu9C1IEJYUmVzdFNldHRpbmdzLmF1dGgucmVmcmVzaCDigJRcclxuICAgIC8vINC/0L7QstGC0L7RgNC90L7QuSDQv9C+0LTQv9C40YHQutC+0Lkg0L3QsCDRjdGC0L7RgiDQttC1IGRlZmVyKCksINC/0L7RjdGC0L7QvNGDINC/0L7QstGC0L7RgCDQt9Cw0L3QvtCy0L4g0YfQuNGC0LDQtdGCXHJcbiAgICAvLyDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuC4g0KfQtdGA0LXQtyBodHRwUG9zdC9odHRwR2V0INC40LTRg9GCINCy0YHQtSDQt9Cw0L/RgNC+0YHRi1xyXG4gICAgLy8g0LHQuNCx0LvQuNC+0YLQtdC60LggKHBvc3QvZ2V0LCBiYXRjaCwg0LLRgdC1INCy0LjQtNGLIE5hdnZ5LdC30LDQv9GA0L7RgdC+0LIpLCDRgtCw0Log0YfRgtC+INC/0L7QstGC0L7RgFxyXG4gICAgLy8g0LLRgdGC0YDQvtC10L0g0YLQvtC70YzQutC+INC30LTQtdGB0YwuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcigncG9zdCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ3Bvc3QnKSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBmdWxsVXJsID0gcHJlcGFyZUJhc2VBZGRyZXNzKGJhc2VVcmwpICsgdXJsXHJcbiAgICAgICAgICAvLyBzZXNzaWQg4oCUINGC0LXQu9C+IHgtd3d3LWZvcm0tdXJsZW5jb2RlZCwg0L7RgdGC0LDQu9GM0L3Ri9C1INC60LvRjtGH0Lgg4oCUIEpTT05cclxuICAgICAgICAgIGNvbnN0IHVybGVuY29kZWQgPSBrZXkgPT09ICdzZXNzaWQnXHJcblxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZDxUPih7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICB1cmw6IGZ1bGxVcmwsXHJcbiAgICAgICAgICAgIGRhdGE6IHVybGVuY29kZWQgPyB0aGlzLnNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXNDbG9uZSkgOiBwYXJhbXNDbG9uZSxcclxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLnNlc3Npb24uZ2V0V2l0aENyZWRlbnRpYWxzKCksXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuYnVpbGRIZWFkZXJzKGhlYWRlcnMsIHtcclxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogdXJsZW5jb2RlZCA/ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIDogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9KSwgdGhpcy5zZXNzaW9uLmN0eClcclxuICB9XHJcblxyXG4gIGh0dHBHZXQ8VD4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIHBhcmFtczogYW55ID0ge30sXHJcbiAgICBzZXR0aW5ncz86IGlIdHRwUGFyYW1TZXR0aW5ncyxcclxuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XHJcbiAgICAvLyDQotCwINC20LUg0L/RgNC40YfQuNC90LAsINGH0YLQviDQuCDRgyBodHRwUG9zdCDQstGL0YjQtTog0L7RgtC60LvQsNC00YvQstCw0LXQvCDRh9GC0LXQvdC40LUgQlhSZXN0U2V0dGluZ3NcclxuICAgIC8vINC00L4g0L/QvtC00L/QuNGB0LrQuCwg0YfRgtC+0LHRiyBgZ2V0KClgINCy0ZHQuyDRgdC10LHRjyDRgtCw0Log0LbQtSBcItC70LXQvdC40LLQvlwiLCDQutCw0Log0LggYHBvc3QoKWBcclxuICAgIC8vICjRgdC40LzQvNC10YLRgNC40Y8sINC60L7RgtC+0YDQvtC5INC90LUg0LHRi9C70L4g0LTQviDRjdGC0L7Qs9C+IOKAlCBHRVQg0YDQtdC30L7Qu9Cy0LjQuyDQvdCw0YHRgtGA0L7QudC60Lgg0LIg0LzQvtC80LXQvdGCXHJcbiAgICAvLyDQstGL0LfQvtCy0LAsINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpKS4g0J/QvtCy0YLQvtGAINC/0L7RgdC70LUg0L/RgNC+0LTQu9C10L3QuNGPXHJcbiAgICAvLyDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4IOKAlCDQutCw0Log0LIgaHR0cFBvc3QuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcignZ2V0JykpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoa2V5ICE9PSAnT0F1dGgyJykge1xyXG4gICAgICAgICAgcGFyYW1zQ2xvbmVba2V5XSA9IGF1dGhcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybCgpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChiYXNlVXJsKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWJhc2VVcmwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmxFcnJvcignZ2V0JykpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxyXG4gICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSB0aGlzLnNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXNDbG9uZSlcclxuICAgICAgICAgIGNvbnN0IGZpbmFsVXJsID0gYCR7ZnVsbFVybH0/JHtxdWVyeVN0cmluZ31gXHJcblxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZDxUPih7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgICAgIHVybDogZmluYWxVcmwsXHJcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmJ1aWxkSGVhZGVycyhoZWFkZXJzKSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSksIHRoaXMuc2Vzc2lvbi5jdHgpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGC0L/RgNCw0LLQutCwINGH0LXRgNC10Lcg0YjQsNCz0Lgg0LjQtyDQvdCw0YHRgtGA0L7QtdC6OiBgcmV0cnlPblF1ZXJ5TGltaXRgLCBgdGhyb3R0bGVgLFxyXG4gICAqIGB0aW1lb3V0YCwgYGxvZ1JlcXVlc3RzYCwg0LfQsNGC0LXQvCBgbWlkZGxld2FyZWA7INC/0L7RgdC70LXQtNC90LjQvCDQuNC00ZHRgiDRgtGA0LDQvdGB0L/QvtGA0YJcclxuICAgKiDQutC70LjQtdC90YLQsCDigJQgYXhpb3Mg0LjQu9C4IGBmZXRjaGAgKGB0cmFuc3BvcnRgKS4g0J3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0Y7RgtGB0Y8g0L/RgNC4XHJcbiAgICog0L/QvtC00L/QuNGB0LrQtS4g0J7RgtC/0LjRgdC60LAg0L7RgtC80LXQvdGP0LXRgiBIVFRQLdC30LDQv9GA0L7RgSAoQWJvcnRTaWduYWwpLiDQntGI0LjQsdC60LAg0YLRgNCw0L3RgdC/0L7RgNGC0LBcclxuICAgKiDRg9GF0L7QtNC40YIg0LTQsNC70YzRiNC1INC60LDQuiDQtdGB0YLRjDog0YMgYXhpb3Mg0LIg0L3QtdC5INCy0LXRgdGMINC30LDQv9GA0L7RgSwg0LLQvNC10YHRgtC1INGBINGC0L7QutC10L3QvtC8INC4XHJcbiAgICog0YHQtdC60YDQtdGC0L7QvCDQstC10LHRhdGD0LrQsCAo0YHQvC4gUkVBRE1FLCDCq9Ce0LHRgNCw0LHQvtGC0LrQsCDQvtGI0LjQsdC+0LrCuykuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZW5kPFQ+KGNvbmZpZzogQlhSZXN0UmVxdWVzdENvbmZpZyk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+KHN1YnNjcmliZXIgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXHJcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuc2Vzc2lvbi5jdHhcclxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBjdHguc2V0dGluZ3NcclxuICAgICAgY29uc3Qgc2VuZCA9IGNvbXBvc2VNaWRkbGV3YXJlKFxyXG4gICAgICAgIFsuLi5idWlsdEluTWlkZGxld2FyZShzZXR0aW5ncywgY3R4KSwgLi4udGhpcy5zZXNzaW9uLmdldE1pZGRsZXdhcmUoKV0sXHJcbiAgICAgICAgKHNldHRpbmdzLnRyYW5zcG9ydCA9PT0gJ2ZldGNoJykgPyBmZXRjaFNlbmQgOiByZXF1ZXN0ID0+IHRoaXMuYXhpb3NTZW5kKHJlcXVlc3QpXHJcbiAgICAgIClcclxuICAgICAgc2VuZCh7IC4uLmNvbmZpZywgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KS50aGVuKFxyXG4gICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGRhdGEgYXMgVCB8IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yOiB1bmtub3duKSA9PiBzdWJzY3JpYmVyLmVycm9yKGVycm9yKVxyXG4gICAgICApXHJcbiAgICAgIHJldHVybiAoKSA9PiBjb250cm9sbGVyLmFib3J0KClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKiog0KLRgNCw0L3RgdC/0L7RgNGCINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOOiBheGlvcyDQutC70LjQtdC90YLQsCwg0LrQsNC6INC4INGA0LDQvdGM0YjQtSDRh9C10YDQtdC3IHBvc3QoKS9nZXQoKS4gKi9cclxuICBwcml2YXRlIGF4aW9zU2VuZChjb25maWc6IEJYUmVzdFJlcXVlc3RDb25maWcpOiBQcm9taXNlPHVua25vd24+IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGNvbmZpZy5oZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGNvbmZpZy53aXRoQ3JlZGVudGlhbHMsIHNpZ25hbDogY29uZmlnLnNpZ25hbCB9XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gKGNvbmZpZy5tZXRob2QgPT09ICdHRVQnKVxyXG4gICAgICA/IHRoaXMuYXhpb3NJbnN0YW5jZS5nZXQoY29uZmlnLnVybCwgb3B0aW9ucylcclxuICAgICAgOiB0aGlzLmF4aW9zSW5zdGFuY2UucG9zdChjb25maWcudXJsLCBjb25maWcuZGF0YSwgb3B0aW9ucylcclxuICAgIHJldHVybiByZXF1ZXN0LnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCX0LDQs9C+0LvQvtCy0LrQuCDQt9Cw0L/RgNC+0YHQsDogYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgLCDQv9C+0LLQtdGA0YUg0L3QuNGFIOKAlCDQt9Cw0LPQvtC70L7QstC60LhcclxuICAgKiDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUg0LLRgdC10LPQviDigJQgYHJlcXVpcmVkYC4g0JIgYHJlcXVpcmVkYCDQuNC00ZHRglxyXG4gICAqIGBDb250ZW50LVR5cGVgOiDQvtGCINC90LXQs9C+INC30LDQstC40YHQuNGCLCDQutCw0Log0YHQtdGA0LLQtdGAINGA0LDQt9Cx0LXRgNGR0YIg0YLQtdC70L4sINC/0L7RjdGC0L7QvNGDXHJcbiAgICog0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40LUg0LfQsNCz0L7Qu9C+0LLQutC4INC10LPQviDQvdC1INC/0LXRgNC10LHQuNCy0LDRjtGCLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRIZWFkZXJzKGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCByZXF1aXJlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9KSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnNlc3Npb24uZ2V0SGVhZGVycygpLCAuLi5oZWFkZXJzLCAuLi5yZXF1aXJlZCB9XHJcbiAgfVxyXG5cclxuICBzZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzdHJpbmdpZnlCaXRyaXhQYXJhbXMocGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZU1ldGhvZChhcnI6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gYXJyLmpvaW4oJy4nKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ответ не 2xx при `transport: 'fetch'`. Поле `response` такое же, как у
|
|
3
|
+
* `AxiosError`: по нему библиотека узнаёт ошибки Bitrix и ошибки авторизации.
|
|
4
|
+
* В `.resVanilla()` приходит сама эта ошибка, в `.res()` — в `cause`.
|
|
5
|
+
*/
|
|
6
|
+
export class BXRestHttpError extends Error {
|
|
7
|
+
constructor(response) {
|
|
8
|
+
super(`Request failed with status code ${response.status}`);
|
|
9
|
+
this.response = response;
|
|
10
|
+
this.name = 'BXRestHttpError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Транспорт `transport: 'fetch'`: глобальный `fetch` браузера или Node 18+.
|
|
15
|
+
* Тело ответа разбирается как JSON, а если это не JSON (например, HTML от
|
|
16
|
+
* прокси) — отдаётся строкой, как это делает axios.
|
|
17
|
+
*/
|
|
18
|
+
export async function fetchSend(config) {
|
|
19
|
+
let body;
|
|
20
|
+
if (config.method === 'POST') {
|
|
21
|
+
body = (typeof config.data === 'string') ? config.data : JSON.stringify(config.data ?? {});
|
|
22
|
+
}
|
|
23
|
+
const response = await fetch(config.url, {
|
|
24
|
+
method: config.method,
|
|
25
|
+
headers: config.headers,
|
|
26
|
+
body,
|
|
27
|
+
credentials: config.withCredentials ? 'include' : 'same-origin',
|
|
28
|
+
signal: config.signal,
|
|
29
|
+
});
|
|
30
|
+
const text = await response.text();
|
|
31
|
+
let data = text;
|
|
32
|
+
if (text) {
|
|
33
|
+
try {
|
|
34
|
+
data = JSON.parse(text);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Не JSON — отдаём текстом
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new BXRestHttpError({ status: response.status, data });
|
|
42
|
+
}
|
|
43
|
+
return data;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9odHRwL2ZldGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxLQUFLO0lBQ3hDLFlBQXFCLFFBQTJDO1FBQzlELEtBQUssQ0FBQyxtQ0FBbUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFEeEMsYUFBUSxHQUFSLFFBQVEsQ0FBbUM7UUFFOUQsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQTtJQUMvQixDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxTQUFTLENBQUMsTUFBMkI7SUFDekQsSUFBSSxJQUF3QixDQUFBO0lBQzVCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUM3QixJQUFJLEdBQUcsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM1RixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN2QyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLElBQUk7UUFDSixXQUFXLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQy9ELE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtLQUN0QixDQUFDLENBQUE7SUFDRixNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNsQyxJQUFJLElBQUksR0FBWSxJQUFJLENBQUE7SUFDeEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULElBQUksQ0FBQztZQUNILElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCWFJlc3RSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnLi90cmFuc3BvcnQnXG5cbi8qKlxuICog0J7RgtCy0LXRgiDQvdC1IDJ4eCDQv9GA0LggYHRyYW5zcG9ydDogJ2ZldGNoJ2AuINCf0L7Qu9C1IGByZXNwb25zZWAg0YLQsNC60L7QtSDQttC1LCDQutCw0Log0YNcbiAqIGBBeGlvc0Vycm9yYDog0L/QviDQvdC10LzRgyDQsdC40LHQu9C40L7RgtC10LrQsCDRg9C30L3QsNGR0YIg0L7RiNC40LHQutC4IEJpdHJpeCDQuCDQvtGI0LjQsdC60Lgg0LDQstGC0L7RgNC40LfQsNGG0LjQuC5cbiAqINCSIGAucmVzVmFuaWxsYSgpYCDQv9GA0LjRhdC+0LTQuNGCINGB0LDQvNCwINGN0YLQsCDQvtGI0LjQsdC60LAsINCyIGAucmVzKClgIOKAlCDQsiBgY2F1c2VgLlxuICovXG5leHBvcnQgY2xhc3MgQlhSZXN0SHR0cEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSByZXNwb25zZTogeyBzdGF0dXM6IG51bWJlciwgZGF0YTogdW5rbm93biB9KSB7XG4gICAgc3VwZXIoYFJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICB0aGlzLm5hbWUgPSAnQlhSZXN0SHR0cEVycm9yJ1xuICB9XG59XG5cbi8qKlxuICog0KLRgNCw0L3RgdC/0L7RgNGCIGB0cmFuc3BvcnQ6ICdmZXRjaCdgOiDQs9C70L7QsdCw0LvRjNC90YvQuSBgZmV0Y2hgINCx0YDQsNGD0LfQtdGA0LAg0LjQu9C4IE5vZGUgMTgrLlxuICog0KLQtdC70L4g0L7RgtCy0LXRgtCwINGA0LDQt9Cx0LjRgNCw0LXRgtGB0Y8g0LrQsNC6IEpTT04sINCwINC10YHQu9C4INGN0YLQviDQvdC1IEpTT04gKNC90LDQv9GA0LjQvNC10YAsIEhUTUwg0L7RglxuICog0L/RgNC+0LrRgdC4KSDigJQg0L7RgtC00LDRkdGC0YHRjyDRgdGC0YDQvtC60L7QuSwg0LrQsNC6INGN0YLQviDQtNC10LvQsNC10YIgYXhpb3MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFNlbmQoY29uZmlnOiBCWFJlc3RSZXF1ZXN0Q29uZmlnKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGxldCBib2R5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgaWYgKGNvbmZpZy5tZXRob2QgPT09ICdQT1NUJykge1xuICAgIGJvZHkgPSAodHlwZW9mIGNvbmZpZy5kYXRhID09PSAnc3RyaW5nJykgPyBjb25maWcuZGF0YSA6IEpTT04uc3RyaW5naWZ5KGNvbmZpZy5kYXRhID8/IHt9KVxuICB9XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goY29uZmlnLnVybCwge1xuICAgIG1ldGhvZDogY29uZmlnLm1ldGhvZCxcbiAgICBoZWFkZXJzOiBjb25maWcuaGVhZGVycyxcbiAgICBib2R5LFxuICAgIGNyZWRlbnRpYWxzOiBjb25maWcud2l0aENyZWRlbnRpYWxzID8gJ2luY2x1ZGUnIDogJ3NhbWUtb3JpZ2luJyxcbiAgICBzaWduYWw6IGNvbmZpZy5zaWduYWwsXG4gIH0pXG4gIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KClcbiAgbGV0IGRhdGE6IHVua25vd24gPSB0ZXh0XG4gIGlmICh0ZXh0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHRleHQpXG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyDQndC1IEpTT04g4oCUINC+0YLQtNCw0ZHQvCDRgtC10LrRgdGC0L7QvFxuICAgIH1cbiAgfVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEJYUmVzdEh0dHBFcnJvcih7IHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLCBkYXRhIH0pXG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbiJdfQ==
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { SessionKeyServices } from './sessionKey';
|
|
3
|
+
import { BXRestContext, runInContext } from '../context';
|
|
3
4
|
/**
|
|
4
5
|
* Общая часть HTTP-клиента: экземпляр axios и источник токена и адреса.
|
|
5
6
|
* Сами запросы отправляет `HttpBXServices` (`BXRestRequest`).
|
|
6
7
|
*/
|
|
7
8
|
export class HttpServices {
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* @param settings свои настройки, как у `new BXRestNavvy(settings)`: запросы
|
|
11
|
+
* идут на этот портал с этим токеном, а `BXRestSettings` на них не влияют.
|
|
12
|
+
* Без них — настройки клиента, внутри которого создан объект, или
|
|
13
|
+
* глобальные `BXRestSettings`.
|
|
14
|
+
*/
|
|
15
|
+
constructor(settings) {
|
|
16
|
+
this.session = settings
|
|
17
|
+
? runInContext(new BXRestContext(settings), () => new SessionKeyServices())
|
|
18
|
+
: new SessionKeyServices();
|
|
10
19
|
}
|
|
11
20
|
/**
|
|
12
21
|
* Экземпляр axios клиента. Один на контекст (клиента со своими настройками
|
|
@@ -17,4 +26,4 @@ export class HttpServices {
|
|
|
17
26
|
return this.session.ctx.axios ??= axios.create();
|
|
18
27
|
}
|
|
19
28
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQXdCLE1BQU0sT0FBTyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUd4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUl2Qjs7Ozs7T0FLRztJQUNILFlBQVksUUFBMEI7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRO1lBQ3JCLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQzNFLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGFBQWE7UUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ2xELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc0luc3RhbmNlIH0gZnJvbSAnYXhpb3MnXG5pbXBvcnQgeyBTZXNzaW9uS2V5U2VydmljZXMgfSBmcm9tICcuL3Nlc3Npb25LZXknXG5pbXBvcnQgeyBCWFJlc3RDb250ZXh0LCBydW5JbkNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0J1xuaW1wb3J0IHsgaUJYUmVzdFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3NldHRpbmdzJ1xuXG4vKipcbiAqINCe0LHRidCw0Y8g0YfQsNGB0YLRjCBIVFRQLdC60LvQuNC10L3RgtCwOiDRjdC60LfQtdC80L/Qu9GP0YAgYXhpb3Mg0Lgg0LjRgdGC0L7Rh9C90LjQuiDRgtC+0LrQtdC90LAg0Lgg0LDQtNGA0LXRgdCwLlxuICog0KHQsNC80Lgg0LfQsNC/0YDQvtGB0Ysg0L7RgtC/0YDQsNCy0LvRj9C10YIgYEh0dHBCWFNlcnZpY2VzYCAoYEJYUmVzdFJlcXVlc3RgKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlcyB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlc3Npb246IFNlc3Npb25LZXlTZXJ2aWNlc1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gc2V0dGluZ3Mg0YHQstC+0Lgg0L3QsNGB0YLRgNC+0LnQutC4LCDQutCw0Log0YMgYG5ldyBCWFJlc3ROYXZ2eShzZXR0aW5ncylgOiDQt9Cw0L/RgNC+0YHRi1xuICAgKiAgINC40LTRg9GCINC90LAg0Y3RgtC+0YIg0L/QvtGA0YLQsNC7INGBINGN0YLQuNC8INGC0L7QutC10L3QvtC8LCDQsCBgQlhSZXN0U2V0dGluZ3NgINC90LAg0L3QuNGFINC90LUg0LLQu9C40Y/RjtGCLlxuICAgKiAgINCR0LXQtyDQvdC40YUg4oCUINC90LDRgdGC0YDQvtC50LrQuCDQutC70LjQtdC90YLQsCwg0LLQvdGD0YLRgNC4INC60L7RgtC+0YDQvtCz0L4g0YHQvtC30LTQsNC9INC+0LHRitC10LrRgiwg0LjQu9C4XG4gICAqICAg0LPQu9C+0LHQsNC70YzQvdGL0LUgYEJYUmVzdFNldHRpbmdzYC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNldHRpbmdzPzogaUJYUmVzdFNldHRpbmdzKSB7XG4gICAgdGhpcy5zZXNzaW9uID0gc2V0dGluZ3NcbiAgICAgID8gcnVuSW5Db250ZXh0KG5ldyBCWFJlc3RDb250ZXh0KHNldHRpbmdzKSwgKCkgPT4gbmV3IFNlc3Npb25LZXlTZXJ2aWNlcygpKVxuICAgICAgOiBuZXcgU2Vzc2lvbktleVNlcnZpY2VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiDQrdC60LfQtdC80L/Qu9GP0YAgYXhpb3Mg0LrQu9C40LXQvdGC0LAuINCe0LTQuNC9INC90LAg0LrQvtC90YLQtdC60YHRgiAo0LrQu9C40LXQvdGC0LAg0YHQviDRgdCy0L7QuNC80Lgg0L3QsNGB0YLRgNC+0LnQutCw0LzQuFxuICAgKiDQuNC70Lgg0LPQu9C+0LHQsNC70YzQvdGL0LUg0L3QsNGB0YLRgNC+0LnQutC4KSDQuCDRgdC+0LfQtNCw0ZHRgtGB0Y8g0L/RgNC4INC/0LXRgNCy0L7QvCDQt9Cw0L/RgNC+0YHQtSDigJQg0YDQsNC90YzRiNC1INC60LDQttC00YvQuVxuICAgKiDQvtCx0YrQtdC60YIg0LfQsNC/0YDQvtGB0LAg0YHQvtC30LTQsNCy0LDQuyDRgdCy0L7QuS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYXhpb3NJbnN0YW5jZSgpOiBBeGlvc0luc3RhbmNlIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmN0eC5heGlvcyA/Pz0gYXhpb3MuY3JlYXRlKClcbiAgfVxufVxuIl19
|
|
@@ -17,9 +17,10 @@ export class BXRestTimeoutError extends Error {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
* Встроенные шаги из настроек, в этом порядке: повтор, очередь,
|
|
20
|
+
* Встроенные шаги из настроек, в этом порядке: повтор, очередь, таймаут, журнал.
|
|
21
21
|
* Повтор — снаружи: каждая попытка заново встаёт в очередь и получает свой
|
|
22
22
|
* таймаут. Таймаут — внутри очереди: ожидание своей очереди его не тратит.
|
|
23
|
+
* Журнал — внутри всех: каждая попытка — своя запись, без времени в очереди.
|
|
23
24
|
*/
|
|
24
25
|
export function builtInMiddleware(settings, state) {
|
|
25
26
|
const steps = [];
|
|
@@ -51,6 +52,15 @@ export function builtInMiddleware(settings, state) {
|
|
|
51
52
|
}
|
|
52
53
|
steps.push(timeout(ms));
|
|
53
54
|
}
|
|
55
|
+
if (settings.logRequests !== undefined) {
|
|
56
|
+
if (typeof settings.logRequests !== 'function') {
|
|
57
|
+
throw invalid('logRequests', settings.logRequests, 'a function');
|
|
58
|
+
}
|
|
59
|
+
steps.push(logRequests(settings.logRequests));
|
|
60
|
+
}
|
|
61
|
+
if (settings.transport !== undefined && settings.transport !== 'axios' && settings.transport !== 'fetch') {
|
|
62
|
+
throw invalid('transport', settings.transport, "'axios' or 'fetch'");
|
|
63
|
+
}
|
|
54
64
|
return steps;
|
|
55
65
|
}
|
|
56
66
|
function invalid(name, value, expected) {
|
|
@@ -121,6 +131,50 @@ function throttle(perSecond, state) {
|
|
|
121
131
|
});
|
|
122
132
|
};
|
|
123
133
|
}
|
|
134
|
+
/** Код ошибки Bitrix из тела ответа или, если его нет, текст ошибки запроса. */
|
|
135
|
+
function errorText(body, error) {
|
|
136
|
+
const code = parseBXRestErrorBody(body)?.error;
|
|
137
|
+
if (code) {
|
|
138
|
+
return code;
|
|
139
|
+
}
|
|
140
|
+
return (error instanceof Error) ? error.message : undefined;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Пишет в журнал запись о каждом HTTP-запросе. Исключение из `log` проглатывается:
|
|
144
|
+
* журнал не должен ломать запрос.
|
|
145
|
+
*/
|
|
146
|
+
function logRequests(log) {
|
|
147
|
+
const write = (entry) => {
|
|
148
|
+
try {
|
|
149
|
+
log(entry);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// Сбой журнала — не ошибка запроса
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
return async (config, next) => {
|
|
156
|
+
const started = Date.now();
|
|
157
|
+
try {
|
|
158
|
+
const data = await next(config);
|
|
159
|
+
const error = errorText(data);
|
|
160
|
+
write({ method: config.method, url: config.url, duration: Date.now() - started, failed: false, ...(error ? { error } : {}) });
|
|
161
|
+
return data;
|
|
162
|
+
}
|
|
163
|
+
catch (cause) {
|
|
164
|
+
const response = httpErrorResponse(cause);
|
|
165
|
+
const error = errorText(response?.data, cause);
|
|
166
|
+
write({
|
|
167
|
+
method: config.method,
|
|
168
|
+
url: config.url,
|
|
169
|
+
duration: Date.now() - started,
|
|
170
|
+
failed: true,
|
|
171
|
+
...(response ? { status: response.status } : {}),
|
|
172
|
+
...(error ? { error } : {}),
|
|
173
|
+
});
|
|
174
|
+
throw cause;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
}
|
|
124
178
|
/** Отменяет запрос, если он не завершился за `ms` миллисекунд. */
|
|
125
179
|
function timeout(ms) {
|
|
126
180
|
return (config, next) => {
|
|
@@ -146,4 +200,4 @@ function timeout(ms) {
|
|
|
146
200
|
});
|
|
147
201
|
};
|
|
148
202
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUdoRixxR0FBcUc7QUFDckcsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQTtBQUN4RSxzREFBc0Q7QUFDdEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQTtBQUNyQyxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFFaEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFDM0MsWUFBcUIsT0FBZTtRQUNsQyxLQUFLLENBQUMsaUNBQWlDLE9BQU8sS0FBSyxDQUFDLENBQUE7UUFEakMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUVsQyxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFBO0lBQ2xDLENBQUM7Q0FDRjtBQU9EOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBeUIsRUFBRSxLQUFvQjtJQUMvRSxNQUFNLEtBQUssR0FBdUIsRUFBRSxDQUFBO0lBQ3BDLElBQUksUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDL0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFBO1FBQ25GLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLElB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bmltcG9ydCB7IGh0dHBFcnJvclJlc3BvbnNlLCBwYXJzZUJYUmVzdEVycm9yQm9keSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9lcnJvcnMnXG5pbXBvcnQgeyBpQlhSZXN0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vc2V0dGluZ3MnXG5cbi8qKiBgcmV0cnlPblF1ZXJ5TGltaXQ6IHRydWVgOiDQstGB0LXQs9C+IDMg0L/QvtC/0YvRgtC60LgsINC/0LDRg9C30LAg0L/QtdGA0LXQtCDQstGC0L7RgNC+0Lkg4oCUIDEwMDAg0LzRgSwg0LTQsNC70YzRiNC1INCy0LTQstC+0LUg0LHQvtC70YzRiNC1LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVUUllfT05fUVVFUllfTElNSVQgPSB7IGF0dGVtcHRzOiAzLCBkZWxheTogMTAwMCB9XG4vKiogYHRpbWVvdXQ6IHRydWVgOiA2MCAwMDAg0LzRgSDQvdCwINC+0LTQuNC9IEhUVFAt0LfQsNC/0YDQvtGBLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRU9VVCA9IDYwXzAwMFxuLyoqIGB0aHJvdHRsZTogdHJ1ZWA6IDIg0LfQsNC/0YDQvtGB0LAg0LIg0YHQtdC60YPQvdC00YMg4oCUINC70LjQvNC40YIgQml0cml4MjQg0L3QsCDQvtCx0YvRh9C90YvRhSDRgtCw0YDQuNGE0LDRhS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RIUk9UVExFID0geyBwZXJTZWNvbmQ6IDIgfVxuXG4vKipcbiAqINCX0LDQv9GA0L7RgSDQvdC1INC30LDQstC10YDRiNC40LvRgdGPINC30LAg0LLRgNC10LzRjyDQuNC3IGB0aW1lb3V0YCDQsiDQvdCw0YHRgtGA0L7QudC60LDRhS4g0JIgYC5yZXNWYW5pbGxhKClgXG4gKiDQv9GA0LjRhdC+0LTQuNGCINGB0LDQvNCwINGN0YLQsCDQvtGI0LjQsdC60LAsINCyIGAucmVzKClgIOKAlCDQsiBgY2F1c2VgLlxuICovXG5leHBvcnQgY2xhc3MgQlhSZXN0VGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSB0aW1lb3V0OiBudW1iZXIpIHtcbiAgICBzdXBlcihgVGhlIHJlcXVlc3QgZGlkIG5vdCBmaW5pc2ggaW4gJHt0aW1lb3V0fSBtc2ApXG4gICAgdGhpcy5uYW1lID0gJ0JYUmVzdFRpbWVvdXRFcnJvcidcbiAgfVxufVxuXG4vKiog0JPQtNC1INC60LvQuNC10L3RgiDRhdGA0LDQvdC40YIg0L7Rh9C10YDQtdC00YwgYHRocm90dGxlYCDigJQg0LIg0YHQstC+0ZHQvCDQutC+0L3RgtC10LrRgdGC0LUuICovXG5leHBvcnQgaW50ZXJmYWNlIFRocm90dGxlU3RhdGUge1xuICB0aHJvdHRsZU5leHRTbG90OiBudW1iZXJcbn1cblxuLyoqXG4gKiDQktGB0YLRgNC+0LXQvdC90YvQtSDRiNCw0LPQuCDQuNC3INC90LDRgdGC0YDQvtC10LosINCyINGN0YLQvtC8INC/0L7RgNGP0LTQutC1OiDQv9C+0LLRgtC+0YAsINC+0YfQtdGA0LXQtNGMLCDRgtCw0LnQvNCw0YPRgi5cbiAqINCf0L7QstGC0L7RgCDigJQg0YHQvdCw0YDRg9C20Lg6INC60LDQttC00LDRjyDQv9C+0L/Ri9GC0LrQsCDQt9Cw0L3QvtCy0L4g0LLRgdGC0LDRkdGCINCyINC+0YfQtdGA0LXQtNGMINC4INC/0L7Qu9GD0YfQsNC10YIg0YHQstC+0LlcbiAqINGC0LDQudC80LDRg9GCLiDQotCw0LnQvNCw0YPRgiDigJQg0LLQvdGD0YLRgNC4INC+0YfQtdGA0LXQtNC4OiDQvtC20LjQtNCw0L3QuNC1INGB0LLQvtC10Lkg0L7Rh9C10YDQtdC00Lgg0LXQs9C+INC90LUg0YLRgNCw0YLQuNGCLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbHRJbk1pZGRsZXdhcmUoc2V0dGluZ3M6IGlCWFJlc3RTZXR0aW5ncywgc3RhdGU6IFRocm90dGxlU3RhdGUpOiBCWFJlc3RNaWRkbGV3YXJlW10ge1xuICBjb25zdCBzdGVwczogQlhSZXN0TWlkZGxld2FyZVtdID0gW11cbiAgaWYgKHNldHRpbmdzLnJldHJ5T25RdWVyeUxpbWl0KSB7XG4gICAgY29uc3Qgb3duID0gKHNldHRpbmdzLnJldHJ5T25RdWVyeUxpbWl0ID09PSB0cnVlKSA/IHt9IDogc2V0dGluZ3MucmV0cnlPblF1ZXJ5TGltaXRcbiAgICBjb25zdCBhdHRlbXB0cyA9IG93bi5hdHRlbXB0cyA/PyBERUZBVUxUX1JFVFJZX09OX1FVRVJZX0xJTUlULmF0dGVtcHRzXG4gICAgY29uc3QgZGVsYXkgPSBvd24uZGVsYXkgPz8gREVGQVVMVF9SRVRSWV9PTl9RVUVSWV9MSU1JVC5kZWxheVxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihhdHRlbXB0cykgfHwgYXR0ZW1wdHMgPCAxKSB7XG4gICAgICB0aHJvdyBpbnZhbGlkKCdyZXRyeU9uUXVlcnlMaW1pdC5hdHRlbXB0cycsIGF0dGVtcHRzLCAnYSB3aG9sZSBudW1iZXIgZnJvbSAxJylcbiAgICB9XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZGVsYXkpIHx8IGRlbGF5IDwgMCkge1xuICAgICAgdGhyb3cgaW52YWxpZCgncmV0cnlPblF1ZXJ5TGltaXQuZGVsYXknLCBkZWxheSwgJ2EgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIDAnKVxuICAgIH1cbiAgICBzdGVwcy5wdXNoKHJldHJ5T25RdWVyeUxpbWl0KGF0dGVtcHRzLCBkZWxheSkpXG4gIH1cbiAgaWYgKHNldHRpbmdzLnRocm90dGxlKSB7XG4gICAgY29uc3Qgb3duID0gKHNldHRpbmdzLnRocm90dGxlID09PSB0cnVlKSA/IHt9IDogc2V0dGluZ3MudGhyb3R0bGVcbiAgICBjb25zdCBwZXJTZWNvbmQgPSBvd24ucGVyU2Vjb25kID8/IERFRkFVTFRfVEhST1RUTEUucGVyU2Vjb25kXG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUocGVyU2Vjb25kKSB8fCBwZXJTZWNvbmQgPD0gMCkge1xuICAgICAgdGhyb3cgaW52YWxpZCgndGhyb3R0bGUucGVyU2Vjb25kJywgcGVyU2Vjb25kLCAnYSBudW1iZXIgYWJvdmUgMCcpXG4gICAgfVxuICAgIHN0ZXBzLnB1c2godGhyb3R0bGUocGVyU2Vjb25kLCBzdGF0ZSkpXG4gIH1cbiAgaWYgKHNldHRpbmdzLnRpbWVvdXQpIHtcbiAgICBjb25zdCBtcyA9IChzZXR0aW5ncy50aW1lb3V0ID09PSB0cnVlKSA/IERFRkFVTFRfVElNRU9VVCA6IHNldHRpbmdzLnRpbWVvdXRcbiAgICAvLyBzZXRUaW1lb3V0INGB0YfQuNGC0LDQtdGCINCx0L7Qu9GM0YjQtSAyXjMxIOKIkiAxINC80YEg0LfQsCAwINC4INGB0YDQsNCx0L7RgtCw0Lsg0LHRiyDRgdGA0LDQt9GDXG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobXMpIHx8IG1zIDw9IDAgfHwgbXMgPiAyXzE0N180ODNfNjQ3KSB7XG4gICAgICB0aHJvdyBpbnZhbGlkKCd0aW1lb3V0JywgbXMsICdhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgZnJvbSAxIHRvIDIxNDc0ODM2NDcnKVxuICAgIH1cbiAgICBzdGVwcy5wdXNoKHRpbWVvdXQobXMpKVxuICB9XG4gIHJldHVybiBzdGVwc1xufVxuXG5mdW5jdGlvbiBpbnZhbGlkKG5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24sIGV4cGVjdGVkOiBzdHJpbmcpOiBUeXBlRXJyb3Ige1xuICByZXR1cm4gbmV3IFR5cGVFcnJvcihgYngtcmVzdCBzZXR0aW5nczogJHtuYW1lfSBtdXN0IGJlICR7ZXhwZWN0ZWR9LCBnb3QgJHtTdHJpbmcodmFsdWUpfWApXG59XG5cbmZ1bmN0aW9uIGFib3J0UmVhc29uKHNpZ25hbDogQWJvcnRTaWduYWwpOiB1bmtub3duIHtcbiAgcmV0dXJuIHNpZ25hbC5yZWFzb24gPz8gbmV3IEVycm9yKCdUaGUgcmVxdWVzdCB3YXMgYWJvcnRlZCcpXG59XG5cbi8qKiDQn9Cw0YPQt9CwLCDQutC+0YLQvtGA0YPRjiDQv9GA0LXRgNGL0LLQsNC10YIg0L7RgtC80LXQvdCwINC30LDQv9GA0L7RgdCwLiAqL1xuZnVuY3Rpb24gd2FpdChtczogbnVtYmVyLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmIChzaWduYWw/LmFib3J0ZWQpIHtcbiAgICAgIHJlamVjdChhYm9ydFJlYXNvbihzaWduYWwpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICByZWplY3QoYWJvcnRSZWFzb24oc2lnbmFsIGFzIEFib3J0U2lnbmFsKSlcbiAgICB9XG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KVxuICAgICAgcmVzb2x2ZSgpXG4gICAgfSwgbXMpXG4gICAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KVxuICB9KVxufVxuXG4vKipcbiAqINCf0L7QstGC0L7RgCDQv9GA0LggYFFVRVJZX0xJTUlUX0VYQ0VFREVEYDog0L/QvtGA0YLQsNC7INC+0YLQstC10YfQsNC10YIg0YLQsNC6IChIVFRQIDUwMyksINC60L7Qs9C00LBcbiAqINC/0YDQtdCy0YvRiNC10L0g0LvQuNC80LjRgiDRh9Cw0YHRgtC+0YLRiyDQt9Cw0L/RgNC+0YHQvtCyLiDQn9Cw0YPQt9CwINGA0LDRgdGC0ZHRgiDQstC00LLQvtC1OiBgZGVsYXlgLCBgMiDDlyBkZWxheWAsIC4uLlxuICogYGF0dGVtcHRzYCDigJQg0YHQutC+0LvRjNC60L4g0LLRgdC10LPQviDQv9C+0L/Ri9GC0L7Quiwg0LLQvNC10YHRgtC1INGBINC/0LXRgNCy0L7QuS5cbiAqL1xuZnVuY3Rpb24gcmV0cnlPblF1ZXJ5TGltaXQoYXR0ZW1wdHM6IG51bWJlciwgZGVsYXk6IG51bWJlcik6IEJYUmVzdE1pZGRsZXdhcmUge1xuICByZXR1cm4gYXN5bmMgKGNvbmZpZywgbmV4dCkgPT4ge1xuICAgIGZvciAobGV0IGF0dGVtcHQgPSAxOyA7IGF0dGVtcHQrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5leHQoY29uZmlnKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY29kZSA9IHBhcnNlQlhSZXN0RXJyb3JCb2R5KGh0dHBFcnJvclJlc3BvbnNlKGVycm9yKT8uZGF0YSk/LmVycm9yXG4gICAgICAgIGlmIChhdHRlbXB0ID49IGF0dGVtcHRzIHx8IGNvZGUgIT09ICdRVUVSWV9MSU1JVF9FWENFRURFRCcpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdhaXQoZGVsYXkgKiAyICoqIChhdHRlbXB0IC0gMSksIGNvbmZpZy5zaWduYWwpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICog0J3QtSDQsdC+0LvRjNGI0LUgYHBlclNlY29uZGAg0LfQsNC/0YDQvtGB0L7QsiDQsiDRgdC10LrRg9C90LTRgzog0LvQuNGI0L3QuNC1INC20LTRg9GCINGB0LLQvtC10Lkg0L7Rh9C10YDQtdC00LguXG4gKiDQntGH0LXRgNC10LTRjCDQvtCx0YnQsNGPINC00LvRjyDQstGB0LXRhSDQt9Cw0L/RgNC+0YHQvtCyINC60LvQuNC10L3RgtCwIChgc3RhdGVgIOKAlCDQtdCz0L4g0LrQvtC90YLQtdC60YHRgikuXG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKHBlclNlY29uZDogbnVtYmVyLCBzdGF0ZTogVGhyb3R0bGVTdGF0ZSk6IEJYUmVzdE1pZGRsZXdhcmUge1xuICBjb25zdCBpbnRlcnZhbCA9IDEwMDAgLyBwZXJTZWNvbmRcbiAgcmV0dXJuIChjb25maWcsIG5leHQpID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heChub3csIHN0YXRlLnRocm90dGxlTmV4dFNsb3QpXG4gICAgY29uc3QgcmVzZXJ2ZWQgPSBzdGFydCArIGludGVydmFsXG4gICAgc3RhdGUudGhyb3R0bGVOZXh0U2xvdCA9IHJlc2VydmVkXG4gICAgaWYgKHN0YXJ0IDw9IG5vdykge1xuICAgICAgcmV0dXJuIG5leHQoY29uZmlnKVxuICAgIH1cbiAgICByZXR1cm4gd2FpdChzdGFydCAtIG5vdywgY29uZmlnLnNpZ25hbCkudGhlbihcbiAgICAgICgpID0+IG5leHQoY29uZmlnKSxcbiAgICAgIChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAvLyDQntGC0LzQtdC90ZHQvdC90YvQuSDQt9Cw0L/RgNC+0YEg0L7RgdCy0L7QsdC+0LbQtNCw0LXRgiDRgdCy0L7RkSDQvNC10YHRgtC+LCDQtdGB0LvQuCDQt9CwINC90LjQvCDQvdC40LrRgtC+INC90LUg0LLRgdGC0LDQu1xuICAgICAgICBpZiAoc3RhdGUudGhyb3R0bGVOZXh0U2xvdCA9PT0gcmVzZXJ2ZWQpIHtcbiAgICAgICAgICBzdGF0ZS50aHJvdHRsZU5leHRTbG90ID0gc3RhcnRcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIClcbiAgfVxufVxuXG4vKiog0J7RgtC80LXQvdGP0LXRgiDQt9Cw0L/RgNC+0YEsINC10YHQu9C4INC+0L0g0L3QtSDQt9Cw0LLQtdGA0YjQuNC70YHRjyDQt9CwIGBtc2Ag0LzQuNC70LvQuNGB0LXQutGD0L3QtC4gKi9cbmZ1bmN0aW9uIHRpbWVvdXQobXM6IG51bWJlcik6IEJYUmVzdE1pZGRsZXdhcmUge1xuICByZXR1cm4gKGNvbmZpZywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4gY29udHJvbGxlci5hYm9ydChhYm9ydFJlYXNvbihjb25maWcuc2lnbmFsIGFzIEFib3J0U2lnbmFsKSlcbiAgICBpZiAoY29uZmlnLnNpZ25hbD8uYWJvcnRlZCkge1xuICAgICAgb25BYm9ydCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZpZy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pXG4gICAgfVxuICAgIGxldCB0aW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWRcbiAgICBjb25zdCB0aW1lZE91dCA9IG5ldyBQcm9taXNlPG5ldmVyPigoXywgcmVqZWN0KSA9PiB7XG4gICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBCWFJlc3RUaW1lb3V0RXJyb3IobXMpXG4gICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoZXJyb3IpXG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgIH0sIG1zKVxuICAgIH0pXG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbbmV4dCh7IC4uLmNvbmZpZywgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KSwgdGltZWRPdXRdKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIGNvbmZpZy5zaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydClcbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUdoRixxR0FBcUc7QUFDckcsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQTtBQUN4RSxzREFBc0Q7QUFDdEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQTtBQUNyQyxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFFaEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFDM0MsWUFBcUIsT0FBZTtRQUNsQyxLQUFLLENBQUMsaUNBQWlDLE9BQU8sS0FBSyxDQUFDLENBQUE7UUFEakMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUVsQyxJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFBO0lBQ2xDLENBQUM7Q0FDRjtBQU9EOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQXlCLEVBQUUsS0FBb0I7SUFDL0UsTUFBTSxLQUFLLEdBQXVCLEVBQUUsQ0FBQTtJQUNwQyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQTtRQUNuRixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxJ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QUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQlhSZXN0TWlkZGxld2FyZSB9IGZyb20gJy4vdHJhbnNwb3J0J1xuaW1wb3J0IHsgaHR0cEVycm9yUmVzcG9uc2UsIHBhcnNlQlhSZXN0RXJyb3JCb2R5IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2Vycm9ycydcbmltcG9ydCB7IEJYUmVzdFJlcXVlc3RMb2dFbnRyeSwgaUJYUmVzdFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3NldHRpbmdzJ1xuXG4vKiogYHJldHJ5T25RdWVyeUxpbWl0OiB0cnVlYDog0LLRgdC10LPQviAzINC/0L7Qv9GL0YLQutC4LCDQv9Cw0YPQt9CwINC/0LXRgNC10LQg0LLRgtC+0YDQvtC5IOKAlCAxMDAwINC80YEsINC00LDQu9GM0YjQtSDQstC00LLQvtC1INCx0L7Qu9GM0YjQtS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFVFJZX09OX1FVRVJZX0xJTUlUID0geyBhdHRlbXB0czogMywgZGVsYXk6IDEwMDAgfVxuLyoqIGB0aW1lb3V0OiB0cnVlYDogNjAgMDAwINC80YEg0L3QsCDQvtC00LjQvSBIVFRQLdC30LDQv9GA0L7RgS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RJTUVPVVQgPSA2MF8wMDBcbi8qKiBgdGhyb3R0bGU6IHRydWVgOiAyINC30LDQv9GA0L7RgdCwINCyINGB0LXQutGD0L3QtNGDIOKAlCDQu9C40LzQuNGCIEJpdHJpeDI0INC90LAg0L7QsdGL0YfQvdGL0YUg0YLQsNGA0LjRhNCw0YUuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9USFJPVFRMRSA9IHsgcGVyU2Vjb25kOiAyIH1cblxuLyoqXG4gKiDQl9Cw0L/RgNC+0YEg0L3QtSDQt9Cw0LLQtdGA0YjQuNC70YHRjyDQt9CwINCy0YDQtdC80Y8g0LjQtyBgdGltZW91dGAg0LIg0L3QsNGB0YLRgNC+0LnQutCw0YUuINCSIGAucmVzVmFuaWxsYSgpYFxuICog0L/RgNC40YXQvtC00LjRgiDRgdCw0LzQsCDRjdGC0LAg0L7RiNC40LHQutCwLCDQsiBgLnJlcygpYCDigJQg0LIgYGNhdXNlYC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJYUmVzdFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgdGltZW91dDogbnVtYmVyKSB7XG4gICAgc3VwZXIoYFRoZSByZXF1ZXN0IGRpZCBub3QgZmluaXNoIGluICR7dGltZW91dH0gbXNgKVxuICAgIHRoaXMubmFtZSA9ICdCWFJlc3RUaW1lb3V0RXJyb3InXG4gIH1cbn1cblxuLyoqINCT0LTQtSDQutC70LjQtdC90YIg0YXRgNCw0L3QuNGCINC+0YfQtdGA0LXQtNGMIGB0aHJvdHRsZWAg4oCUINCyINGB0LLQvtGR0Lwg0LrQvtC90YLQtdC60YHRgtC1LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaHJvdHRsZVN0YXRlIHtcbiAgdGhyb3R0bGVOZXh0U2xvdDogbnVtYmVyXG59XG5cbi8qKlxuICog0JLRgdGC0YDQvtC10L3QvdGL0LUg0YjQsNCz0Lgg0LjQtyDQvdCw0YHRgtGA0L7QtdC6LCDQsiDRjdGC0L7QvCDQv9C+0YDRj9C00LrQtTog0L/QvtCy0YLQvtGALCDQvtGH0LXRgNC10LTRjCwg0YLQsNC50LzQsNGD0YIsINC20YPRgNC90LDQuy5cbiAqINCf0L7QstGC0L7RgCDigJQg0YHQvdCw0YDRg9C20Lg6INC60LDQttC00LDRjyDQv9C+0L/Ri9GC0LrQsCDQt9Cw0L3QvtCy0L4g0LLRgdGC0LDRkdGCINCyINC+0YfQtdGA0LXQtNGMINC4INC/0L7Qu9GD0YfQsNC10YIg0YHQstC+0LlcbiAqINGC0LDQudC80LDRg9GCLiDQotCw0LnQvNCw0YPRgiDigJQg0LLQvdGD0YLRgNC4INC+0YfQtdGA0LXQtNC4OiDQvtC20LjQtNCw0L3QuNC1INGB0LLQvtC10Lkg0L7Rh9C10YDQtdC00Lgg0LXQs9C+INC90LUg0YLRgNCw0YLQuNGCLlxuICog0JbRg9GA0L3QsNC7IOKAlCDQstC90YPRgtGA0Lgg0LLRgdC10YU6INC60LDQttC00LDRjyDQv9C+0L/Ri9GC0LrQsCDigJQg0YHQstC+0Y8g0LfQsNC/0LjRgdGMLCDQsdC10Lcg0LLRgNC10LzQtdC90Lgg0LIg0L7Rh9C10YDQtdC00LguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsdEluTWlkZGxld2FyZShzZXR0aW5nczogaUJYUmVzdFNldHRpbmdzLCBzdGF0ZTogVGhyb3R0bGVTdGF0ZSk6IEJYUmVzdE1pZGRsZXdhcmVbXSB7XG4gIGNvbnN0IHN0ZXBzOiBCWFJlc3RNaWRkbGV3YXJlW10gPSBbXVxuICBpZiAoc2V0dGluZ3MucmV0cnlPblF1ZXJ5TGltaXQpIHtcbiAgICBjb25zdCBvd24gPSAoc2V0dGluZ3MucmV0cnlPblF1ZXJ5TGltaXQgPT09IHRydWUpID8ge30gOiBzZXR0aW5ncy5yZXRyeU9uUXVlcnlMaW1pdFxuICAgIGNvbnN0IGF0dGVtcHRzID0gb3duLmF0dGVtcHRzID8/IERFRkFVTFRfUkVUUllfT05fUVVFUllfTElNSVQuYXR0ZW1wdHNcbiAgICBjb25zdCBkZWxheSA9IG93bi5kZWxheSA/PyBERUZBVUxUX1JFVFJZX09OX1FVRVJZX0xJTUlULmRlbGF5XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGF0dGVtcHRzKSB8fCBhdHRlbXB0cyA8IDEpIHtcbiAgICAgIHRocm93IGludmFsaWQoJ3JldHJ5T25RdWVyeUxpbWl0LmF0dGVtcHRzJywgYXR0ZW1wdHMsICdhIHdob2xlIG51bWJlciBmcm9tIDEnKVxuICAgIH1cbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShkZWxheSkgfHwgZGVsYXkgPCAwKSB7XG4gICAgICB0aHJvdyBpbnZhbGlkKCdyZXRyeU9uUXVlcnlMaW1pdC5kZWxheScsIGRlbGF5LCAnYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZyb20gMCcpXG4gICAgfVxuICAgIHN0ZXBzLnB1c2gocmV0cnlPblF1ZXJ5TGltaXQoYXR0ZW1wdHMsIGRlbGF5KSlcbiAgfVxuICBpZiAoc2V0dGluZ3MudGhyb3R0bGUpIHtcbiAgICBjb25zdCBvd24gPSAoc2V0dGluZ3MudGhyb3R0bGUgPT09IHRydWUpID8ge30gOiBzZXR0aW5ncy50aHJvdHRsZVxuICAgIGNvbnN0IHBlclNlY29uZCA9IG93bi5wZXJTZWNvbmQgPz8gREVGQVVMVF9USFJPVFRMRS5wZXJTZWNvbmRcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShwZXJTZWNvbmQpIHx8IHBlclNlY29uZCA8PSAwKSB7XG4gICAgICB0aHJvdyBpbnZhbGlkKCd0aHJvdHRsZS5wZXJTZWNvbmQnLCBwZXJTZWNvbmQsICdhIG51bWJlciBhYm92ZSAwJylcbiAgICB9XG4gICAgc3RlcHMucHVzaCh0aHJvdHRsZShwZXJTZWNvbmQsIHN0YXRlKSlcbiAgfVxuICBpZiAoc2V0dGluZ3MudGltZW91dCkge1xuICAgIGNvbnN0IG1zID0gKHNldHRpbmdzLnRpbWVvdXQgPT09IHRydWUpID8gREVGQVVMVF9USU1FT1VUIDogc2V0dGluZ3MudGltZW91dFxuICAgIC8vIHNldFRpbWVvdXQg0YHRh9C40YLQsNC10YIg0LHQvtC70YzRiNC1IDJeMzEg4oiSIDEg0LzRgSDQt9CwIDAg0Lgg0YHRgNCw0LHQvtGC0LDQuyDQsdGLINGB0YDQsNC30YNcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtcykgfHwgbXMgPD0gMCB8fCBtcyA+IDJfMTQ3XzQ4M182NDcpIHtcbiAgICAgIHRocm93IGludmFsaWQoJ3RpbWVvdXQnLCBtcywgJ2EgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIDEgdG8gMjE0NzQ4MzY0NycpXG4gICAgfVxuICAgIHN0ZXBzLnB1c2godGltZW91dChtcykpXG4gIH1cbiAgaWYgKHNldHRpbmdzLmxvZ1JlcXVlc3RzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIHNldHRpbmdzLmxvZ1JlcXVlc3RzICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBpbnZhbGlkKCdsb2dSZXF1ZXN0cycsIHNldHRpbmdzLmxvZ1JlcXVlc3RzLCAnYSBmdW5jdGlvbicpXG4gICAgfVxuICAgIHN0ZXBzLnB1c2gobG9nUmVxdWVzdHMoc2V0dGluZ3MubG9nUmVxdWVzdHMpKVxuICB9XG4gIGlmIChzZXR0aW5ncy50cmFuc3BvcnQgIT09IHVuZGVmaW5lZCAmJiBzZXR0aW5ncy50cmFuc3BvcnQgIT09ICdheGlvcycgJiYgc2V0dGluZ3MudHJhbnNwb3J0ICE9PSAnZmV0Y2gnKSB7XG4gICAgdGhyb3cgaW52YWxpZCgndHJhbnNwb3J0Jywgc2V0dGluZ3MudHJhbnNwb3J0LCBcIidheGlvcycgb3IgJ2ZldGNoJ1wiKVxuICB9XG4gIHJldHVybiBzdGVwc1xufVxuXG5mdW5jdGlvbiBpbnZhbGlkKG5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24sIGV4cGVjdGVkOiBzdHJpbmcpOiBUeXBlRXJyb3Ige1xuICByZXR1cm4gbmV3IFR5cGVFcnJvcihgYngtcmVzdCBzZXR0aW5nczogJHtuYW1lfSBtdXN0IGJlICR7ZXhwZWN0ZWR9LCBnb3QgJHtTdHJpbmcodmFsdWUpfWApXG59XG5cbmZ1bmN0aW9uIGFib3J0UmVhc29uKHNpZ25hbDogQWJvcnRTaWduYWwpOiB1bmtub3duIHtcbiAgcmV0dXJuIHNpZ25hbC5yZWFzb24gPz8gbmV3IEVycm9yKCdUaGUgcmVxdWVzdCB3YXMgYWJvcnRlZCcpXG59XG5cbi8qKiDQn9Cw0YPQt9CwLCDQutC+0YLQvtGA0YPRjiDQv9GA0LXRgNGL0LLQsNC10YIg0L7RgtC80LXQvdCwINC30LDQv9GA0L7RgdCwLiAqL1xuZnVuY3Rpb24gd2FpdChtczogbnVtYmVyLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmIChzaWduYWw/LmFib3J0ZWQpIHtcbiAgICAgIHJlamVjdChhYm9ydFJlYXNvbihzaWduYWwpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICByZWplY3QoYWJvcnRSZWFzb24oc2lnbmFsIGFzIEFib3J0U2lnbmFsKSlcbiAgICB9XG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNpZ25hbD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KVxuICAgICAgcmVzb2x2ZSgpXG4gICAgfSwgbXMpXG4gICAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KVxuICB9KVxufVxuXG4vKipcbiAqINCf0L7QstGC0L7RgCDQv9GA0LggYFFVRVJZX0xJTUlUX0VYQ0VFREVEYDog0L/QvtGA0YLQsNC7INC+0YLQstC10YfQsNC10YIg0YLQsNC6IChIVFRQIDUwMyksINC60L7Qs9C00LBcbiAqINC/0YDQtdCy0YvRiNC10L0g0LvQuNC80LjRgiDRh9Cw0YHRgtC+0YLRiyDQt9Cw0L/RgNC+0YHQvtCyLiDQn9Cw0YPQt9CwINGA0LDRgdGC0ZHRgiDQstC00LLQvtC1OiBgZGVsYXlgLCBgMiDDlyBkZWxheWAsIC4uLlxuICogYGF0dGVtcHRzYCDigJQg0YHQutC+0LvRjNC60L4g0LLRgdC10LPQviDQv9C+0L/Ri9GC0L7Quiwg0LLQvNC10YHRgtC1INGBINC/0LXRgNCy0L7QuS5cbiAqL1xuZnVuY3Rpb24gcmV0cnlPblF1ZXJ5TGltaXQoYXR0ZW1wdHM6IG51bWJlciwgZGVsYXk6IG51bWJlcik6IEJYUmVzdE1pZGRsZXdhcmUge1xuICByZXR1cm4gYXN5bmMgKGNvbmZpZywgbmV4dCkgPT4ge1xuICAgIGZvciAobGV0IGF0dGVtcHQgPSAxOyA7IGF0dGVtcHQrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5leHQoY29uZmlnKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY29kZSA9IHBhcnNlQlhSZXN0RXJyb3JCb2R5KGh0dHBFcnJvclJlc3BvbnNlKGVycm9yKT8uZGF0YSk/LmVycm9yXG4gICAgICAgIGlmIChhdHRlbXB0ID49IGF0dGVtcHRzIHx8IGNvZGUgIT09ICdRVUVSWV9MSU1JVF9FWENFRURFRCcpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHdhaXQoZGVsYXkgKiAyICoqIChhdHRlbXB0IC0gMSksIGNvbmZpZy5zaWduYWwpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICog0J3QtSDQsdC+0LvRjNGI0LUgYHBlclNlY29uZGAg0LfQsNC/0YDQvtGB0L7QsiDQsiDRgdC10LrRg9C90LTRgzog0LvQuNGI0L3QuNC1INC20LTRg9GCINGB0LLQvtC10Lkg0L7Rh9C10YDQtdC00LguXG4gKiDQntGH0LXRgNC10LTRjCDQvtCx0YnQsNGPINC00LvRjyDQstGB0LXRhSDQt9Cw0L/RgNC+0YHQvtCyINC60LvQuNC10L3RgtCwIChgc3RhdGVgIOKAlCDQtdCz0L4g0LrQvtC90YLQtdC60YHRgikuXG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKHBlclNlY29uZDogbnVtYmVyLCBzdGF0ZTogVGhyb3R0bGVTdGF0ZSk6IEJYUmVzdE1pZGRsZXdhcmUge1xuICBjb25zdCBpbnRlcnZhbCA9IDEwMDAgLyBwZXJTZWNvbmRcbiAgcmV0dXJuIChjb25maWcsIG5leHQpID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heChub3csIHN0YXRlLnRocm90dGxlTmV4dFNsb3QpXG4gICAgY29uc3QgcmVzZXJ2ZWQgPSBzdGFydCArIGludGVydmFsXG4gICAgc3RhdGUudGhyb3R0bGVOZXh0U2xvdCA9IHJlc2VydmVkXG4gICAgaWYgKHN0YXJ0IDw9IG5vdykge1xuICAgICAgcmV0dXJuIG5leHQoY29uZmlnKVxuICAgIH1cbiAgICByZXR1cm4gd2FpdChzdGFydCAtIG5vdywgY29uZmlnLnNpZ25hbCkudGhlbihcbiAgICAgICgpID0+IG5leHQoY29uZmlnKSxcbiAgICAgIChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAvLyDQntGC0LzQtdC90ZHQvdC90YvQuSDQt9Cw0L/RgNC+0YEg0L7RgdCy0L7QsdC+0LbQtNCw0LXRgiDRgdCy0L7RkSDQvNC10YHRgtC+LCDQtdGB0LvQuCDQt9CwINC90LjQvCDQvdC40LrRgtC+INC90LUg0LLRgdGC0LDQu1xuICAgICAgICBpZiAoc3RhdGUudGhyb3R0bGVOZXh0U2xvdCA9PT0gcmVzZXJ2ZWQpIHtcbiAgICAgICAgICBzdGF0ZS50aHJvdHRsZU5leHRTbG90ID0gc3RhcnRcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIClcbiAgfVxufVxuXG4vKiog0JrQvtC0INC+0YjQuNCx0LrQuCBCaXRyaXgg0LjQtyDRgtC10LvQsCDQvtGC0LLQtdGC0LAg0LjQu9C4LCDQtdGB0LvQuCDQtdCz0L4g0L3QtdGCLCDRgtC10LrRgdGCINC+0YjQuNCx0LrQuCDQt9Cw0L/RgNC+0YHQsC4gKi9cbmZ1bmN0aW9uIGVycm9yVGV4dChib2R5OiB1bmtub3duLCBlcnJvcj86IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb2RlID0gcGFyc2VCWFJlc3RFcnJvckJvZHkoYm9keSk/LmVycm9yXG4gIGlmIChjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGVcbiAgfVxuICByZXR1cm4gKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpID8gZXJyb3IubWVzc2FnZSA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqINCf0LjRiNC10YIg0LIg0LbRg9GA0L3QsNC7INC30LDQv9C40YHRjCDQviDQutCw0LbQtNC+0LwgSFRUUC3Qt9Cw0L/RgNC+0YHQtS4g0JjRgdC60LvRjtGH0LXQvdC40LUg0LjQtyBgbG9nYCDQv9GA0L7Qs9C70LDRgtGL0LLQsNC10YLRgdGPOlxuICog0LbRg9GA0L3QsNC7INC90LUg0LTQvtC70LbQtdC9INC70L7QvNCw0YLRjCDQt9Cw0L/RgNC+0YEuXG4gKi9cbmZ1bmN0aW9uIGxvZ1JlcXVlc3RzKGxvZzogKGVudHJ5OiBCWFJlc3RSZXF1ZXN0TG9nRW50cnkpID0+IHZvaWQpOiBCWFJlc3RNaWRkbGV3YXJlIHtcbiAgY29uc3Qgd3JpdGUgPSAoZW50cnk6IEJYUmVzdFJlcXVlc3RMb2dFbnRyeSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBsb2coZW50cnkpXG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyDQodCx0L7QuSDQttGD0YDQvdCw0LvQsCDigJQg0L3QtSDQvtGI0LjQsdC60LAg0LfQsNC/0YDQvtGB0LBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFzeW5jIChjb25maWcsIG5leHQpID0+IHtcbiAgICBjb25zdCBzdGFydGVkID0gRGF0ZS5ub3coKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV4dChjb25maWcpXG4gICAgICBjb25zdCBlcnJvciA9IGVycm9yVGV4dChkYXRhKVxuICAgICAgd3JpdGUoeyBtZXRob2Q6IGNvbmZpZy5tZXRob2QsIHVybDogY29uZmlnLnVybCwgZHVyYXRpb246IERhdGUubm93KCkgLSBzdGFydGVkLCBmYWlsZWQ6IGZhbHNlLCAuLi4oZXJyb3IgPyB7IGVycm9yIH0gOiB7fSkgfSlcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gaHR0cEVycm9yUmVzcG9uc2UoY2F1c2UpXG4gICAgICBjb25zdCBlcnJvciA9IGVycm9yVGV4dChyZXNwb25zZT8uZGF0YSwgY2F1c2UpXG4gICAgICB3cml0ZSh7XG4gICAgICAgIG1ldGhvZDogY29uZmlnLm1ldGhvZCxcbiAgICAgICAgdXJsOiBjb25maWcudXJsLFxuICAgICAgICBkdXJhdGlvbjogRGF0ZS5ub3coKSAtIHN0YXJ0ZWQsXG4gICAgICAgIGZhaWxlZDogdHJ1ZSxcbiAgICAgICAgLi4uKHJlc3BvbnNlID8geyBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyB9IDoge30pLFxuICAgICAgICAuLi4oZXJyb3IgPyB7IGVycm9yIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgdGhyb3cgY2F1c2VcbiAgICB9XG4gIH1cbn1cblxuLyoqINCe0YLQvNC10L3Rj9C10YIg0LfQsNC/0YDQvtGBLCDQtdGB0LvQuCDQvtC9INC90LUg0LfQsNCy0LXRgNGI0LjQu9GB0Y8g0LfQsCBgbXNgINC80LjQu9C70LjRgdC10LrRg9C90LQuICovXG5mdW5jdGlvbiB0aW1lb3V0KG1zOiBudW1iZXIpOiBCWFJlc3RNaWRkbGV3YXJlIHtcbiAgcmV0dXJuIChjb25maWcsIG5leHQpID0+IHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3Qgb25BYm9ydCA9ICgpID0+IGNvbnRyb2xsZXIuYWJvcnQoYWJvcnRSZWFzb24oY29uZmlnLnNpZ25hbCBhcyBBYm9ydFNpZ25hbCkpXG4gICAgaWYgKGNvbmZpZy5zaWduYWw/LmFib3J0ZWQpIHtcbiAgICAgIG9uQWJvcnQoKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcuc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KVxuICAgIH1cbiAgICBsZXQgdGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkXG4gICAgY29uc3QgdGltZWRPdXQgPSBuZXcgUHJvbWlzZTxuZXZlcj4oKF8sIHJlamVjdCkgPT4ge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgQlhSZXN0VGltZW91dEVycm9yKG1zKVxuICAgICAgICBjb250cm9sbGVyLmFib3J0KGVycm9yKVxuICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICB9LCBtcylcbiAgICB9KVxuICAgIHJldHVybiBQcm9taXNlLnJhY2UoW25leHQoeyAuLi5jb25maWcsIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwgfSksIHRpbWVkT3V0XSkuZmluYWxseSgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICBjb25maWcuc2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpXG4gICAgfSlcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { mergeMap, shareReplay } from 'rxjs';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { NavvyPagBase, offsetPageParams } from './extends/navvy-pag-base';
|
|
4
|
+
/**
|
|
5
|
+
* Пагинация для методов, у которых `result` — объект, а список лежит в нём под ключом:
|
|
6
|
+
* `{ products: [...] }`, `{ orders: [...] }`.
|
|
7
|
+
*
|
|
8
|
+
* В отличие от {@link NavvyPagNavResultKey}, `.res()` отдаёт объект как есть, а `.resAll()` —
|
|
9
|
+
* такой же объект, где под ключом собраны записи всех страниц. Так `.resAll()` можно добавить
|
|
10
|
+
* методу, который раньше создавался через `simple`, не меняя результат его `.res()`.
|
|
11
|
+
*/
|
|
12
|
+
export class NavvyPagNavKeyed extends NavvyPagBase {
|
|
13
|
+
constructor(url, param, key, map, restApi) {
|
|
14
|
+
super(url, param, map, restApi);
|
|
15
|
+
this.key = key;
|
|
16
|
+
}
|
|
17
|
+
resAll() {
|
|
18
|
+
return this.resFirstPage().pipe(mergeMap(first => this.resPages(offsetPageParams(this.param, first.total, this.pageSize)).pipe(map(pages => {
|
|
19
|
+
const items = [first.result, ...pages].flatMap(page => this.listIn(page));
|
|
20
|
+
const joined = { ...first.result, [this.key]: items };
|
|
21
|
+
return (this.map ? this.map(joined) : joined);
|
|
22
|
+
}))),
|
|
23
|
+
// refCount: без подписчиков оставшиеся страницы запрашивать незачем
|
|
24
|
+
shareReplay({ bufferSize: 1, refCount: true }));
|
|
25
|
+
}
|
|
26
|
+
listIn(page) {
|
|
27
|
+
const list = page?.[this.key];
|
|
28
|
+
return Array.isArray(list) ? list : [];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnktcGFnLW5hdi1rZXllZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL25hdnZ5L25hdnZ5LXBhZy1uYXYta2V5ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDeEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBR3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUV6RTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLGdCQUFtRSxTQUFRLFlBQXFCO0lBRTNHLFlBQ0UsR0FBYSxFQUNiLEtBQVEsRUFDUyxHQUFXLEVBQzVCLEdBQTZDLEVBQzdDLE9BQWlCO1FBRWpCLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUpkLFFBQUcsR0FBSCxHQUFHLENBQVE7SUFLOUIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzdCLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBTyxDQUFBO1lBQzFELE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQTBCLENBQUE7UUFDeEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLG9FQUFvRTtRQUNwRSxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFBO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFtQjtRQUNoQyxNQUFNLElBQUksR0FBSSxJQUE0QyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDeEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2VNYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgaUJYUmVzdFBhZ2luYXRpb24gfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXNlL2FwaS1wYWdpbmF0aW9uLWJ4J1xuaW1wb3J0IHsgUmV0dXJuVHlwZU5hdnZ5IH0gZnJvbSAnLi9uYXZ2eS1zdXBwb3J0J1xuaW1wb3J0IHsgTmF2dnlQYWdCYXNlLCBvZmZzZXRQYWdlUGFyYW1zIH0gZnJvbSAnLi9leHRlbmRzL25hdnZ5LXBhZy1iYXNlJ1xuXG4vKipcbiAqINCf0LDQs9C40L3QsNGG0LjRjyDQtNC70Y8g0LzQtdGC0L7QtNC+0LIsINGDINC60L7RgtC+0YDRi9GFIGByZXN1bHRgIOKAlCDQvtCx0YrQtdC60YIsINCwINGB0L/QuNGB0L7QuiDQu9C10LbQuNGCINCyINC90ZHQvCDQv9C+0LQg0LrQu9GO0YfQvtC8OlxuICogYHsgcHJvZHVjdHM6IFsuLi5dIH1gLCBgeyBvcmRlcnM6IFsuLi5dIH1gLlxuICpcbiAqINCSINC+0YLQu9C40YfQuNC1INC+0YIge0BsaW5rIE5hdnZ5UGFnTmF2UmVzdWx0S2V5fSwgYC5yZXMoKWAg0L7RgtC00LDRkdGCINC+0LHRitC10LrRgiDQutCw0Log0LXRgdGC0YwsINCwIGAucmVzQWxsKClgIOKAlFxuICog0YLQsNC60L7QuSDQttC1INC+0LHRitC10LrRgiwg0LPQtNC1INC/0L7QtCDQutC70Y7Rh9C+0Lwg0YHQvtCx0YDQsNC90Ysg0LfQsNC/0LjRgdC4INCy0YHQtdGFINGB0YLRgNCw0L3QuNGGLiDQotCw0LogYC5yZXNBbGwoKWAg0LzQvtC20L3QviDQtNC+0LHQsNCy0LjRgtGMXG4gKiDQvNC10YLQvtC00YMsINC60L7RgtC+0YDRi9C5INGA0LDQvdGM0YjQtSDRgdC+0LfQtNCw0LLQsNC70YHRjyDRh9C10YDQtdC3IGBzaW1wbGVgLCDQvdC1INC80LXQvdGP0Y8g0YDQtdC30YPQu9GM0YLQsNGCINC10LPQviBgLnJlcygpYC5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hdnZ5UGFnTmF2S2V5ZWQ8VCBleHRlbmRzIG9iamVjdCwgUiwgUCBleHRlbmRzIGlCWFJlc3RQYWdpbmF0aW9uPiBleHRlbmRzIE5hdnZ5UGFnQmFzZTxULCBSLCBQPiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdXJsOiBzdHJpbmdbXSxcbiAgICBwYXJhbTogUCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleTogc3RyaW5nLFxuICAgIG1hcD86IChwYXJhbTogVCB8IHVuZGVmaW5lZCkgPT4gUiB8IHVuZGVmaW5lZCxcbiAgICByZXN0QXBpPzogYm9vbGVhblxuICApIHtcbiAgICBzdXBlcih1cmwsIHBhcmFtLCBtYXAsIHJlc3RBcGkpXG4gIH1cblxuICByZXNBbGwoKTogT2JzZXJ2YWJsZTxSZXR1cm5UeXBlTmF2dnk8VCwgUj4+IHtcbiAgICByZXR1cm4gdGhpcy5yZXNGaXJzdFBhZ2UoKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoZmlyc3QgPT4gdGhpcy5yZXNQYWdlczxUPihvZmZzZXRQYWdlUGFyYW1zKHRoaXMucGFyYW0sIGZpcnN0LnRvdGFsLCB0aGlzLnBhZ2VTaXplKSkucGlwZShcbiAgICAgICAgbWFwKHBhZ2VzID0+IHtcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IFtmaXJzdC5yZXN1bHQsIC4uLnBhZ2VzXS5mbGF0TWFwKHBhZ2UgPT4gdGhpcy5saXN0SW4ocGFnZSkpXG4gICAgICAgICAgY29uc3Qgam9pbmVkID0geyAuLi5maXJzdC5yZXN1bHQsIFt0aGlzLmtleV06IGl0ZW1zIH0gYXMgVFxuICAgICAgICAgIHJldHVybiAodGhpcy5tYXAgPyB0aGlzLm1hcChqb2luZWQpIDogam9pbmVkKSBhcyBSZXR1cm5UeXBlTmF2dnk8VCwgUj5cbiAgICAgICAgfSlcbiAgICAgICkpLFxuICAgICAgLy8gcmVmQ291bnQ6INCx0LXQtyDQv9C+0LTQv9C40YHRh9C40LrQvtCyINC+0YHRgtCw0LLRiNC40LXRgdGPINGB0YLRgNCw0L3QuNGG0Ysg0LfQsNC/0YDQsNGI0LjQstCw0YLRjCDQvdC10LfQsNGH0LXQvFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgbGlzdEluKHBhZ2U6IFQgfCB1bmRlZmluZWQpOiB1bmtub3duW10ge1xuICAgIGNvbnN0IGxpc3QgPSAocGFnZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCk/Llt0aGlzLmtleV1cbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShsaXN0KSA/IGxpc3QgOiBbXVxuICB9XG59XG4iXX0=
|
|
@@ -5,7 +5,8 @@ import { NavvyPagNavTasks } from './navvy/navvy-pag-nav-tasks';
|
|
|
5
5
|
import { NavvyPag } from './navvy/navvy-pag';
|
|
6
6
|
import { NavvyPagNavResultKey } from './navvy/navvy-pag-nav-result-key';
|
|
7
7
|
import { NavvyPagNavResultKeyObject } from './navvy/navvy-pag-nav-result-key-object';
|
|
8
|
-
import {
|
|
8
|
+
import { NavvyPagNavKeyed } from './navvy/navvy-pag-nav-keyed';
|
|
9
|
+
import { BXRestContext, currentContext, runInContext } from './context';
|
|
9
10
|
export * from './navvy/navvy-simple';
|
|
10
11
|
export * from './navvy/navvy-alternative-pagination-navigation';
|
|
11
12
|
export * from './navvy/navvy-pag-nav-with-useless-key';
|
|
@@ -13,12 +14,17 @@ export * from './navvy/navvy-pag-nav-tasks';
|
|
|
13
14
|
export * from './navvy/navvy-pag-nav-result-key';
|
|
14
15
|
export * from './navvy/navvy-pag';
|
|
15
16
|
export * from './navvy/navvy-pag-nav-result-key-object';
|
|
17
|
+
export * from './navvy/navvy-pag-nav-keyed';
|
|
16
18
|
export * from './navvy/navvy-support';
|
|
17
19
|
export class Navvy {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @param settings свои настройки, как у `new BXRestNavvy(settings)`: запросы
|
|
22
|
+
* идут на этот портал с этим токеном, а `BXRestSettings` на них не влияют.
|
|
23
|
+
* Без них — настройки клиента, внутри которого создан объект, или
|
|
24
|
+
* глобальные `BXRestSettings`.
|
|
25
|
+
*/
|
|
26
|
+
constructor(settings) {
|
|
27
|
+
this.ctx = settings ? new BXRestContext(settings) : currentContext();
|
|
22
28
|
}
|
|
23
29
|
simple(url, arg, map) {
|
|
24
30
|
return runInContext(this.ctx, () => new NavvySimple(url, arg !== undefined ? arg : undefined, map));
|
|
@@ -46,6 +52,14 @@ export class Navvy {
|
|
|
46
52
|
pagNavResultKeyObject(url, arg, key, map) {
|
|
47
53
|
return runInContext(this.ctx, () => new NavvyPagNavResultKeyObject(url, arg, key, map));
|
|
48
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Для методов, у которых `result` — объект со списком под ключом `key`, например
|
|
57
|
+
* `{ products: [...] }`. `.res()` отдаёт объект как есть, `.resAll()` — такой же объект
|
|
58
|
+
* с записями всех страниц под ключом.
|
|
59
|
+
*/
|
|
60
|
+
pagNavKeyed(url, arg, key, map) {
|
|
61
|
+
return runInContext(this.ctx, () => new NavvyPagNavKeyed(url, arg, key, map));
|
|
62
|
+
}
|
|
49
63
|
pagNavWithUselessKey(url, arg, map) {
|
|
50
64
|
return runInContext(this.ctx, () => new NavvyPagNavWithUselessKey(url, arg, map));
|
|
51
65
|
}
|
|
@@ -53,4 +67,4 @@ export class Navvy {
|
|
|
53
67
|
return runInContext(this.ctx, () => new NavvyAlterPagNav(url, arg, map));
|
|
54
68
|
}
|
|
55
69
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9uYXZ2eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUE7QUFFbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXhELGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxpREFBaUQsQ0FBQTtBQUMvRCxjQUFjLHdDQUF3QyxDQUFBO0FBQ3RELGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyxrQ0FBa0MsQ0FBQTtBQUNoRCxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMseUNBQXlDLENBQUE7QUFDdkQsY0FBYyx1QkFBdUIsQ0FBQTtBQUVyQyxNQUFNLE9BQU8sS0FBSztJQUFsQjtRQUVFLHdFQUF3RTtRQUN4RSw2RUFBNkU7UUFDNUQsUUFBRyxHQUFHLGNBQWMsRUFBRSxDQUFBO0lBb0Z6QyxDQUFDO0lBbEZDLE1BQU0sQ0FDSixHQUFhLEVBQ2IsR0FBTyxFQUNQLEdBQTZDO1FBRTdDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQ2pELEdBQUcsRUFDSCxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDbkMsR0FBRyxDQUNKLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxRQUFRLENBQ04sR0FBYSxFQUNiLEdBQU8sRUFDUCxHQUE2QztRQUU3QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksV0FBVyxDQUNqRCxHQUFHLEVBQ0gsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQ25DLEdBQUcsRUFDSCxJQUFJLENBQ0wsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQ0osR0FBYSxFQUNiLEdBQU0sRUFDTixHQUFpRDtRQUVqRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsV0FBVyxDQUNULEdBQWEsRUFDYixHQUFNLEVBQ04sR0FBd0U7UUFFeEUsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBRUQsZUFBZSxDQUNiLEdBQWEsRUFDYixHQUFNLEVBQ04sR0FBTSxFQUNOLEdBQXdFO1FBRXhFLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ25GLENBQUM7SUFFRCxxQkFBcUIsQ0FDbkIsR0FBYSxFQUNiLEdBQU0sRUFDTixHQUFNLEVBQ04sR0FBc0Y7UUFFdEYsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDekYsQ0FBQztJQUVELG9CQUFvQixDQUNsQixHQUFhLEVBQ2IsR0FBTSxFQUNOLEdBQStEO1FBRS9ELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDbkYsQ0FBQztJQUVELFdBQVcsQ0FDVCxHQUFhLEVBQ2IsR0FBTSxFQUNOLEdBQWlEO1FBRWpELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDMUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2dnlTaW1wbGUgfSBmcm9tICcuL25hdnZ5L25hdnZ5LXNpbXBsZSdcbmltcG9ydCB7IE5hdnZ5QWx0ZXJQYWdOYXYgfSBmcm9tICcuL25hdnZ5L25hdnZ5LWFsdGVybmF0aXZlLXBhZ2luYXRpb24tbmF2aWdhdGlvbidcbmltcG9ydCB7IGlCWFJlc3RBbHRlcm5hdGl2ZVBhZ2luYXRpb24sIGlCWFJlc3RQYWdpbmF0aW9uIH0gZnJvbSAnLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmFzZS9hcGktcGFnaW5hdGlvbi1ieCdcbmltcG9ydCB7IE5hdnZ5UGFnTmF2V2l0aFVzZWxlc3NLZXkgfSBmcm9tICcuL25hdnZ5L25hdnZ5LXBhZy1uYXYtd2l0aC11c2VsZXNzLWtleSdcbmltcG9ydCB7IE5hdnZ5UGFnTmF2VGFza3MgfSBmcm9tICcuL25hdnZ5L25hdnZ5LXBhZy1uYXYtdGFza3MnXG5pbXBvcnQgeyBOYXZ2eVBhZyB9IGZyb20gJy4vbmF2dnkvbmF2dnktcGFnJ1xuaW1wb3J0IHsgTmF2dnlQYWdOYXZSZXN1bHRLZXkgfSBmcm9tICcuL25hdnZ5L25hdnZ5LXBhZy1uYXYtcmVzdWx0LWtleSdcbmltcG9ydCB7IE5hdnZ5UGFnTmF2UmVzdWx0S2V5T2JqZWN0IH0gZnJvbSAnLi9uYXZ2eS9uYXZ2eS1wYWctbmF2LXJlc3VsdC1rZXktb2JqZWN0J1xuaW1wb3J0IHsgY3VycmVudENvbnRleHQsIHJ1bkluQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCdcblxuZXhwb3J0ICogZnJvbSAnLi9uYXZ2eS9uYXZ2eS1zaW1wbGUnXG5leHBvcnQgKiBmcm9tICcuL25hdnZ5L25hdnZ5LWFsdGVybmF0aXZlLXBhZ2luYXRpb24tbmF2aWdhdGlvbidcbmV4cG9ydCAqIGZyb20gJy4vbmF2dnkvbmF2dnktcGFnLW5hdi13aXRoLXVzZWxlc3Mta2V5J1xuZXhwb3J0ICogZnJvbSAnLi9uYXZ2eS9uYXZ2eS1wYWctbmF2LXRhc2tzJ1xuZXhwb3J0ICogZnJvbSAnLi9uYXZ2eS9uYXZ2eS1wYWctbmF2LXJlc3VsdC1rZXknXG5leHBvcnQgKiBmcm9tICcuL25hdnZ5L25hdnZ5LXBhZydcbmV4cG9ydCAqIGZyb20gJy4vbmF2dnkvbmF2dnktcGFnLW5hdi1yZXN1bHQta2V5LW9iamVjdCdcbmV4cG9ydCAqIGZyb20gJy4vbmF2dnkvbmF2dnktc3VwcG9ydCdcblxuZXhwb3J0IGNsYXNzIE5hdnZ5IHtcblxuICAvLyDQmtC+0L3RgtC10LrRgdGCLCDQsiDQutC+0YLQvtGA0L7QvCDRgdC+0LfQtNCw0L0gTmF2dnkuINCX0LDQv9GA0L7RgdGLINGB0L7Qt9C00LDRjtGC0YHRjyDQv9C+0LfQttC1LCDQv9GA0Lgg0LLRi9C30L7QstC1XG4gIC8vINC80LXRgtC+0LTQsCwg0L/QvtGN0YLQvtC80YMg0LjRhSBIVFRQLdC+0LHRitC10LrRgtGLINC/0L7Qu9GD0YfQsNGO0YIg0Y3RgtC+0YIg0LrQvtC90YLQtdC60YHRgiDRj9Cy0L3Qviwg0LAg0L3QtSDRgtC10LrRg9GJ0LjQuS5cbiAgcHJpdmF0ZSByZWFkb25seSBjdHggPSBjdXJyZW50Q29udGV4dCgpXG5cbiAgc2ltcGxlPFQsIFIgPSBULCBBID0gdW5kZWZpbmVkPihcbiAgICB1cmw6IHN0cmluZ1tdLFxuICAgIGFyZz86IEEsXG4gICAgbWFwPzogKHBhcmFtOiBUIHwgdW5kZWZpbmVkKSA9PiBSIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBydW5JbkNvbnRleHQodGhpcy5jdHgsICgpID0+IG5ldyBOYXZ2eVNpbXBsZShcbiAgICAgIHVybCxcbiAgICAgIGFyZyAhPT0gdW5kZWZpbmVkID8gYXJnIDogdW5kZWZpbmVkLFxuICAgICAgbWFwXG4gICAgKSlcbiAgfVxuXG4gIHNpbXBsZVYzPFQsIFIgPSBULCBBID0gdW5kZWZpbmVkPihcbiAgICB1cmw6IHN0cmluZ1tdLFxuICAgIGFyZz86IEEsXG4gICAgbWFwPzogKHBhcmFtOiBUIHwgdW5kZWZpbmVkKSA9PiBSIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBydW5JbkNvbnRleHQodGhpcy5jdHgsICgpID0+IG5ldyBOYXZ2eVNpbXBsZShcbiAgICAgIHVybCxcbiAgICAgIGFyZyAhPT0gdW5kZWZpbmVkID8gYXJnIDogdW5kZWZpbmVkLFxuICAgICAgbWFwLFxuICAgICAgdHJ1ZVxuICAgICkpXG4gIH1cblxuICAvKipcbiAgICog0J3QvtCy0YvQuSwg0L/QvtC60LAg0YLQtdGB0YLQuNGA0YPQtdC80YvQuSDQvNC10YLQvtC0INC00LvRjyBhcGkg0LzQtdGC0L7QtNC+0LIg0YEg0L/QsNCz0LjQvdCw0YbQuNC10LlcbiAgICpcbiAgICogQHBhcmFtIHVybFxuICAgKiBAcGFyYW0gYXJnXG4gICAqIEBwYXJhbSBtYXBcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBwYWdOYXY8VCwgUiwgQSBleHRlbmRzIGlCWFJlc3RQYWdpbmF0aW9uPihcbiAgICB1cmw6IHN0cmluZ1tdLFxuICAgIGFyZzogQSxcbiAgICBtYXA/OiAocGFyYW06IFRbXSB8IHVuZGVmaW5lZCkgPT4gUltdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBydW5JbkNvbnRleHQodGhpcy5jdHgsICgpID0+IG5ldyBOYXZ2eVBhZyh1cmwsIGFyZywgbWFwKSlcbiAgfVxuXG4gIHBhZ05hdlRhc2tzPFQsIFIsIEEgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbj4oXG4gICAgdXJsOiBzdHJpbmdbXSxcbiAgICBhcmc6IEEsXG4gICAgbWFwPzogKHBhcmFtOiB7IHRhc2tzOiBUW10gfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCkgPT4gUltdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBydW5JbkNvbnRleHQodGhpcy5jdHgsICgpID0+IG5ldyBOYXZ2eVBhZ05hdlRhc2tzKHVybCwgYXJnLCBtYXApKVxuICB9XG5cbiAgcGFnTmF2UmVzdWx0S2V5PFQsIFIsIEEgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiwgSyBleHRlbmRzIHN0cmluZz4oXG4gICAgdXJsOiBzdHJpbmdbXSxcbiAgICBhcmc6IEEsXG4gICAga2V5OiBLLFxuICAgIG1hcD86IChwYXJhbTogUmVjb3JkPEssIFRbXSB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQpID0+IFJbXSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gcnVuSW5Db250ZXh0KHRoaXMuY3R4LCAoKSA9PiBuZXcgTmF2dnlQYWdOYXZSZXN1bHRLZXkodXJsLCBhcmcsIGtleSwgbWFwKSlcbiAgfVxuXG4gIHBhZ05hdlJlc3VsdEtleU9iamVjdDxULCBSLCBBIGV4dGVuZHMgaUJYUmVzdFBhZ2luYXRpb24sIEsgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHVybDogc3RyaW5nW10sXG4gICAgYXJnOiBBLFxuICAgIGtleTogSyxcbiAgICBtYXA/OiAocGFyYW06IFJlY29yZDxLLCBSZWNvcmQ8c3RyaW5nLCBUPiB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQpID0+IFJbXSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gcnVuSW5Db250ZXh0KHRoaXMuY3R4LCAoKSA9PiBuZXcgTmF2dnlQYWdOYXZSZXN1bHRLZXlPYmplY3QodXJsLCBhcmcsIGtleSwgbWFwKSlcbiAgfVxuXG4gIHBhZ05hdldpdGhVc2VsZXNzS2V5PFQsIFIsIEEgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbj4oXG4gICAgdXJsOiBzdHJpbmdbXSxcbiAgICBhcmc6IEEsXG4gICAgbWFwPzogKHBhcmFtOiBSZWNvcmQ8c3RyaW5nLCBUPiB8IHVuZGVmaW5lZCkgPT4gUltdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBydW5JbkNvbnRleHQodGhpcy5jdHgsICgpID0+IG5ldyBOYXZ2eVBhZ05hdldpdGhVc2VsZXNzS2V5KHVybCwgYXJnLCBtYXApKVxuICB9XG5cbiAgYWx0ZXJQYWdOYXY8VCwgUiwgQSBleHRlbmRzIGlCWFJlc3RBbHRlcm5hdGl2ZVBhZ2luYXRpb24+KFxuICAgIHVybDogc3RyaW5nW10sXG4gICAgYXJnOiBBLFxuICAgIG1hcD86IChwYXJhbTogVFtdIHwgdW5kZWZpbmVkKSA9PiBSW10gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHJ1bkluQ29udGV4dCh0aGlzLmN0eCwgKCkgPT4gbmV3IE5hdnZ5QWx0ZXJQYWdOYXYodXJsLCBhcmcsIG1hcCkpXG4gIH1cbn1cbiJdfQ==
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9uYXZ2eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUE7QUFFbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUd2RSxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsaURBQWlELENBQUE7QUFDL0QsY0FBYyx3Q0FBd0MsQ0FBQTtBQUN0RCxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsa0NBQWtDLENBQUE7QUFDaEQsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQTtBQUVyQyxNQUFNLE9BQU8sS0FBSztJQU1oQjs7Ozs7T0FLRztJQUNILFlBQVksUUFBMEI7UUFDcEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUN0RSxDQUFDO0lBRUQsTUFBTSxDQUNKLEdBQWEsRUFDYixHQUFPLEVBQ1AsR0FBNkM7UUFFN0MsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FDakQsR0FBRyxFQUNILEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUNuQyxHQUFHLENBQ0osQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FDTixHQUFhLEVBQ2IsR0FBTyxFQUNQLEdBQTZDO1FBRTdDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQ2pELEdBQUcsRUFDSCxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDbkMsR0FBRyxFQUNILElBQUksQ0FDTCxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FDSixHQUFhLEVBQ2IsR0FBTSxFQUNOLEdBQWlEO1FBRWpELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFFRCxXQUFXLENBQ1QsR0FBYSxFQUNiLEdBQU0sRUFDTixHQUF3RTtRQUV4RSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFFRCxlQUFlLENBQ2IsR0FBYSxFQUNiLEdBQU0sRUFDTixHQUFNLEVBQ04sR0FBd0U7UUFFeEUsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDbkYsQ0FBQztJQUVELHFCQUFxQixDQUNuQixHQUFhLEVBQ2IsR0FBTSxFQUNOLEdBQU0sRUFDTixHQUFzRjtRQUV0RixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksMEJBQTBCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUN6RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FDVCxHQUFhLEVBQ2IsR0FBTSxFQUNOLEdBQVcsRUFDWCxHQUE2QztRQUU3QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUN4RixDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLEdBQWEsRUFDYixHQUFNLEVBQ04sR0FBK0Q7UUFFL0QsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNuRixDQUFDO0lBRUQsV0FBVyxDQUNULEdBQWEsRUFDYixHQUFNLEVBQ04sR0FBaUQ7UUFFakQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZ2eVNpbXBsZSB9IGZyb20gJy4vbmF2dnkvbmF2dnktc2ltcGxlJ1xuaW1wb3J0IHsgTmF2dnlBbHRlclBhZ05hdiB9IGZyb20gJy4vbmF2dnkvbmF2dnktYWx0ZXJuYXRpdmUtcGFnaW5hdGlvbi1uYXZpZ2F0aW9uJ1xuaW1wb3J0IHsgaUJYUmVzdEFsdGVybmF0aXZlUGFnaW5hdGlvbiwgaUJYUmVzdFBhZ2luYXRpb24gfSBmcm9tICcuLi90eXBpZmljYXRpb24vcmVzdC9iYXNlL2FwaS1wYWdpbmF0aW9uLWJ4J1xuaW1wb3J0IHsgTmF2dnlQYWdOYXZXaXRoVXNlbGVzc0tleSB9IGZyb20gJy4vbmF2dnkvbmF2dnktcGFnLW5hdi13aXRoLXVzZWxlc3Mta2V5J1xuaW1wb3J0IHsgTmF2dnlQYWdOYXZUYXNrcyB9IGZyb20gJy4vbmF2dnkvbmF2dnktcGFnLW5hdi10YXNrcydcbmltcG9ydCB7IE5hdnZ5UGFnIH0gZnJvbSAnLi9uYXZ2eS9uYXZ2eS1wYWcnXG5pbXBvcnQgeyBOYXZ2eVBhZ05hdlJlc3VsdEtleSB9IGZyb20gJy4vbmF2dnkvbmF2dnktcGFnLW5hdi1yZXN1bHQta2V5J1xuaW1wb3J0IHsgTmF2dnlQYWdOYXZSZXN1bHRLZXlPYmplY3QgfSBmcm9tICcuL25hdnZ5L25hdnZ5LXBhZy1uYXYtcmVzdWx0LWtleS1vYmplY3QnXG5pbXBvcnQgeyBOYXZ2eVBhZ05hdktleWVkIH0gZnJvbSAnLi9uYXZ2eS9uYXZ2eS1wYWctbmF2LWtleWVkJ1xuaW1wb3J0IHsgQlhSZXN0Q29udGV4dCwgY3VycmVudENvbnRleHQsIHJ1bkluQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCB7IGlCWFJlc3RTZXR0aW5ncyB9IGZyb20gJy4uL3R5cGlmaWNhdGlvbi9zZXR0aW5ncydcblxuZXhwb3J0ICogZnJvbSAnLi9uYXZ2eS9uYXZ2eS1zaW1wbGUnXG5leHBvcnQgKiBmcm9tICcuL25hdnZ5L25hdnZ5LWFsdGVybmF0aXZlLXBhZ2luYXRpb24tbmF2aWdhdGlvbidcbmV4cG9ydCAqIGZyb20gJy4vbmF2dnkvbmF2dnktcGFnLW5hdi13aXRoLXVzZWxlc3Mta2V5J1xuZXhwb3J0ICogZnJvbSAnLi9uYXZ2eS9uYXZ2eS1wYWctbmF2LXRhc2tzJ1xuZXhwb3J0ICogZnJvbSAnLi9uYXZ2eS9uYXZ2eS1wYWctbmF2LXJlc3VsdC1rZXknXG5leHBvcnQgKiBmcm9tICcuL25hdnZ5L25hdnZ5LXBhZydcbmV4cG9ydCAqIGZyb20gJy4vbmF2dnkvbmF2dnktcGFnLW5hdi1yZXN1bHQta2V5LW9iamVjdCdcbmV4cG9ydCAqIGZyb20gJy4vbmF2dnkvbmF2dnktcGFnLW5hdi1rZXllZCdcbmV4cG9ydCAqIGZyb20gJy4vbmF2dnkvbmF2dnktc3VwcG9ydCdcblxuZXhwb3J0IGNsYXNzIE5hdnZ5IHtcblxuICAvLyDQmtC+0L3RgtC10LrRgdGCLCDQsiDQutC+0YLQvtGA0L7QvCDRgdC+0LfQtNCw0L0gTmF2dnkuINCX0LDQv9GA0L7RgdGLINGB0L7Qt9C00LDRjtGC0YHRjyDQv9C+0LfQttC1LCDQv9GA0Lgg0LLRi9C30L7QstC1XG4gIC8vINC80LXRgtC+0LTQsCwg0L/QvtGN0YLQvtC80YMg0LjRhSBIVFRQLdC+0LHRitC10LrRgtGLINC/0L7Qu9GD0YfQsNGO0YIg0Y3RgtC+0YIg0LrQvtC90YLQtdC60YHRgiDRj9Cy0L3Qviwg0LAg0L3QtSDRgtC10LrRg9GJ0LjQuS5cbiAgcHJpdmF0ZSByZWFkb25seSBjdHg6IEJYUmVzdENvbnRleHRcblxuICAvKipcbiAgICogQHBhcmFtIHNldHRpbmdzINGB0LLQvtC4INC90LDRgdGC0YDQvtC50LrQuCwg0LrQsNC6INGDIGBuZXcgQlhSZXN0TmF2dnkoc2V0dGluZ3MpYDog0LfQsNC/0YDQvtGB0YtcbiAgICogICDQuNC00YPRgiDQvdCwINGN0YLQvtGCINC/0L7RgNGC0LDQuyDRgSDRjdGC0LjQvCDRgtC+0LrQtdC90L7QvCwg0LAgYEJYUmVzdFNldHRpbmdzYCDQvdCwINC90LjRhSDQvdC1INCy0LvQuNGP0Y7Rgi5cbiAgICogICDQkdC10Lcg0L3QuNGFIOKAlCDQvdCw0YHRgtGA0L7QudC60Lgg0LrQu9C40LXQvdGC0LAsINCy0L3Rg9GC0YDQuCDQutC+0YLQvtGA0L7Qs9C+INGB0L7Qt9C00LDQvSDQvtCx0YrQtdC60YIsINC40LvQuFxuICAgKiAgINCz0LvQvtCx0LDQu9GM0L3Ri9C1IGBCWFJlc3RTZXR0aW5nc2AuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzZXR0aW5ncz86IGlCWFJlc3RTZXR0aW5ncykge1xuICAgIHRoaXMuY3R4ID0gc2V0dGluZ3MgPyBuZXcgQlhSZXN0Q29udGV4dChzZXR0aW5ncykgOiBjdXJyZW50Q29udGV4dCgpXG4gIH1cblxuICBzaW1wbGU8VCwgUiA9IFQsIEEgPSB1bmRlZmluZWQ+KFxuICAgIHVybDogc3RyaW5nW10sXG4gICAgYXJnPzogQSxcbiAgICBtYXA/OiAocGFyYW06IFQgfCB1bmRlZmluZWQpID0+IFIgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHJ1bkluQ29udGV4dCh0aGlzLmN0eCwgKCkgPT4gbmV3IE5hdnZ5U2ltcGxlKFxuICAgICAgdXJsLFxuICAgICAgYXJnICE9PSB1bmRlZmluZWQgPyBhcmcgOiB1bmRlZmluZWQsXG4gICAgICBtYXBcbiAgICApKVxuICB9XG5cbiAgc2ltcGxlVjM8VCwgUiA9IFQsIEEgPSB1bmRlZmluZWQ+KFxuICAgIHVybDogc3RyaW5nW10sXG4gICAgYXJnPzogQSxcbiAgICBtYXA/OiAocGFyYW06IFQgfCB1bmRlZmluZWQpID0+IFIgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHJ1bkluQ29udGV4dCh0aGlzLmN0eCwgKCkgPT4gbmV3IE5hdnZ5U2ltcGxlKFxuICAgICAgdXJsLFxuICAgICAgYXJnICE9PSB1bmRlZmluZWQgPyBhcmcgOiB1bmRlZmluZWQsXG4gICAgICBtYXAsXG4gICAgICB0cnVlXG4gICAgKSlcbiAgfVxuXG4gIC8qKlxuICAgKiDQndC+0LLRi9C5LCDQv9C+0LrQsCDRgtC10YHRgtC40YDRg9C10LzRi9C5INC80LXRgtC+0LQg0LTQu9GPIGFwaSDQvNC10YLQvtC00L7QsiDRgSDQv9Cw0LPQuNC90LDRhtC40LXQuVxuICAgKlxuICAgKiBAcGFyYW0gdXJsXG4gICAqIEBwYXJhbSBhcmdcbiAgICogQHBhcmFtIG1hcFxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIHBhZ05hdjxULCBSLCBBIGV4dGVuZHMgaUJYUmVzdFBhZ2luYXRpb24+KFxuICAgIHVybDogc3RyaW5nW10sXG4gICAgYXJnOiBBLFxuICAgIG1hcD86IChwYXJhbTogVFtdIHwgdW5kZWZpbmVkKSA9PiBSW10gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHJ1bkluQ29udGV4dCh0aGlzLmN0eCwgKCkgPT4gbmV3IE5hdnZ5UGFnKHVybCwgYXJnLCBtYXApKVxuICB9XG5cbiAgcGFnTmF2VGFza3M8VCwgUiwgQSBleHRlbmRzIGlCWFJlc3RQYWdpbmF0aW9uPihcbiAgICB1cmw6IHN0cmluZ1tdLFxuICAgIGFyZzogQSxcbiAgICBtYXA/OiAocGFyYW06IHsgdGFza3M6IFRbXSB8IHVuZGVmaW5lZCB9IHwgdW5kZWZpbmVkKSA9PiBSW10gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHJ1bkluQ29udGV4dCh0aGlzLmN0eCwgKCkgPT4gbmV3IE5hdnZ5UGFnTmF2VGFza3ModXJsLCBhcmcsIG1hcCkpXG4gIH1cblxuICBwYWdOYXZSZXN1bHRLZXk8VCwgUiwgQSBleHRlbmRzIGlCWFJlc3RQYWdpbmF0aW9uLCBLIGV4dGVuZHMgc3RyaW5nPihcbiAgICB1cmw6IHN0cmluZ1tdLFxuICAgIGFyZzogQSxcbiAgICBrZXk6IEssXG4gICAgbWFwPzogKHBhcmFtOiBSZWNvcmQ8SywgVFtdIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCkgPT4gUltdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBydW5JbkNvbnRleHQodGhpcy5jdHgsICgpID0+IG5ldyBOYXZ2eVBhZ05hdlJlc3VsdEtleSh1cmwsIGFyZywga2V5LCBtYXApKVxuICB9XG5cbiAgcGFnTmF2UmVzdWx0S2V5T2JqZWN0PFQsIFIsIEEgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbiwgSyBleHRlbmRzIHN0cmluZz4oXG4gICAgdXJsOiBzdHJpbmdbXSxcbiAgICBhcmc6IEEsXG4gICAga2V5OiBLLFxuICAgIG1hcD86IChwYXJhbTogUmVjb3JkPEssIFJlY29yZDxzdHJpbmcsIFQ+IHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCkgPT4gUltdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBydW5JbkNvbnRleHQodGhpcy5jdHgsICgpID0+IG5ldyBOYXZ2eVBhZ05hdlJlc3VsdEtleU9iamVjdCh1cmwsIGFyZywga2V5LCBtYXApKVxuICB9XG5cbiAgLyoqXG4gICAqINCU0LvRjyDQvNC10YLQvtC00L7Qsiwg0YMg0LrQvtGC0L7RgNGL0YUgYHJlc3VsdGAg4oCUINC+0LHRitC10LrRgiDRgdC+INGB0L/QuNGB0LrQvtC8INC/0L7QtCDQutC70Y7Rh9C+0LwgYGtleWAsINC90LDQv9GA0LjQvNC10YBcbiAgICogYHsgcHJvZHVjdHM6IFsuLi5dIH1gLiBgLnJlcygpYCDQvtGC0LTQsNGR0YIg0L7QsdGK0LXQutGCINC60LDQuiDQtdGB0YLRjCwgYC5yZXNBbGwoKWAg4oCUINGC0LDQutC+0Lkg0LbQtSDQvtCx0YrQtdC60YJcbiAgICog0YEg0LfQsNC/0LjRgdGP0LzQuCDQstGB0LXRhSDRgdGC0YDQsNC90LjRhiDQv9C+0LQg0LrQu9GO0YfQvtC8LlxuICAgKi9cbiAgcGFnTmF2S2V5ZWQ8VCBleHRlbmRzIG9iamVjdCwgUiwgQSBleHRlbmRzIGlCWFJlc3RQYWdpbmF0aW9uPihcbiAgICB1cmw6IHN0cmluZ1tdLFxuICAgIGFyZzogQSxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBtYXA/OiAocGFyYW06IFQgfCB1bmRlZmluZWQpID0+IFIgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHJ1bkluQ29udGV4dCh0aGlzLmN0eCwgKCkgPT4gbmV3IE5hdnZ5UGFnTmF2S2V5ZWQ8VCwgUiwgQT4odXJsLCBhcmcsIGtleSwgbWFwKSlcbiAgfVxuXG4gIHBhZ05hdldpdGhVc2VsZXNzS2V5PFQsIFIsIEEgZXh0ZW5kcyBpQlhSZXN0UGFnaW5hdGlvbj4oXG4gICAgdXJsOiBzdHJpbmdbXSxcbiAgICBhcmc6IEEsXG4gICAgbWFwPzogKHBhcmFtOiBSZWNvcmQ8c3RyaW5nLCBUPiB8IHVuZGVmaW5lZCkgPT4gUltdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBydW5JbkNvbnRleHQodGhpcy5jdHgsICgpID0+IG5ldyBOYXZ2eVBhZ05hdldpdGhVc2VsZXNzS2V5KHVybCwgYXJnLCBtYXApKVxuICB9XG5cbiAgYWx0ZXJQYWdOYXY8VCwgUiwgQSBleHRlbmRzIGlCWFJlc3RBbHRlcm5hdGl2ZVBhZ2luYXRpb24+KFxuICAgIHVybDogc3RyaW5nW10sXG4gICAgYXJnOiBBLFxuICAgIG1hcD86IChwYXJhbTogVFtdIHwgdW5kZWZpbmVkKSA9PiBSW10gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHJ1bkluQ29udGV4dCh0aGlzLmN0eCwgKCkgPT4gbmV3IE5hdnZ5QWx0ZXJQYWdOYXYodXJsLCBhcmcsIG1hcCkpXG4gIH1cbn1cbiJdfQ==
|