ng-easycommerce-v18 0.3.22-beta.2 → 0.3.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/esm2022/lib/classes/filters/attributes-filter.mjs +74 -4
- package/esm2022/lib/classes/filters/category-filter.mjs +105 -26
- package/esm2022/lib/classes/filters/filter-factory.mjs +7 -3
- package/esm2022/lib/classes/filters/price_range-filter.mjs +3 -3
- package/esm2022/lib/constants/core.constants.service.mjs +12 -1
- package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +41 -17
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +42 -9
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +12 -6
- package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +13 -2
- package/esm2022/lib/ec-services/filters.service.mjs +124 -18
- package/esm2022/lib/ec-services/pagination.service.mjs +70 -22
- package/esm2022/lib/ec-services/products.service.mjs +5 -3
- package/fesm2022/ng-easycommerce-v18.mjs +490 -98
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/classes/filters/attributes-filter.d.ts +24 -0
- package/lib/classes/filters/category-filter.d.ts +30 -3
- package/lib/constants/core.constants.service.d.ts +7 -0
- package/lib/ec-components/collection-ec/collection-ec.component.d.ts +5 -4
- package/lib/ec-components/filters-ec/filters-ec.component.d.ts +13 -0
- package/lib/ec-components/price-range-filter/price-range-filter.component.d.ts +2 -0
- package/lib/ec-services/filters.service.d.ts +18 -1
- package/lib/ec-services/pagination.service.d.ts +21 -5
- package/lib/ec-services/products.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -60,9 +60,11 @@ export class ProductsService {
|
|
|
60
60
|
* @param paginationSettings
|
|
61
61
|
* @param searchValue
|
|
62
62
|
*/
|
|
63
|
-
getProductsForFilter(paginationSettings, searchValue) {
|
|
63
|
+
getProductsForFilter(paginationSettings, searchValue, routeQueryParams) {
|
|
64
64
|
searchValue ? this.searchValue.set(searchValue) : this.searchValue.set('');
|
|
65
|
-
|
|
65
|
+
if (paginationSettings) {
|
|
66
|
+
this._filtersService.setFilters(paginationSettings, searchValue, routeQueryParams);
|
|
67
|
+
}
|
|
66
68
|
}
|
|
67
69
|
/**
|
|
68
70
|
* Actualiza los productos con los de la siguiente pagina.
|
|
@@ -191,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
191
193
|
providedIn: 'root'
|
|
192
194
|
}]
|
|
193
195
|
}], ctorParameters: () => [] });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9wcm9kdWN0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsTUFBTSxFQUFFLFVBQVUsRUFBeUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQTBELE1BQU0sTUFBTSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs7QUFLbEQsTUFBTSxPQUFPLGVBQWU7SUFFaEIsV0FBVyxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzRCxVQUFVLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlELGVBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pELGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxPQUFPLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTdELGdCQUFnQixHQUErQixJQUFJLGVBQWUsQ0FBWSxFQUFFLENBQUMsQ0FBQTtJQUNsRixTQUFTLEdBQTBCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FB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Q0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELDhEQUE4RDtRQUM5RCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQTNNUSxlQUFlOzRHQUFmLGVBQWUsY0FGWixNQUFNOzs0RkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50SW5qZWN0b3IsIGluamVjdCwgSW5qZWN0YWJsZSwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyLCBGaWx0ZXJFbGVtZW50LCBGaWx0ZXJUeXBlLCBJRmlsdGVyLCBPcHRpb25zLCBQYWdpbmF0aW9uU2V0dGluZ3MsIFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UsIENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3BhZ2luYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXIsIEZpbHRlckZhY3RvcnksIH0gZnJvbSAnLi4vY2xhc3Nlcyc7XG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9maWx0ZXJzL3ByaWNlX3JhbmdlLWZpbHRlcic7XG5pbXBvcnQgeyBGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJ1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzU2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9jb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgX29wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSA9IGluamVjdChPcHRpb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlID0gaW5qZWN0KFBhZ2luYXRpb25TZXJ2aWNlKTtcbiAgICBwcml2YXRlIF9jb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgX3Byb2R1Y3RzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4oW10pXG4gICAgcHVibGljIHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxQcm9kdWN0W10+ID0gdGhpcy5fcHJvZHVjdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHByaXZhdGUgX2ZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSA9IGluamVjdChGaWx0ZXJzU2VydmljZSlcbiAgICBwcml2YXRlIGZpbHRlcnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuICAgIHB1YmxpYyBmaWx0ZXJzJCA9IHRoaXMuZmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIHNlYXJjaFZhbHVlID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25TZXJ2aWNlLnJlc2V0JC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2R1Y3RzU3ViamVjdC5uZXh0KFtdKVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uU2VydmljZS5wYWdpbmF0aW9uRGF0YSQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcHJvZHVjdHMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB0aGlzLl9jb25zdHMuZ2V0UHJvZHVjdFdpdGhVbmlxdWVWYXJpYW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQpXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzID0gdGhpcy5nZXRQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50KHByb2R1Y3RzLCB0aGlzLmdldE9iamVjdFdpdGhWYXJpYW50KCkpXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFByb2R1Y3RzID0gdGhpcy5fcHJvZHVjdHNTdWJqZWN0LnZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2R1Y3RzU3ViamVjdC5uZXh0KFsuLi5jdXJyZW50UHJvZHVjdHMsIC4uLnByb2R1Y3RzXSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICApXG4gICAgICAgIC8vIFN1c2NyaWJpcnNlIGEgbG9zIGNhbWJpb3MgZW4gZWwgcmFuZ28gZGUgcHJlY2lvc1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uU2VydmljZS5wcmljZVJhbmdlJC5zdWJzY3JpYmUocmFuZ2UgPT4ge1xuICAgICAgICAgICAgbGV0IG1pbiA9IE1hdGguZmxvb3IocmFuZ2UucHJpY2VfbWluKTtcbiAgICAgICAgICAgIGxldCBtYXggPSBNYXRoLmNlaWwocmFuZ2UucHJpY2VfbWF4KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJpY2VSYW5nZUZpbHRlcihtaW4sIG1heCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9maWx0ZXJzU2VydmljZS5maWx0ZXJzJC5zdWJzY3JpYmUoZmlsdGVycyA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmlsdGVycyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUHJpY2VSYW5nZUZpbHRlcihtaW46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZmluYWxfZmlsdGVyczogRmlsdGVyW10gPSB0aGlzLmZpbHRlcnNTdWJqZWN0LnZhbHVlO1xuICAgICAgICBjb25zdCBwcmljZVJhbmdlRmlsdGVyID0gZmluYWxfZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIgaW5zdGFuY2VvZiBQcmljZVJhbmdlRmlsdGVyKTtcblxuICAgICAgICBpZiAocHJpY2VSYW5nZUZpbHRlcikge1xuICAgICAgICAgICAgKHByaWNlUmFuZ2VGaWx0ZXIgYXMgUHJpY2VSYW5nZUZpbHRlcikudXBkYXRlUHJpY2VzKG1pbiwgbWF4KTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyc1N1YmplY3QubmV4dChmaW5hbF9maWx0ZXJzKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbiAgICAvL0FQSSBVUkxcbiAgICBwcml2YXRlIF9zaG9wQXBpVXJsID0gdGhpcy5fYXBpQ29uc3RzLlNIT1BfQVBJX1VSTDtcbiAgICBwcm9kdWN0QnlDb2RlQXBpKGNvZGU6IHN0cmluZywgdmFyaWFudDogYm9vbGVhbikgeyByZXR1cm4gdGhpcy5fc2hvcEFwaVVybCArIHRoaXMuX2FwaUNvbnN0cy5DSEFOTkVMICsgJy9wcm9kdWN0cy9ieS1jb2RlLycgKyAodmFyaWFudCA/ICd2YXJpYW50LycgOiAnJykgKyBjb2RlICsgJz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEU7IH1cbiAgICAvLyByZXZpZXdcbiAgICBzYXZlUHJvZHVjdFJldmlld3NBcGkoY29kZTogc3RyaW5nKSB7IHJldHVybiB0aGlzLl9zaG9wQXBpVXJsICsgdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwgKyAnL3Byb2R1Y3RzL2J5LWNvZGUvJyArIGNvZGUgKyAnL3Jldmlld3MnOyB9XG4gICAgLy9yZWxhdGVkIHByb2R1Y3RzXG4gICAgcmVsYXRlZFByb2R1Y3RzQXBpID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+ICdzaG9wLWFwaS8nICsgdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwgKyAnL3Byb2R1Y3RzL3JlbGF0ZWQvYnktY29kZS8nICsga2V5ICsgJz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEU7XG5cbiAgICAvKipcbiAgICAgKiBTZXRlYSBsb3MgZmlsdHJvcyBwYXJhIG9idGVuZXIgbG9zIHByb2R1Y3Rvcy5cbiAgICAgKiBAcGFyYW0gcGFnaW5hdGlvblNldHRpbmdzIFxuICAgICAqIEBwYXJhbSBzZWFyY2hWYWx1ZSBcbiAgICAgKi9cbiAgICBnZXRQcm9kdWN0c0ZvckZpbHRlcihwYWdpbmF0aW9uU2V0dGluZ3M/OiBQYWdpbmF0aW9uU2V0dGluZ3MsIHNlYXJjaFZhbHVlPzogYW55KTogYW55IHtcbiAgICAgICAgc2VhcmNoVmFsdWUgPyB0aGlzLnNlYXJjaFZhbHVlLnNldChzZWFyY2hWYWx1ZSkgOiB0aGlzLnNlYXJjaFZhbHVlLnNldCgnJyk7XG4gICAgICAgIHBhZ2luYXRpb25TZXR0aW5ncyAmJiB0aGlzLl9maWx0ZXJzU2VydmljZS5zZXRGaWx0ZXJzKHBhZ2luYXRpb25TZXR0aW5ncylcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWN0dWFsaXphIGxvcyBwcm9kdWN0b3MgY29uIGxvcyBkZSBsYSBzaWd1aWVudGUgcGFnaW5hLlxuICAgICAqL1xuICAgIHVwZGF0ZVByb2R1Y3RzKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3BhZ2luYXRpb25TZXJ2aWNlLmdldFdhaXRpbmcoKSkge1xuICAgICAgICAgICAgdGhpcy5fcGFnaW5hdGlvblNlcnZpY2UuZ2V0TmV4dCgpXG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgZWwgcHJvZHVjdG8gcG9yIGNvZGlnby5cbiAgICAgKiBAcGFyYW0gY29kZSBDb2RpZ28gZGVsIHByb2R1Y3RvXG4gICAgICogQHBhcmFtIHZhcmlhbnQgUGFyYSBpbmRpY2FyIHNpIGVzIHZhcmlhbnRlIG8gbm8uXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgZ2V0UHJvZHVjdEJ5Q29kZShjb2RlOiBzdHJpbmcsIHZhcmlhbnQ6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFByb2R1Y3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24uZ2V0KHRoaXMucHJvZHVjdEJ5Q29kZUFwaShjb2RlLCB2YXJpYW50KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGxhIHJlc2XDsWEgZGUgdW4gcHJvZHVjdG8uXG4gICAgKiBAcGFyYW0gY29kZVxuICAgICogQHBhcmFtIGZvcm1fZGF0YVxuICAgICogQHJldHVybnNcbiAgICAqL1xuICAgIHNhdmVSZXZpZXdzID0gKGNvZGU6IHN0cmluZywgZm9ybV9kYXRhOiBhbnkpID0+IHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLnNhdmVQcm9kdWN0UmV2aWV3c0FwaShjb2RlKSwgZm9ybV9kYXRhKVxuXG5cbiAgICAvKipcbiAgICAgKiBSZWNpYmUgdW5hIGxpc3RhIGRlIHByb2R1Y3RvcyB5IHJldG9ybmEgbG9zIG1pc21vcyBwcm9kdWN0b3MgdGFudGFzIHZlY2VzIGNvbW8gdmFyaWFudGVzIHRlbmdhLlxuICAgICAqIGNhZGEgcHJvZHVjdG8gcmV0b3JuYWRvIHRlbmRyw6EgdW5hIMO6bmljYSB2YXJpYW50ZS5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdHMgIEFycmF5LiBMaXN0YSBkZSBwcm9kdWN0b3MuXG4gICAgICogQHBhcmFtIHdpdGhPcHRpb24gJ3R5cGUnIHRpcG8gZGUgb3BjacOzbiwgY29kZTogY8OzZGlnbyBkZSBsYSBvcGNpw7NuLiAnZGVmYXVsdEZpcnN0T3B0aW9uJzogZW4gY2FzbyBkZSBxdWUgbm8gc2UgcHVlZGEgZGVzZG9ibGFyIHBvciBsYSBvcGNpw7NuIGluZGljYWRhIHNpIGVsIHZhbG9yIGVzIHZlcmRhZGVybyBzZSBpbnRlbnRhcmEgZGVzZG9ibGFyIHBvciBsYSBwcmltZXJhIG9wY2nDs24gYXNvY2lhZGEgYWwgcHJvZHVjdG8uXG4gICAgICogJ2NoZWNrSWZTdG9jayc6IGVuIGNhc28gZGUgcXVlIGVzdGEgdmFsb3Igc2VhIHZlcmRhZGVybyBzZSByZWFsaXphIHVuIGNvbnRyb2wgZGUgcXVlIGxhIHZhcmlhbnRlcyBjdWVudGVuIGNvbiBzdG9jayBwYXJhIHNlciB1biBwcm9kdWN0byBkZXNkb2JsYWRvIHBvciBsYSB2YXJpYW50ZSwgc2kgZWwgdmFsb3IgZXMgZmFsc28gbm8gc2UgcmVhbGl6YSBkaWNobyBjb250cm9sIHkgZWwgcHJvZHVjdG8gc2UgZGVzZG9ibGFyYSBjb24gc3RvY2sgZW4gMC5cbiAgICAgKiBAcmV0dXJucyBhcnJlZ2xvIGNvbiBsb3MgcHJvZHVjdG9zIGRlc2RvYmxhZG9zIHBvciBsYSBvcGNpw7NuIHNvbGljaXRhZGEuXG4gICAgICogKG9wY2nDs24gcG9yIGRlZmVjdG8gcXVlIHNlIGludGVudGEgaGFjZXIgZWwgZGVzZG9ibGFtaWVudG8gJ2NvbG9yJywgbyBiaWVuIHNpIGVuIGxlIHBhcsOhbWV0cm8gd2l0aE9wdGlvbiBlbCBhdHJpYnV0byAnZGVmYXVsdEZpcnN0T3B0aW9uJyBlcyB2ZXJkYWRlcm8gc2UgZGVzZG9ibGEgcG9yIGxhIHByaW1lcmEgb3BjacOzbiBhc29jaWFkYSBhbCBwcm9kdWN0bylcbiAgICAgKi9cbiAgICBnZXRQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0gKHByb2R1Y3RzOiBQcm9kdWN0W10sIHdpdGhPcHRpb246IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7IHR5cGU6ICdjb2xvcicsIGNvZGU6ICdjb2xvcicsIGRlZmF1bHRGaXJzdE9wdGlvbjogZmFsc2UsIGNoZWNrSWZTdG9jazogdHJ1ZSB9KSA9PiB7XG5cbiAgICAgICAgIXdpdGhPcHRpb25bJ2NvZGUnXSAmJiB3aXRoT3B0aW9uWyd0eXBlJ10gJiYgKHdpdGhPcHRpb25bJ2NvZGUnXSA9IHdpdGhPcHRpb25bJ3R5cGUnXSkgfHwgIXdpdGhPcHRpb25bJ2NvZGUnXSAmJiAod2l0aE9wdGlvblsnY29kZSddID0gJ2NvbG9yJylcbiAgICAgICAgIXdpdGhPcHRpb25bJ3R5cGUnXSAmJiB3aXRoT3B0aW9uWydjb2RlJ10gJiYgKHdpdGhPcHRpb25bJ3R5cGUnXSA9IHdpdGhPcHRpb25bJ2NvZGUnXSkgfHwgIXdpdGhPcHRpb25bJ3R5cGUnXSAmJiAod2l0aE9wdGlvblsndHlwZSddID0gJ2NvbG9yJylcbiAgICAgICAgIXdpdGhPcHRpb24uaGFzT3duUHJvcGVydHkoJ2RlZmF1bHRGaXJzdE9wdGlvbicpICYmICh3aXRoT3B0aW9uWydkZWZhdWx0Rmlyc3RPcHRpb24nXSA9IGZhbHNlKVxuICAgICAgICAhd2l0aE9wdGlvbi5oYXNPd25Qcm9wZXJ0eSgnY2hlY2tJZlN0b2NrJykgJiYgKHdpdGhPcHRpb25bJ2NoZWNrSWZTdG9jayddID0gdHJ1ZSlcblxuICAgICAgICBsZXQgcHJvZHVjdHNVbmlxdWVWYXJpYW50OiBhbnlbXSA9IFtdO1xuICAgICAgICBwcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGxldCB2YXJpYW50cyA9IFsuLi5wcm9kdWN0Py52YXJpYW50c107XG4gICAgICAgICAgICBsZXQgb3B0aW9uID0gcHJvZHVjdC5vcHRpb25zLmZpbmQoKG9wdDogYW55KSA9PiBvcHQudHlwZS50b0xvd2VyQ2FzZSgpID09PSB3aXRoT3B0aW9uLnR5cGU/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbikge1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZXMuZm9yRWFjaCgob3B0aW9uVmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW9kaWZpZWRfcHJvZHVjdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHJvZHVjdCkpO1xuICAgICAgICAgICAgICAgICAgICBtb2RpZmllZF9wcm9kdWN0Lm9wdGlvbnMuZmluZCgob3B0aW9uOiBhbnkpID0+IG9wdGlvbi50eXBlLnRvTG93ZXJDYXNlKCkgPT0gd2l0aE9wdGlvbi50eXBlPy50b0xvd2VyQ2FzZSgpKS52YWx1ZXMgPSBbeyBjb2RlOiBvcHRpb25WYWx1ZS5jb2RlLCBuYW1lOiBvcHRpb25WYWx1ZS5uYW1lIH1dO1xuICAgICAgICAgICAgICAgICAgICAvL2J1c2NvIHVuYSB2YXJpYW50ZSBjb24gZXNlIGNvZGUgcGFyYSBhc2lnbmFybGUgbGEgbGlzdGEgZGUgaW1hZ2VuZXNcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhcmlhbnRBdXggPSB2YXJpYW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCA9PiAoKHdpdGhPcHRpb24uY2hlY2tJZlN0b2NrICYmIHZhcmlhbnQuc3RvY2sgPiAwKSB8fCB3aXRoT3B0aW9uLmNoZWNrSWZTdG9jayA9PSBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB2YXJpYW50Lm9wdGlvbnMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFyaWFudC5vcHRpb25zLnNvbWUoKG9wOiBhbnkpID0+IChvcC5oYXNPd25Qcm9wZXJ0eSh3aXRoT3B0aW9uLmNvZGU/LnRvTG93ZXJDYXNlKCkpIHx8IG9wLmhhc093blByb3BlcnR5KHdpdGhPcHRpb24uY29kZT8udG9VcHBlckNhc2UoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChvcFtgJHt3aXRoT3B0aW9uLmNvZGU/LnRvTG93ZXJDYXNlKCl9YF0gfHwgb3BbYCR7d2l0aE9wdGlvbi5jb2RlPy50b1VwcGVyQ2FzZSgpfWBdKSA9PT0gb3B0aW9uVmFsdWUuY29kZSlcblxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiLS0tXCIsdmFyaWFudEF1eCk7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnRBdXggJiYgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2godGhpcy5wcm9kdWN0V2l0aFZhcmlhbnRWYWx1ZXMobW9kaWZpZWRfcHJvZHVjdCwgdmFyaWFudEF1eCwgb3B0aW9uVmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBzZSBtb2RpZmljYSBlbCBjYXNvIHBhcmEgY3VhbmRvIHNlIHRvbWEgZWwgcHJpbWVyIGBvcHRpb25gIGRlbCBwcm9kdWN0byBwYXJhXG4gICAgICAgICAgICAgICAgICogYXJtYXIgbGEgbGlzdGEgZGUgcHJvZHVjdG9zIGNvbiB2YXJpYW50ZXMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKHdpdGhPcHRpb24uZGVmYXVsdEZpcnN0T3B0aW9uICYmIHByb2R1Y3Qub3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdE9wdGlvbnMgPSBwcm9kdWN0Lm9wdGlvbnNbMF1cbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5vcHRpb25zWzBdLnZhbHVlcy5mb3JFYWNoKChvcHRpb25WYWx1ZTogYW55KSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZF9wcm9kdWN0Lm9wdGlvbnMuZmluZCgob3B0aW9uOiBPcHRpb25zKSA9PiBvcHRpb24udHlwZSA9PSBmaXJzdE9wdGlvbnMudHlwZSkudmFsdWVzID0gW3sgY29kZTogb3B0aW9uVmFsdWUuY29kZSwgbmFtZTogb3B0aW9uVmFsdWUubmFtZSB9XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhcmlhbnRBdXggPSB2YXJpYW50cy5maW5kKHZhcmlhbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYW50Lm9wdGlvbnMuZmluZCgoZWxlbTogYW55KSA9PiBlbGVtW2ZpcnN0T3B0aW9ucy5jb2RlXSA9PSBvcHRpb25WYWx1ZS5jb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnRBdXggJiYgdmFyaWFudEF1eC5pbWFnZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50QXV4LmltYWdlcyA9IHByb2R1Y3QucGljdHVyZXNkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aXRoT3B0aW9uLmNoZWNrSWZTdG9jaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYW50QXV4ICYmIHZhcmlhbnRBdXguc3RvY2sgPiAwKSA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudC5wdXNoKHRoaXMucHJvZHVjdFdpdGhWYXJpYW50VmFsdWVzKG1vZGlmaWVkX3Byb2R1Y3QsIHZhcmlhbnRBdXgsIG9wdGlvblZhbHVlKSkgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50QXV4ICYmIHByb2R1Y3RzVW5pcXVlVmFyaWFudC5wdXNoKHRoaXMucHJvZHVjdFdpdGhWYXJpYW50VmFsdWVzKG1vZGlmaWVkX3Byb2R1Y3QsIHZhcmlhbnRBdXgsIG9wdGlvblZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzVW5pcXVlVmFyaWFudC5wdXNoKHByb2R1Y3QpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQubGVuZ3RoID4gMCA/IHByb2R1Y3RzVW5pcXVlVmFyaWFudCA6IHByb2R1Y3RzO1xuICAgIH1cblxuICAgIHByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyA9IChwcm9kdWN0OiBQcm9kdWN0LCB2YXJpYW50OiBhbnksIG9wdGlvblZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgcHJvZHVjdC5waWN0dXJlc2RlZmF1bHQgPSBbLi4udmFyaWFudC5pbWFnZXNdXG4gICAgICAgIHByb2R1Y3QudmFyaWFudF9pZCA9IHZhcmlhbnQuY29kZTsgLy9sbyBkZWpvIGFjYSBoYXN0YSBhc2VndXJhcm5vcyBkZSBxdWUgbm8gc2UgZXN0YWJhIHVzYW5kbyBlbiBvdHJhIHBhcnRlLlxuICAgICAgICBwcm9kdWN0LnN0b2NrID0gdmFyaWFudC5zdG9jayB8fCAwOyAvL2xvIGRlam8gYWNhIGhhc3RhIGFzZWd1cmFybm9zIGRlIHF1ZSBubyBzZSBlc3RhYmEgdXNhbmRvIGVuIG90cmEgcGFydGUuXG4gICAgICAgIHByb2R1Y3QucHJpY2UgPSB2YXJpYW50LnByaWNlLnRvU3RyaW5nKCkgfHwgJzAnO1xuICAgICAgICBwcm9kdWN0LmN1cnJlbnRPcHRpb24gPSB7XG4gICAgICAgICAgICAuLi5vcHRpb25WYWx1ZSxcbiAgICAgICAgICAgIHByb2R1Y3RDb2RlOiBwcm9kdWN0LmlkLFxuICAgICAgICAgICAgdmFyaWFudENvZGU6IHZhcmlhbnQuY29kZSxcbiAgICAgICAgICAgIHN0b2NrOiB2YXJpYW50LnN0b2NrIHx8IDAsXG4gICAgICAgICAgICBmaW5hbFByaWNlOiB2YXJpYW50LnNhbGVwcmljZSB8fCB2YXJpYW50LnByaWNlIHx8IDAsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb2R1Y3RcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9iamVjdFdpdGhWYXJpYW50ID0gKCk6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uc3RzLmdldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQoKVxuICAgIH1cblxuICAgIGdldFJlbGF0ZWRQcm9kdWN0cyhwcm9kdWN0X2lkOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24uZ2V0KHRoaXMucmVsYXRlZFByb2R1Y3RzQXBpKHByb2R1Y3RfaWQpKTtcbiAgICB9XG4gICAgXG4gICAgaGFzU3RvY2socHJvZHVjdDogUHJvZHVjdCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBTaSBlbCBwcm9kdWN0byB0aWVuZSBsYSBwcm9waWVkYWQgJ3N0b2NrJyB5IGVzIG1heW9yIGEgMFxuICAgICAgICBpZiAodHlwZW9mIHByb2R1Y3Quc3RvY2sgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvZHVjdC5zdG9jayA+IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2kgZWwgcHJvZHVjdG8gdGllbmUgdmFyaWFudGVzLCB2ZXJpZmljYSBzaSBhbGd1bmEgdGllbmUgc3RvY2tcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvZHVjdC52YXJpYW50cykpIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9kdWN0LnZhcmlhbnRzLnNvbWUodmFyaWFudCA9PiB2YXJpYW50LnN0b2NrID4gMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2kgbm8gdGllbmUgaW5mb3JtYWNpw7NuIGRlIHN0b2NrLCBhc3VtaW1vcyBxdWUgbm8gaGF5IHN0b2NrXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9wcm9kdWN0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsTUFBTSxFQUFFLFVBQVUsRUFBeUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQTBELE1BQU0sTUFBTSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs7QUFLbEQsTUFBTSxPQUFPLGVBQWU7SUFFaEIsV0FBVyxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzRCxVQUFVLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzlELGVBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pELGtCQUFrQixHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxPQUFPLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTdELGdCQUFnQixHQUErQixJQUFJLGVBQWUsQ0FBWSxFQUFFLENBQUMsQ0FBQTtJQUNsRixTQUFTLEdBQTBCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FB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QUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELGlFQUFpRTtRQUNqRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELDhEQUE4RDtRQUM5RCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQWpOUSxlQUFlOzRHQUFmLGVBQWUsY0FGWixNQUFNOzs0RkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50SW5qZWN0b3IsIGluamVjdCwgSW5qZWN0YWJsZSwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyLCBGaWx0ZXJFbGVtZW50LCBGaWx0ZXJUeXBlLCBJRmlsdGVyLCBPcHRpb25zLCBQYWdpbmF0aW9uU2V0dGluZ3MsIFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UsIENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3BhZ2luYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXIsIEZpbHRlckZhY3RvcnksIH0gZnJvbSAnLi4vY2xhc3Nlcyc7XG5pbXBvcnQgeyBQcmljZVJhbmdlRmlsdGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy9maWx0ZXJzL3ByaWNlX3JhbmdlLWZpbHRlcic7XG5pbXBvcnQgeyBGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJ1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzU2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9jb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgX29wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSA9IGluamVjdChPcHRpb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlID0gaW5qZWN0KFBhZ2luYXRpb25TZXJ2aWNlKTtcbiAgICBwcml2YXRlIF9jb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgX3Byb2R1Y3RzU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByb2R1Y3RbXT4oW10pXG4gICAgcHVibGljIHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxQcm9kdWN0W10+ID0gdGhpcy5fcHJvZHVjdHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHByaXZhdGUgX2ZpbHRlcnNTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZSA9IGluamVjdChGaWx0ZXJzU2VydmljZSlcbiAgICBwcml2YXRlIGZpbHRlcnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJbXT4oW10pO1xuICAgIHB1YmxpYyBmaWx0ZXJzJCA9IHRoaXMuZmlsdGVyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIHNlYXJjaFZhbHVlID0gc2lnbmFsPHN0cmluZz4oJycpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25TZXJ2aWNlLnJlc2V0JC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2R1Y3RzU3ViamVjdC5uZXh0KFtdKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkRhdGEkLnN1YnNjcmliZShcbiAgICAgICAgICAgIHByb2R1Y3RzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0gdGhpcy5fY29uc3RzLmdldFByb2R1Y3RXaXRoVW5pcXVlVmFyaWFudCgpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50KVxuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0cyA9IHRoaXMuZ2V0UHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudChwcm9kdWN0cywgdGhpcy5nZXRPYmplY3RXaXRoVmFyaWFudCgpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQcm9kdWN0cyA9IHRoaXMuX3Byb2R1Y3RzU3ViamVjdC52YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9kdWN0c1N1YmplY3QubmV4dChbLi4uY3VycmVudFByb2R1Y3RzLCAuLi5wcm9kdWN0c10pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICAvLyBTdXNjcmliaXJzZSBhIGxvcyBjYW1iaW9zIGVuIGVsIHJhbmdvIGRlIHByZWNpb3NcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvblNlcnZpY2UucHJpY2VSYW5nZSQuc3Vic2NyaWJlKHJhbmdlID0+IHtcbiAgICAgICAgICAgIGxldCBtaW4gPSBNYXRoLmZsb29yKHJhbmdlLnByaWNlX21pbik7XG4gICAgICAgICAgICBsZXQgbWF4ID0gTWF0aC5jZWlsKHJhbmdlLnByaWNlX21heCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByaWNlUmFuZ2VGaWx0ZXIobWluLCBtYXgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZmlsdGVyc1NlcnZpY2UuZmlsdGVycyQuc3Vic2NyaWJlKGZpbHRlcnMgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzU3ViamVjdC5uZXh0KGZpbHRlcnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVByaWNlUmFuZ2VGaWx0ZXIobWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGZpbmFsX2ZpbHRlcnM6IEZpbHRlcltdID0gdGhpcy5maWx0ZXJzU3ViamVjdC52YWx1ZTtcbiAgICAgICAgY29uc3QgcHJpY2VSYW5nZUZpbHRlciA9IGZpbmFsX2ZpbHRlcnMuZmluZChmaWx0ZXIgPT4gZmlsdGVyIGluc3RhbmNlb2YgUHJpY2VSYW5nZUZpbHRlcik7XG5cbiAgICAgICAgaWYgKHByaWNlUmFuZ2VGaWx0ZXIpIHtcbiAgICAgICAgICAgIChwcmljZVJhbmdlRmlsdGVyIGFzIFByaWNlUmFuZ2VGaWx0ZXIpLnVwZGF0ZVByaWNlcyhtaW4sIG1heCk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcnNTdWJqZWN0Lm5leHQoZmluYWxfZmlsdGVycyk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgLy9BUEkgVVJMXG4gICAgcHJpdmF0ZSBfc2hvcEFwaVVybCA9IHRoaXMuX2FwaUNvbnN0cy5TSE9QX0FQSV9VUkw7XG4gICAgcHJvZHVjdEJ5Q29kZUFwaShjb2RlOiBzdHJpbmcsIHZhcmlhbnQ6IGJvb2xlYW4pIHsgcmV0dXJuIHRoaXMuX3Nob3BBcGlVcmwgKyB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCArICcvcHJvZHVjdHMvYnktY29kZS8nICsgKHZhcmlhbnQgPyAndmFyaWFudC8nIDogJycpICsgY29kZSArICc/bG9jYWxlPScgKyB0aGlzLl9hcGlDb25zdHMuTE9DQUxFOyB9XG4gICAgLy8gcmV2aWV3XG4gICAgc2F2ZVByb2R1Y3RSZXZpZXdzQXBpKGNvZGU6IHN0cmluZykgeyByZXR1cm4gdGhpcy5fc2hvcEFwaVVybCArIHRoaXMuX2FwaUNvbnN0cy5DSEFOTkVMICsgJy9wcm9kdWN0cy9ieS1jb2RlLycgKyBjb2RlICsgJy9yZXZpZXdzJzsgfVxuICAgIC8vcmVsYXRlZCBwcm9kdWN0c1xuICAgIHJlbGF0ZWRQcm9kdWN0c0FwaSA9IChrZXk6IHN0cmluZyk6IHN0cmluZyA9PiAnc2hvcC1hcGkvJyArIHRoaXMuX2FwaUNvbnN0cy5DSEFOTkVMICsgJy9wcm9kdWN0cy9yZWxhdGVkL2J5LWNvZGUvJyArIGtleSArICc/bG9jYWxlPScgKyB0aGlzLl9hcGlDb25zdHMuTE9DQUxFO1xuXG4gICAgLyoqXG4gICAgICogU2V0ZWEgbG9zIGZpbHRyb3MgcGFyYSBvYnRlbmVyIGxvcyBwcm9kdWN0b3MuXG4gICAgICogQHBhcmFtIHBhZ2luYXRpb25TZXR0aW5ncyBcbiAgICAgKiBAcGFyYW0gc2VhcmNoVmFsdWUgXG4gICAgICovXG4gICAgZ2V0UHJvZHVjdHNGb3JGaWx0ZXIoXG4gICAgICAgIHBhZ2luYXRpb25TZXR0aW5ncz86IFBhZ2luYXRpb25TZXR0aW5ncyxcbiAgICAgICAgc2VhcmNoVmFsdWU/OiBhbnksXG4gICAgICAgIHJvdXRlUXVlcnlQYXJhbXM/OiBhbnlcbiAgICApOiBhbnkge1xuICAgICAgICBzZWFyY2hWYWx1ZSA/IHRoaXMuc2VhcmNoVmFsdWUuc2V0KHNlYXJjaFZhbHVlKSA6IHRoaXMuc2VhcmNoVmFsdWUuc2V0KCcnKTtcbiAgICAgICAgaWYgKHBhZ2luYXRpb25TZXR0aW5ncykge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyc1NlcnZpY2Uuc2V0RmlsdGVycyhwYWdpbmF0aW9uU2V0dGluZ3MsIHNlYXJjaFZhbHVlLCByb3V0ZVF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBY3R1YWxpemEgbG9zIHByb2R1Y3RvcyBjb24gbG9zIGRlIGxhIHNpZ3VpZW50ZSBwYWdpbmEuXG4gICAgICovXG4gICAgdXBkYXRlUHJvZHVjdHMoKSB7XG4gICAgICAgIGlmICghdGhpcy5fcGFnaW5hdGlvblNlcnZpY2UuZ2V0V2FpdGluZygpKSB7XG4gICAgICAgICAgICB0aGlzLl9wYWdpbmF0aW9uU2VydmljZS5nZXROZXh0KClcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCBwcm9kdWN0byBwb3IgY29kaWdvLlxuICAgICAqIEBwYXJhbSBjb2RlIENvZGlnbyBkZWwgcHJvZHVjdG9cbiAgICAgKiBAcGFyYW0gdmFyaWFudCBQYXJhIGluZGljYXIgc2kgZXMgdmFyaWFudGUgbyBuby5cbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBnZXRQcm9kdWN0QnlDb2RlKGNvZGU6IHN0cmluZywgdmFyaWFudDogYm9vbGVhbik6IE9ic2VydmFibGU8UHJvZHVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5nZXQodGhpcy5wcm9kdWN0QnlDb2RlQXBpKGNvZGUsIHZhcmlhbnQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIEBkZXNjcmlwdGlvbiBHdWFyZGEgbGEgcmVzZcOxYSBkZSB1biBwcm9kdWN0by5cbiAgICAqIEBwYXJhbSBjb2RlXG4gICAgKiBAcGFyYW0gZm9ybV9kYXRhXG4gICAgKiBAcmV0dXJuc1xuICAgICovXG4gICAgc2F2ZVJldmlld3MgPSAoY29kZTogc3RyaW5nLCBmb3JtX2RhdGE6IGFueSkgPT4gdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMuc2F2ZVByb2R1Y3RSZXZpZXdzQXBpKGNvZGUpLCBmb3JtX2RhdGEpXG5cblxuICAgIC8qKlxuICAgICAqIFJlY2liZSB1bmEgbGlzdGEgZGUgcHJvZHVjdG9zIHkgcmV0b3JuYSBsb3MgbWlzbW9zIHByb2R1Y3RvcyB0YW50YXMgdmVjZXMgY29tbyB2YXJpYW50ZXMgdGVuZ2EuXG4gICAgICogY2FkYSBwcm9kdWN0byByZXRvcm5hZG8gdGVuZHLDoSB1bmEgw7puaWNhIHZhcmlhbnRlLlxuICAgICAqIEBwYXJhbSBwcm9kdWN0cyAgQXJyYXkuIExpc3RhIGRlIHByb2R1Y3Rvcy5cbiAgICAgKiBAcGFyYW0gd2l0aE9wdGlvbiAndHlwZScgdGlwbyBkZSBvcGNpw7NuLCBjb2RlOiBjw7NkaWdvIGRlIGxhIG9wY2nDs24uICdkZWZhdWx0Rmlyc3RPcHRpb24nOiBlbiBjYXNvIGRlIHF1ZSBubyBzZSBwdWVkYSBkZXNkb2JsYXIgcG9yIGxhIG9wY2nDs24gaW5kaWNhZGEgc2kgZWwgdmFsb3IgZXMgdmVyZGFkZXJvIHNlIGludGVudGFyYSBkZXNkb2JsYXIgcG9yIGxhIHByaW1lcmEgb3BjacOzbiBhc29jaWFkYSBhbCBwcm9kdWN0by5cbiAgICAgKiAnY2hlY2tJZlN0b2NrJzogZW4gY2FzbyBkZSBxdWUgZXN0YSB2YWxvciBzZWEgdmVyZGFkZXJvIHNlIHJlYWxpemEgdW4gY29udHJvbCBkZSBxdWUgbGEgdmFyaWFudGVzIGN1ZW50ZW4gY29uIHN0b2NrIHBhcmEgc2VyIHVuIHByb2R1Y3RvIGRlc2RvYmxhZG8gcG9yIGxhIHZhcmlhbnRlLCBzaSBlbCB2YWxvciBlcyBmYWxzbyBubyBzZSByZWFsaXphIGRpY2hvIGNvbnRyb2wgeSBlbCBwcm9kdWN0byBzZSBkZXNkb2JsYXJhIGNvbiBzdG9jayBlbiAwLlxuICAgICAqIEByZXR1cm5zIGFycmVnbG8gY29uIGxvcyBwcm9kdWN0b3MgZGVzZG9ibGFkb3MgcG9yIGxhIG9wY2nDs24gc29saWNpdGFkYS5cbiAgICAgKiAob3BjacOzbiBwb3IgZGVmZWN0byBxdWUgc2UgaW50ZW50YSBoYWNlciBlbCBkZXNkb2JsYW1pZW50byAnY29sb3InLCBvIGJpZW4gc2kgZW4gbGUgcGFyw6FtZXRybyB3aXRoT3B0aW9uIGVsIGF0cmlidXRvICdkZWZhdWx0Rmlyc3RPcHRpb24nIGVzIHZlcmRhZGVybyBzZSBkZXNkb2JsYSBwb3IgbGEgcHJpbWVyYSBvcGNpw7NuIGFzb2NpYWRhIGFsIHByb2R1Y3RvKVxuICAgICAqL1xuICAgIGdldFByb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSAocHJvZHVjdHM6IFByb2R1Y3RbXSwgd2l0aE9wdGlvbjogUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9IHsgdHlwZTogJ2NvbG9yJywgY29kZTogJ2NvbG9yJywgZGVmYXVsdEZpcnN0T3B0aW9uOiBmYWxzZSwgY2hlY2tJZlN0b2NrOiB0cnVlIH0pID0+IHtcblxuICAgICAgICAhd2l0aE9wdGlvblsnY29kZSddICYmIHdpdGhPcHRpb25bJ3R5cGUnXSAmJiAod2l0aE9wdGlvblsnY29kZSddID0gd2l0aE9wdGlvblsndHlwZSddKSB8fCAhd2l0aE9wdGlvblsnY29kZSddICYmICh3aXRoT3B0aW9uWydjb2RlJ10gPSAnY29sb3InKVxuICAgICAgICAhd2l0aE9wdGlvblsndHlwZSddICYmIHdpdGhPcHRpb25bJ2NvZGUnXSAmJiAod2l0aE9wdGlvblsndHlwZSddID0gd2l0aE9wdGlvblsnY29kZSddKSB8fCAhd2l0aE9wdGlvblsndHlwZSddICYmICh3aXRoT3B0aW9uWyd0eXBlJ10gPSAnY29sb3InKVxuICAgICAgICAhd2l0aE9wdGlvbi5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdEZpcnN0T3B0aW9uJykgJiYgKHdpdGhPcHRpb25bJ2RlZmF1bHRGaXJzdE9wdGlvbiddID0gZmFsc2UpXG4gICAgICAgICF3aXRoT3B0aW9uLmhhc093blByb3BlcnR5KCdjaGVja0lmU3RvY2snKSAmJiAod2l0aE9wdGlvblsnY2hlY2tJZlN0b2NrJ10gPSB0cnVlKVxuXG4gICAgICAgIGxldCBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQ6IGFueVtdID0gW107XG4gICAgICAgIHByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgbGV0IHZhcmlhbnRzID0gWy4uLnByb2R1Y3Q/LnZhcmlhbnRzXTtcbiAgICAgICAgICAgIGxldCBvcHRpb24gPSBwcm9kdWN0Lm9wdGlvbnMuZmluZCgob3B0OiBhbnkpID0+IG9wdC50eXBlLnRvTG93ZXJDYXNlKCkgPT09IHdpdGhPcHRpb24udHlwZT8udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICBpZiAob3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlcy5mb3JFYWNoKChvcHRpb25WYWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZmllZF9wcm9kdWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9kdWN0KSk7XG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX3Byb2R1Y3Qub3B0aW9ucy5maW5kKChvcHRpb246IGFueSkgPT4gb3B0aW9uLnR5cGUudG9Mb3dlckNhc2UoKSA9PSB3aXRoT3B0aW9uLnR5cGU/LnRvTG93ZXJDYXNlKCkpLnZhbHVlcyA9IFt7IGNvZGU6IG9wdGlvblZhbHVlLmNvZGUsIG5hbWU6IG9wdGlvblZhbHVlLm5hbWUgfV07XG4gICAgICAgICAgICAgICAgICAgIC8vYnVzY28gdW5hIHZhcmlhbnRlIGNvbiBlc2UgY29kZSBwYXJhIGFzaWduYXJsZSBsYSBsaXN0YSBkZSBpbWFnZW5lc1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFyaWFudEF1eCA9IHZhcmlhbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0+ICgod2l0aE9wdGlvbi5jaGVja0lmU3RvY2sgJiYgdmFyaWFudC5zdG9jayA+IDApIHx8IHdpdGhPcHRpb24uY2hlY2tJZlN0b2NrID09IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHZhcmlhbnQub3B0aW9ucy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB2YXJpYW50Lm9wdGlvbnMuc29tZSgob3A6IGFueSkgPT4gKG9wLmhhc093blByb3BlcnR5KHdpdGhPcHRpb24uY29kZT8udG9Mb3dlckNhc2UoKSkgfHwgb3AuaGFzT3duUHJvcGVydHkod2l0aE9wdGlvbi5jb2RlPy50b1VwcGVyQ2FzZSgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKG9wW2Ake3dpdGhPcHRpb24uY29kZT8udG9Mb3dlckNhc2UoKX1gXSB8fCBvcFtgJHt3aXRoT3B0aW9uLmNvZGU/LnRvVXBwZXJDYXNlKCl9YF0pID09PSBvcHRpb25WYWx1ZS5jb2RlKVxuXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCItLS1cIix2YXJpYW50QXV4KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudEF1eCAmJiBwcm9kdWN0c1VuaXF1ZVZhcmlhbnQucHVzaCh0aGlzLnByb2R1Y3RXaXRoVmFyaWFudFZhbHVlcyhtb2RpZmllZF9wcm9kdWN0LCB2YXJpYW50QXV4LCBvcHRpb25WYWx1ZSkpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIHNlIG1vZGlmaWNhIGVsIGNhc28gcGFyYSBjdWFuZG8gc2UgdG9tYSBlbCBwcmltZXIgYG9wdGlvbmAgZGVsIHByb2R1Y3RvIHBhcmFcbiAgICAgICAgICAgICAgICAgKiBhcm1hciBsYSBsaXN0YSBkZSBwcm9kdWN0b3MgY29uIHZhcmlhbnRlcy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpZiAod2l0aE9wdGlvbi5kZWZhdWx0Rmlyc3RPcHRpb24gJiYgcHJvZHVjdC5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0T3B0aW9ucyA9IHByb2R1Y3Qub3B0aW9uc1swXVxuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lm9wdGlvbnNbMF0udmFsdWVzLmZvckVhY2goKG9wdGlvblZhbHVlOiBhbnkpID0+IHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmaWVkX3Byb2R1Y3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByb2R1Y3QpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkX3Byb2R1Y3Qub3B0aW9ucy5maW5kKChvcHRpb246IE9wdGlvbnMpID0+IG9wdGlvbi50eXBlID09IGZpcnN0T3B0aW9ucy50eXBlKS52YWx1ZXMgPSBbeyBjb2RlOiBvcHRpb25WYWx1ZS5jb2RlLCBuYW1lOiBvcHRpb25WYWx1ZS5uYW1lIH1dO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFyaWFudEF1eCA9IHZhcmlhbnRzLmZpbmQodmFyaWFudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhbnQub3B0aW9ucy5maW5kKChlbGVtOiBhbnkpID0+IGVsZW1bZmlyc3RPcHRpb25zLmNvZGVdID09IG9wdGlvblZhbHVlLmNvZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudEF1eCAmJiB2YXJpYW50QXV4LmltYWdlcy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRBdXguaW1hZ2VzID0gcHJvZHVjdC5waWN0dXJlc2RlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhPcHRpb24uY2hlY2tJZlN0b2NrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhcmlhbnRBdXggJiYgdmFyaWFudEF1eC5zdG9jayA+IDApID8gcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2godGhpcy5wcm9kdWN0V2l0aFZhcmlhbnRWYWx1ZXMobW9kaWZpZWRfcHJvZHVjdCwgdmFyaWFudEF1eCwgb3B0aW9uVmFsdWUpKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRBdXggJiYgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2godGhpcy5wcm9kdWN0V2l0aFZhcmlhbnRWYWx1ZXMobW9kaWZpZWRfcHJvZHVjdCwgdmFyaWFudEF1eCwgb3B0aW9uVmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHNVbmlxdWVWYXJpYW50LnB1c2gocHJvZHVjdClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RzVW5pcXVlVmFyaWFudC5sZW5ndGggPiAwID8gcHJvZHVjdHNVbmlxdWVWYXJpYW50IDogcHJvZHVjdHM7XG4gICAgfVxuXG4gICAgcHJvZHVjdFdpdGhWYXJpYW50VmFsdWVzID0gKHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmlhbnQ6IGFueSwgb3B0aW9uVmFsdWU6IGFueSkgPT4ge1xuICAgICAgICBwcm9kdWN0LnBpY3R1cmVzZGVmYXVsdCA9IFsuLi52YXJpYW50LmltYWdlc11cbiAgICAgICAgcHJvZHVjdC52YXJpYW50X2lkID0gdmFyaWFudC5jb2RlOyAvL2xvIGRlam8gYWNhIGhhc3RhIGFzZWd1cmFybm9zIGRlIHF1ZSBubyBzZSBlc3RhYmEgdXNhbmRvIGVuIG90cmEgcGFydGUuXG4gICAgICAgIHByb2R1Y3Quc3RvY2sgPSB2YXJpYW50LnN0b2NrIHx8IDA7IC8vbG8gZGVqbyBhY2EgaGFzdGEgYXNlZ3VyYXJub3MgZGUgcXVlIG5vIHNlIGVzdGFiYSB1c2FuZG8gZW4gb3RyYSBwYXJ0ZS5cbiAgICAgICAgcHJvZHVjdC5wcmljZSA9IHZhcmlhbnQucHJpY2UudG9TdHJpbmcoKSB8fCAnMCc7XG4gICAgICAgIHByb2R1Y3QuY3VycmVudE9wdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLm9wdGlvblZhbHVlLFxuICAgICAgICAgICAgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsXG4gICAgICAgICAgICB2YXJpYW50Q29kZTogdmFyaWFudC5jb2RlLFxuICAgICAgICAgICAgc3RvY2s6IHZhcmlhbnQuc3RvY2sgfHwgMCxcbiAgICAgICAgICAgIGZpbmFsUHJpY2U6IHZhcmlhbnQuc2FsZXByaWNlIHx8IHZhcmlhbnQucHJpY2UgfHwgMCxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvZHVjdFxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T2JqZWN0V2l0aFZhcmlhbnQgPSAoKTogUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25zdHMuZ2V0UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCgpXG4gICAgfVxuXG4gICAgZ2V0UmVsYXRlZFByb2R1Y3RzKHByb2R1Y3RfaWQ6IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5nZXQodGhpcy5yZWxhdGVkUHJvZHVjdHNBcGkocHJvZHVjdF9pZCkpO1xuICAgIH1cblxuICAgIGhhc1N0b2NrKHByb2R1Y3Q6IFByb2R1Y3QpOiBib29sZWFuIHtcbiAgICAgICAgLy8gU2kgZWwgcHJvZHVjdG8gdGllbmUgbGEgcHJvcGllZGFkICdzdG9jaycgeSBlcyBtYXlvciBhIDBcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9kdWN0LnN0b2NrID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIHByb2R1Y3Quc3RvY2sgPiAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNpIGVsIHByb2R1Y3RvIHRpZW5lIHZhcmlhbnRlcywgdmVyaWZpY2Egc2kgYWxndW5hIHRpZW5lIHN0b2NrXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb2R1Y3QudmFyaWFudHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvZHVjdC52YXJpYW50cy5zb21lKHZhcmlhbnQgPT4gdmFyaWFudC5zdG9jayA+IDApO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNpIG5vIHRpZW5lIGluZm9ybWFjacOzbiBkZSBzdG9jaywgYXN1bWltb3MgcXVlIG5vIGhheSBzdG9ja1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|