UNPKG

@experteam-mx/ngx-services

Version:

Angular common services for Experteam apps

144 lines 21.6 kB
import { Inject, Injectable } from '@angular/core'; import { map } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; export class ApiInvoicesService { environments; http; constructor(environments, http) { this.environments = environments; this.http = http; } /** * Retrieves the API URL for invoices from the environments configuration. * * @return {string} The API URL for invoices. */ get url() { return this.environments.apiInvoicesUrl ?? ''; } /** * Sends an operation document to the server and processes the response. * * @param {OperationDocumentIn} body - The input data for the operation document. * @return {Observable<OperationDocumentOut>} An observable containing the processed operation document output. */ postOperationDocument(body) { return this.http.post(`${this.url}/operation/document`, body) .pipe(map(({ data }) => data)); } /** * Fetches and returns the collection receipt data for a given collection ID. * * @param {number} id - The unique identifier of the collection for which the receipt needs to be retrieved. * @return {Observable<PrintCollectionReceiptOut>} An observable containing the collection receipt data. */ getPrintCollectionReceipt(id) { return this.http.get(`${this.url}/operation/print/collection-receipt/${id}`) .pipe(map(({ data }) => data)); } /** * Handles the account payment operation by sending a POST request to the specified endpoint. * Processes the response and returns the operation data. * * @param {OperationAccountPaymentIn} body The payload containing information for the account payment operation. * @return {Observable<OperationAccountPaymentOut>} An observable emitting the processed account payment operation data. */ postOperationAccountPayment(body) { return this.http.post(`${this.url}/operation/account-payment`, body) .pipe(map(({ data }) => data)); } /** * Cancels a payment receipt based on the provided input. * This method sends a POST request to cancel a document. * * @param body The data required to cancel the payment receipt, encapsulated in a CancelPaymentReceiptIn object. * @return An Observable representing the result of the cancellation. Emits an empty object on success. */ postOperationCancelDocument(body) { return this.http.post(`${this.url}/operation/cancel-document`, body) .pipe(map(({ data }) => data)); } /** * Cancels an invoice based on the provided invoice ID and additional parameters. * * @param {Object} parameters - The parameters required to cancel the invoice, encapsulated in a CancelBillingIn object. * @return {Observable<Object>} An observable that emits the response of the cancellation operation. */ postOperationCancelBilling({ invoiceId, ...body }) { return this.http.post(`${this.url}/operation/cancel-billing/${invoiceId}`, body) .pipe(map(({ data }) => data)); } /** * Fetches a list of customer types from the server. * * @param {QueryParams} params - Query parameters to filter or customize the request. * @return {Observable<CustomerTypesOut>} An observable emitting the customer types fetched from the server. */ getCustomerTypes(params) { return this.http.get(`${this.url}/customer-types`, { params }) .pipe(map(({ data }) => data)); } /** * Retrieves document types specific to a given country. * * @param {QueryParams} params - The query parameters containing country-specific information. * @return {Observable<CustomerDocumentTypesOut>} An observable emitting the document types available for the specified country. */ getCustomerDocumentTypes(params) { return this.http.get(`${this.url}/customer-country-document-types`, { params }) .pipe(map(({ data }) => data)); } /** * Fetches customer invoice details filtered by a custom invoice type. * * @param {InvoiceTypeCustomParamsIn} params - An object containing the filter parameters for the custom invoice type. * @return {Observable<CustomersOut>} An observable containing customer invoice details of the specified type. */ getCustomers(params) { return this.http.get(`${this.url}/customers`, { params }) .pipe(map(({ data }) => data)); } /** * Sends a POST request to create or update an external shipment operation. * * @param {OperationShipmentExternalIn} params - The input parameters for the external shipment operation. * @return {Observable<OperationShipmentExternalOut>} An observable that emits the result of the external shipment operation. */ postOperationShipmentExternal(params) { return this.http.post(`${this.url}/operation/shipment/external`, params) .pipe(map(({ data }) => data)); } /** * Processes an external payment operation for a shipment. * * @param {OperationShipmentExternalIn} params - The input parameters required for the external payment operation. * @return {Observable<OperationShipmentExternalOut>} An observable that emits the result of the external payment operation for a shipment. */ postOperationShipmentExternalPayment(params) { return this.http.post(`${this.url}/operation/shipment/external/payment`, params) .pipe(map(({ data }) => data)); } /** * Retrieves and returns billing operation print details for a given document ID. * * @param {number} documentId - The ID of the document for which to fetch the print billing operation details. * @return {Observable<OperationPrintDocumentOut>} An observable emitting the print billing operation details for the specified document. */ getOperationPrintDocument(documentId) { return this.http.get(`${this.url}/operation/print/document/${documentId}`) .pipe(map(({ data }) => data)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiInvoicesService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiInvoicesService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiInvoicesService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Inject, args: ['env'] }] }, { type: i1.HttpClient }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWludm9pY2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHBlcnRlYW0tbXgvbmd4LXNlcnZpY2VzL3NyYy9saWIvYXBpcy9hcGktaW52b2ljZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFBOzs7QUF1QnRDLE1BQU0sT0FBTyxrQkFBa0I7SUFFSjtJQUNmO0lBRlYsWUFDeUIsWUFBeUIsRUFDeEMsSUFBZ0I7UUFERCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3RCLENBQUM7SUFFTDs7OztPQUlHO0lBQ0gsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUE7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUUsSUFBeUI7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBbUMsR0FBRyxJQUFJLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxJQUFJLENBQUM7YUFDNUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gseUJBQXlCLENBQUUsRUFBVTtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF3QyxHQUFHLElBQUksQ0FBQyxHQUFHLHVDQUF1QyxFQUFFLEVBQUUsQ0FBQzthQUNoSCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFD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S0c7SUFDSCx5QkFBeUIsQ0FBRSxVQUFrQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF3QyxHQUFHLElBQUksQ0FBQyxHQUFHLDZCQUE2QixVQUFVLEVBQUUsQ0FBQzthQUM5RyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO3dHQXhJVSxrQkFBa0Isa0JBRW5CLEtBQUs7NEdBRkosa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9uZ3gtc2VydmljZXMubW9kZWxzJ1xyXG5pbXBvcnQge1xyXG4gIENhbmNlbFBheW1lbnRSZWNlaXB0SW4sXHJcbiAgQ3VzdG9tZXJEb2N1bWVudFR5cGVzT3V0LFxyXG4gIEN1c3RvbWVyc091dCxcclxuICBDdXN0b21lclR5cGVzT3V0LFxyXG4gIEludm9pY2VUeXBlQ3VzdG9tUGFyYW1zSW4sXHJcbiAgT3BlcmF0aW9uQWNjb3VudFBheW1lbnRJbixcclxuICBPcGVyYXRpb25BY2NvdW50UGF5bWVudE91dCxcclxuICBPcGVyYXRpb25DYW5jZWxCaWxsaW5nSW4sXHJcbiAgT3BlcmF0aW9uRG9jdW1lbnRJbixcclxuICBPcGVyYXRpb25Eb2N1bWVudE91dCxcclxuICBPcGVyYXRpb25QcmludERvY3VtZW50T3V0LFxyXG4gIE9wZXJhdGlvblNoaXBtZW50RXh0ZXJuYWxJbixcclxuICBPcGVyYXRpb25TaGlwbWVudEV4dGVybmFsT3V0LFxyXG4gIFByaW50Q29sbGVjdGlvblJlY2VpcHRPdXRcclxufSBmcm9tICcuL21vZGVscy9hcGktaW52b2ljZXMudHlwZXMnXHJcbmltcG9ydCB7IEFwaVN1Y2Nlc3MsIFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi9tb2RlbHMvYXBpLm1vZGVscydcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaUludm9pY2VzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlbnZpcm9ubWVudHM6IEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBBUEkgVVJMIGZvciBpbnZvaWNlcyBmcm9tIHRoZSBlbnZpcm9ubWVudHMgY29uZmlndXJhdGlvbi5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIEFQSSBVUkwgZm9yIGludm9pY2VzLlxyXG4gICAqL1xyXG4gIGdldCB1cmwgKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudHMuYXBpSW52b2ljZXNVcmwgPz8gJydcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGFuIG9wZXJhdGlvbiBkb2N1bWVudCB0byB0aGUgc2VydmVyIGFuZCBwcm9jZXNzZXMgdGhlIHJlc3BvbnNlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPcGVyYXRpb25Eb2N1bWVudElufSBib2R5IC0gVGhlIGlucHV0IGRhdGEgZm9yIHRoZSBvcGVyYXRpb24gZG9jdW1lbnQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPcGVyYXRpb25Eb2N1bWVudE91dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgcHJvY2Vzc2VkIG9wZXJhdGlvbiBkb2N1bWVudCBvdXRwdXQuXHJcbiAgICovXHJcbiAgcG9zdE9wZXJhdGlvbkRvY3VtZW50IChib2R5OiBPcGVyYXRpb25Eb2N1bWVudEluKTogT2JzZXJ2YWJsZTxPcGVyYXRpb25Eb2N1bWVudE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8T3BlcmF0aW9uRG9jdW1lbnRPdXQ+PihgJHt0aGlzLnVybH0vb3BlcmF0aW9uL2RvY3VtZW50YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGFuZCByZXR1cm5zIHRoZSBjb2xsZWN0aW9uIHJlY2VpcHQgZGF0YSBmb3IgYSBnaXZlbiBjb2xsZWN0aW9uIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIGZvciB3aGljaCB0aGUgcmVjZWlwdCBuZWVkcyB0byBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQcmludENvbGxlY3Rpb25SZWNlaXB0T3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBjb2xsZWN0aW9uIHJlY2VpcHQgZGF0YS5cclxuICAgKi9cclxuICBnZXRQcmludENvbGxlY3Rpb25SZWNlaXB0IChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxQcmludENvbGxlY3Rpb25SZWNlaXB0T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFByaW50Q29sbGVjdGlvblJlY2VpcHRPdXQ+PihgJHt0aGlzLnVybH0vb3BlcmF0aW9uL3ByaW50L2NvbGxlY3Rpb24tcmVjZWlwdC8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgYWNjb3VudCBwYXltZW50IG9wZXJhdGlvbiBieSBzZW5kaW5nIGEgUE9TVCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgZW5kcG9pbnQuXHJcbiAgICogUHJvY2Vzc2VzIHRoZSByZXNwb25zZSBhbmQgcmV0dXJucyB0aGUgb3BlcmF0aW9uIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge09wZXJhdGlvbkFjY291bnRQYXltZW50SW59IGJvZHkgVGhlIHBheWxvYWQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIGFjY291bnQgcGF5bWVudCBvcGVyYXRpb24uXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPcGVyYXRpb25BY2NvdW50UGF5bWVudE91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHByb2Nlc3NlZCBhY2NvdW50IHBheW1lbnQgb3BlcmF0aW9uIGRhdGEuXHJcbiAgICovXHJcbiAgcG9zdE9wZXJhdGlvbkFjY291bnRQYXltZW50IChib2R5OiBPcGVyYXRpb25BY2NvdW50UGF5bWVudEluKTogT2JzZXJ2YWJsZTxPcGVyYXRpb25BY2NvdW50UGF5bWVudE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8T3BlcmF0aW9uQWNjb3VudFBheW1lbnRPdXQ+PihgJHt0aGlzLnVybH0vb3BlcmF0aW9uL2FjY291bnQtcGF5bWVudGAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FuY2VscyBhIHBheW1lbnQgcmVjZWlwdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW5wdXQuXHJcbiAgICogVGhpcyBtZXRob2Qgc2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY2FuY2VsIGEgZG9jdW1lbnQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYm9keSBUaGUgZGF0YSByZXF1aXJlZCB0byBjYW5jZWwgdGhlIHBheW1lbnQgcmVjZWlwdCwgZW5jYXBzdWxhdGVkIGluIGEgQ2FuY2VsUGF5bWVudFJlY2VpcHRJbiBvYmplY3QuXHJcbiAgICogQHJldHVybiBBbiBPYnNlcnZhYmxlIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9mIHRoZSBjYW5jZWxsYXRpb24uIEVtaXRzIGFuIGVtcHR5IG9iamVjdCBvbiBzdWNjZXNzLlxyXG4gICAqL1xyXG4gIHBvc3RPcGVyYXRpb25DYW5jZWxEb2N1bWVudCAoYm9keTogQ2FuY2VsUGF5bWVudFJlY2VpcHRJbik6IE9ic2VydmFibGU8e30+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPHt9Pj4oYCR7dGhpcy51cmx9L29wZXJhdGlvbi9jYW5jZWwtZG9jdW1lbnRgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbmNlbHMgYW4gaW52b2ljZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaW52b2ljZSBJRCBhbmQgYWRkaXRpb25hbCBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCB0byBjYW5jZWwgdGhlIGludm9pY2UsIGVuY2Fwc3VsYXRlZCBpbiBhIENhbmNlbEJpbGxpbmdJbiBvYmplY3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPYmplY3Q+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlIG9mIHRoZSBjYW5jZWxsYXRpb24gb3BlcmF0aW9uLlxyXG4gICAqL1xyXG4gIHBvc3RPcGVyYXRpb25DYW5jZWxCaWxsaW5nICh7IGludm9pY2VJZCwgLi4uYm9keSB9OiBPcGVyYXRpb25DYW5jZWxCaWxsaW5nSW4pOiBPYnNlcnZhYmxlPHt9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9vcGVyYXRpb24vY2FuY2VsLWJpbGxpbmcvJHtpbnZvaWNlSWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgbGlzdCBvZiBjdXN0b21lciB0eXBlcyBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBRdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciBvciBjdXN0b21pemUgdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDdXN0b21lclR5cGVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3VzdG9tZXIgdHlwZXMgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgZ2V0Q3VzdG9tZXJUeXBlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q3VzdG9tZXJUeXBlc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDdXN0b21lclR5cGVzT3V0Pj4oYCR7dGhpcy51cmx9L2N1c3RvbWVyLXR5cGVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgZG9jdW1lbnQgdHlwZXMgc3BlY2lmaWMgdG8gYSBnaXZlbiBjb3VudHJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgY29udGFpbmluZyBjb3VudHJ5LXNwZWNpZmljIGluZm9ybWF0aW9uLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q3VzdG9tZXJEb2N1bWVudFR5cGVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgZG9jdW1lbnQgdHlwZXMgYXZhaWxhYmxlIGZvciB0aGUgc3BlY2lmaWVkIGNvdW50cnkuXHJcbiAgICovXHJcbiAgZ2V0Q3VzdG9tZXJEb2N1bWVudFR5cGVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxDdXN0b21lckRvY3VtZW50VHlwZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q3VzdG9tZXJEb2N1bWVudFR5cGVzT3V0Pj4oYCR7dGhpcy51cmx9L2N1c3RvbWVyLWNvdW50cnktZG9jdW1lbnQtdHlwZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgY3VzdG9tZXIgaW52b2ljZSBkZXRhaWxzIGZpbHRlcmVkIGJ5IGEgY3VzdG9tIGludm9pY2UgdHlwZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SW52b2ljZVR5cGVDdXN0b21QYXJhbXNJbn0gcGFyYW1zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZpbHRlciBwYXJhbWV0ZXJzIGZvciB0aGUgY3VzdG9tIGludm9pY2UgdHlwZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEN1c3RvbWVyc091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyBjdXN0b21lciBpbnZvaWNlIGRldGFpbHMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLlxyXG4gICAqL1xyXG4gIGdldEN1c3RvbWVycyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q3VzdG9tZXJzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEN1c3RvbWVyc091dD4+KGAke3RoaXMudXJsfS9jdXN0b21lcnNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSBvciB1cGRhdGUgYW4gZXh0ZXJuYWwgc2hpcG1lbnQgb3BlcmF0aW9uLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPcGVyYXRpb25TaGlwbWVudEV4dGVybmFsSW59IHBhcmFtcyAtIFRoZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciB0aGUgZXh0ZXJuYWwgc2hpcG1lbnQgb3BlcmF0aW9uLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8T3BlcmF0aW9uU2hpcG1lbnRFeHRlcm5hbE91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzdWx0IG9mIHRoZSBleHRlcm5hbCBzaGlwbWVudCBvcGVyYXRpb24uXHJcbiAgICovXHJcbiAgcG9zdE9wZXJhdGlvblNoaXBtZW50RXh0ZXJuYWwgKHBhcmFtczogT3BlcmF0aW9uU2hpcG1lbnRFeHRlcm5hbEluKTogT2JzZXJ2YWJsZTxPcGVyYXRpb25TaGlwbWVudEV4dGVybmFsT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxPcGVyYXRpb25TaGlwbWVudEV4dGVybmFsT3V0Pj4oYCR7dGhpcy51cmx9L29wZXJhdGlvbi9zaGlwbWVudC9leHRlcm5hbGAsIHBhcmFtcylcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9jZXNzZXMgYW4gZXh0ZXJuYWwgcGF5bWVudCBvcGVyYXRpb24gZm9yIGEgc2hpcG1lbnQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge09wZXJhdGlvblNoaXBtZW50RXh0ZXJuYWxJbn0gcGFyYW1zIC0gVGhlIGlucHV0IHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIHRoZSBleHRlcm5hbCBwYXltZW50IG9wZXJhdGlvbi5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE9wZXJhdGlvblNoaXBtZW50RXh0ZXJuYWxPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3VsdCBvZiB0aGUgZXh0ZXJuYWwgcGF5bWVudCBvcGVyYXRpb24gZm9yIGEgc2hpcG1lbnQuXHJcbiAgICovXHJcbiAgcG9zdE9wZXJhdGlvblNoaXBtZW50RXh0ZXJuYWxQYXltZW50IChwYXJhbXM6IE9wZXJhdGlvblNoaXBtZW50RXh0ZXJuYWxJbik6IE9ic2VydmFibGU8T3BlcmF0aW9uU2hpcG1lbnRFeHRlcm5hbE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8T3BlcmF0aW9uU2hpcG1lbnRFeHRlcm5hbE91dD4+KGAke3RoaXMudXJsfS9vcGVyYXRpb24vc2hpcG1lbnQvZXh0ZXJuYWwvcGF5bWVudGAsIHBhcmFtcylcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW5kIHJldHVybnMgYmlsbGluZyBvcGVyYXRpb24gcHJpbnQgZGV0YWlscyBmb3IgYSBnaXZlbiBkb2N1bWVudCBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkb2N1bWVudElkIC0gVGhlIElEIG9mIHRoZSBkb2N1bWVudCBmb3Igd2hpY2ggdG8gZmV0Y2ggdGhlIHByaW50IGJpbGxpbmcgb3BlcmF0aW9uIGRldGFpbHMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxPcGVyYXRpb25QcmludERvY3VtZW50T3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcHJpbnQgYmlsbGluZyBvcGVyYXRpb24gZGV0YWlscyBmb3IgdGhlIHNwZWNpZmllZCBkb2N1bWVudC5cclxuICAgKi9cclxuICBnZXRPcGVyYXRpb25QcmludERvY3VtZW50IChkb2N1bWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPE9wZXJhdGlvblByaW50RG9jdW1lbnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8T3BlcmF0aW9uUHJpbnREb2N1bWVudE91dD4+KGAke3RoaXMudXJsfS9vcGVyYXRpb24vcHJpbnQvZG9jdW1lbnQvJHtkb2N1bWVudElkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxufVxyXG4iXX0=