@snabcentr/client-core 3.21.0 → 3.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/catalog/dto/sc-product.d.ts +4 -0
- package/catalog/interfaces/sc-i-product.d.ts +4 -0
- package/config/sc-i-company-base-info.d.ts +9 -0
- package/esm2022/catalog/dto/sc-product.mjs +2 -1
- package/esm2022/catalog/interfaces/sc-i-product.mjs +1 -1
- package/esm2022/config/sc-i-company-base-info.mjs +1 -1
- package/esm2022/seo/classes/schema-org-factory.mjs +59 -30
- package/fesm2022/snabcentr-client-core.mjs +59 -29
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/package.json +1 -1
- package/release_notes.tmp +2 -4
- package/seo/classes/schema-org-factory.d.ts +11 -0
|
@@ -76,4 +76,13 @@ export interface ScICompanyBaseInfo {
|
|
|
76
76
|
*/
|
|
77
77
|
readonly phone: string;
|
|
78
78
|
};
|
|
79
|
+
/**
|
|
80
|
+
* Условия возврата товара.
|
|
81
|
+
*/
|
|
82
|
+
readonly returnPolicy?: {
|
|
83
|
+
/**
|
|
84
|
+
* Срок возврата товара в днях с момента получения.
|
|
85
|
+
*/
|
|
86
|
+
readonly returnDays: number;
|
|
87
|
+
};
|
|
79
88
|
}
|
|
@@ -38,6 +38,7 @@ export class ScProduct extends ScCatalogItem {
|
|
|
38
38
|
else {
|
|
39
39
|
this.image = data.images?.find((img) => img.isDefault)?.image ?? data.properties?.image;
|
|
40
40
|
this.supplierSku = data.supplierSku;
|
|
41
|
+
this.brand = data.brand;
|
|
41
42
|
this.cost = data.cost;
|
|
42
43
|
this.costRub = data.costRub;
|
|
43
44
|
this.costDate = data.costDate;
|
|
@@ -156,4 +157,4 @@ export class ScProduct extends ScCatalogItem {
|
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
159
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY2F0YWxvZy9kdG8vc2MtcHJvZHVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxhQUEwQjtJQXlIckQ7Ozs7O09BS0c7SUFDSCxZQUFtQixJQUF1QixFQUFFLE1BQWMsQ0FBQztRQUN2RCxLQUFLLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBMUM3Qjs7V0FFRztRQUNJLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFPakM7O1dBRUc7UUFDSSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBTy9COztXQUVHO1FBQ0ksbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFPdkM7O1dBRUc7UUFDSSx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFXeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUVmLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxV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Q0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUN4RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGtCQUFrQixDQUFDLFNBQXVCO1FBQzdDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDM0QsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQztRQUVuRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakQsT0FBTyxXQUFXLENBQUM7UUFDdkIsQ0FBQztRQUVELGtKQUFrSjtRQUNsSixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhHLFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDZixLQUFLLENBQUM7Z0JBQ0YsT0FBTyxlQUFlLENBQUM7WUFDM0IsS0FBSyxDQUFDO2dCQUNGLE9BQU8sY0FBYyxDQUFDO1lBQzFCLEtBQUssQ0FBQztnQkFDRixPQUFPLG1CQUFtQixDQUFDO1lBQy9CO2dCQUNJLE9BQU8sYUFBYSxXQUFXLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHVpRGF5IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5cbmltcG9ydCB7IFNjT3JkZXJJdGVtIH0gZnJvbSAnLi4vLi4vb3JkZXIvY2xhc3Nlcy9zYy1vcmRlci1pdGVtJztcbmltcG9ydCB7IFNjSUN1cnJlbmN5IH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcy9kdG8vc2MtaS1jdXJyZW5jeSc7XG5pbXBvcnQgeyBTY0lQcm9kdWN0VW5pdCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMvZHRvL3NjLWktcHJvZHVjdC11bml0JztcbmltcG9ydCB7IFNjSVdhcmVob3VzZVN0b2NrQ291bnQgfSBmcm9tICcuLi8uLi93YXJlaG91c2UvZHRvL3NjLWktd2FyZWhvdXNlLXN0b2NrLWNvdW50JztcbmltcG9ydCB7IFNjSVdhcmVob3VzZSB9IGZyb20gJy4uLy4uL3dhcmVob3VzZS9kdG8vc2Mtd2FyZWhvdXNlJztcbmltcG9ydCB7IFNjQ2F0YWxvZ0l0ZW0gfSBmcm9tICcuLi9jbGFzc2VzL3NjLWNhdGFsb2ctaXRlbSc7XG5pbXBvcnQgeyBTY0lDYXRlZ29yeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY0lQcm9kdWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLXByb2R1Y3QnO1xuaW1wb3J0IHsgU2NQcmljZUhpc3RvcnkgfSBmcm9tICcuLi90eXBlcy9zYy1wcmljZS1oaXN0b3J5JztcbmltcG9ydCB7IFNjQ2F0ZWdvcnkgfSBmcm9tICcuL3NjLWNhdGVnb3J5JztcbmltcG9ydCB7IFNjSURpc2NvdW50IH0gZnJvbSAnLi9zYy1pLWRpc2NvdW50JztcbmltcG9ydCB7IFNjSVByb2R1Y3RJbWFnZXMgfSBmcm9tICcuL3NjLWktcHJvZHVjdC1pbWFnZXMnO1xuXG4vKipcbiAqINCc0L7QtNC10LvRjCDQtNCw0L3QvdGL0YUg0YLQvtCy0LDRgNCwL9GD0YHQu9GD0LPQuC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNjUHJvZHVjdCBleHRlbmRzIFNjQ2F0YWxvZ0l0ZW08U2NJQ2F0ZWdvcnk+IGltcGxlbWVudHMgU2NJUHJvZHVjdCB7XG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNIaWRkZW46IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBzdXBwbGllclNrdT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINChQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgY29zdD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIGNvc3RSdWI/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBjb3N0RGF0ZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIGN1cnJlbmN5OiBTY0lDdXJyZW5jeTtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIHVuaXQ6IFNjSVByb2R1Y3RVbml0O1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgbWluQ291bnQ/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBzdG9ja0NvdW50PzogU2NJV2FyZWhvdXNlU3RvY2tDb3VudFtdO1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgb25PcmRlcj86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBwYWNrPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNGYXZvcml0ZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIGlzUHJldmlvdXNseU9yZGVyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VzPzogcmVhZG9ubHkgU2NJUHJvZHVjdEltYWdlc1tdO1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgY2F0ZWdvcmllczogU2NJQ2F0ZWdvcnlbXTtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIGRpc2NvdW50PzogU2NJRGlzY291bnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBwcmltYXJ5Q2F0ZWdvcnk/OiBTY0lDYXRlZ29yeTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC90LDQu9C40YfQuNGPINC40LfQvtCx0YDQsNC20LXQvdC40Y8g0YMg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCINGN0LvQtdC80LXQvdGC0LAg0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgcHVibGljIGNhcnRJdGVtPzogU2NPcmRlckl0ZW07XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGC0L7QstCw0YAg0L7RgtGB0YPRgtGB0YLQstGD0LXRgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNOdWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0YDRj9C00L7QuiDRgdC70LXQtNC+0LLQsNC90LjRjyDRgtC+0LLQsNGA0LAg0LIg0YHQv9C40YHQutC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBvcmQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0YLQvtCy0LDRgCDRgdC60YDRi9C70Lgg0YTQuNC70YzRgtGA0L7QvC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNIaWRkZW5GaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCY0YHRgtC+0YDQuNGPINC40LfQvNC10L3QtdC90LjRjyDRhtC10L3RiyDRgtC+0LLQsNGA0LAg0LjQu9C4INGD0YHQu9GD0LPQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHJpY2VIaXN0b3J5PzogU2NQcmljZUhpc3Rvcnk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDQuNCz0L3QvtGA0LjRgNC+0LLQsNGC0Ywg0L/RgNC+0LLQtdGA0LrRgyDQvNC40L3QuNC80LDQu9GM0L3QvtCz0L4g0LrQvtC70LjRh9C10YHRgtCy0LAg0Lgg0LrRgNCw0YLQvdC+0YHRgtC4INC/0YDQuCDQtNC+0LHQsNCy0LvQtdC90LjQuCDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90YMg0Lgg0YHQvtC30LTQsNC90LjQuCDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIGlnbm9yZU1pbkNvdW50Q2hlY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQcm9kdWN0fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhINCU0LDQvdC90YvQtSDQviDQv9GA0L7QtNGD0LrRgtC1LlxuICAgICAqIEBwYXJhbSBvcmQg0J/QvtGA0Y/QtNC+0Log0YHQu9C10LTQvtCy0LDQvdC40Y8g0L/RgNC+0LTRg9C60YLQsCDQsiDRgdC/0LjRgdC60LUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGE6IFNjSVByb2R1Y3QgfCBudWxsLCBvcmQ6IG51bWJlciA9IDApIHtcbiAgICAgICAgc3VwZXIoZGF0YSA/PyB1bmRlZmluZWQpO1xuXG4gICAgICAgIHRoaXMuaXNIaWRkZW4gPSBkYXRhPy5pc0hpZGRlbiA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5vcmQgPSBvcmQ7XG5cbiAgICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaXNOdWxsID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2UgPSBkYXRhLmltYWdlcz8uZmluZCgoaW1nKSA9PiBpbWcuaXNEZWZhdWx0KT8uaW1hZ2UgPz8gZGF0YS5wcm9wZXJ0aWVzPy5pbWFnZTtcblxuICAgICAgICAgICAgdGhpcy5zdXBwbGllclNrdSA9IGRhdGEuc3VwcGxpZXJTa3U7XG4gICAgICAgICAgICB0aGlzLmNvc3QgPSBkYXRhLmNvc3Q7XG4gICAgICAgICAgICB0aGlzLmNvc3RSdWIgPSBkYXRhLmNvc3RSdWI7XG4gICAgICAgICAgICB0aGlzLmNvc3REYXRlID0gZGF0YS5jb3N0RGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSBkYXRhLmN1cnJlbmN5O1xuICAgICAgICAgICAgdGhpcy51bml0ID0gZGF0YS51bml0O1xuICAgICAgICAgICAgdGhpcy5taW5Db3VudCA9IGRhdGEubWluQ291bnQ7XG4gICAgICAgICAgICB0aGlzLnN0b2NrQ291bnQgPSBkYXRhLnN0b2NrQ291bnQ7XG4gICAgICAgICAgICB0aGlzLm9uT3JkZXIgPSBkYXRhLm9uT3JkZXI7XG4gICAgICAgICAgICB0aGlzLnBhY2sgPSBkYXRhLnBhY2s7XG4gICAgICAgICAgICB0aGlzLmlzRmF2b3JpdGUgPSBCb29sZWFuKGRhdGEuaXNGYXZvcml0ZSk7XG4gICAgICAgICAgICB0aGlzLmlzUHJldmlvdXNseU9yZGVyZWQgPSBkYXRhLmlzUHJldmlvdXNseU9yZGVyZWQ7XG4gICAgICAgICAgICB0aGlzLmhhc0ltYWdlID0gKGRhdGEuaW1hZ2VzICYmIGRhdGEuaW1hZ2VzLmxlbmd0aCA+IDApID8/IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5pbWFnZXMgPSBkYXRhLmltYWdlcz8uc2xpY2UoKS5zb3J0KChpbWcxLCBpbWcyKSA9PiBOdW1iZXIoaW1nMi5pc0RlZmF1bHQpIC0gTnVtYmVyKGltZzEuaXNEZWZhdWx0KSk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBkYXRhLmNhdGVnb3JpZXMubWFwKChjYXRlZ29yeSkgPT4gbmV3IFNjQ2F0ZWdvcnkoY2F0ZWdvcnkpKTtcbiAgICAgICAgICAgIHRoaXMucHJpbWFyeUNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yaWVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNQcmltYXJ5KTtcbiAgICAgICAgICAgIHRoaXMuaWdub3JlTWluQ291bnRDaGVjayA9IGRhdGEucHJvcGVydGllcz8uaWdub3JlTWluQ291bnRDaGVjayA/PyB0aGlzLnByb3BlcnRpZXM/Lmlnbm9yZU1pbkNvdW50Q2hlY2sgPz8gdGhpcy5pZ25vcmVNaW5Db3VudENoZWNrO1xuICAgICAgICAgICAgdGhpcy5kaXNjb3VudCA9IGRhdGEuZGlzY291bnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodGC0L7QuNC80L7RgdGC0Ywg0YLQvtCy0LDRgNCwINC40LvQuCDRg9GB0LvRg9Cz0Lgg0YEg0LLQsNC70Y7RgtC+0Lkg0Lgg0LXQtNC40L3QuNGG0LXQuSDQuNC30LzQtdGA0LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb3N0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvc3QgPyBgJHt0aGlzLmNvc3QudG9Mb2NhbGVTdHJpbmcoKX0gJHt0aGlzLmN1cnJlbmN5LnN5bWJvbH0gLyAke3RoaXMudW5pdC5uYW1lfWAgOiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodGC0L7QuNC80L7RgdGC0Ywg0YLQvtCy0LDRgNCwINC40LvQuCDRg9GB0LvRg9Cz0Lgg0LIg0YDRg9Cx0LvRj9GFINC4INGBINC10LTQuNC90LjRhtC10Lkg0LjQt9C80LXRgNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29zdFJ1YlN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3N0UnViID8gYCR7dGhpcy5jb3N0UnViLnRvTG9jYWxlU3RyaW5nKCl9IOKCvSAvICR7dGhpcy51bml0Lm5hbWV9YCA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0YLQvtC40LzQvtGB0YLRjCDRgtC+0LLQsNGA0LAg0LjQu9C4INGD0YHQu9GD0LPQuCDRgSDQstCw0LvRjtGC0L7QuSDQuCDQtdC00LjQvdC40YbQtdC5INC40LfQvNC10YDQtdC90LjRjyDQtNC+INC/0YDQuNC80LXQvdC10L3QuNGPINGB0LrQuNC00LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGRpc2NvdW50Q29zdFN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNjb3VudD8ub2xkQ29zdCA/IGAke3RoaXMuZGlzY291bnQub2xkQ29zdC50b0xvY2FsZVN0cmluZygpfSAke3RoaXMuY3VycmVuY3kuc3ltYm9sfSAvICR7dGhpcy51bml0Lm5hbWV9YCA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0YLQvtCy0LDRgCDQv9GA0L7QtNCw0ZHRgtGB0Y8g0LIg0YDRg9Cx0LvRj9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJpY2VJblJ1YigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVuY3kuc3ltYm9sID09PSAn4oK9JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9C10YDQstC+0LUg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDRgtC+0LLQsNGA0LAuINCV0YHQu9C4INC40LfQvtCx0YDQsNC20LXQvdC40Lkg0L3QtdGCLCDRgtC+INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIHVuZGVmaW5lZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbWdJbmRleCDQmNC90LTQtdC60YEg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQsiDQvNCw0YHRgdC40LLQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SW1hZ2UoaW1nSW5kZXg6IG51bWJlciA9IDApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZXM/LltgJHtpbWdJbmRleH1gXS5pbWFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvtGB0L3QvtCy0L3QvtC1INC40LfQvtCx0YDQsNC20LXQvdC40LUg0YLQvtCy0LDRgNCwINCyINGE0L7RgNC80LDRgtC1IFdlYlAuINCV0YHQu9C4IFdlYlAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvdC10YIsINGC0L4g0LLQvtC30LLRgNCw0YnQsNC10YIgdW5kZWZpbmVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGltZ0luZGV4INCY0L3QtNC10LrRgSDQuNC30L7QsdGA0LDQttC10L3QuNGPINCyINC80LDRgdGB0LjQstC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJbWFnZVdlYnAoaW1nSW5kZXg6IG51bWJlciA9IDApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZXM/LltgJHtpbWdJbmRleH1gXS5pbWFnZVdlYnA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/QtdGA0LLQvtC1INC/0YDQtdCy0YzRji3QuNC30L7QsdGA0LDQttC10L3QuNC1INGC0L7QstCw0YDQsC4g0JXRgdC70Lgg0L/RgNC10LLRjNGOLdC40LfQvtCx0YDQsNC20LXQvdC40Lkg0L3QtdGCLCDRgtC+INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIHVuZGVmaW5lZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbWdJbmRleCDQmNC90LTQtdC60YEg0L/RgNC10LLRjNGOLdC40LfQvtCx0YDQsNC20LXQvdC40Y8g0LIg0LzQsNGB0YHQuNCy0LUuXG4gICAgICovXG4gICAgcHVibGljIGdldEltYWdlUHJldmlldyhpbWdJbmRleDogbnVtYmVyID0gMCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmltYWdlcz8uW2Ake2ltZ0luZGV4fWBdLnByZXZpZXc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC10LLRjNGOLdC40LfQvtCx0YDQsNC20LXQvdC40LUg0YLQvtCy0LDRgNCwINCyINGE0L7RgNC80LDRgtC1IFdlYlAuINCV0YHQu9C4IFdlYlAg0L/RgNC10LLRjNGOINC90LXRgiwg0YLQviDQstC+0LfQstGA0LDRidCw0LXRgiB1bmRlZmluZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1nSW5kZXgg0JjQvdC00LXQutGBINC/0YDQtdCy0YzRji3QuNC30L7QsdGA0LDQttC10L3QuNGPINCyINC80LDRgdGB0LjQstC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJbWFnZVByZXZpZXdXZWJwKGltZ0luZGV4OiBudW1iZXIgPSAwKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VzPy5bYCR7aW1nSW5kZXh9YF0ucHJldmlld1dlYnA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YLQvtCy0LDRgNCwINC90LAg0YHQutC70LDQtNC1ICjQvtGB0YLQsNGC0L7QuikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2FyZWhvdXNlSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YHQutC70LDQtNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXYXJlaG91c2VTdG9ja0NvdW50KHdhcmVob3VzZUlkOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9ja0NvdW50Py5maW5kKChzYykgPT4gc2Mud2FyZWhvdXNlSWQgPT09IHdhcmVob3VzZUlkKT8uY291bnQgPz8gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiwg0YfRgtC+INC40LzQtdC10YLRgdGPINC+0YHRgtCw0YLQvtC6INGC0L7QstCw0YDQsCDQvdCwINGB0LrQu9Cw0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3YXJlaG91c2VJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdC60LvQsNC00LAuXG4gICAgICovXG4gICAgcHVibGljIGlzV2FyZWhvdXNlU3RvY2tFeGlzdCh3YXJlaG91c2VJZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5vbk9yZGVyICYmIHRoaXMuc3RvY2tDb3VudD8uZmluZCgoc2MpID0+IHNjLndhcmVob3VzZUlkID09PSB3YXJlaG91c2VJZCkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC+0L7QsdGJ0LXQvdC40LUg0L7QsSDQvtGC0YHRg9GC0YHRgtCy0LjQuCDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2FyZWhvdXNlINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0LrQu9Cw0LTQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Tm90U3RvY2tNZXNzYWdlKHdhcmVob3VzZTogU2NJV2FyZWhvdXNlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMub25PcmRlciA/PyB0aGlzLmlzV2FyZWhvdXNlU3RvY2tFeGlzdCh3YXJlaG91c2UuaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGxhbmluZ0RhdGUgPSB0aGlzLnByb3BlcnRpZXM/LnBsYW5pbmdJbmNvbWluZ0RhdGUgPz8gdGhpcy5wcm9wZXJ0aWVzPy5wbGFuaW5nUHJvZHVjdGlvbkRhdGU7XG5cbiAgICAgICAgaWYgKCF3YXJlaG91c2UuaXNNYWluIHx8IHBsYW5pbmdEYXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAn0KDQsNGB0LrRg9C/0LjQu9C4JztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnQsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsXG4gICAgICAgIGNvbnN0IGRheXNEaWZmID0gVHVpRGF5Lmxlbmd0aEJldHdlZW4oVHVpRGF5LmN1cnJlbnRMb2NhbCgpLCBUdWlEYXkubm9ybWFsaXplUGFyc2UocGxhbmluZ0RhdGUsICdETVknKSk7XG5cbiAgICAgICAgc3dpdGNoIChkYXlzRGlmZikge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiAn0JHRg9C00LXRgiDRgdC10LPQvtC00L3Rjyc7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQkdGD0LTQtdGCINC30LDQstGC0YDQsCc7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQkdGD0LTQtdGCINC/0L7RgdC70LXQt9Cw0LLRgtGA0LAnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCe0LbQuNC00LDQtdGC0YHRjyAke3BsYW5pbmdEYXRlfWA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY2F0YWxvZy9kdG8vc2MtcHJvZHVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxhQUEwQjtJQThIckQ7Ozs7O09BS0c7SUFDSCxZQUFtQixJQUF1QixFQUFFLE1BQWMsQ0FBQztRQUN2RCxLQUFLLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBMUM3Qjs7V0FFRztRQUNJLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFPakM7O1dBRUc7UUFDSSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBTy9COztXQUVHO1FBQ0ksbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFPdkM7O1dBRUc7UUFDSSx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFXeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUVmLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxV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QUFtQjtRQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsS0FBSyxTQUFTLENBQUM7SUFDeEcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0IsQ0FBQyxTQUF1QjtRQUM3QyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzNELE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLG1CQUFtQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUscUJBQXFCLENBQUM7UUFFbkcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxrSkFBa0o7UUFDbEosTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV4RyxRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDO2dCQUNGLE9BQU8sZUFBZSxDQUFDO1lBQzNCLEtBQUssQ0FBQztnQkFDRixPQUFPLGNBQWMsQ0FBQztZQUMxQixLQUFLLENBQUM7Z0JBQ0YsT0FBTyxtQkFBbUIsQ0FBQztZQUMvQjtnQkFDSSxPQUFPLGFBQWEsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR1aURheSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuXG5pbXBvcnQgeyBTY09yZGVySXRlbSB9IGZyb20gJy4uLy4uL29yZGVyL2NsYXNzZXMvc2Mtb3JkZXItaXRlbSc7XG5pbXBvcnQgeyBTY0lDdXJyZW5jeSB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZXMvZHRvL3NjLWktY3VycmVuY3knO1xuaW1wb3J0IHsgU2NJUHJvZHVjdFVuaXQgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzL2R0by9zYy1pLXByb2R1Y3QtdW5pdCc7XG5pbXBvcnQgeyBTY0lXYXJlaG91c2VTdG9ja0NvdW50IH0gZnJvbSAnLi4vLi4vd2FyZWhvdXNlL2R0by9zYy1pLXdhcmVob3VzZS1zdG9jay1jb3VudCc7XG5pbXBvcnQgeyBTY0lXYXJlaG91c2UgfSBmcm9tICcuLi8uLi93YXJlaG91c2UvZHRvL3NjLXdhcmVob3VzZSc7XG5pbXBvcnQgeyBTY0NhdGFsb2dJdGVtIH0gZnJvbSAnLi4vY2xhc3Nlcy9zYy1jYXRhbG9nLWl0ZW0nO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1wcm9kdWN0JztcbmltcG9ydCB7IFNjUHJpY2VIaXN0b3J5IH0gZnJvbSAnLi4vdHlwZXMvc2MtcHJpY2UtaGlzdG9yeSc7XG5pbXBvcnQgeyBTY0NhdGVnb3J5IH0gZnJvbSAnLi9zYy1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY0lEaXNjb3VudCB9IGZyb20gJy4vc2MtaS1kaXNjb3VudCc7XG5pbXBvcnQgeyBTY0lQcm9kdWN0SW1hZ2VzIH0gZnJvbSAnLi9zYy1pLXByb2R1Y3QtaW1hZ2VzJztcblxuLyoqXG4gKiDQnNC+0LTQtdC70Ywg0LTQsNC90L3Ri9GFINGC0L7QstCw0YDQsC/Rg9GB0LvRg9Cz0LguXG4gKi9cbmV4cG9ydCBjbGFzcyBTY1Byb2R1Y3QgZXh0ZW5kcyBTY0NhdGFsb2dJdGVtPFNjSUNhdGVnb3J5PiBpbXBsZW1lbnRzIFNjSVByb2R1Y3Qge1xuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIGlzSGlkZGVuOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgc3VwcGxpZXJTa3U/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBicmFuZD86IHN0cmluZyB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiDQoUBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIGNvc3Q/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBjb3N0UnViPzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgY29zdERhdGU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBjdXJyZW5jeTogU2NJQ3VycmVuY3k7XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyB1bml0OiBTY0lQcm9kdWN0VW5pdDtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIG1pbkNvdW50PzogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RvY2tDb3VudD86IFNjSVdhcmVob3VzZVN0b2NrQ291bnRbXTtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIG9uT3JkZXI/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgcGFjaz86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIGlzRmF2b3JpdGU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBpc1ByZXZpb3VzbHlPcmRlcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGltYWdlcz86IHJlYWRvbmx5IFNjSVByb2R1Y3RJbWFnZXNbXTtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIGNhdGVnb3JpZXM6IFNjSUNhdGVnb3J5W107XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHB1YmxpYyBkaXNjb3VudD86IFNjSURpc2NvdW50O1xuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJpbWFyeUNhdGVnb3J5PzogU2NJQ2F0ZWdvcnk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDQvdCw0LvQuNGH0LjRjyDQuNC30L7QsdGA0LDQttC10L3QuNGPINGDINGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzSW1hZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LrRgiDRjdC70LXQvNC10L3RgtCwINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBjYXJ0SXRlbT86IFNjT3JkZXJJdGVtO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDRgtC+0LLQsNGAINC+0YLRgdGD0YLRgdGC0LLRg9C10YIuXG4gICAgICovXG4gICAgcHVibGljIGlzTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0J/QvtGA0Y/QtNC+0Log0YHQu9C10LTQvtCy0LDQvdC40Y8g0YLQvtCy0LDRgNCwINCyINGB0L/QuNGB0LrQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3JkOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0YfRgtC+INGC0L7QstCw0YAg0YHQutGA0YvQu9C4INGE0LjQu9GM0YLRgNC+0LwuXG4gICAgICovXG4gICAgcHVibGljIGlzSGlkZGVuRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQmNGB0YLQvtGA0LjRjyDQuNC30LzQtdC90LXQvdC40Y8g0YbQtdC90Ysg0YLQvtCy0LDRgNCwINC40LvQuCDRg9GB0LvRg9Cz0LguXG4gICAgICovXG4gICAgcHVibGljIHByaWNlSGlzdG9yeT86IFNjUHJpY2VIaXN0b3J5O1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0LjQs9C90L7RgNC40YDQvtCy0LDRgtGMINC/0YDQvtCy0LXRgNC60YMg0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+INC60L7Qu9C40YfQtdGB0YLQstCwINC4INC60YDQsNGC0L3QvtGB0YLQuCDQv9GA0Lgg0LTQvtCx0LDQstC70LXQvdC40Lgg0YLQvtCy0LDRgNCwINCyINC60L7RgNC30LjQvdGDINC4INGB0L7Qt9C00LDQvdC40Lgg0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIHB1YmxpYyBpZ25vcmVNaW5Db3VudENoZWNrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjUHJvZHVjdH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSDQlNCw0L3QvdGL0LUg0L4g0L/RgNC+0LTRg9C60YLQtS5cbiAgICAgKiBAcGFyYW0gb3JkINCf0L7RgNGP0LTQvtC6INGB0LvQtdC00L7QstCw0L3QuNGPINC/0YDQvtC00YPQutGC0LAg0LIg0YHQv9C40YHQutC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRhOiBTY0lQcm9kdWN0IHwgbnVsbCwgb3JkOiBudW1iZXIgPSAwKSB7XG4gICAgICAgIHN1cGVyKGRhdGEgPz8gdW5kZWZpbmVkKTtcblxuICAgICAgICB0aGlzLmlzSGlkZGVuID0gZGF0YT8uaXNIaWRkZW4gPz8gZmFsc2U7XG4gICAgICAgIHRoaXMub3JkID0gb3JkO1xuXG4gICAgICAgIGlmIChkYXRhID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlzTnVsbCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAn0KLQvtCy0LDRgCDQvdC1INC90LDQudC00LXQvSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gZGF0YS5pbWFnZXM/LmZpbmQoKGltZykgPT4gaW1nLmlzRGVmYXVsdCk/LmltYWdlID8/IGRhdGEucHJvcGVydGllcz8uaW1hZ2U7XG5cbiAgICAgICAgICAgIHRoaXMuc3VwcGxpZXJTa3UgPSBkYXRhLnN1cHBsaWVyU2t1O1xuICAgICAgICAgICAgdGhpcy5icmFuZCA9IGRhdGEuYnJhbmQ7XG4gICAgICAgICAgICB0aGlzLmNvc3QgPSBkYXRhLmNvc3Q7XG4gICAgICAgICAgICB0aGlzLmNvc3RSdWIgPSBkYXRhLmNvc3RSdWI7XG4gICAgICAgICAgICB0aGlzLmNvc3REYXRlID0gZGF0YS5jb3N0RGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3kgPSBkYXRhLmN1cnJlbmN5O1xuICAgICAgICAgICAgdGhpcy51bml0ID0gZGF0YS51bml0O1xuICAgICAgICAgICAgdGhpcy5taW5Db3VudCA9IGRhdGEubWluQ291bnQ7XG4gICAgICAgICAgICB0aGlzLnN0b2NrQ291bnQgPSBkYXRhLnN0b2NrQ291bnQ7XG4gICAgICAgICAgICB0aGlzLm9uT3JkZXIgPSBkYXRhLm9uT3JkZXI7XG4gICAgICAgICAgICB0aGlzLnBhY2sgPSBkYXRhLnBhY2s7XG4gICAgICAgICAgICB0aGlzLmlzRmF2b3JpdGUgPSBCb29sZWFuKGRhdGEuaXNGYXZvcml0ZSk7XG4gICAgICAgICAgICB0aGlzLmlzUHJldmlvdXNseU9yZGVyZWQgPSBkYXRhLmlzUHJldmlvdXNseU9yZGVyZWQ7XG4gICAgICAgICAgICB0aGlzLmhhc0ltYWdlID0gKGRhdGEuaW1hZ2VzICYmIGRhdGEuaW1hZ2VzLmxlbmd0aCA+IDApID8/IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5pbWFnZXMgPSBkYXRhLmltYWdlcz8uc2xpY2UoKS5zb3J0KChpbWcxLCBpbWcyKSA9PiBOdW1iZXIoaW1nMi5pc0RlZmF1bHQpIC0gTnVtYmVyKGltZzEuaXNEZWZhdWx0KSk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBkYXRhLmNhdGVnb3JpZXMubWFwKChjYXRlZ29yeSkgPT4gbmV3IFNjQ2F0ZWdvcnkoY2F0ZWdvcnkpKTtcbiAgICAgICAgICAgIHRoaXMucHJpbWFyeUNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yaWVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNQcmltYXJ5KTtcbiAgICAgICAgICAgIHRoaXMuaWdub3JlTWluQ291bnRDaGVjayA9IGRhdGEucHJvcGVydGllcz8uaWdub3JlTWluQ291bnRDaGVjayA/PyB0aGlzLnByb3BlcnRpZXM/Lmlnbm9yZU1pbkNvdW50Q2hlY2sgPz8gdGhpcy5pZ25vcmVNaW5Db3VudENoZWNrO1xuICAgICAgICAgICAgdGhpcy5kaXNjb3VudCA9IGRhdGEuZGlzY291bnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodGC0L7QuNC80L7RgdGC0Ywg0YLQvtCy0LDRgNCwINC40LvQuCDRg9GB0LvRg9Cz0Lgg0YEg0LLQsNC70Y7RgtC+0Lkg0Lgg0LXQtNC40L3QuNGG0LXQuSDQuNC30LzQtdGA0LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb3N0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvc3QgPyBgJHt0aGlzLmNvc3QudG9Mb2NhbGVTdHJpbmcoKX0gJHt0aGlzLmN1cnJlbmN5LnN5bWJvbH0gLyAke3RoaXMudW5pdC5uYW1lfWAgOiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodGC0L7QuNC80L7RgdGC0Ywg0YLQvtCy0LDRgNCwINC40LvQuCDRg9GB0LvRg9Cz0Lgg0LIg0YDRg9Cx0LvRj9GFINC4INGBINC10LTQuNC90LjRhtC10Lkg0LjQt9C80LXRgNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29zdFJ1YlN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3N0UnViID8gYCR7dGhpcy5jb3N0UnViLnRvTG9jYWxlU3RyaW5nKCl9IOKCvSAvICR7dGhpcy51bml0Lm5hbWV9YCA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0YLQvtC40LzQvtGB0YLRjCDRgtC+0LLQsNGA0LAg0LjQu9C4INGD0YHQu9GD0LPQuCDRgSDQstCw0LvRjtGC0L7QuSDQuCDQtdC00LjQvdC40YbQtdC5INC40LfQvNC10YDQtdC90LjRjyDQtNC+INC/0YDQuNC80LXQvdC10L3QuNGPINGB0LrQuNC00LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGRpc2NvdW50Q29zdFN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNjb3VudD8ub2xkQ29zdCA/IGAke3RoaXMuZGlzY291bnQub2xkQ29zdC50b0xvY2FsZVN0cmluZygpfSAke3RoaXMuY3VycmVuY3kuc3ltYm9sfSAvICR7dGhpcy51bml0Lm5hbWV9YCA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0YLQvtCy0LDRgCDQv9GA0L7QtNCw0ZHRgtGB0Y8g0LIg0YDRg9Cx0LvRj9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJpY2VJblJ1YigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVuY3kuc3ltYm9sID09PSAn4oK9JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9C10YDQstC+0LUg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDRgtC+0LLQsNGA0LAuINCV0YHQu9C4INC40LfQvtCx0YDQsNC20LXQvdC40Lkg0L3QtdGCLCDRgtC+INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIHVuZGVmaW5lZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbWdJbmRleCDQmNC90LTQtdC60YEg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQsiDQvNCw0YHRgdC40LLQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SW1hZ2UoaW1nSW5kZXg6IG51bWJlciA9IDApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZXM/LltgJHtpbWdJbmRleH1gXS5pbWFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvtGB0L3QvtCy0L3QvtC1INC40LfQvtCx0YDQsNC20LXQvdC40LUg0YLQvtCy0LDRgNCwINCyINGE0L7RgNC80LDRgtC1IFdlYlAuINCV0YHQu9C4IFdlYlAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvdC10YIsINGC0L4g0LLQvtC30LLRgNCw0YnQsNC10YIgdW5kZWZpbmVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGltZ0luZGV4INCY0L3QtNC10LrRgSDQuNC30L7QsdGA0LDQttC10L3QuNGPINCyINC80LDRgdGB0LjQstC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJbWFnZVdlYnAoaW1nSW5kZXg6IG51bWJlciA9IDApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZXM/LltgJHtpbWdJbmRleH1gXS5pbWFnZVdlYnA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/QtdGA0LLQvtC1INC/0YDQtdCy0YzRji3QuNC30L7QsdGA0LDQttC10L3QuNC1INGC0L7QstCw0YDQsC4g0JXRgdC70Lgg0L/RgNC10LLRjNGOLdC40LfQvtCx0YDQsNC20LXQvdC40Lkg0L3QtdGCLCDRgtC+INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCIHVuZGVmaW5lZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbWdJbmRleCDQmNC90LTQtdC60YEg0L/RgNC10LLRjNGOLdC40LfQvtCx0YDQsNC20LXQvdC40Y8g0LIg0LzQsNGB0YHQuNCy0LUuXG4gICAgICovXG4gICAgcHVibGljIGdldEltYWdlUHJldmlldyhpbWdJbmRleDogbnVtYmVyID0gMCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmltYWdlcz8uW2Ake2ltZ0luZGV4fWBdLnByZXZpZXc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC10LLRjNGOLdC40LfQvtCx0YDQsNC20LXQvdC40LUg0YLQvtCy0LDRgNCwINCyINGE0L7RgNC80LDRgtC1IFdlYlAuINCV0YHQu9C4IFdlYlAg0L/RgNC10LLRjNGOINC90LXRgiwg0YLQviDQstC+0LfQstGA0LDRidCw0LXRgiB1bmRlZmluZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1nSW5kZXgg0JjQvdC00LXQutGBINC/0YDQtdCy0YzRji3QuNC30L7QsdGA0LDQttC10L3QuNGPINCyINC80LDRgdGB0LjQstC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJbWFnZVByZXZpZXdXZWJwKGltZ0luZGV4OiBudW1iZXIgPSAwKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VzPy5bYCR7aW1nSW5kZXh9YF0ucHJldmlld1dlYnA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YLQvtCy0LDRgNCwINC90LAg0YHQutC70LDQtNC1ICjQvtGB0YLQsNGC0L7QuikuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2FyZWhvdXNlSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YHQutC70LDQtNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXYXJlaG91c2VTdG9ja0NvdW50KHdhcmVob3VzZUlkOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9ja0NvdW50Py5maW5kKChzYykgPT4gc2Mud2FyZWhvdXNlSWQgPT09IHdhcmVob3VzZUlkKT8uY291bnQgPz8gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiwg0YfRgtC+INC40LzQtdC10YLRgdGPINC+0YHRgtCw0YLQvtC6INGC0L7QstCw0YDQsCDQvdCwINGB0LrQu9Cw0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3YXJlaG91c2VJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdC60LvQsNC00LAuXG4gICAgICovXG4gICAgcHVibGljIGlzV2FyZWhvdXNlU3RvY2tFeGlzdCh3YXJlaG91c2VJZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5vbk9yZGVyICYmIHRoaXMuc3RvY2tDb3VudD8uZmluZCgoc2MpID0+IHNjLndhcmVob3VzZUlkID09PSB3YXJlaG91c2VJZCkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC+0L7QsdGJ0LXQvdC40LUg0L7QsSDQvtGC0YHRg9GC0YHRgtCy0LjQuCDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2FyZWhvdXNlINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0LrQu9Cw0LTQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Tm90U3RvY2tNZXNzYWdlKHdhcmVob3VzZTogU2NJV2FyZWhvdXNlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMub25PcmRlciA/PyB0aGlzLmlzV2FyZWhvdXNlU3RvY2tFeGlzdCh3YXJlaG91c2UuaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGxhbmluZ0RhdGUgPSB0aGlzLnByb3BlcnRpZXM/LnBsYW5pbmdJbmNvbWluZ0RhdGUgPz8gdGhpcy5wcm9wZXJ0aWVzPy5wbGFuaW5nUHJvZHVjdGlvbkRhdGU7XG5cbiAgICAgICAgaWYgKCF3YXJlaG91c2UuaXNNYWluIHx8IHBsYW5pbmdEYXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAn0KDQsNGB0LrRg9C/0LjQu9C4JztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnQsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsXG4gICAgICAgIGNvbnN0IGRheXNEaWZmID0gVHVpRGF5Lmxlbmd0aEJldHdlZW4oVHVpRGF5LmN1cnJlbnRMb2NhbCgpLCBUdWlEYXkubm9ybWFsaXplUGFyc2UocGxhbmluZ0RhdGUsICdETVknKSk7XG5cbiAgICAgICAgc3dpdGNoIChkYXlzRGlmZikge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiAn0JHRg9C00LXRgiDRgdC10LPQvtC00L3Rjyc7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQkdGD0LTQtdGCINC30LDQstGC0YDQsCc7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICfQkdGD0LTQtdGCINC/0L7RgdC70LXQt9Cw0LLRgtGA0LAnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYNCe0LbQuNC00LDQtdGC0YHRjyAke3BsYW5pbmdEYXRlfWA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/* TODO: Вынести в internal после переноса в библиотеку CatalogService - TASK[#6433], ConfiguratorService - TASK[#6434], FavoriteService - TASK[#6435] */
|
|
2
2
|
export {};
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1wcm9kdWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL2ludGVyZmFjZXMvc2MtaS1wcm9kdWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlKQUF5SiIsInNvdXJjZXNDb250ZW50IjpbIi8qIFRPRE86INCS0YvQvdC10YHRgtC4INCyIGludGVybmFsINC/0L7RgdC70LUg0L/QtdGA0LXQvdC+0YHQsCDQsiDQsdC40LHQu9C40L7RgtC10LrRgyBDYXRhbG9nU2VydmljZSAtIFRBU0tbIzY0MzNdLCBDb25maWd1cmF0b3JTZXJ2aWNlIC0gVEFTS1sjNjQzNF0sIEZhdm9yaXRlU2VydmljZSAtIFRBU0tbIzY0MzVdICovXG5cbmltcG9ydCB7IFNjSUhpZGRlbkNhdGFsb2dhYmxlSXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9pbnRlcmZhY2VzL3NjLWktaGlkZGVuLWNhdGFsb2dhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgU2NJQ3VycmVuY3kgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzL2R0by9zYy1pLWN1cnJlbmN5JztcbmltcG9ydCB7IFNjSVByb2R1Y3RVbml0IH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcy9kdG8vc2MtaS1wcm9kdWN0LXVuaXQnO1xuaW1wb3J0IHsgU2NJU2VvUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9zZW8vaW50ZXJmYWNlcy9zYy1pLXNlby1yZXNvdXJjZSc7XG5pbXBvcnQgeyBTY0lXYXJlaG91c2VTdG9ja0NvdW50IH0gZnJvbSAnLi4vLi4vd2FyZWhvdXNlL2R0by9zYy1pLXdhcmVob3VzZS1zdG9jay1jb3VudCc7XG5pbXBvcnQgeyBTY0lEaXNjb3VudCB9IGZyb20gJy4uL2R0by9zYy1pLWRpc2NvdW50JztcbmltcG9ydCB7IFNjSVByb2R1Y3RJbWFnZXMgfSBmcm9tICcuLi9kdG8vc2MtaS1wcm9kdWN0LWltYWdlcyc7XG5pbXBvcnQgeyBTY0lDYXRhbG9nSXRlbSB9IGZyb20gJy4vc2MtaS1jYXRhbG9nLWl0ZW0nO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnkgfSBmcm9tICcuL3NjLWktY2F0ZWdvcnknO1xuXG4vKipcbiAqINCc0L7QtNC10LvRjCDQtNCw0L3QvdGL0YUg0LTQu9GPINGC0L7QstCw0YDQvtCyINC60LDRgtCw0LvQvtCz0LAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJUHJvZHVjdCBleHRlbmRzIFNjSUNhdGFsb2dJdGVtPFNjSUNhdGVnb3J5PiwgU2NJSGlkZGVuQ2F0YWxvZ2FibGVJdGVtLCBTY0lTZW9SZXNvdXJjZSB7XG4gICAgLyoqXG4gICAgICog0JDRgNGC0LjQutGD0Lsg0L/QvtGB0YLQsNCy0YnQuNC60LAuXG4gICAgICovXG4gICAgc3VwcGxpZXJTa3U/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1wcm9kdWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL2ludGVyZmFjZXMvc2MtaS1wcm9kdWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlKQUF5SiIsInNvdXJjZXNDb250ZW50IjpbIi8qIFRPRE86INCS0YvQvdC10YHRgtC4INCyIGludGVybmFsINC/0L7RgdC70LUg0L/QtdGA0LXQvdC+0YHQsCDQsiDQsdC40LHQu9C40L7RgtC10LrRgyBDYXRhbG9nU2VydmljZSAtIFRBU0tbIzY0MzNdLCBDb25maWd1cmF0b3JTZXJ2aWNlIC0gVEFTS1sjNjQzNF0sIEZhdm9yaXRlU2VydmljZSAtIFRBU0tbIzY0MzVdICovXG5cbmltcG9ydCB7IFNjSUhpZGRlbkNhdGFsb2dhYmxlSXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9pbnRlcmZhY2VzL3NjLWktaGlkZGVuLWNhdGFsb2dhYmxlLWl0ZW0nO1xuaW1wb3J0IHsgU2NJQ3VycmVuY3kgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzL2R0by9zYy1pLWN1cnJlbmN5JztcbmltcG9ydCB7IFNjSVByb2R1Y3RVbml0IH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcy9kdG8vc2MtaS1wcm9kdWN0LXVuaXQnO1xuaW1wb3J0IHsgU2NJU2VvUmVzb3VyY2UgfSBmcm9tICcuLi8uLi9zZW8vaW50ZXJmYWNlcy9zYy1pLXNlby1yZXNvdXJjZSc7XG5pbXBvcnQgeyBTY0lXYXJlaG91c2VTdG9ja0NvdW50IH0gZnJvbSAnLi4vLi4vd2FyZWhvdXNlL2R0by9zYy1pLXdhcmVob3VzZS1zdG9jay1jb3VudCc7XG5pbXBvcnQgeyBTY0lEaXNjb3VudCB9IGZyb20gJy4uL2R0by9zYy1pLWRpc2NvdW50JztcbmltcG9ydCB7IFNjSVByb2R1Y3RJbWFnZXMgfSBmcm9tICcuLi9kdG8vc2MtaS1wcm9kdWN0LWltYWdlcyc7XG5pbXBvcnQgeyBTY0lDYXRhbG9nSXRlbSB9IGZyb20gJy4vc2MtaS1jYXRhbG9nLWl0ZW0nO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnkgfSBmcm9tICcuL3NjLWktY2F0ZWdvcnknO1xuXG4vKipcbiAqINCc0L7QtNC10LvRjCDQtNCw0L3QvdGL0YUg0LTQu9GPINGC0L7QstCw0YDQvtCyINC60LDRgtCw0LvQvtCz0LAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NJUHJvZHVjdCBleHRlbmRzIFNjSUNhdGFsb2dJdGVtPFNjSUNhdGVnb3J5PiwgU2NJSGlkZGVuQ2F0YWxvZ2FibGVJdGVtLCBTY0lTZW9SZXNvdXJjZSB7XG4gICAgLyoqXG4gICAgICog0JDRgNGC0LjQutGD0Lsg0L/QvtGB0YLQsNCy0YnQuNC60LAuXG4gICAgICovXG4gICAgc3VwcGxpZXJTa3U/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQkdGA0LXQvdC0INGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBicmFuZD86IHN0cmluZyB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiDQodGC0L7QuNC80L7RgdGC0Ywg0YLQvtCy0LDRgNCwINC40LvQuCDRg9GB0LvRg9Cz0Lgg0LIg0LLQsNC70Y7RgtC1LlxuICAgICAqL1xuICAgIGNvc3Q/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQodGC0L7QuNC80L7RgdGC0Ywg0YLQvtCy0LDRgNCwINC40LvQuCDRg9GB0LvRg9Cz0Lgg0LIg0YDRg9Cx0LvRj9GFLlxuICAgICAqL1xuICAgIGNvc3RSdWI/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQlNCw0YLQsCDRg9GB0YLQsNC90L7QstC60Lgg0YbQtdC90YsuXG4gICAgICovXG4gICAgY29zdERhdGU/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQktCw0LvRjtGC0LAg0YLQvtCy0LDRgNCwINC40LvQuCDRg9GB0LvRg9Cz0LguXG4gICAgICovXG4gICAgY3VycmVuY3k6IFNjSUN1cnJlbmN5O1xuXG4gICAgLyoqXG4gICAgICog0JXQtNC40L3QuNGG0LAg0LjQt9C80LXRgNC10L3QuNGPLlxuICAgICAqL1xuICAgIHVuaXQ6IFNjSVByb2R1Y3RVbml0O1xuXG4gICAgLyoqXG4gICAgICog0JzQuNC90LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgtC+0LLQsNGA0LAg0LTQu9GPINC30LDQutCw0LfQsC5cbiAgICAgKi9cbiAgICBtaW5Db3VudD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDQutC+0LvQuNGH0LXRgdGC0LLQviDRgtC+0LLQsNGA0LAsINC00L7RgdGC0YPQv9C90L7QvCDQvdCwINGB0LrQu9Cw0LTQsNGFLlxuICAgICAqL1xuICAgIHN0b2NrQ291bnQ/OiBTY0lXYXJlaG91c2VTdG9ja0NvdW50W107XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LLQsNGA0LAgXCLQn9C+0LQg0LfQsNC60LDQt1wiLlxuICAgICAqL1xuICAgIG9uT3JkZXI/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog0J3QvtGA0LzQsCDRg9C/0LDQutC+0LLQutC4LlxuICAgICAqL1xuICAgIHBhY2s/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGC0L7QstCw0YAsINGD0YHQu9GD0LPQsCDQuNC70Lgg0LrQsNGC0LXQs9C+0YDQuNGPINGP0LLQu9GP0Y7RgtGB0Y8g0LjQt9Cx0YDQsNC90L3Ri9C80Lgg0LTQu9GPINC60LvQuNC10L3RgtCwLlxuICAgICAqL1xuICAgIGlzRmF2b3JpdGU/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDRgtC+0LLQsNGAINC40LvQuCDRg9GB0LvRg9Cz0LAsINCx0YvQuyDRgNCw0L3QtdC1INC30LDQutCw0LfQsNC9LlxuICAgICAqL1xuICAgIGlzUHJldmlvdXNseU9yZGVyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC40LfQvtCx0YDQsNC20LXQvdC40LkuXG4gICAgICovXG4gICAgaW1hZ2VzPzogcmVhZG9ubHkgU2NJUHJvZHVjdEltYWdlc1tdO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC60LDRgtC10LPQvtGA0LjQuSDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgY2F0ZWdvcmllczogU2NJQ2F0ZWdvcnlbXTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDQutC70LjQtdC90YLRgdC60L7QuSDRgdC60LjQtNC60LUuXG4gICAgICovXG4gICAgZGlzY291bnQ/OiBTY0lEaXNjb3VudDtcblxuICAgIC8qKlxuICAgICAqINCe0YHQvdC+0LLQvdCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINC00LvRjyDRgtC+0LLQsNGA0LAg0LjQu9C4INGD0YHQu9GD0LPQuC5cbiAgICAgKi9cbiAgICBwcmltYXJ5Q2F0ZWdvcnk/OiBTY0lDYXRlZ29yeTtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jb21wYW55LWJhc2UtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29uZmlnL3NjLWktY29tcGFueS1iYXNlLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0JHQsNC30L7QstCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LrQvtC80L/QsNC90LjQuC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lDb21wYW55QmFzZUluZm8ge1xuICAgIC8qKlxuICAgICAqINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQkNC00YDQtdGBINC60L7QvNC/0LDQvdC40LguXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWRkcmVzczoge1xuICAgICAgICAvKipcbiAgICAgICAgICog0KHRgtGA0LDQvdCwLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY291bnRyeTogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQoNC10LPQuNC+0L0uXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J3QsNGB0LXQu9C10L3QvdGL0Lkg0L/Rg9C90LrRgi5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGxvY2FsaXR5OiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCj0LvQuNGG0LAsINC00L7QvCwg0LrQvtGA0L/Rg9GBLCDRgdGC0YDQvtC10L3QuNC1INC4INGCLiDQvy4gKNGC0L4g0LXRgdGC0Ywg0LDQtNGA0LXRgSDRgSDRgtC+0YfQvdC+0YHRgtGM0Y4g0LTQviDQt9C00LDQvdC40Y8pLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgc3RyZWV0QWRkcmVzczogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQn9C+0LTRitC10LfQtCwg0Y3RgtCw0LYsINC+0YTQuNGBINC4INGCLiDQvy4gKNGC0L4g0LXRgdGC0Ywg0YHQstC10LTQtdC90LjRjyDQviDQvNC10YHRgtC+0L3QsNGF0L7QttC00LXQvdC40Lgg0LLQvdGD0YLRgNC4INC30LTQsNC90LjRjyksINC90LDQt9Cy0LDQvdC40LUg0YLQvtGA0LPQvtCy0L7Qs9C+INC40LvQuCDQsdC40LfQvdC10YEt0YbQtdC90YLRgNCwLCDQsCDRgtCw0LrQttC1INC70Y7QsdC+0LUg0L7Qv9C40YHQsNC90LjQtSwg0L3QtSDRj9Cy0LvRj9GO0YnQtdC10YHRjyDRgtC+0YfQvdGL0Lwg0LDQtNGA0LXRgdC+0LwuXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBleHRlbmRlZEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCf0L7Rh9GC0L7QstGL0Lkg0LjQvdC00LXQutGBLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgcG9zdGFsQ29kZTogc3RyaW5nO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiDQrtGA0LjQtNC40YfQtdGB0LrQuNC5INCw0LTRgNC10YEg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBsZWdhbEFkZHJlc3M6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCQ0LTRgNC10YHQsCDRgdC60LvQsNC00L7QsiDRgdCw0LzQvtCy0YvQstC+0LfQsCDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHdhcmVob3VzZUFkZHJlc3M6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICog0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0Ysg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBtYWlsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQotC10LvQtdGE0L7QvSDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBob25lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C5INGC0LXQu9C10YTQvtC9LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNlY29uZGFyeVBob25lPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0J7Qk9Cg0J0gKNCe0YHQvdC+0LLQvdC+0Lkg0LPQvtGB0YPQtNCw0YDRgdGC0LLQtdC90L3Ri9C5INGA0LXQs9C40YHRgtGA0LDRhtC40L7QvdC90YvQuSDQvdC+0LzQtdGAKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBvZ3JuOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQmNCd0J0gKNCY0LTQtdC90YLQuNGE0LjQutCw0YbQuNC+0L3QvdGL0Lkg0L3QvtC80LXRgCDQvdCw0LvQvtCz0L7Qv9C70LDRgtC10LvRjNGJ0LjQutCwKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBpbm46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSBIUi3QvtGC0LTQtdC70LAg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBocj86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLIEhSLdC+0YLQtNC10LvQsCDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbWFpbDogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQotC10LvQtdGE0L7QvSBIUi3QvtGC0LTQtdC70LAg0LrQvtC80L/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jb21wYW55LWJhc2UtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29uZmlnL3NjLWktY29tcGFueS1iYXNlLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0JHQsNC30L7QstCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LrQvtC80L/QsNC90LjQuC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY0lDb21wYW55QmFzZUluZm8ge1xuICAgIC8qKlxuICAgICAqINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQkNC00YDQtdGBINC60L7QvNC/0LDQvdC40LguXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWRkcmVzczoge1xuICAgICAgICAvKipcbiAgICAgICAgICog0KHRgtGA0LDQvdCwLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgY291bnRyeTogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQoNC10LPQuNC+0L0uXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J3QsNGB0LXQu9C10L3QvdGL0Lkg0L/Rg9C90LrRgi5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGxvY2FsaXR5OiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCj0LvQuNGG0LAsINC00L7QvCwg0LrQvtGA0L/Rg9GBLCDRgdGC0YDQvtC10L3QuNC1INC4INGCLiDQvy4gKNGC0L4g0LXRgdGC0Ywg0LDQtNGA0LXRgSDRgSDRgtC+0YfQvdC+0YHRgtGM0Y4g0LTQviDQt9C00LDQvdC40Y8pLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgc3RyZWV0QWRkcmVzczogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQn9C+0LTRitC10LfQtCwg0Y3RgtCw0LYsINC+0YTQuNGBINC4INGCLiDQvy4gKNGC0L4g0LXRgdGC0Ywg0YHQstC10LTQtdC90LjRjyDQviDQvNC10YHRgtC+0L3QsNGF0L7QttC00LXQvdC40Lgg0LLQvdGD0YLRgNC4INC30LTQsNC90LjRjyksINC90LDQt9Cy0LDQvdC40LUg0YLQvtGA0LPQvtCy0L7Qs9C+INC40LvQuCDQsdC40LfQvdC10YEt0YbQtdC90YLRgNCwLCDQsCDRgtCw0LrQttC1INC70Y7QsdC+0LUg0L7Qv9C40YHQsNC90LjQtSwg0L3QtSDRj9Cy0LvRj9GO0YnQtdC10YHRjyDRgtC+0YfQvdGL0Lwg0LDQtNGA0LXRgdC+0LwuXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBleHRlbmRlZEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCf0L7Rh9GC0L7QstGL0Lkg0LjQvdC00LXQutGBLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgcG9zdGFsQ29kZTogc3RyaW5nO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiDQrtGA0LjQtNC40YfQtdGB0LrQuNC5INCw0LTRgNC10YEg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBsZWdhbEFkZHJlc3M6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCQ0LTRgNC10YHQsCDRgdC60LvQsNC00L7QsiDRgdCw0LzQvtCy0YvQstC+0LfQsCDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHdhcmVob3VzZUFkZHJlc3M6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICog0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0Ysg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBtYWlsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQotC10LvQtdGE0L7QvSDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBob25lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C5INGC0LXQu9C10YTQvtC9LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNlY29uZGFyeVBob25lPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0J7Qk9Cg0J0gKNCe0YHQvdC+0LLQvdC+0Lkg0LPQvtGB0YPQtNCw0YDRgdGC0LLQtdC90L3Ri9C5INGA0LXQs9C40YHRgtGA0LDRhtC40L7QvdC90YvQuSDQvdC+0LzQtdGAKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBvZ3JuOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQmNCd0J0gKNCY0LTQtdC90YLQuNGE0LjQutCw0YbQuNC+0L3QvdGL0Lkg0L3QvtC80LXRgCDQvdCw0LvQvtCz0L7Qv9C70LDRgtC10LvRjNGJ0LjQutCwKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBpbm46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSBIUi3QvtGC0LTQtdC70LAg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICByZWFkb25seSBocj86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLIEhSLdC+0YLQtNC10LvQsCDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgbWFpbDogc3RyaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQotC10LvQtdGE0L7QvSBIUi3QvtGC0LTQtdC70LAg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHBob25lOiBzdHJpbmc7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqINCj0YHQu9C+0LLQuNGPINCy0L7Qt9Cy0YDQsNGC0LAg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJldHVyblBvbGljeT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCh0YDQvtC6INCy0L7Qt9Cy0YDQsNGC0LAg0YLQvtCy0LDRgNCwINCyINC00L3Rj9GFINGBINC80L7QvNC10L3RgtCwINC/0L7Qu9GD0YfQtdC90LjRjy5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHJldHVybkRheXM6IG51bWJlcjtcbiAgICB9O1xufVxuIl19
|
|
@@ -39,7 +39,6 @@ export class SchemaOrgFactory {
|
|
|
39
39
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
40
40
|
const image = this.mediaImageTransformerPipe.transform(product?.getImagePreview?.() ?? product.image, true);
|
|
41
41
|
const description = product.properties?.description;
|
|
42
|
-
const priceValidUntil = this.normalizePriceValidUntil(product.discount?.expiredAt);
|
|
43
42
|
return {
|
|
44
43
|
'@context': 'https://schema.org',
|
|
45
44
|
'@type': 'Product',
|
|
@@ -47,21 +46,16 @@ export class SchemaOrgFactory {
|
|
|
47
46
|
name: product.name,
|
|
48
47
|
...(image && { image }),
|
|
49
48
|
...(description && { description: this.stripHtml(description) }),
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
price: product.costRub,
|
|
57
|
-
availability: this.getAvailability(product),
|
|
58
|
-
itemCondition: 'https://schema.org/NewCondition',
|
|
59
|
-
seller: {
|
|
60
|
-
'@type': 'Organization',
|
|
61
|
-
name: this.companyInfo.name,
|
|
49
|
+
sku: product.code,
|
|
50
|
+
...(product.supplierSku && { mpn: product.supplierSku }),
|
|
51
|
+
...(product.brand && {
|
|
52
|
+
brand: {
|
|
53
|
+
'@type': 'Brand',
|
|
54
|
+
name: product.brand,
|
|
62
55
|
},
|
|
63
|
-
|
|
64
|
-
|
|
56
|
+
}),
|
|
57
|
+
url: productUrl,
|
|
58
|
+
offers: this.createOffer(product, productUrl),
|
|
65
59
|
};
|
|
66
60
|
}
|
|
67
61
|
/**
|
|
@@ -145,6 +139,7 @@ export class SchemaOrgFactory {
|
|
|
145
139
|
// eslint-disable-next-line sonarjs/function-return-type
|
|
146
140
|
generateForOrganization() {
|
|
147
141
|
const postalAddress = this.createPostalAddress(this.companyInfo.address);
|
|
142
|
+
const merchantReturnPolicy = this.createMerchantReturnPolicy();
|
|
148
143
|
return {
|
|
149
144
|
'@context': 'https://schema.org',
|
|
150
145
|
'@type': 'OnlineStore',
|
|
@@ -174,6 +169,13 @@ export class SchemaOrgFactory {
|
|
|
174
169
|
address: warehouseAddress,
|
|
175
170
|
})),
|
|
176
171
|
}),
|
|
172
|
+
...(merchantReturnPolicy && {
|
|
173
|
+
// Тип возмещения Google принимает только в политике организации, в предложениях его нет.
|
|
174
|
+
hasMerchantReturnPolicy: {
|
|
175
|
+
...merchantReturnPolicy,
|
|
176
|
+
refundType: 'https://schema.org/FullRefund',
|
|
177
|
+
},
|
|
178
|
+
}),
|
|
177
179
|
};
|
|
178
180
|
}
|
|
179
181
|
/**
|
|
@@ -309,6 +311,22 @@ export class SchemaOrgFactory {
|
|
|
309
311
|
}
|
|
310
312
|
return contactPoints;
|
|
311
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* Формирует MerchantReturnPolicy по условиям возврата из данных о компании.
|
|
316
|
+
*/
|
|
317
|
+
createMerchantReturnPolicy() {
|
|
318
|
+
if (!this.companyInfo.returnPolicy) {
|
|
319
|
+
return undefined;
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
'@type': 'MerchantReturnPolicy',
|
|
323
|
+
applicableCountry: 'RU',
|
|
324
|
+
returnPolicyCategory: 'https://schema.org/MerchantReturnFiniteReturnWindow',
|
|
325
|
+
merchantReturnDays: this.companyInfo.returnPolicy.returnDays,
|
|
326
|
+
returnMethod: 'https://schema.org/ReturnInStore',
|
|
327
|
+
returnFees: 'https://schema.org/FreeReturn',
|
|
328
|
+
};
|
|
329
|
+
}
|
|
312
330
|
/**
|
|
313
331
|
* Удаляет HTML-разметку из текста.
|
|
314
332
|
*
|
|
@@ -402,6 +420,30 @@ export class SchemaOrgFactory {
|
|
|
402
420
|
const path = categoryPath.replace(':id', id);
|
|
403
421
|
return `${this.urls.siteUrl}${path}`;
|
|
404
422
|
}
|
|
423
|
+
/**
|
|
424
|
+
* Создаёт Offer о продаже товара.
|
|
425
|
+
*
|
|
426
|
+
* @param product Данные о продукте.
|
|
427
|
+
* @param productUrl Полный URL страницы товара.
|
|
428
|
+
*/
|
|
429
|
+
createOffer(product, productUrl) {
|
|
430
|
+
const priceValidUntil = this.normalizePriceValidUntil(product.discount?.expiredAt);
|
|
431
|
+
const merchantReturnPolicy = this.createMerchantReturnPolicy();
|
|
432
|
+
return {
|
|
433
|
+
'@type': 'Offer',
|
|
434
|
+
priceCurrency: 'RUB',
|
|
435
|
+
...(priceValidUntil && { priceValidUntil }),
|
|
436
|
+
price: product.costRub,
|
|
437
|
+
availability: this.getAvailability(product),
|
|
438
|
+
itemCondition: 'https://schema.org/NewCondition',
|
|
439
|
+
seller: {
|
|
440
|
+
'@type': 'Organization',
|
|
441
|
+
name: this.companyInfo.name,
|
|
442
|
+
},
|
|
443
|
+
url: productUrl,
|
|
444
|
+
...(merchantReturnPolicy && { hasMerchantReturnPolicy: merchantReturnPolicy }),
|
|
445
|
+
};
|
|
446
|
+
}
|
|
405
447
|
/**
|
|
406
448
|
* Создаёт элемент списка ItemList с кратким Product для страницы категории.
|
|
407
449
|
*
|
|
@@ -414,7 +456,6 @@ export class SchemaOrgFactory {
|
|
|
414
456
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
415
457
|
const image = this.mediaImageTransformerPipe.transform(product?.getImagePreview?.() ?? product.image, true);
|
|
416
458
|
const description = product.seo?.description ?? product.properties?.description;
|
|
417
|
-
const priceValidUntil = this.normalizePriceValidUntil(product.discount?.expiredAt);
|
|
418
459
|
return {
|
|
419
460
|
'@type': 'ListItem',
|
|
420
461
|
position,
|
|
@@ -424,19 +465,7 @@ export class SchemaOrgFactory {
|
|
|
424
465
|
url: productUrl,
|
|
425
466
|
...(image && { image }),
|
|
426
467
|
...(description && { description: this.stripHtml(description) }),
|
|
427
|
-
offers:
|
|
428
|
-
'@type': 'Offer',
|
|
429
|
-
priceCurrency: 'RUB',
|
|
430
|
-
...(priceValidUntil && { priceValidUntil }),
|
|
431
|
-
price: product.costRub,
|
|
432
|
-
availability: this.getAvailability(product),
|
|
433
|
-
itemCondition: 'https://schema.org/NewCondition',
|
|
434
|
-
seller: {
|
|
435
|
-
'@type': 'Organization',
|
|
436
|
-
name: this.companyInfo.name,
|
|
437
|
-
},
|
|
438
|
-
url: productUrl,
|
|
439
|
-
},
|
|
468
|
+
offers: this.createOffer(product, productUrl),
|
|
440
469
|
},
|
|
441
470
|
};
|
|
442
471
|
}
|
|
@@ -534,4 +563,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
534
563
|
providedIn: 'root',
|
|
535
564
|
}]
|
|
536
565
|
}] });
|
|
537
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLW9yZy1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZW8vY2xhc3Nlcy9zY2hlbWEtb3JnLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFZMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRy9DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQUg3QjtRQUlJOztXQUVHO1FBQ2MsZ0JBQVcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDYyxTQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhDOztXQUVHO1FBQ0ssaUJBQVksR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTlEOztXQUVHO1FBQ2MsOEJBQXlCLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7S0EyaUJwRjtJQXppQkc7Ozs7OztPQU1HO0lBQ0ksc0JBQXNCLENBQUMsT0FBbUIsRUFBRSxXQUFtQixFQUFFLEVBQVc7UUFDL0UsTUFBTSxVQUFVLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUs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O2dCQUNILENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ04sQ0FBQztJQUNsQixDQUFDOytHQTdqQlEsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGYixNQUFNOzs0RkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0FycmF5LCBvbWl0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJyZWFkY3J1bWJMaXN0LCBDb2xsZWN0aW9uUGFnZSwgQ29udGFjdFBvaW50LCBGQVFQYWdlLCBMaXN0SXRlbSwgTmV3c0FydGljbGUsIE9yZ2FuaXphdGlvbiwgUG9zdGFsQWRkcmVzcywgUHJvZHVjdCwgVGhpbmcsIFdpdGhDb250ZXh0IH0gZnJvbSAnc2NoZW1hLWR0cyc7XG5cbmltcG9ydCB7IFNjQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2R0by9zYy1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY1Byb2R1Y3QgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2R0by9zYy1wcm9kdWN0JztcbmltcG9ydCB7IFNjVmlydHVhbENhdGVnb3J5IH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9kdG8vc2MtdmlydHVhbC1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY0lDYXRlZ29yeSB9IGZyb20gJy4uLy4uL2NhdGFsb2cvaW50ZXJmYWNlcy9zYy1pLWNhdGVnb3J5JztcbmltcG9ydCB7IFNjSVByb2R1Y3QgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2ludGVyZmFjZXMvc2MtaS1wcm9kdWN0JztcbmltcG9ydCB7IFNjSVZpcnR1YWxDYXRlZ29yeSB9IGZyb20gJy4uLy4uL2NhdGFsb2cvaW50ZXJmYWNlcy9zYy1pLXZpcnR1YWwtY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJQ29tcGFueUJhc2VJbmZvIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktY29tcGFueS1iYXNlLWluZm8nO1xuaW1wb3J0IHsgU2NGYXFJdGVtIH0gZnJvbSAnLi4vLi4vZnJlcXVlbnRseS1hc2tlZC1xdWVzdGlvbnMvaW50ZXJmYWNlcy9zYy1pLWZhcS1pdGVtJztcbmltcG9ydCB7IFNjSU5ld3MgfSBmcm9tICcuLi8uLi9uZXdzL2ludGVyZmFjZXMvc2MtaS1uZXdzJztcbmltcG9ydCB7IFNjSWRPclNsdWdQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvc2MtaWQtb3Itc2x1Zy5waXBlJztcbmltcG9ydCB7IFNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3NjLW1lZGlhLWltYWdlLXRyYW5zZm9ybWVyLnBpcGUnO1xuaW1wb3J0IHsgU0NfQ09NUEFOWV9JTkZPIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLWNvbXBhbnktaW5mbyc7XG5pbXBvcnQgeyBTQ19VUkxTIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLXVybHMnO1xuaW1wb3J0IHsgU2NJQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktYnJlYWRjcnVtYi1pdGVtJztcblxuLyoqXG4gKiDQnNC10YXQsNC90LjQt9C80Ysg0LPQtdC90LXRgNCw0YbQuNC4INGB0YXQtdC8INC00LDQvdC90YvRhSBTY2hlbWEub3JnLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY2hlbWFPcmdGYWN0b3J5IHtcbiAgICAvKipcbiAgICAgKiDQlNCw0L3QvdGL0LUg0L4g0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBhbnlJbmZvID0gaW5qZWN0KFNDX0NPTVBBTllfSU5GTyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqINCf0LDQudC/LCDQstC+0LfQstGA0LDRidCw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4INGB0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpINC40YHRhdC+0LTRjyDQuNC3INC90LDRgdGC0YDQvtC10Log0L7QutGA0YPQttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgaWRPclNsdWdQaXBlOiBTY0lkT3JTbHVnUGlwZSA9IGluamVjdChTY0lkT3JTbHVnUGlwZSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9Cw0LnQvyDQtNC70Y8g0YTQvtGA0LzQuNGA0L7QstCw0L3QuNGPINC/0L7Qu9C90L7Qs9C+IFVSSSDQuNC30L7QsdGA0LDQttC10L3QuNGPINC90LAgbWVkaWEg0YHQtdGA0LLQtdGA0LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlID0gaW5qZWN0KFNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSk7XG5cbiAgICAvKipcbiAgICAgKiDQk9C10L3QtdGA0LjRgNGD0LXRgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDRgdGF0LXQvNGDINC00LDQvdC90YvRhSDQtNC70Y8g0YPQutCw0LfQsNC90L3QvtCz0L4g0L/RgNC+0LTRg9C60YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0INCU0LDQvdC90YvQtSDQviDQv9GA0L7QtNGD0LrRgtC1LlxuICAgICAqIEBwYXJhbSBwcm9kdWN0UGF0aCBVcmwg0L/Rg9GC0Ywg0Log0YLQvtCy0LDRgNGDLiDQkiDQv9GD0YLQuCDQtNC+0LvQttC10L0g0L/RgNC40YHRg9GC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L0gJzppZCcsINC+0LHQvtC30L3QsNGH0LDRjtGJ0LjQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgtC+0LLQsNGA0LAg0LTQu9GPINC/0L7QtNGB0YLQsNC90L7QstC60LguXG4gICAgICogQHBhcmFtIGlkINCd0LXQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YHRg9GJ0L3QvtGB0YLQuCDQtNC70Y8g0L/QvtC70Y8gYEBpZGAg0LIgSlNPTi1MRC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2VuZXJhdGVGb3JQcm9kdWN0SXRlbShwcm9kdWN0OiBTY0lQcm9kdWN0LCBwcm9kdWN0UGF0aDogc3RyaW5nLCBpZD86IHN0cmluZyk6IFdpdGhDb250ZXh0PFByb2R1Y3Q+IHtcbiAgICAgICAgY29uc3QgcHJvZHVjdFVybCA9IGAke3RoaXMudXJscy5zaXRlVXJsfSR7cHJvZHVjdFBhdGgucmVwbGFjZSgnOmlkJywgdGhpcy5pZE9yU2x1Z1BpcGUudHJhbnNmb3JtKHByb2R1Y3QpLnRvU3RyaW5nKCkpfWA7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5tZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLnRyYW5zZm9ybSgocHJvZHVjdCBhcyBTY1Byb2R1Y3QpPy5nZXRJbWFnZVByZXZpZXc/LigpID8/IHByb2R1Y3QuaW1hZ2UsIHRydWUpO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHByb2R1Y3QucHJvcGVydGllcz8uZGVzY3JpcHRpb247XG4gICAgICAgIGNvbnN0IHByaWNlVmFsaWRVbnRpbCA9IHRoaXMubm9ybWFsaXplUHJpY2VWYWxpZFVudGlsKHByb2R1Y3QuZGlzY291bnQ/LmV4cGlyZWRBdCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdAY29udGV4dCc6ICdodHRwczovL3NjaGVtYS5vcmcnLFxuICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb2R1Y3QnLFxuICAgICAgICAgICAgLi4uKGlkICYmIHsgJ0BpZCc6IGlkIH0pLFxuICAgICAgICAgICAgbmFtZTogcHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgLi4uKGltYWdlICYmIHsgaW1hZ2UgfSksXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogdGhpcy5zdHJpcEh0bWwoZGVzY3JpcHRpb24pIH0pLFxuICAgICAgICAgICAgbXBuOiBwcm9kdWN0LmNvZGUsXG4gICAgICAgICAgICB1cmw6IHByb2R1Y3RVcmwsXG4gICAgICAgICAgICBvZmZlcnM6IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnT2ZmZXInLFxuICAgICAgICAgICAgICAgIHByaWNlQ3VycmVuY3k6ICdSVUInLFxuICAgICAgICAgICAgICAgIC4uLihwcmljZVZhbGlkVW50aWwgJiYgeyBwcmljZVZhbGlkVW50aWwgfSksXG4gICAgICAgICAgICAgICAgcHJpY2U6IHByb2R1Y3QuY29zdFJ1YixcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHk6IHRoaXMuZ2V0QXZhaWxhYmlsaXR5KHByb2R1Y3QpLFxuICAgICAgICAgICAgICAgIGl0ZW1Db25kaXRpb246ICdodHRwczovL3NjaGVtYS5vcmcvTmV3Q29uZGl0aW9uJyxcbiAgICAgICAgICAgICAgICBzZWxsZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ09yZ2FuaXphdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuY29tcGFueUluZm8ubmFtZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHVybDogcHJvZHVjdFVybCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgV2l0aENvbnRleHQ8UHJvZHVjdD47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JPQtdC90LXRgNC40YDRg9C10YIg0Lgg0LLQvtC30LLRgNCw0YnQsNC10YIg0YHRhdC10LzRgyDQtNCw0L3QvdGL0YUg0LTQu9GPINGD0LrQsNC30LDQvdC90L7Qs9C+INC/0YDQvtC00YPQutGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnkg0JTQsNC90L3Ri9C1INC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdHMg0JTQsNC90L3Ri9C1INC+INC/0YDQvtC00YPQutGC0LDRhSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICogQHBhcmFtIGNhdGVnb3J5UGF0aCBVcmwg0L/Rg9GC0Ywg0Log0LrQsNGC0LXQs9C+0YDQuNGP0Lwg0YLQvtCy0LDRgNC+0LIuINCSINC/0YPRgtC4INC00L7Qu9C20LXQvSDQv9GA0LjRgdGD0YLRgdGC0LLQvtCy0LDRgtGMINGI0LDQsdC70L7QvSAnOmlkJywg0L7QsdC+0LfQvdCw0YfQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60LDRgtC10LPQvtGA0LjQuCDQtNC70Y8g0L/QvtC00YHRgtCw0L3QvtCy0LrQuC5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdFBhdGggVXJsINC/0YPRgtGMINC6INGC0L7QstCw0YDRgy4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YLQvtCy0LDRgNCwINC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqIEBwYXJhbSBicmVhZGNydW1icyDQlNCw0L3QvdGL0LUg0L4g0YXQu9C10LHQvdGL0YUg0LrRgNC+0YjQutCw0YUg0LTQu9GPINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcGFyYW0gaWQg0J3QtdC+0LHRj9C30LDRgtC10LvRjNC90YvQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdGD0YnQvdC+0YHRgtC4INC00LvRjyDQv9C+0LvRjyBgQGlkYCDQsiBKU09OLUxELlxuICAgICAqL1xuICAgIHB1YmxpYyBnZW5lcmF0ZUZvckNhdGVnb3J5SXRlbShcbiAgICAgICAgY2F0ZWdvcnk6IFNjSUNhdGVnb3J5IHwgU2NJVmlydHVhbENhdGVnb3J5LFxuICAgICAgICBwcm9kdWN0czogU2NJUHJvZHVjdFtdLFxuICAgICAgICBjYXRlZ29yeVBhdGg6IHN0cmluZyxcbiAgICAgICAgcHJvZHVjdFBhdGg6IHN0cmluZyxcbiAgICAgICAgYnJlYWRjcnVtYnM6IFNjSUJyZWFkY3J1bWJJdGVtW10sXG4gICAgICAgIGlkPzogc3RyaW5nXG4gICAgKTogV2l0aENvbnRleHQ8Q29sbGVjdGlvblBhZ2U+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb25SYXcgPSBjYXRlZ29yeS5zZW8/LmRlc2NyaXB0aW9uID8/IGNhdGVnb3J5LnByb3BlcnRpZXM/LmRlc2NyaXB0aW9uO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uUmF3ID8gdGhpcy5zdHJpcEh0bWwoZGVzY3JpcHRpb25SYXcpIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBpbWFnZSA9IHRoaXMubWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZS50cmFuc2Zvcm0oY2F0ZWdvcnkuaW1hZ2UsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQGNvbnRleHQnOiAnaHR0cHM6Ly9zY2hlbWEub3JnJyxcbiAgICAgICAgICAgICdAdHlwZSc6ICdDb2xsZWN0aW9uUGFnZScsXG4gICAgICAgICAgICAuLi4oaWQgJiYgeyAnQGlkJzogaWQgfSksXG4gICAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5zZW8/LnRpdGxlID8/IGNhdGVnb3J5Lm5hbWUsXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbiB9KSxcbiAgICAgICAgICAgIHVybDogdGhpcy5nZXRDYXRlZ29yeUNhbm9uaWNhbFVybChjYXRlZ29yeSwgY2F0ZWdvcnlQYXRoKSxcbiAgICAgICAgICAgIC4uLihpbWFnZSAmJiB7IGltYWdlIH0pLFxuICAgICAgICAgICAgLy8gU0VPINC00LDQvdC90YvQtS5cbiAgICAgICAgICAgIC4uLihjYXRlZ29yeS5zZW8/LmtleXdvcmRzICYmIHsga2V5d29yZHM6IGNhdGVnb3J5LnNlby5rZXl3b3JkcyB9KSxcbiAgICAgICAgICAgIC8vINCe0YHQvdC+0LLQvdC+0Lkg0LrQvtC90YLQtdC90YIg0YHRgtGA0LDQvdC40YbRiyAtINGB0L/QuNGB0L7QuiDRgtC+0LLQsNGA0L7QsiDQuCDQv9C+0LTQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICAgICAgICBtYWluRW50aXR5OiB0aGlzLmNyZWF0ZUNhdGVnb3J5TWFpbkVudGl0eShjYXRlZ29yeSwgcHJvZHVjdHMsIGNhdGVnb3J5UGF0aCwgcHJvZHVjdFBhdGgpLFxuICAgICAgICAgICAgLy8g0J3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGL0LUg0YXQu9C10LHQvdGL0LUg0LrRgNC+0YjQutC4IChTY2hlbWEub3JnOiBicmVhZGNydW1iKS5cbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHRoaXMuY3JlYXRlQ2F0YWxvZ0JyZWFkY3J1bWJzTGlzdChicmVhZGNydW1icywgY2F0ZWdvcnlQYXRoKSxcbiAgICAgICAgICAgIC8vINCU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LUg0LzQtdGC0LDQtNCw0L3QvdGL0LUg0LTQu9GPIFNFTy5cbiAgICAgICAgICAgIGFib3V0OiB7XG4gICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0NhdGVnb3J5Q29kZScsXG4gICAgICAgICAgICAgICAgY29kZVZhbHVlOiBjYXRlZ29yeS5zbHVnLFxuICAgICAgICAgICAgICAgIG5hbWU6IGNhdGVnb3J5Lm5hbWUsXG4gICAgICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g0KHQstGP0LfQsNC90L3Ri9C1INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICAgICAgICByZWxhdGVkTGluazogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMudXJscy5zaXRlVXJsfSR7Y2F0ZWdvcnlQYXRoLnJlcGxhY2UoJzppZCcsICcnKX1gLFxuICAgICAgICAgICAgICAgIC4uLih0aGlzLmlzVmlydHVhbENhdGVnb3J5KGNhdGVnb3J5KSB8fCAhY2F0ZWdvcnkucGFyZW50Q2F0ZWdvcnkgPyBbXSA6IFt0aGlzLmdldENhdGVnb3J5Q2Fub25pY2FsVXJsKGNhdGVnb3J5LnBhcmVudENhdGVnb3J5LCBjYXRlZ29yeVBhdGgpXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8g0JTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQtSDRgdCy0L7QudGB0YLQstCwINC60LDRgtC10LPQvtGA0LjQuCAo0L3QtSDQuNC30L7QsdGA0LDQttC10L3QuNGPKS5cbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0eTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb3BlcnR5VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YLQvtCy0LDRgNC+0LInLFxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogKHByb2R1Y3RzPy5sZW5ndGggPz8gMCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb3BlcnR5VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnU2x1ZyDQutCw0YLQtdCz0L7RgNC40LgnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnkuc2x1ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCBTRU8g0LTQsNC90L3Ri9C1INC10YHQu9C4INC10YHRgtGMLlxuICAgICAgICAgICAgICAgIC4uLihjYXRlZ29yeS5zZW8/LmtleXdvcmRzXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUHJvcGVydHlWYWx1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnU0VPIEtleXdvcmRzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjYXRlZ29yeS5zZW8ua2V5d29yZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oY2F0ZWdvcnkuc2VvPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb3BlcnR5VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1NFTyBUaXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnkuc2VvLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9IGFzIFdpdGhDb250ZXh0PENvbGxlY3Rpb25QYWdlPjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQk9C10L3QtdGA0LjRgNGD0LXRgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDRgdGF0LXQvNGDINC00LDQvdC90YvRhSBPbmxpbmVTdG9yZSDQvdCwINC+0YHQvdC+0LLQtSDQtNCw0L3QvdGL0YUg0LrQvtC80L/QsNC90LjQuCDQuNC3INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9mdW5jdGlvbi1yZXR1cm4tdHlwZVxuICAgIHB1YmxpYyBnZW5lcmF0ZUZvck9yZ2FuaXphdGlvbigpOiBXaXRoQ29udGV4dDxPcmdhbml6YXRpb24+IHtcbiAgICAgICAgY29uc3QgcG9zdGFsQWRkcmVzcyA9IHRoaXMuY3JlYXRlUG9zdGFsQWRkcmVzcyh0aGlzLmNvbXBhbnlJbmZvLmFkZHJlc3MpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQGNvbnRleHQnOiAnaHR0cHM6Ly9zY2hlbWEub3JnJyxcbiAgICAgICAgICAgICdAdHlwZSc6ICdPbmxpbmVTdG9yZScsXG4gICAgICAgICAgICAnQGlkJzogYCR7dGhpcy51cmxzLnNpdGVVcmx9I29yZ2FuaXphdGlvbmAsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmNvbXBhbnlJbmZvLm5hbWUsXG4gICAgICAgICAgICBsZWdhbE5hbWU6IHRoaXMuY29tcGFueUluZm8ubmFtZSxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmxzLnNpdGVVcmwsXG4gICAgICAgICAgICBsb2dvOiB0aGlzLnVybHMubG9nb1VybCxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLnVybHMubG9nb1VybCxcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLmNvbXBhbnlJbmZvLm1haWwsXG4gICAgICAgICAgICB0ZWxlcGhvbmU6IHRoaXMuY29tcGFueUluZm8ucGhvbmUsXG4gICAgICAgICAgICAuLi4ocG9zdGFsQWRkcmVzcyAmJiB7IGFkZHJlc3M6IHBvc3RhbEFkZHJlc3MgfSksXG4gICAgICAgICAgICBsZWdhbEFkZHJlc3M6IHRoaXMuY3JlYXRlUG9zdGFsQWRkcmVzcyh7IHN0cmVldEFkZHJlc3M6IHRoaXMuY29tcGFueUluZm8ubGVnYWxBZGRyZXNzIH0gYXMgU2NJQ29tcGFueUJhc2VJbmZvWydhZGRyZXNzJ10pLFxuICAgICAgICAgICAgLy8gVE9ETzog0J/QtdGA0LXRh9C40YHQu9C40YLRjCDQstGB0LUg0YDQvtC30L3QuNGH0L3Ri9C1INC80LDQs9Cw0LfQuNC90YsuXG4gICAgICAgICAgICAvLyBoYXNQT1M6IFtdLFxuICAgICAgICAgICAgdGF4SUQ6IHRoaXMuY29tcGFueUluZm8uaW5uLFxuICAgICAgICAgICAgaWRlbnRpZmllcjoge1xuICAgICAgICAgICAgICAgICdAdHlwZSc6ICdQcm9wZXJ0eVZhbHVlJyxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUlEOiAnT0dSTicsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuY29tcGFueUluZm8ub2dybixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0UG9pbnQ6IHRoaXMuY3JlYXRlT3JnYW5pemF0aW9uQ29udGFjdFBvaW50cygpLFxuICAgICAgICAgICAgLi4uKHRoaXMuY29tcGFueUluZm8ud2FyZWhvdXNlQWRkcmVzcy5sZW5ndGggPiAwICYmIHtcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5jb21wYW55SW5mby53YXJlaG91c2VBZGRyZXNzLm1hcCgod2FyZWhvdXNlQWRkcmVzcykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1BsYWNlJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYCR7dGhpcy5jb21wYW55SW5mby5uYW1lfSDigJQg0YHQutC70LDQtCDRgdCw0LzQvtCy0YvQstC+0LfQsGAsXG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IHdhcmVob3VzZUFkZHJlc3MsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgV2l0aENvbnRleHQ8T3JnYW5pemF0aW9uPjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQk9C10L3QtdGA0LjRgNGD0LXRgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDRgdGF0LXQvNGDINC00LDQvdC90YvRhSDQtNC70Y8g0YPQutCw0LfQsNC90L3QvtC5INC90L7QstC+0YHRgtC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld3Mg0JTQsNC90L3Ri9C1INC+INC90L7QstC+0YHRgtC4LlxuICAgICAqIEBwYXJhbSBuZXdzUGF0aCBVcmwg0L/Rg9GC0Ywg0Log0L3QvtCy0L7RgdGC0LguINCSINC/0YPRgtC4INC00L7Qu9C20LXQvSDQv9GA0LjRgdGD0YLRgdGC0LLQvtCy0LDRgtGMINGI0LDQsdC70L7QvSAnOmlkJywg0L7QsdC+0LfQvdCw0YfQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC90L7QstC+0YHRgtC4INC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqIEBwYXJhbSBpZCDQndC10L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0YPRidC90L7RgdGC0Lgg0LTQu9GPINC/0L7Qu9GPIGBAaWRgINCyIEpTT04tTEQuXG4gICAgICovXG4gICAgcHVibGljIGdlbmVyYXRlRm9yTmV3c0FydGljbGUobmV3czogU2NJTmV3cywgbmV3c1BhdGg6IHN0cmluZywgaWQ/OiBzdHJpbmcpOiBXaXRoQ29udGV4dDxOZXdzQXJ0aWNsZT4ge1xuICAgICAgICBjb25zdCBuZXdzVXJsID0gYCR7dGhpcy51cmxzLnNpdGVVcmx9JHtuZXdzUGF0aC5yZXBsYWNlKCc6aWQnLCBuZXdzLmlkLnRvU3RyaW5nKCkpfWA7XG4gICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5tZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLnRyYW5zZm9ybShuZXdzLmltYWdlLCB0cnVlKTtcbiAgICAgICAgY29uc3QgaGVhZGxpbmUgPSBuZXdzLnNlbz8udGl0bGUgPz8gbmV3cy5zdWJqZWN0O1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IG5ld3Muc2VvPy5kZXNjcmlwdGlvbjtcbiAgICAgICAgY29uc3QgZGF0ZVB1Ymxpc2hlZCA9IHRoaXMubm9ybWFsaXplU2NoZW1hRGF0ZShuZXdzLmNyZWF0ZWRBdCk7XG4gICAgICAgIGNvbnN0IGFydGljbGVCb2R5ID0gbmV3cy50ZXh0ID8gdGhpcy5zdHJpcEh0bWwobmV3cy50ZXh0KSA6IHVuZGVmaW5lZDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0Bjb250ZXh0JzogJ2h0dHBzOi8vc2NoZW1hLm9yZycsXG4gICAgICAgICAgICAnQHR5cGUnOiAnTmV3c0FydGljbGUnLFxuICAgICAgICAgICAgLi4uKGlkICYmIHsgJ0BpZCc6IGlkIH0pLFxuICAgICAgICAgICAgaGVhZGxpbmUsXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogdGhpcy5zdHJpcEh0bWwoZGVzY3JpcHRpb24pIH0pLFxuICAgICAgICAgICAgLi4uKGltYWdlICYmIHsgaW1hZ2UgfSksXG4gICAgICAgICAgICAuLi4oZGF0ZVB1Ymxpc2hlZCAmJiB7IGRhdGVQdWJsaXNoZWQgfSksXG4gICAgICAgICAgICAuLi4oYXJ0aWNsZUJvZHkgJiYgeyBhcnRpY2xlQm9keSB9KSxcbiAgICAgICAgICAgIHVybDogbmV3c1VybCxcbiAgICAgICAgICAgIG1haW5FbnRpdHlPZlBhZ2U6IG5ld3NVcmwsXG4gICAgICAgICAgICBhdXRob3I6IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmNvbXBhbnlJbmZvLm5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybHMuc2l0ZVVybCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwdWJsaXNoZXI6IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmNvbXBhbnlJbmZvLm5hbWUsXG4gICAgICAgICAgICAgICAgbG9nbzoge1xuICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnSW1hZ2VPYmplY3QnLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJscy5sb2dvVXJsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFdpdGhDb250ZXh0PE5ld3NBcnRpY2xlPjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQk9C10L3QtdGA0LjRgNGD0LXRgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDRgdGF0LXQvNGDINC00LDQvdC90YvRhSBGQVFQYWdlINC00LvRjyDRgdGC0YDQsNC90LjRhtGLINGBINCy0L7Qv9GA0L7RgdCw0LzQuCDQuCDQvtGC0LLQtdGC0LDQvNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zINCh0L/QuNGB0L7QuiDQstC+0L/RgNC+0YHQvtCyINC4INC+0YLQstC10YLQvtCyLlxuICAgICAqIEBwYXJhbSBwYWdlUGF0aCBVcmwg0L/Rg9GC0Ywg0Log0YHRgtGA0LDQvdC40YbQtSBGQVEuXG4gICAgICogQHBhcmFtIHBhZ2VOYW1lINCd0LXQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+0LUg0L3QsNC30LLQsNC90LjQtSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqIEBwYXJhbSBpZCDQndC10L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0YPRidC90L7RgdGC0Lgg0LTQu9GPINC/0L7Qu9GPIGBAaWRgINCyIEpTT04tTEQuXG4gICAgICovXG4gICAgcHVibGljIGdlbmVyYXRlRm9yRmFxUGFnZShpdGVtczogU2NGYXFJdGVtW10sIHBhZ2VQYXRoOiBzdHJpbmcsIHBhZ2VOYW1lPzogc3RyaW5nLCBpZD86IHN0cmluZyk6IFdpdGhDb250ZXh0PEZBUVBhZ2U+IHtcbiAgICAgICAgY29uc3QgcGFnZVVybCA9IGAke3RoaXMudXJscy5zaXRlVXJsfSR7cGFnZVBhdGh9YDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0Bjb250ZXh0JzogJ2h0dHBzOi8vc2NoZW1hLm9yZycsXG4gICAgICAgICAgICAnQHR5cGUnOiAnRkFRUGFnZScsXG4gICAgICAgICAgICAuLi4oaWQgJiYgeyAnQGlkJzogaWQgfSksXG4gICAgICAgICAgICAuLi4ocGFnZU5hbWUgJiYgeyBuYW1lOiBwYWdlTmFtZSB9KSxcbiAgICAgICAgICAgIHVybDogcGFnZVVybCxcbiAgICAgICAgICAgIG1haW5FbnRpdHk6IGl0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUXVlc3Rpb24nLFxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ucXVlc3Rpb24sXG4gICAgICAgICAgICAgICAgYWNjZXB0ZWRBbnN3ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0Fuc3dlcicsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMuc3RyaXBIdG1sKGl0ZW0uYW5zd2VyKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFdpdGhDb250ZXh0PEZBUVBhZ2U+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LTQuNC90Y/QtdGCINC90LXRgdC60L7Qu9GM0LrQviBKU09OLUxEINGB0YPRidC90L7RgdGC0LXQuSDQsiDQvtC00LjQvSDQtNC+0LrRg9C80LXQvdGCINGBIGBAZ3JhcGhgLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEg0JzQsNGB0YHQuNCyIEpTT04tTEQg0YHRg9GJ0L3QvtGB0YLQtdC5INC00LvRjyDQvtCx0YrQtdC00LjQvdC10L3QuNGPLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLHNvbmFyanMvZnVuY3Rpb24tcmV0dXJuLXR5cGVcbiAgICBwdWJsaWMgbWVyZ2UoZGF0YTogQXJyYXk8V2l0aENvbnRleHQ8VGhpbmc+Pik6IFdpdGhDb250ZXh0PFRoaW5nPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQGNvbnRleHQnOiAnaHR0cHM6Ly9zY2hlbWEub3JnJyxcbiAgICAgICAgICAgICdAZ3JhcGgnOiBkYXRhLm1hcCgoaXRlbSkgPT4gb21pdChpdGVtLCAnQGNvbnRleHQnKSksXG4gICAgICAgIH0gYXMgdW5rbm93biBhcyBXaXRoQ29udGV4dDxUaGluZz47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQuNGA0YPQtdGCIFBvc3RhbEFkZHJlc3Mg0LjQtyDRgdGC0YDRg9C60YLRg9GA0LjRgNC+0LLQsNC90L3QvtCz0L4g0LDQtNGA0LXRgdCwINC60L7QvNC/0LDQvdC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyDQodGC0YDRg9C60YLRg9GA0LjRgNC+0LLQsNC90L3Ri9C5INCw0LTRgNC10YEg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgY3JlYXRlUG9zdGFsQWRkcmVzcyhhZGRyZXNzOiBTY0lDb21wYW55QmFzZUluZm9bJ2FkZHJlc3MnXSk6IFBvc3RhbEFkZHJlc3MgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBzdHJlZXRBZGRyZXNzID0gW2FkZHJlc3Muc3RyZWV0QWRkcmVzcywgYWRkcmVzcy5leHRlbmRlZEFkZHJlc3NdLmZpbHRlcihCb29sZWFuKS5qb2luKCcsICcpO1xuXG4gICAgICAgIGlmICghc3RyZWV0QWRkcmVzcyAmJiAhYWRkcmVzcy5sb2NhbGl0eSAmJiAhYWRkcmVzcy5yZWdpb24gJiYgIWFkZHJlc3MucG9zdGFsQ29kZSAmJiAhYWRkcmVzcy5jb3VudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdAdHlwZSc6ICdQb3N0YWxBZGRyZXNzJyxcbiAgICAgICAgICAgIC4uLihzdHJlZXRBZGRyZXNzICYmIHsgc3RyZWV0QWRkcmVzcyB9KSxcbiAgICAgICAgICAgIC4uLihhZGRyZXNzLmxvY2FsaXR5ICYmIHsgYWRkcmVzc0xvY2FsaXR5OiBhZGRyZXNzLmxvY2FsaXR5IH0pLFxuICAgICAgICAgICAgLi4uKGFkZHJlc3MucmVnaW9uICYmIHsgYWRkcmVzc1JlZ2lvbjogYWRkcmVzcy5yZWdpb24gfSksXG4gICAgICAgICAgICAuLi4oYWRkcmVzcy5wb3N0YWxDb2RlICYmIHsgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlIH0pLFxuICAgICAgICAgICAgLi4uKGFkZHJlc3MuY291bnRyeSAmJiB7IGFkZHJlc3NDb3VudHJ5OiBhZGRyZXNzLmNvdW50cnkgfSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQuNGA0YPQtdGCINGB0L/QuNGB0L7QuiBDb250YWN0UG9pbnQg0LTQu9GPIE9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZU9yZ2FuaXphdGlvbkNvbnRhY3RQb2ludHMoKTogQ29udGFjdFBvaW50W10ge1xuICAgICAgICBjb25zdCBjb250YWN0UG9pbnRzOiBDb250YWN0UG9pbnRbXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnQ29udGFjdFBvaW50JyxcbiAgICAgICAgICAgICAgICBjb250YWN0VHlwZTogJ2N1c3RvbWVyIHNlcnZpY2UnLFxuICAgICAgICAgICAgICAgIHRlbGVwaG9uZTogdGhpcy5jb21wYW55SW5mby5waG9uZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogdGhpcy5jb21wYW55SW5mby5tYWlsLFxuICAgICAgICAgICAgICAgIGFyZWFTZXJ2ZWQ6ICdSVScsXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2U6ICdSdXNzaWFuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuY29tcGFueUluZm8uc2Vjb25kYXJ5UGhvbmUpIHtcbiAgICAgICAgICAgIGNvbnRhY3RQb2ludHMucHVzaCh7XG4gICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0NvbnRhY3RQb2ludCcsXG4gICAgICAgICAgICAgICAgY29udGFjdFR5cGU6ICdjdXN0b21lciBzZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICB0ZWxlcGhvbmU6IHRoaXMuY29tcGFueUluZm8uc2Vjb25kYXJ5UGhvbmUsXG4gICAgICAgICAgICAgICAgYXJlYVNlcnZlZDogJ1JVJyxcbiAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZTogJ1J1c3NpYW4nLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb21wYW55SW5mby5ocikge1xuICAgICAgICAgICAgY29udGFjdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnQ29udGFjdFBvaW50JyxcbiAgICAgICAgICAgICAgICBjb250YWN0VHlwZTogJ0hSJyxcbiAgICAgICAgICAgICAgICB0ZWxlcGhvbmU6IHRoaXMuY29tcGFueUluZm8uaHIucGhvbmUsXG4gICAgICAgICAgICAgICAgZW1haWw6IHRoaXMuY29tcGFueUluZm8uaHIubWFpbCxcbiAgICAgICAgICAgICAgICBhcmVhU2VydmVkOiAnUlUnLFxuICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlOiAnUnVzc2lhbicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250YWN0UG9pbnRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCIEhUTUwt0YDQsNC30LzQtdGC0LrRgyDQuNC3INGC0LXQutGB0YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBodG1sINCi0LXQutGB0YIg0YEgSFRNTC3RgNCw0LfQvNC10YLQutC+0LkuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBwcml2YXRlIHN0cmlwSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB3aXRob3V0VGFncyA9IGh0bWxcbiAgICAgICAgICAgIC5zcGxpdCgnPCcpXG4gICAgICAgICAgICAubWFwKChwYXJ0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZVRhZ0luZGV4ID0gcGFydC5pbmRleE9mKCc+Jyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VUYWdJbmRleCA9PT0gLTEgPyBwYXJ0IDogYCAke3BhcnQuc2xpY2UoY2xvc2VUYWdJbmRleCArIDEpfWA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJycpO1xuXG4gICAgICAgIHJldHVybiB3aXRob3V0VGFnc1xuICAgICAgICAgICAgLnJlcGxhY2VBbGwoLyZuYnNwOy9naSwgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2VBbGwoL1xccysvZywgJyAnKVxuICAgICAgICAgICAgLnJlcGxhY2VBbGwoLyAoWy4sIT87Ol0pL2csICckMScpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCd0L7RgNC80LDQu9C40LfRg9C10YIg0LTQsNGC0YMg0LIg0YTQvtGA0LzQsNGCIFNjaGVtYS5vcmcgKElTTyA4NjAxKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlVmFsdWUg0JTQsNGC0LAg0LTQu9GPINC90L7RgNC80LDQu9C40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgbm9ybWFsaXplU2NoZW1hRGF0ZShkYXRlVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRhdGVWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9Ly50ZXN0KGRhdGVWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aXRoVGltZU1hdGNoID0gL14oXFxkezJ9KVxcLihcXGR7Mn0pXFwuKFxcZHs0fSkgKFxcZHsyfSk6KFxcZHsyfSkkLy5leGVjKGRhdGVWYWx1ZSk7XG5cbiAgICAgICAgaWYgKHdpdGhUaW1lTWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIGRheSwgbW9udGgsIHllYXIsIGhvdXJzLCBtaW51dGVzXSA9IHdpdGhUaW1lTWF0Y2g7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1UJHtob3Vyc306JHttaW51dGVzfTowMGA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRlT25seU1hdGNoID0gL14oXFxkezJ9KVxcLihcXGR7Mn0pXFwuKFxcZHs0fSkkLy5leGVjKGRhdGVWYWx1ZSk7XG5cbiAgICAgICAgaWYgKCFkYXRlT25seU1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgWywgZGF5LCBtb250aCwgeWVhcl0gPSBkYXRlT25seU1hdGNoO1xuXG4gICAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCd0L7RgNC80LDQu9C40LfRg9C10YIg0LTQsNGC0YMg0L7QutC+0L3Rh9Cw0L3QuNGPINGG0LXQvdGLINCyINGE0L7RgNC80LDRgiBTY2hlbWEub3JnIChZWVlZLU1NLUREKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBleHBpcmVkQXQg0JTQsNGC0LAg0LTQu9GPINC90L7RgNC80LDQu9C40LfQsNGG0LjQuFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJpdmF0ZSBub3JtYWxpemVQcmljZVZhbGlkVW50aWwoZXhwaXJlZEF0Pzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFleHBpcmVkQXQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRlID0gZXhwaXJlZEF0LnNsaWNlKDAsIDEwKTtcblxuICAgICAgICByZXR1cm4gL15cXGR7NH0tXFxkezJ9LVxcZHsyfSQvLnRlc3QoZGF0ZSkgPyBkYXRlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0L/RgNC10LTQtdC70Y/QtdGCINC00L7RgdGC0YPQv9C90L7RgdGC0Ywg0YLQvtCy0LDRgNCwINC/0L4g0LTQsNC90L3Ri9C8INC/0YDQvtC00YPQutGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQlNCw0L3QvdGL0LUg0L4g0L/RgNC+0LTRg9C60YLQtS5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgZ2V0QXZhaWxhYmlsaXR5KHByb2R1Y3Q6IFNjSVByb2R1Y3QpOiBzdHJpbmcge1xuICAgICAgICBpZiAocHJvZHVjdC5vbk9yZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2h0dHBzOi8vc2NoZW1hLm9yZy9QcmVPcmRlcic7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvZHVjdC5zdG9ja0NvdW50Py5sZW5ndGggPyAnaHR0cHM6Ly9zY2hlbWEub3JnL0luU3RvY2snIDogJ2h0dHBzOi8vc2NoZW1hLm9yZy9PdXRPZlN0b2NrJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIsINGP0LLQu9GP0LXRgtGB0Y8g0LvQuCDQutCw0YLQtdCz0L7RgNC40Y8g0LLQuNGA0YLRg9Cw0LvRjNC90L7QuS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSDQlNCw0L3QvdGL0LUg0L4g0LrQsNGC0LXQs9C+0YDQuNC4INC00LvRjyDQv9GA0L7QstC10YDQutC4LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJpdmF0ZSBpc1ZpcnR1YWxDYXRlZ29yeShjYXRlZ29yeTogU2NJQ2F0ZWdvcnkgfCBTY0lWaXJ0dWFsQ2F0ZWdvcnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICdjaGlsZENhdGVnb3JpZXMnIGluIGNhdGVnb3J5ICYmICdwcm9kdWN0Q2F0ZWdvcmllcycgaW4gY2F0ZWdvcnk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIgVVJMINC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5INCU0LDQvdC90YvQtSDQviDQutCw0YLQtdCz0L7RgNC40LhcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlQYXRoIFVybCDQv9GD0YLRjCDQuiDQutCw0YLQtdCz0L7RgNC40Y/QvCDRgtC+0LLQsNGA0L7Qsi4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQsNGC0LXQs9C+0YDQuNC4INC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2F0ZWdvcnlDYW5vbmljYWxVcmwoY2F0ZWdvcnk6IFNjSUNhdGVnb3J5IHwgU2NJVmlydHVhbENhdGVnb3J5LCBjYXRlZ29yeVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5pc1ZpcnR1YWxDYXRlZ29yeShjYXRlZ29yeSkgPyBjYXRlZ29yeS5zbHVnIDogdGhpcy5pZE9yU2x1Z1BpcGUudHJhbnNmb3JtKGNhdGVnb3J5KS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBwYXRoID0gY2F0ZWdvcnlQYXRoLnJlcGxhY2UoJzppZCcsIGlkKTtcblxuICAgICAgICByZXR1cm4gYCR7dGhpcy51cmxzLnNpdGVVcmx9JHtwYXRofWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0Y3Qu9C10LzQtdC90YIg0YHQv9C40YHQutCwIEl0ZW1MaXN0INGBINC60YDQsNGC0LrQuNC8IFByb2R1Y3Qg0LTQu9GPINGB0YLRgNCw0L3QuNGG0Ysg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3Qg0JTQsNC90L3Ri9C1INC+INC/0YDQvtC00YPQutGC0LUuXG4gICAgICogQHBhcmFtIHBvc2l0aW9uINCf0L7Qt9C40YbQuNGPINCyINGB0L/QuNGB0LrQtS5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdFBhdGggVXJsINC/0YPRgtGMINC6INGC0L7QstCw0YDRgy4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YLQvtCy0LDRgNCwINC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlUHJvZHVjdHNMaXN0SXRlbShwcm9kdWN0OiBTY0lQcm9kdWN0LCBwb3NpdGlvbjogbnVtYmVyLCBwcm9kdWN0UGF0aDogc3RyaW5nKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgcHJvZHVjdFVybCA9IGAke3RoaXMudXJscy5zaXRlVXJsfSR7cHJvZHVjdFBhdGgucmVwbGFjZSgnOmlkJywgdGhpcy5pZE9yU2x1Z1BpcGUudHJhbnNmb3JtKHByb2R1Y3QpLnRvU3RyaW5nKCkpfWA7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5tZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLnRyYW5zZm9ybSgocHJvZHVjdCBhcyBTY1Byb2R1Y3QpPy5nZXRJbWFnZVByZXZpZXc/LigpID8/IHByb2R1Y3QuaW1hZ2UsIHRydWUpO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHByb2R1Y3Quc2VvPy5kZXNjcmlwdGlvbiA/PyBwcm9kdWN0LnByb3BlcnRpZXM/LmRlc2NyaXB0aW9uO1xuICAgICAgICBjb25zdCBwcmljZVZhbGlkVW50aWwgPSB0aGlzLm5vcm1hbGl6ZVByaWNlVmFsaWRVbnRpbChwcm9kdWN0LmRpc2NvdW50Py5leHBpcmVkQXQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb2R1Y3QnLFxuICAgICAgICAgICAgICAgIG5hbWU6IHByb2R1Y3QubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHByb2R1Y3RVcmwsXG4gICAgICAgICAgICAgICAgLi4uKGltYWdlICYmIHsgaW1hZ2UgfSksXG4gICAgICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IHRoaXMuc3RyaXBIdG1sKGRlc2NyaXB0aW9uKSB9KSxcbiAgICAgICAgICAgICAgICBvZmZlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ09mZmVyJyxcbiAgICAgICAgICAgICAgICAgICAgcHJpY2VDdXJyZW5jeTogJ1JVQicsXG4gICAgICAgICAgICAgICAgICAgIC4uLihwcmljZVZhbGlkVW50aWwgJiYgeyBwcmljZVZhbGlkVW50aWwgfSksXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBwcm9kdWN0LmNvc3RSdWIsXG4gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eTogdGhpcy5nZXRBdmFpbGFiaWxpdHkocHJvZHVjdCksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1Db25kaXRpb246ICdodHRwczovL3NjaGVtYS5vcmcvTmV3Q29uZGl0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgc2VsbGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuY29tcGFueUluZm8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9kdWN0VXJsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCIG1haW5FbnRpdHkg0LTQu9GPINGD0LrQsNC30LDQvdC90L7QuSDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnkg0JTQsNC90L3Ri9C1INC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdHMg0JTQsNC90L3Ri9C1INC+INGC0L7QstCw0YDQsNGFINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlQYXRoIFVybCDQv9GD0YLRjCDQuiDQutCw0YLQtdCz0L7RgNC40Y/QvCDRgtC+0LLQsNGA0L7Qsi4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQsNGC0LXQs9C+0YDQuNC4INC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqIEBwYXJhbSBwcm9kdWN0UGF0aCBVcmwg0L/Rg9GC0Ywg0Log0YLQvtCy0LDRgNGDLiDQkiDQv9GD0YLQuCDQtNC+0LvQttC10L0g0L/RgNC40YHRg9GC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L0gJzppZCcsINC+0LHQvtC30L3QsNGH0LDRjtGJ0LjQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgtC+0LLQsNGA0LAg0LTQu9GPINC/0L7QtNGB0YLQsNC90L7QstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVDYXRlZ29yeU1haW5FbnRpdHkoY2F0ZWdvcnk6IFNjSUNhdGVnb3J5IHwgU2NJVmlydHVhbENhdGVnb3J5LCBwcm9kdWN0czogU2NJUHJvZHVjdFtdLCBjYXRlZ29yeVBhdGg6IHN0cmluZywgcHJvZHVjdFBhdGg6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IGNoaWxkQ2F0ZWdvcmllcyA9IHRoaXMuaXNWaXJ0dWFsQ2F0ZWdvcnkoY2F0ZWdvcnkpXG4gICAgICAgICAgICA/IFsuLi4oKGNhdGVnb3J5IGFzIFNjVmlydHVhbENhdGVnb3J5KS5jaGlsZENhdGVnb3JpZXMgPz8gW10pLCAuLi4oKGNhdGVnb3J5IGFzIFNjVmlydHVhbENhdGVnb3J5KS5wcm9kdWN0Q2F0ZWdvcmllcyA/PyBbXSldXG4gICAgICAgICAgICA6ICgoY2F0ZWdvcnkgYXMgU2NDYXRlZ29yeSkuY2F0ZWdvcmllcyA/PyBbXSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdAdHlwZSc6ICdJdGVtTGlzdCcsXG4gICAgICAgICAgICBudW1iZXJPZkl0ZW1zOiBwcm9kdWN0cy5sZW5ndGggKyBjaGlsZENhdGVnb3JpZXMubGVuZ3RoLFxuICAgICAgICAgICAgaXRlbUxpc3RPcmRlcjogJ2h0dHBzOi8vc2NoZW1hLm9yZy9JdGVtTGlzdFVub3JkZXJlZCcsXG4gICAgICAgICAgICBpdGVtTGlzdEVsZW1lbnQ6IFtcbiAgICAgICAgICAgICAgICAvLyDQlNC+0LHQsNCy0LvRj9C10Lwg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC4INCyINC90LDRh9Cw0LvQviDRgdC/0LjRgdC60LAuXG4gICAgICAgICAgICAgICAgLi4uY2hpbGRDYXRlZ29yaWVzLnNsaWNlKDAsIDUpLm1hcCgoc3ViQ2F0ZWdvcnksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5tZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLnRyYW5zZm9ybShzdWJDYXRlZ29yeS5pbWFnZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc3ViQ2F0ZWdvcnkuc2VvPy5kZXNjcmlwdGlvbiA/PyBzdWJDYXRlZ29yeS5wcm9wZXJ0aWVzPy5kZXNjcmlwdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0xpc3RJdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpbmRleCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0NvbGxlY3Rpb25QYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdWJDYXRlZ29yeS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGhpcy5nZXRDYXRlZ29yeUNhbm9uaWNhbFVybChzdWJDYXRlZ29yeSwgY2F0ZWdvcnlQYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oaW1hZ2UgJiYgeyBpbWFnZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogdGhpcy5zdHJpcEh0bWwoZGVzY3JpcHRpb24pIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyDQlNC+0LHQsNCy0LvRj9C10Lwg0YLQvtCy0LDRgNGLINC/0L7RgdC70LUg0L/QvtC00LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAgICAgICAgICAgIC4uLnByb2R1Y3RzLnNsaWNlKDAsIDEwKS5tYXAoKHByb2R1Y3QsIGluZGV4KSA9PiB0aGlzLmNyZWF0ZVByb2R1Y3RzTGlzdEl0ZW0ocHJvZHVjdCwgY2hpbGRDYXRlZ29yaWVzLmxlbmd0aCArIGluZGV4ICsgMSwgcHJvZHVjdFBhdGgpKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQvNCw0YHRgdC40LIgTGlua0RhdGEg0LIgQnJlYWRjcnVtYkxpc3Qg0LTQu9GPINC60LDRgtCw0LvQvtCz0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnJlYWRjcnVtYnMg0JzQsNGB0YHQuNCyINGF0LvQtdCx0L3Ri9GFINC60YDQvtGI0LXQui5cbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlQYXRoIFVybCDQv9GD0YLRjCDQuiDQutCw0YLQtdCz0L7RgNC40Y/QvCDRgtC+0LLQsNGA0L7Qsi4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQsNGC0LXQs9C+0YDQuNC4INC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlQ2F0YWxvZ0JyZWFkY3J1bWJzTGlzdChicmVhZGNydW1iczogU2NJQnJlYWRjcnVtYkl0ZW1bXSwgY2F0ZWdvcnlQYXRoOiBzdHJpbmcpOiBCcmVhZGNydW1iTGlzdCB7XG4gICAgICAgIGNvbnN0IGNhdGFsb2dVcmwgPSBgJHt0aGlzLnVybHMuc2l0ZVVybH0ke2NhdGVnb3J5UGF0aC5yZXBsYWNlKCc6aWQnLCAnJyl9YDtcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYkl0ZW1zOiBMaXN0SXRlbVtdID0gW1xuICAgICAgICAgICAgLy8g0JLRgdC10LPQtNCwINC00L7QsdCw0LLQu9GP0LXQvCDQs9C70LDQstC90YPRjiDRgdGC0YDQsNC90LjRhtGDLlxuICAgICAgICAgICAgdGhpcy5jcmVhdGVCcmVhZGNydW1iTGlzdEl0ZW0oMSwgJ9CT0LvQsNCy0L3QsNGPJywgdGhpcy51cmxzLnNpdGVVcmwpLFxuICAgICAgICAgICAgLy8g0JTQvtCx0LDQstC70Y/QtdC8INC60LDRgtCw0LvQvtCzLlxuICAgICAgICAgICAgdGhpcy5jcmVhdGVCcmVhZGNydW1iTGlzdEl0ZW0oMiwgJ9Ca0LDRgtCw0LvQvtCzJywgY2F0YWxvZ1VybCksXG4gICAgICAgIF07XG5cbiAgICAgICAgLy8g0JTQvtCx0LDQstC70Y/QtdC8INGB0YPRidC10YHRgtCy0YPRjtGJ0LjQtSBicmVhZGNydW1icyDRgSDQutC+0YDRgNC10LrRgtC40YDQvtCy0LrQvtC5INC/0L7Qt9C40YbQuNC5LlxuICAgICAgICBicmVhZGNydW1icy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluayA9IGlzQXJyYXkoaXRlbS5yb3V0ZXJMaW5rKSA/IGl0ZW0ucm91dGVyTGluay5qb2luKCcvJykgOiBpdGVtLnJvdXRlckxpbms7XG5cbiAgICAgICAgICAgIGJyZWFkY3J1bWJJdGVtcy5wdXNoKHRoaXMuY3JlYXRlQnJlYWRjcnVtYkxpc3RJdGVtKGluZGV4ICsgMywgaXRlbS5sYWJlbCwgbGluayA/IGAke3RoaXMudXJscy5zaXRlVXJsfS8ke2xpbmt9YCA6IHVuZGVmaW5lZCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0B0eXBlJzogJ0JyZWFkY3J1bWJMaXN0JyxcbiAgICAgICAgICAgIGl0ZW1MaXN0T3JkZXI6ICdodHRwczovL3NjaGVtYS5vcmcvSXRlbUxpc3RPcmRlckFzY2VuZGluZycsXG4gICAgICAgICAgICBpdGVtTGlzdEVsZW1lbnQ6IGJyZWFkY3J1bWJJdGVtcyxcbiAgICAgICAgfSBhcyBCcmVhZGNydW1iTGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDRjdC70LXQvNC10L3RgiBCcmVhZGNydW1iTGlzdCDQsiDRhNC+0YDQvNCw0YLQtSwg0YDQtdC60L7QvNC10L3QtNC+0LLQsNC90L3QvtC8IFNjaGVtYS5vcmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcG9zaXRpb24g0J/QvtC30LjRhtC40Y8g0Y3Qu9C10LzQtdC90YLQsCDQsiDRhtC10L/QvtGH0LrQtS5cbiAgICAgKiBAcGFyYW0gbmFtZSDQndCw0LfQstCw0L3QuNC1INGN0LvQtdC80LXQvdGC0LAuXG4gICAgICogQHBhcmFtIHVybCBVUkwg0Y3Qu9C10LzQtdC90YLQsC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgY3JlYXRlQnJlYWRjcnVtYkxpc3RJdGVtKHBvc2l0aW9uOiBudW1iZXIsIG5hbWU6IHN0cmluZywgdXJsPzogc3RyaW5nKTogTGlzdEl0ZW0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0B0eXBlJzogJ0xpc3RJdGVtJyxcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgLi4uKHVybFxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0BpZCc6IHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogeyBuYW1lIH0pLFxuICAgICAgICB9IGFzIExpc3RJdGVtO1xuICAgIH1cbn1cbiJdfQ==
|
|
566
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLW9yZy1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZW8vY2xhc3Nlcy9zY2hlbWEtb3JnLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUEwQjFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUcvQzs7R0FFRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJSTs7V0FFRztRQUNjLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXZEOztXQUVHO1FBQ2MsU0FBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4Qzs7V0FFRztRQUNLLGlCQUFZLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU5RDs7V0FFRztRQUNjLDhCQUF5QixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0tBNGtCcEY7SUExa0JHOzs7Ozs7T0FNRztJQUNJLHNCQUFzQixDQUFDLE9BQW1CLEVBQUUsV0FBbUIsRUFBRSxFQUFXO1FBQy9FLE1BQU0sVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFF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QUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUVwRixlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2xJLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNILE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsYUFBYSxFQUFFLDJDQUEyQztZQUMxRCxlQUFlLEVBQUUsZUFBZTtTQUNqQixDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxrREFBa0Q7SUFDMUMsd0JBQXdCLENBQUMsUUFBZ0IsRUFBRSxJQUFZLEVBQUUsR0FBWTtRQUN6RSxPQUFPO1lBQ0gsT0FBTyxFQUFFLFVBQVU7WUFDbkIsUUFBUTtZQUNSLEdBQUcsQ0FBQyxHQUFHO2dCQUNILENBQUMsQ0FBQztvQkFDSSxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLEdBQUc7d0JBQ1YsSUFBSTtxQkFDUDtpQkFDSjtnQkFDSCxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNOLENBQUM7SUFDbEIsQ0FBQzsrR0E5bEJRLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTs7NEZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNBcnJheSwgb21pdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICAgIEJyZWFkY3J1bWJMaXN0LFxuICAgIENvbGxlY3Rpb25QYWdlLFxuICAgIENvbnRhY3RQb2ludCxcbiAgICBGQVFQYWdlLFxuICAgIExpc3RJdGVtLFxuICAgIE1lcmNoYW50UmV0dXJuUG9saWN5LFxuICAgIE5ld3NBcnRpY2xlLFxuICAgIE9mZmVyLFxuICAgIE9yZ2FuaXphdGlvbixcbiAgICBQb3N0YWxBZGRyZXNzLFxuICAgIFByb2R1Y3QsXG4gICAgVGhpbmcsXG4gICAgV2l0aENvbnRleHQsXG59IGZyb20gJ3NjaGVtYS1kdHMnO1xuXG5pbXBvcnQgeyBTY0NhdGVnb3J5IH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9kdG8vc2MtY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NQcm9kdWN0IH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9kdG8vc2MtcHJvZHVjdCc7XG5pbXBvcnQgeyBTY1ZpcnR1YWxDYXRlZ29yeSB9IGZyb20gJy4uLy4uL2NhdGFsb2cvZHRvL3NjLXZpcnR1YWwtY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2ludGVyZmFjZXMvc2MtaS1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY0lQcm9kdWN0IH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9pbnRlcmZhY2VzL3NjLWktcHJvZHVjdCc7XG5pbXBvcnQgeyBTY0lWaXJ0dWFsQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9jYXRhbG9nL2ludGVyZmFjZXMvc2MtaS12aXJ0dWFsLWNhdGVnb3J5JztcbmltcG9ydCB7IFNjSUNvbXBhbnlCYXNlSW5mbyB9IGZyb20gJy4uLy4uL2NvbmZpZy9zYy1pLWNvbXBhbnktYmFzZS1pbmZvJztcbmltcG9ydCB7IFNjRmFxSXRlbSB9IGZyb20gJy4uLy4uL2ZyZXF1ZW50bHktYXNrZWQtcXVlc3Rpb25zL2ludGVyZmFjZXMvc2MtaS1mYXEtaXRlbSc7XG5pbXBvcnQgeyBTY0lOZXdzIH0gZnJvbSAnLi4vLi4vbmV3cy9pbnRlcmZhY2VzL3NjLWktbmV3cyc7XG5pbXBvcnQgeyBTY0lkT3JTbHVnUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3NjLWlkLW9yLXNsdWcucGlwZSc7XG5pbXBvcnQgeyBTY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9zYy1tZWRpYS1pbWFnZS10cmFuc2Zvcm1lci5waXBlJztcbmltcG9ydCB7IFNDX0NPTVBBTllfSU5GTyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1jb21wYW55LWluZm8nO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjSUJyZWFkY3J1bWJJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLWJyZWFkY3J1bWItaXRlbSc7XG5cbi8qKlxuICog0JzQtdGF0LDQvdC40LfQvNGLINCz0LXQvdC10YDQsNGG0LjQuCDRgdGF0LXQvCDQtNCw0L3QvdGL0YUgU2NoZW1hLm9yZy5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NoZW1hT3JnRmFjdG9yeSB7XG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+INC60L7QvNC/0LDQvdC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21wYW55SW5mbyA9IGluamVjdChTQ19DT01QQU5ZX0lORk8pO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybHMgPSBpbmplY3QoU0NfVVJMUyk7XG5cbiAgICAvKipcbiAgICAgKiDQn9Cw0LnQvywg0LLQvtC30LLRgNCw0YnQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCDRgdC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDQuNGB0YXQvtC00Y8g0LjQtyDQvdCw0YHRgtGA0L7QtdC6INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlkT3JTbHVnUGlwZTogU2NJZE9yU2x1Z1BpcGUgPSBpbmplY3QoU2NJZE9yU2x1Z1BpcGUpO1xuXG4gICAgLyoqXG4gICAgICog0J/QsNC50L8g0LTQu9GPINGE0L7RgNC80LjRgNC+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LPQviBVUkkg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvdCwIG1lZGlhINGB0LXRgNCy0LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSA9IGluamVjdChTY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUpO1xuXG4gICAgLyoqXG4gICAgICog0JPQtdC90LXRgNC40YDRg9C10YIg0Lgg0LLQvtC30LLRgNCw0YnQsNC10YIg0YHRhdC10LzRgyDQtNCw0L3QvdGL0YUg0LTQu9GPINGD0LrQsNC30LDQvdC90L7Qs9C+INC/0YDQvtC00YPQutGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQlNCw0L3QvdGL0LUg0L4g0L/RgNC+0LTRg9C60YLQtS5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdFBhdGggVXJsINC/0YPRgtGMINC6INGC0L7QstCw0YDRgy4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YLQvtCy0LDRgNCwINC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqIEBwYXJhbSBpZCDQndC10L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0YPRidC90L7RgdGC0Lgg0LTQu9GPINC/0L7Qu9GPIGBAaWRgINCyIEpTT04tTEQuXG4gICAgICovXG4gICAgcHVibGljIGdlbmVyYXRlRm9yUHJvZHVjdEl0ZW0ocHJvZHVjdDogU2NJUHJvZHVjdCwgcHJvZHVjdFBhdGg6IHN0cmluZywgaWQ/OiBzdHJpbmcpOiBXaXRoQ29udGV4dDxQcm9kdWN0PiB7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RVcmwgPSBgJHt0aGlzLnVybHMuc2l0ZVVybH0ke3Byb2R1Y3RQYXRoLnJlcGxhY2UoJzppZCcsIHRoaXMuaWRPclNsdWdQaXBlLnRyYW5zZm9ybShwcm9kdWN0KS50b1N0cmluZygpKX1gO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgICAgICBjb25zdCBpbWFnZSA9IHRoaXMubWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZS50cmFuc2Zvcm0oKHByb2R1Y3QgYXMgU2NQcm9kdWN0KT8uZ2V0SW1hZ2VQcmV2aWV3Py4oKSA/PyBwcm9kdWN0LmltYWdlLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBwcm9kdWN0LnByb3BlcnRpZXM/LmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQGNvbnRleHQnOiAnaHR0cHM6Ly9zY2hlbWEub3JnJyxcbiAgICAgICAgICAgICdAdHlwZSc6ICdQcm9kdWN0JyxcbiAgICAgICAgICAgIC4uLihpZCAmJiB7ICdAaWQnOiBpZCB9KSxcbiAgICAgICAgICAgIG5hbWU6IHByb2R1Y3QubmFtZSxcbiAgICAgICAgICAgIC4uLihpbWFnZSAmJiB7IGltYWdlIH0pLFxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IHRoaXMuc3RyaXBIdG1sKGRlc2NyaXB0aW9uKSB9KSxcbiAgICAgICAgICAgIHNrdTogcHJvZHVjdC5jb2RlLFxuICAgICAgICAgICAgLi4uKHByb2R1Y3Quc3VwcGxpZXJTa3UgJiYgeyBtcG46IHByb2R1Y3Quc3VwcGxpZXJTa3UgfSksXG4gICAgICAgICAgICAuLi4ocHJvZHVjdC5icmFuZCAmJiB7XG4gICAgICAgICAgICAgICAgYnJhbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0JyYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvZHVjdC5icmFuZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB1cmw6IHByb2R1Y3RVcmwsXG4gICAgICAgICAgICBvZmZlcnM6IHRoaXMuY3JlYXRlT2ZmZXIocHJvZHVjdCwgcHJvZHVjdFVybCksXG4gICAgICAgIH0gYXMgV2l0aENvbnRleHQ8UHJvZHVjdD47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JPQtdC90LXRgNC40YDRg9C10YIg0Lgg0LLQvtC30LLRgNCw0YnQsNC10YIg0YHRhdC10LzRgyDQtNCw0L3QvdGL0YUg0LTQu9GPINGD0LrQsNC30LDQvdC90L7Qs9C+INC/0YDQvtC00YPQutGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnkg0JTQsNC90L3Ri9C1INC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdHMg0JTQsNC90L3Ri9C1INC+INC/0YDQvtC00YPQutGC0LDRhSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICogQHBhcmFtIGNhdGVnb3J5UGF0aCBVcmwg0L/Rg9GC0Ywg0Log0LrQsNGC0LXQs9C+0YDQuNGP0Lwg0YLQvtCy0LDRgNC+0LIuINCSINC/0YPRgtC4INC00L7Qu9C20LXQvSDQv9GA0LjRgdGD0YLRgdGC0LLQvtCy0LDRgtGMINGI0LDQsdC70L7QvSAnOmlkJywg0L7QsdC+0LfQvdCw0YfQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60LDRgtC10LPQvtGA0LjQuCDQtNC70Y8g0L/QvtC00YHRgtCw0L3QvtCy0LrQuC5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdFBhdGggVXJsINC/0YPRgtGMINC6INGC0L7QstCw0YDRgy4g0JIg0L/Rg9GC0Lgg0LTQvtC70LbQtdC9INC/0YDQuNGB0YPRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC9ICc6aWQnLCDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YLQvtCy0LDRgNCwINC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqIEBwYXJhbSBicmVhZGNydW1icyDQlNCw0L3QvdGL0LUg0L4g0YXQu9C10LHQvdGL0YUg0LrRgNC+0YjQutCw0YUg0LTQu9GPINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKiBAcGFyYW0gaWQg0J3QtdC+0LHRj9C30LDRgtC10LvRjNC90YvQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdGD0YnQvdC+0YHRgtC4INC00LvRjyDQv9C+0LvRjyBgQGlkYCDQsiBKU09OLUxELlxuICAgICAqL1xuICAgIHB1YmxpYyBnZW5lcmF0ZUZvckNhdGVnb3J5SXRlbShcbiAgICAgICAgY2F0ZWdvcnk6IFNjSUNhdGVnb3J5IHwgU2NJVmlydHVhbENhdGVnb3J5LFxuICAgICAgICBwcm9kdWN0czogU2NJUHJvZHVjdFtdLFxuICAgICAgICBjYXRlZ29yeVBhdGg6IHN0cmluZyxcbiAgICAgICAgcHJvZHVjdFBhdGg6IHN0cmluZyxcbiAgICAgICAgYnJlYWRjcnVtYnM6IFNjSUJyZWFkY3J1bWJJdGVtW10sXG4gICAgICAgIGlkPzogc3RyaW5nXG4gICAgKTogV2l0aENvbnRleHQ8Q29sbGVjdGlvblBhZ2U+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb25SYXcgPSBjYXRlZ29yeS5zZW8/LmRlc2NyaXB0aW9uID8/IGNhdGVnb3J5LnByb3BlcnRpZXM/LmRlc2NyaXB0aW9uO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uUmF3ID8gdGhpcy5zdHJpcEh0bWwoZGVzY3JpcHRpb25SYXcpIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBpbWFnZSA9IHRoaXMubWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZS50cmFuc2Zvcm0oY2F0ZWdvcnkuaW1hZ2UsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQGNvbnRleHQnOiAnaHR0cHM6Ly9zY2hlbWEub3JnJyxcbiAgICAgICAgICAgICdAdHlwZSc6ICdDb2xsZWN0aW9uUGFnZScsXG4gICAgICAgICAgICAuLi4oaWQgJiYgeyAnQGlkJzogaWQgfSksXG4gICAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5zZW8/LnRpdGxlID8/IGNhdGVnb3J5Lm5hbWUsXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbiB9KSxcbiAgICAgICAgICAgIHVybDogdGhpcy5nZXRDYXRlZ29yeUNhbm9uaWNhbFVybChjYXRlZ29yeSwgY2F0ZWdvcnlQYXRoKSxcbiAgICAgICAgICAgIC4uLihpbWFnZSAmJiB7IGltYWdlIH0pLFxuICAgICAgICAgICAgLy8gU0VPINC00LDQvdC90YvQtS5cbiAgICAgICAgICAgIC4uLihjYXRlZ29yeS5zZW8/LmtleXdvcmRzICYmIHsga2V5d29yZHM6IGNhdGVnb3J5LnNlby5rZXl3b3JkcyB9KSxcbiAgICAgICAgICAgIC8vINCe0YHQvdC+0LLQvdC+0Lkg0LrQvtC90YLQtdC90YIg0YHRgtGA0LDQvdC40YbRiyAtINGB0L/QuNGB0L7QuiDRgtC+0LLQsNGA0L7QsiDQuCDQv9C+0LTQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICAgICAgICBtYWluRW50aXR5OiB0aGlzLmNyZWF0ZUNhdGVnb3J5TWFpbkVudGl0eShjYXRlZ29yeSwgcHJvZHVjdHMsIGNhdGVnb3J5UGF0aCwgcHJvZHVjdFBhdGgpLFxuICAgICAgICAgICAgLy8g0J3QsNCy0LjQs9Cw0YbQuNC+0L3QvdGL0LUg0YXQu9C10LHQvdGL0LUg0LrRgNC+0YjQutC4IChTY2hlbWEub3JnOiBicmVhZGNydW1iKS5cbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHRoaXMuY3JlYXRlQ2F0YWxvZ0JyZWFkY3J1bWJzTGlzdChicmVhZGNydW1icywgY2F0ZWdvcnlQYXRoKSxcbiAgICAgICAgICAgIC8vINCU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LUg0LzQtdGC0LDQtNCw0L3QvdGL0LUg0LTQu9GPIFNFTy5cbiAgICAgICAgICAgIGFib3V0OiB7XG4gICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0NhdGVnb3J5Q29kZScsXG4gICAgICAgICAgICAgICAgY29kZVZhbHVlOiBjYXRlZ29yeS5zbHVnLFxuICAgICAgICAgICAgICAgIG5hbWU6IGNhdGVnb3J5Lm5hbWUsXG4gICAgICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g0KHQstGP0LfQsNC90L3Ri9C1INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICAgICAgICByZWxhdGVkTGluazogW1xuICAgICAgICAgICAgICAgIGAke3RoaXMudXJscy5zaXRlVXJsfSR7Y2F0ZWdvcnlQYXRoLnJlcGxhY2UoJzppZCcsICcnKX1gLFxuICAgICAgICAgICAgICAgIC4uLih0aGlzLmlzVmlydHVhbENhdGVnb3J5KGNhdGVnb3J5KSB8fCAhY2F0ZWdvcnkucGFyZW50Q2F0ZWdvcnkgPyBbXSA6IFt0aGlzLmdldENhdGVnb3J5Q2Fub25pY2FsVXJsKGNhdGVnb3J5LnBhcmVudENhdGVnb3J5LCBjYXRlZ29yeVBhdGgpXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8g0JTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQtSDRgdCy0L7QudGB0YLQstCwINC60LDRgtC10LPQvtGA0LjQuCAo0L3QtSDQuNC30L7QsdGA0LDQttC10L3QuNGPKS5cbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0eTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb3BlcnR5VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YLQvtCy0LDRgNC+0LInLFxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogKHByb2R1Y3RzPy5sZW5ndGggPz8gMCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb3BlcnR5VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnU2x1ZyDQutCw0YLQtdCz0L7RgNC40LgnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnkuc2x1ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCBTRU8g0LTQsNC90L3Ri9C1INC10YHQu9C4INC10YHRgtGMLlxuICAgICAgICAgICAgICAgIC4uLihjYXRlZ29yeS5zZW8/LmtleXdvcmRzXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUHJvcGVydHlWYWx1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnU0VPIEtleXdvcmRzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjYXRlZ29yeS5zZW8ua2V5d29yZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oY2F0ZWdvcnkuc2VvPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ1Byb3BlcnR5VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1NFTyBUaXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2F0ZWdvcnkuc2VvLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICB9IGFzIFdpdGhDb250ZXh0PENvbGxlY3Rpb25QYWdlPjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQk9C10L3QtdGA0LjRgNGD0LXRgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDRgdGF0LXQvNGDINC00LDQvdC90YvRhSBPbmxpbmVTdG9yZSDQvdCwINC+0YHQvdC+0LLQtSDQtNCw0L3QvdGL0YUg0LrQvtC80L/QsNC90LjQuCDQuNC3INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9mdW5jdGlvbi1yZXR1cm4tdHlwZVxuICAgIHB1YmxpYyBnZW5lcmF0ZUZvck9yZ2FuaXphdGlvbigpOiBXaXRoQ29udGV4dDxPcmdhbml6YXRpb24+IHtcbiAgICAgICAgY29uc3QgcG9zdGFsQWRkcmVzcyA9IHRoaXMuY3JlYXRlUG9zdGFsQWRkcmVzcyh0aGlzLmNvbXBhbnlJbmZvLmFkZHJlc3MpO1xuICAgICAgICBjb25zdCBtZXJjaGFudFJldHVyblBvbGljeSA9IHRoaXMuY3JlYXRlTWVyY2hhbnRSZXR1cm5Qb2xpY3koKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0Bjb250ZXh0JzogJ2h0dHBzOi8vc2NoZW1hLm9yZycsXG4gICAgICAgICAgICAnQHR5cGUnOiAnT25saW5lU3RvcmUnLFxuICAgICAgICAgICAgJ0BpZCc6IGAke3RoaXMudXJscy5zaXRlVXJsfSNvcmdhbml6YXRpb25gLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5jb21wYW55SW5mby5uYW1lLFxuICAgICAgICAgICAgbGVnYWxOYW1lOiB0aGlzLmNvbXBhbnlJbmZvLm5hbWUsXG4gICAgICAgICAgICB1cmw6IHRoaXMudXJscy5zaXRlVXJsLFxuICAgICAgICAgICAgbG9nbzogdGhpcy51cmxzLmxvZ29VcmwsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy51cmxzLmxvZ29VcmwsXG4gICAgICAgICAgICBlbWFpbDogdGhpcy5jb21wYW55SW5mby5tYWlsLFxuICAgICAgICAgICAgdGVsZXBob25lOiB0aGlzLmNvbXBhbnlJbmZvLnBob25lLFxuICAgICAgICAgICAgLi4uKHBvc3RhbEFkZHJlc3MgJiYgeyBhZGRyZXNzOiBwb3N0YWxBZGRyZXNzIH0pLFxuICAgICAgICAgICAgbGVnYWxBZGRyZXNzOiB0aGlzLmNyZWF0ZVBvc3RhbEFkZHJlc3MoeyBzdHJlZXRBZGRyZXNzOiB0aGlzLmNvbXBhbnlJbmZvLmxlZ2FsQWRkcmVzcyB9IGFzIFNjSUNvbXBhbnlCYXNlSW5mb1snYWRkcmVzcyddKSxcbiAgICAgICAgICAgIC8vIFRPRE86INCf0LXRgNC10YfQuNGB0LvQuNGC0Ywg0LLRgdC1INGA0L7Qt9C90LjRh9C90YvQtSDQvNCw0LPQsNC30LjQvdGLLlxuICAgICAgICAgICAgLy8gaGFzUE9TOiBbXSxcbiAgICAgICAgICAgIHRheElEOiB0aGlzLmNvbXBhbnlJbmZvLmlubixcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUHJvcGVydHlWYWx1ZScsXG4gICAgICAgICAgICAgICAgcHJvcGVydHlJRDogJ09HUk4nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmNvbXBhbnlJbmZvLm9ncm4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFjdFBvaW50OiB0aGlzLmNyZWF0ZU9yZ2FuaXphdGlvbkNvbnRhY3RQb2ludHMoKSxcbiAgICAgICAgICAgIC4uLih0aGlzLmNvbXBhbnlJbmZvLndhcmVob3VzZUFkZHJlc3MubGVuZ3RoID4gMCAmJiB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuY29tcGFueUluZm8ud2FyZWhvdXNlQWRkcmVzcy5tYXAoKHdhcmVob3VzZUFkZHJlc3MpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICdAdHlwZSc6ICdQbGFjZScsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGAke3RoaXMuY29tcGFueUluZm8ubmFtZX0g4oCUINGB0LrQu9Cw0LQg0YHQsNC80L7QstGL0LLQvtC30LBgLFxuICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB3YXJlaG91c2VBZGRyZXNzLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKG1lcmNoYW50UmV0dXJuUG9saWN5ICYmIHtcbiAgICAgICAgICAgICAgICAvLyDQotC40L8g0LLQvtC30LzQtdGJ0LXQvdC40Y8gR29vZ2xlINC/0YDQuNC90LjQvNCw0LXRgiDRgtC+0LvRjNC60L4g0LIg0L/QvtC70LjRgtC40LrQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4LCDQsiDQv9GA0LXQtNC70L7QttC10L3QuNGP0YUg0LXQs9C+INC90LXRgi5cbiAgICAgICAgICAgICAgICBoYXNNZXJjaGFudFJldHVyblBvbGljeToge1xuICAgICAgICAgICAgICAgICAgICAuLi5tZXJjaGFudFJldHVyblBvbGljeSxcbiAgICAgICAgICAgICAgICAgICAgcmVmdW5kVHlwZTogJ2h0dHBzOi8vc2NoZW1hLm9yZy9GdWxsUmVmdW5kJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgV2l0aENvbnRleHQ8T3JnYW5pemF0aW9uPjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQk9C10L3QtdGA0LjRgNGD0LXRgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDRgdGF0LXQvNGDINC00LDQvdC90YvRhSDQtNC70Y8g0YPQutCw0LfQsNC90L3QvtC5INC90L7QstC+0YHRgtC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld3Mg0JTQsNC90L3Ri9C1INC+INC90L7QstC+0YHRgtC4LlxuICAgICAqIEBwYXJhbSBuZXdzUGF0aCBVcmwg0L/Rg9GC0Ywg0Log0L3QvtCy0L7RgdGC0LguINCSINC/0YPRgtC4INC00L7Qu9C20LXQvSDQv9GA0LjRgdGD0YLRgdGC0LLQvtCy0LDRgtGMINGI0LDQsdC70L7QvSAnOmlkJywg0L7QsdC+0LfQvdCw0YfQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC90L7QstC+0YHRgtC4INC00LvRjyDQv9C+0LTRgdGC0LDQvdC+0LLQutC4LlxuICAgICAqIEBwYXJhbSBpZCDQndC10L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0YPRidC90L7RgdGC0Lgg0LTQu9GPINC/0L7Qu9GPIGBAaWRgINCyIEpTT04tTEQuXG4gICAgICovXG4gICAgcHVibGljIGdlbmVyYXRlRm9yTmV3c0FydGljbGUobmV3czogU2NJTmV3cywgbmV3c1BhdGg6IHN0cmluZywgaWQ/OiBzdHJpbmcpOiBXaXRoQ29udGV4dDxOZXdzQXJ0aWNsZT4ge1xuICAgICAgICBjb25zdCBuZXdzVXJsID0gYCR7dGhpcy51cmxzLnNpdGVVcmx9JHtuZXdzUGF0aC5yZXBsYWNlKCc6aWQnLCBuZXdzLmlkLnRvU3RyaW5nKCkpfWA7XG4gICAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5tZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLnRyYW5zZm9ybShuZXdzLmltYWdlLCB0cnVlKTtcbiAgICAgICAgY29uc3QgaGVhZGxpbmUgPSBuZXdzLnNlbz8udGl0bGUgPz8gbmV3cy5zdWJqZWN0O1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IG5ld3Muc2VvPy5kZXNjcmlwdGlvbjtcbiAgICAgICAgY29uc3QgZGF0ZVB1Ymxpc2hlZCA9IHRoaXMubm9ybWFsaXplU2NoZW1hRGF0ZShuZXdzLmNyZWF0ZWRBdCk7XG4gICAgICAgIGNvbnN0IGFydGljbGVCb2R5ID0gbmV3cy50ZXh0ID8gdGhpcy5zdHJpcEh0bWwobmV3cy50ZXh0KSA6IHVuZGVmaW5lZDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0Bjb250ZXh0JzogJ2h0dHBzOi8vc2NoZW1hLm9yZycsXG4gICAgICAgICAgICAnQHR5cGUnOiAnTmV3c0FydGljbGUnLFxuICAgICAgICAgICAgLi4uKGlkICYmIHsgJ0BpZCc6IGlkIH0pLFxuICAgICAgICAgICAgaGVhZGxpbmUsXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogdGhpcy5zdHJpcEh0bWwoZGVzY3JpcHRpb24pIH0pLFxuICAgICAgICAgICAgLi4uKGltYWdlICYmIHsgaW1hZ2UgfSksXG4gICAgICAgICAgICAuLi4oZGF0ZVB1Ymxpc2hlZCAmJiB7IGRhdGVQdWJsaXNoZWQgfSksXG4gICAgICAgICAgICAuLi4oYXJ0aWNsZUJvZHkgJiYgeyBhcnRpY2xlQm9keSB9KSxcbiAgICAgICAgICAgIHVybDogbmV3c1VybCxcbiAgICAgICAgICAgIG1haW5FbnRpdHlPZlBhZ2U6IG5ld3NVcmwsXG4gICAgICAgICAgICBhdXRob3I6IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmNvbXBhbnlJbmZvLm5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybHMuc2l0ZVVybCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwdWJsaXNoZXI6IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnT3JnYW5pemF0aW9uJyxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmNvbXBhbnlJbmZvLm5hbWUsXG4gICAgICAgICAgICAgICAgbG9nbzoge1xuICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnSW1hZ2VPYmplY3QnLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJscy5sb2dvVXJsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFdpdGhDb250ZXh0PE5ld3NBcnRpY2xlPjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQk9C10L3QtdGA0LjRgNGD0LXRgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDRgdGF0LXQvNGDINC00LDQvdC90YvRhSBGQVFQYWdlINC00LvRjyDRgdGC0YDQsNC90LjRhtGLINGBINCy0L7Qv9GA0L7RgdCw0LzQuCDQuCDQvtGC0LLQtdGC0LDQvNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zINCh0L/QuNGB0L7QuiDQstC+0L/RgNC+0YHQvtCyINC4INC+0YLQstC10YLQvtCyLlxuICAgICAqIEBwYXJhbSBwYWdlUGF0aCBVcmwg0L/Rg9GC0Ywg0Log0YHRgtGA0LDQvdC40YbQtSBGQVEuXG4gICAgICogQHBhcmFtIHBhZ2VOYW1lINCd0LXQvtCx0Y/Qt9Cw0YLQtdC70YzQvdC+0LUg0L3QsNC30LLQsNC90LjQtSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqIEBwYXJhbSBpZCDQndC10L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0YPRidC90L7RgdGC0Lgg0LTQu9GPINC/0L7Qu9GPIGBAaWRgINCyIEpTT04tTEQuXG4gICAgICovXG4gICAgcHVibGljIGdlbmVyYXRlRm9yRmFxUGFnZShpdGVtczogU2NGYXFJdGVtW10sIHBhZ2VQYXRoOiBzdHJpbmcsIHBhZ2VOYW1lPzogc3RyaW5nLCBpZD86IHN0cmluZyk6IFdpdGhDb250ZXh0PEZBUVBhZ2U+IHtcbiAgICAgICAgY29uc3QgcGFnZVVybCA9IGAke3RoaXMudXJscy5zaXRlVXJsfSR7cGFnZVBhdGh9YDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0Bjb250ZXh0JzogJ2h0dHBzOi8vc2NoZW1hLm9yZycsXG4gICAgICAgICAgICAnQHR5cGUnOiAnRkFRUGFnZScsXG4gICAgICAgICAgICAuLi4oaWQgJiYgeyAnQGlkJzogaWQgfSksXG4gICAgICAgICAgICAuLi4ocGFnZU5hbWUgJiYgeyBuYW1lOiBwYWdlTmFtZSB9KSxcbiAgICAgICAgICAgIHVybDogcGFnZVVybCxcbiAgICAgICAgICAgIG1haW5FbnRpdHk6IGl0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUXVlc3Rpb24nLFxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ucXVlc3Rpb24sXG4gICAgICAgICAgICAgICAgYWNjZXB0ZWRBbnN3ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0Fuc3dlcicsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMuc3RyaXBIdG1sKGl0ZW0uYW5zd2VyKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFdpdGhDb250ZXh0PEZBUVBhZ2U+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRitC10LTQuNC90Y/QtdGCINC90LXRgdC60L7Qu9GM0LrQviBKU09OLUxEINGB0YPRidC90L7RgdGC0LXQuSDQsiDQvtC00LjQvSDQtNC+0LrRg9C80LXQvdGCINGBIGBAZ3JhcGhgLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEg0JzQsNGB0YHQuNCyIEpTT04tTEQg0YHRg9GJ0L3QvtGB0YLQtdC5INC00LvRjyDQvtCx0YrQtdC00LjQvdC10L3QuNGPLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLHNvbmFyanMvZnVuY3Rpb24tcmV0dXJuLXR5cGVcbiAgICBwdWJsaWMgbWVyZ2UoZGF0YTogQXJyYXk8V2l0aENvbnRleHQ8VGhpbmc+Pik6IFdpdGhDb250ZXh0PFRoaW5nPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQGNvbnRleHQnOiAnaHR0cHM6Ly9zY2hlbWEub3JnJyxcbiAgICAgICAgICAgICdAZ3JhcGgnOiBkYXRhLm1hcCgoaXRlbSkgPT4gb21pdChpdGVtLCAnQGNvbnRleHQnKSksXG4gICAgICAgIH0gYXMgdW5rbm93biBhcyBXaXRoQ29udGV4dDxUaGluZz47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQuNGA0YPQtdGCIFBvc3RhbEFkZHJlc3Mg0LjQtyDRgdGC0YDRg9C60YLRg9GA0LjRgNC+0LLQsNC90L3QvtCz0L4g0LDQtNGA0LXRgdCwINC60L7QvNC/0LDQvdC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyDQodGC0YDRg9C60YLRg9GA0LjRgNC+0LLQsNC90L3Ri9C5INCw0LTRgNC10YEg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgY3JlYXRlUG9zdGFsQWRkcmVzcyhhZGRyZXNzOiBTY0lDb21wYW55QmFzZUluZm9bJ2FkZHJlc3MnXSk6IFBvc3RhbEFkZHJlc3MgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBzdHJlZXRBZGRyZXNzID0gW2FkZHJlc3Muc3RyZWV0QWRkcmVzcywgYWRkcmVzcy5leHRlbmRlZEFkZHJlc3NdLmZpbHRlcihCb29sZWFuKS5qb2luKCcsICcpO1xuXG4gICAgICAgIGlmICghc3RyZWV0QWRkcmVzcyAmJiAhYWRkcmVzcy5sb2NhbGl0eSAmJiAhYWRkcmVzcy5yZWdpb24gJiYgIWFkZHJlc3MucG9zdGFsQ29kZSAmJiAhYWRkcmVzcy5jb3VudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdAdHlwZSc6ICdQb3N0YWxBZGRyZXNzJyxcbiAgICAgICAgICAgIC4uLihzdHJlZXRBZGRyZXNzICYmIHsgc3RyZWV0QWRkcmVzcyB9KSxcbiAgICAgICAgICAgIC4uLihhZGRyZXNzLmxvY2FsaXR5ICYmIHsgYWRkcmVzc0xvY2FsaXR5OiBhZGRyZXNzLmxvY2FsaXR5IH0pLFxuICAgICAgICAgICAgLi4uKGFkZHJlc3MucmVnaW9uICYmIHsgYWRkcmVzc1JlZ2lvbjogYWRkcmVzcy5yZWdpb24gfSksXG4gICAgICAgICAgICAuLi4oYWRkcmVzcy5wb3N0YWxDb2RlICYmIHsgcG9zdGFsQ29kZTogYWRkcmVzcy5wb3N0YWxDb2RlIH0pLFxuICAgICAgICAgICAgLi4uKGFkZHJlc3MuY291bnRyeSAmJiB7IGFkZHJlc3NDb3VudHJ5OiBhZGRyZXNzLmNvdW50cnkgfSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQuNGA0YPQtdGCINGB0L/QuNGB0L7QuiBDb250YWN0UG9pbnQg0LTQu9GPIE9yZ2FuaXphdGlvbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZU9yZ2FuaXphdGlvbkNvbnRhY3RQb2ludHMoKTogQ29udGFjdFBvaW50W10ge1xuICAgICAgICBjb25zdCBjb250YWN0UG9pbnRzOiBDb250YWN0UG9pbnRbXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnQ29udGFjdFBvaW50JyxcbiAgICAgICAgICAgICAgICBjb250YWN0VHlwZTogJ2N1c3RvbWVyIHNlcnZpY2UnLFxuICAgICAgICAgICAgICAgIHRlbGVwaG9uZTogdGhpcy5jb21wYW55SW5mby5waG9uZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogdGhpcy5jb21wYW55SW5mby5tYWlsLFxuICAgICAgICAgICAgICAgIGFyZWFTZXJ2ZWQ6ICdSVScsXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2U6ICdSdXNzaWFuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuY29tcGFueUluZm8uc2Vjb25kYXJ5UGhvbmUpIHtcbiAgICAgICAgICAgIGNvbnRhY3RQb2ludHMucHVzaCh7XG4gICAgICAgICAgICAgICAgJ0B0eXBlJzogJ0NvbnRhY3RQb2ludCcsXG4gICAgICAgICAgICAgICAgY29udGFjdFR5cGU6ICdjdXN0b21lciBzZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICB0ZWxlcGhvbmU6IHRoaXMuY29tcGFueUluZm8uc2Vjb25kYXJ5UGhvbmUsXG4gICAgICAgICAgICAgICAgYXJlYVNlcnZlZDogJ1JVJyxcbiAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZTogJ1J1c3NpYW4nLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb21wYW55SW5mby5ocikge1xuICAgICAgICAgICAgY29udGFjdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnQ29udGFjdFBvaW50JyxcbiAgICAgICAgICAgICAgICBjb250YWN0VHlwZTogJ0hSJyxcbiAgICAgICAgICAgICAgICB0ZWxlcGhvbmU6IHRoaXMuY29tcGFueUluZm8uaHIucGhvbmUsXG4gICAgICAgICAgICAgICAgZW1haWw6IHRoaXMuY29tcGFueUluZm8uaHIubWFpbCxcbiAgICAgICAgICAgICAgICBhcmVhU2VydmVkOiAnUlUnLFxuICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlOiAnUnVzc2lhbicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250YWN0UG9pbnRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCk0L7RgNC80LjRgNGD0LXRgiBNZXJjaGFudFJldHVyblBvbGljeSDQv9C+INGD0YHQu9C+0LLQuNGP0Lwg0LLQvtC30LLRgNCw0YLQsCDQuNC3INC00LDQvdC90YvRhSDQviDQutC+0LzQv9Cw0L3QuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlTWVyY2hhbnRSZXR1cm5Qb2xpY3koKTogTWVyY2hhbnRSZXR1cm5Qb2xpY3kgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMuY29tcGFueUluZm8ucmV0dXJuUG9saWN5KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdAdHlwZSc6ICdNZXJjaGFudFJldHVyblBvbGljeScsXG4gICAgICAgICAgICBhcHBsaWNhYmxlQ291bnRyeTogJ1JVJyxcbiAgICAgICAgICAgIHJldHVyblBvbGljeUNhdGVnb3J5OiAnaHR0cHM6Ly9zY2hlbWEub3JnL01lcmNoYW50UmV0dXJuRmluaXRlUmV0dXJuV2luZG93JyxcbiAgICAgICAgICAgIG1lcmNoYW50UmV0dXJuRGF5czogdGhpcy5jb21wYW55SW5mby5yZXR1cm5Qb2xpY3kucmV0dXJuRGF5cyxcbiAgICAgICAgICAgIHJldHVybk1ldGhvZDogJ2h0dHBzOi8vc2NoZW1hLm9yZy9SZXR1cm5JblN0b3JlJyxcbiAgICAgICAgICAgIHJldHVybkZlZXM6ICdodHRwczovL3NjaGVtYS5vcmcvRnJlZVJldHVybicsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIgSFRNTC3RgNCw0LfQvNC10YLQutGDINC40Lcg0YLQtdC60YHRgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGh0bWwg0KLQtdC60YHRgiDRgSBIVE1MLdGA0LDQt9C80LXRgtC60L7QuS5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIHByaXZhdGUgc3RyaXBIdG1sKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHdpdGhvdXRUYWdzID0gaHRtbFxuICAgICAgICAgICAgLnNwbGl0KCc8JylcbiAgICAgICAgICAgIC5tYXAoKHBhcnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlVGFnSW5kZXggPSBwYXJ0LmluZGV4T2YoJz4nKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZVRhZ0luZGV4ID09PSAtMSA/IHBhcnQgOiBgICR7cGFydC5zbGljZShjbG9zZVRhZ0luZGV4ICsgMSl9YDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignJyk7XG5cbiAgICAgICAgcmV0dXJuIHdpdGhvdXRUYWdzXG4gICAgICAgICAgICAucmVwbGFjZUFsbCgvJm5ic3A7L2dpLCAnICcpXG4gICAgICAgICAgICAucmVwbGFjZUFsbCgvXFxzKy9nLCAnICcpXG4gICAgICAgICAgICAucmVwbGFjZUFsbCgvIChbLiwhPzs6XSkvZywgJyQxJylcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J3QvtGA0LzQsNC70LjQt9GD0LXRgiDQtNCw0YLRgyDQsiDRhNC+0YDQvNCw0YIgU2NoZW1hLm9yZyAoSVNPIDg2MDEpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVWYWx1ZSDQlNCw0YLQsCDQtNC70Y8g0L3QvtGA0LzQsNC70LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJpdmF0ZSBub3JtYWxpemVTY2hlbWFEYXRlKGRhdGVWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghZGF0ZVZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0vLnRlc3QoZGF0ZVZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGVWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpdGhUaW1lTWF0Y2ggPSAvXihcXGR7Mn0pXFwuKFxcZHsyfSlcXC4oXFxkezR9KSAoXFxkezJ9KTooXFxkezJ9KSQvLmV4ZWMoZGF0ZVZhbHVlKTtcblxuICAgICAgICBpZiAod2l0aFRpbWVNYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgWywgZGF5LCBtb250aCwgeWVhciwgaG91cnMsIG1pbnV0ZXNdID0gd2l0aFRpbWVNYXRjaDtcblxuICAgICAgICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fVQke2hvdXJzfToke21pbnV0ZXN9OjAwYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGVPbmx5TWF0Y2ggPSAvXihcXGR7Mn0pXFwuKFxcZHsyfSlcXC4oXFxkezR9KSQvLmV4ZWMoZGF0ZVZhbHVlKTtcblxuICAgICAgICBpZiAoIWRhdGVPbmx5TWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbLCBkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVPbmx5TWF0Y2g7XG5cbiAgICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J3QvtGA0LzQsNC70LjQt9GD0LXRgiDQtNCw0YLRgyDQvtC60L7QvdGH0LDQvdC40Y8g0YbQtdC90Ysg0LIg0YTQvtGA0LzQsNGCIFNjaGVtYS5vcmcgKFlZWVktTU0tREQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGV4cGlyZWRBdCDQlNCw0YLQsCDQtNC70Y8g0L3QvtGA0LzQsNC70LjQt9Cw0YbQuNC4XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBwcml2YXRlIG5vcm1hbGl6ZVByaWNlVmFsaWRVbnRpbChleHBpcmVkQXQ/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWV4cGlyZWRBdCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGUgPSBleHBpcmVkQXQuc2xpY2UoMCwgMTApO1xuXG4gICAgICAgIHJldHVybiAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8udGVzdChkYXRlKSA/IGRhdGUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7Qv9GA0LXQtNC10LvRj9C10YIg0LTQvtGB0YLRg9C/0L3QvtGB0YLRjCDRgtC+0LLQsNGA0LAg0L/QviDQtNCw0L3QvdGL0Lwg0L/RgNC+0LTRg9C60YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0INCU0LDQvdC90YvQtSDQviDQv9GA0L7QtNGD0LrRgtC1LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJpdmF0ZSBnZXRBdmFpbGFiaWxpdHkocHJvZHVjdDogU2NJUHJvZHVjdCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwcm9kdWN0Lm9uT3JkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiAnaHR0cHM6Ly9zY2hlbWEub3JnL1ByZU9yZGVyJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9kdWN0LnN0b2NrQ291bnQ/Lmxlbmd0aCA/ICdodHRwczovL3NjaGVtYS5vcmcvSW5TdG9jaycgOiAnaHR0cHM6Ly9zY2hlbWEub3JnL091dE9mU3RvY2snO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0Y/QstC70Y/QtdGC0YHRjyDQu9C4INC60LDRgtC10LPQvtGA0LjRjyDQstC40YDRgtGD0LDQu9GM0L3QvtC5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5INCU0LDQvdC90YvQtSDQviDQutCw0YLQtdCz0L7RgNC40Lgg0LTQu9GPINC/0YDQvtCy0LXRgNC60LguXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBwcml2YXRlIGlzVmlydHVhbENhdGVnb3J5KGNhdGVnb3J5OiBTY0lDYXRlZ29yeSB8IFNjSVZpcnR1YWxDYXRlZ29yeSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gJ2NoaWxkQ2F0ZWdvcmllcycgaW4gY2F0ZWdvcnkgJiYgJ3Byb2R1Y3RDYXRlZ29yaWVzJyBpbiBjYXRlZ29yeTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiBVUkwg0LTQu9GPINGD0LrQsNC30LDQvdC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnkg0JTQsNC90L3Ri9C1INC+INC60LDRgtC10LPQvtGA0LjQuFxuICAgICAqIEBwYXJhbSBjYXRlZ29yeVBhdGggVXJsINC/0YPRgtGMINC6INC60LDRgtC10LPQvtGA0LjRj9C8INGC0L7QstCw0YDQvtCyLiDQkiDQv9GD0YLQuCDQtNC+0LvQttC10L0g0L/RgNC40YHRg9GC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L0gJzppZCcsINC+0LHQvtC30L3QsNGH0LDRjtGJ0LjQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40Lgg0LTQu9GPINC/0L7QtNGB0YLQsNC90L7QstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDYXRlZ29yeUNhbm9uaWNhbFVybChjYXRlZ29yeTogU2NJQ2F0ZWdvcnkgfCBTY0lWaXJ0dWFsQ2F0ZWdvcnksIGNhdGVnb3J5UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmlzVmlydHVhbENhdGVnb3J5KGNhdGVnb3J5KSA/IGNhdGVnb3J5LnNsdWcgOiB0aGlzLmlkT3JTbHVnUGlwZS50cmFuc2Zvcm0oY2F0ZWdvcnkpLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBjYXRlZ29yeVBhdGgucmVwbGFjZSgnOmlkJywgaWQpO1xuXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnVybHMuc2l0ZVVybH0ke3BhdGh9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiBPZmZlciDQviDQv9GA0L7QtNCw0LbQtSDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQlNCw0L3QvdGL0LUg0L4g0L/RgNC+0LTRg9C60YLQtS5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdFVybCDQn9C+0LvQvdGL0LkgVVJMINGB0YLRgNCw0L3QuNGG0Ysg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlT2ZmZXIocHJvZHVjdDogU2NJUHJvZHVjdCwgcHJvZHVjdFVybDogc3RyaW5nKTogT2ZmZXIge1xuICAgICAgICBjb25zdCBwcmljZVZhbGlkVW50aWwgPSB0aGlzLm5vcm1hbGl6ZVByaWNlVmFsaWRVbnRpbChwcm9kdWN0LmRpc2NvdW50Py5leHBpcmVkQXQpO1xuICAgICAgICBjb25zdCBtZXJjaGFudFJldHVyblBvbGljeSA9IHRoaXMuY3JlYXRlTWVyY2hhbnRSZXR1cm5Qb2xpY3koKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0B0eXBlJzogJ09mZmVyJyxcbiAgICAgICAgICAgIHByaWNlQ3VycmVuY3k6ICdSVUInLFxuICAgICAgICAgICAgLi4uKHByaWNlVmFsaWRVbnRpbCAmJiB7IHByaWNlVmFsaWRVbnRpbCB9KSxcbiAgICAgICAgICAgIHByaWNlOiBwcm9kdWN0LmNvc3RSdWIsXG4gICAgICAgICAgICBhdmFpbGFiaWxpdHk6IHRoaXMuZ2V0QXZhaWxhYmlsaXR5KHByb2R1Y3QpLFxuICAgICAgICAgICAgaXRlbUNvbmRpdGlvbjogJ2h0dHBzOi8vc2NoZW1hLm9yZy9OZXdDb25kaXRpb24nLFxuICAgICAgICAgICAgc2VsbGVyOiB7XG4gICAgICAgICAgICAgICAgJ0B0eXBlJzogJ09yZ2FuaXphdGlvbicsXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5jb21wYW55SW5mby5uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVybDogcHJvZHVjdFVybCxcbiAgICAgICAgICAgIC4uLihtZXJjaGFudFJldHVyblBvbGljeSAmJiB7IGhhc01lcmNoYW50UmV0dXJuUG9saWN5OiBtZXJjaGFudFJldHVyblBvbGljeSB9KSxcbiAgICAgICAgfSBhcyBPZmZlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDRjdC70LXQvNC10L3RgiDRgdC/0LjRgdC60LAgSXRlbUxpc3Qg0YEg0LrRgNCw0YLQutC40LwgUHJvZHVjdCDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiyDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQlNCw0L3QvdGL0LUg0L4g0L/RgNC+0LTRg9C60YLQtS5cbiAgICAgKiBAcGFyYW0gcG9zaXRpb24g0J/QvtC30LjRhtC40Y8g0LIg0YHQv9C40YHQutC1LlxuICAgICAqIEBwYXJhbSBwcm9kdWN0UGF0aCBVcmwg0L/Rg9GC0Ywg0Log0YLQvtCy0LDRgNGDLiDQkiDQv9GD0YLQuCDQtNC+0LvQttC10L0g0L/RgNC40YHRg9GC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L0gJzppZCcsINC+0LHQvtC30L3QsNGH0LDRjtGJ0LjQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgtC+0LLQsNGA0LAg0LTQu9GPINC/0L7QtNGB0YLQsNC90L7QstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVQcm9kdWN0c0xpc3RJdGVtKHByb2R1Y3Q6IFNjSVByb2R1Y3QsIHBvc2l0aW9uOiBudW1iZXIsIHByb2R1Y3RQYXRoOiBzdHJpbmcpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCBwcm9kdWN0VXJsID0gYCR7dGhpcy51cmxzLnNpdGVVcmx9JHtwcm9kdWN0UGF0aC5yZXBsYWNlKCc6aWQnLCB0aGlzLmlkT3JTbHVnUGlwZS50cmFuc2Zvcm0ocHJvZHVjdCkudG9TdHJpbmcoKSl9YDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgY29uc3QgaW1hZ2UgPSB0aGlzLm1lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUudHJhbnNmb3JtKChwcm9kdWN0IGFzIFNjUHJvZHVjdCk/LmdldEltYWdlUHJldmlldz8uKCkgPz8gcHJvZHVjdC5pbWFnZSwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcHJvZHVjdC5zZW8/LmRlc2NyaXB0aW9uID8/IHByb2R1Y3QucHJvcGVydGllcz8uZGVzY3JpcHRpb247XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdAdHlwZSc6ICdMaXN0SXRlbScsXG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgICAnQHR5cGUnOiAnUHJvZHVjdCcsXG4gICAgICAgICAgICAgICAgbmFtZTogcHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogcHJvZHVjdFVybCxcbiAgICAgICAgICAgICAgICAuLi4oaW1hZ2UgJiYgeyBpbWFnZSB9KSxcbiAgICAgICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogdGhpcy5zdHJpcEh0bWwoZGVzY3JpcHRpb24pIH0pLFxuICAgICAgICAgICAgICAgIG9mZmVyczogdGhpcy5jcmVhdGVPZmZlcihwcm9kdWN0LCBwcm9kdWN0VXJsKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIgbWFpbkVudGl0eSDQtNC70Y8g0YPQutCw0LfQsNC90L3QvtC5INC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSDQlNCw0L3QvdGL0LUg0L4g0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqIEBwYXJhbSBwcm9kdWN0cyDQlNCw0L3QvdGL0LUg0L4g0YLQvtCy0LDRgNCw0YUg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeVBhdGggVXJsINC/0YPRgtGMINC6INC60LDRgtC10LPQvtGA0LjRj9C8INGC0L7QstCw0YDQvtCyLiDQkiDQv9GD0YLQuCDQtNC+0LvQttC10L0g0L/RgNC40YHRg9GC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L0gJzppZCcsINC+0LHQvtC30L3QsNGH0LDRjtGJ0LjQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40Lgg0LTQu9GPINC/0L7QtNGB0YLQsNC90L7QstC60LguXG4gICAgICogQHBhcmFtIHByb2R1Y3RQYXRoIFVybCDQv9GD0YLRjCDQuiDRgtC+0LLQsNGA0YMuINCSINC/0YPRgtC4INC00L7Qu9C20LXQvSDQv9GA0LjRgdGD0YLRgdGC0LLQvtCy0LDRgtGMINGI0LDQsdC70L7QvSAnOmlkJywg0L7QsdC+0LfQvdCw0YfQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGC0L7QstCw0YDQsCDQtNC70Y8g0L/QvtC00YHRgtCw0L3QvtCy0LrQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZUNhdGVnb3J5TWFpbkVudGl0eShjYXRlZ29yeTogU2NJQ2F0ZWdvcnkgfCBTY0lWaXJ0dWFsQ2F0ZWdvcnksIHByb2R1Y3RzOiBTY0lQcm9kdWN0W10sIGNhdGVnb3J5UGF0aDogc3RyaW5nLCBwcm9kdWN0UGF0aDogc3RyaW5nKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgY2hpbGRDYXRlZ29yaWVzID0gdGhpcy5pc1ZpcnR1YWxDYXRlZ29yeShjYXRlZ29yeSlcbiAgICAgICAgICAgID8gWy4uLigoY2F0ZWdvcnkgYXMgU2NWaXJ0dWFsQ2F0ZWdvcnkpLmNoaWxkQ2F0ZWdvcmllcyA/PyBbXSksIC4uLigoY2F0ZWdvcnkgYXMgU2NWaXJ0dWFsQ2F0ZWdvcnkpLnByb2R1Y3RDYXRlZ29yaWVzID8/IFtdKV1cbiAgICAgICAgICAgIDogKChjYXRlZ29yeSBhcyBTY0NhdGVnb3J5KS5jYXRlZ29yaWVzID8/IFtdKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ0B0eXBlJzogJ0l0ZW1MaXN0JyxcbiAgICAgICAgICAgIG51bWJlck9mSXRlbXM6IHByb2R1Y3RzLmxlbmd0aCArIGNoaWxkQ2F0ZWdvcmllcy5sZW5ndGgsXG4gICAgICAgICAgICBpdGVtTGlzdE9yZGVyOiAnaHR0cHM6Ly9zY2hlbWEub3JnL0l0ZW1MaXN0VW5vcmRlcmVkJyxcbiAgICAgICAgICAgIGl0ZW1MaXN0RWxlbWVudDogW1xuICAgICAgICAgICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQv9C+0LTQutCw0YLQtdCz0L7RgNC40Lgg0LIg0L3QsNGH0LDQu9C+INGB0L/QuNGB0LrQsC5cbiAgICAgICAgICAgICAgICAuLi5jaGlsZENhdGVnb3JpZXMuc2xpY2UoMCwgNSkubWFwKChzdWJDYXRlZ29yeSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSB0aGlzLm1lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUudHJhbnNmb3JtKHN1YkNhdGVnb3J5LmltYWdlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBzdWJDYXRlZ29yeS5zZW8/LmRlc2NyaXB0aW9uID8/IHN1YkNhdGVnb3J5LnByb3BlcnRpZXM/LmRlc2NyaXB0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGluZGV4ICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQHR5cGUnOiAnQ29sbGVjdGlvblBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHN1YkNhdGVnb3J5Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLmdldENhdGVnb3J5Q2Fub25pY2FsVXJsKHN1YkNhdGVnb3J5LCBjYXRlZ29yeVBhdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihpbWFnZSAmJiB7IGltYWdlIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uOiB0aGlzLnN0cmlwSHRtbChkZXNjcmlwdGlvbikgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDRgtC+0LLQsNGA0Ysg0L/QvtGB0LvQtSDQv9C+0LTQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICAgICAgICAgICAgLi4ucHJvZHVjdHMuc2xpY2UoMCwgMTApLm1hcCgocHJvZHVjdCwgaW5kZXgpID0+IHRoaXMuY3JlYXRlUHJvZHVjdHNMaXN0SXRlbShwcm9kdWN0LCBjaGlsZENhdGVnb3JpZXMubGVuZ3RoICsgaW5kZXggKyAxLCBwcm9kdWN0UGF0aCkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC80LDRgdGB0LjQsiBMaW5rRGF0YSDQsiBCcmVhZGNydW1iTGlzdCDQtNC70Y8g0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBicmVhZGNydW1icyDQnNCw0YHRgdC40LIg0YXQu9C10LHQvdGL0YUg0LrRgNC+0YjQtdC6LlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeVBhdGggVXJsINC/0YPRgtGMINC6INC60LDRgtC10LPQvtGA0LjRj9C8INGC0L7QstCw0YDQvtCyLiDQkiDQv9GD0YLQuCDQtNC+0LvQttC10L0g0L/RgNC40YHRg9GC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L0gJzppZCcsINC+0LHQvtC30L3QsNGH0LDRjtGJ0LjQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40Lgg0LTQu9GPINC/0L7QtNGB0YLQsNC90L7QstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVDYXRhbG9nQnJlYWRjcnVtYnNMaXN0KGJyZWFkY3J1bWJzOiBTY0lCcmVhZGNydW1iSXRlbVtdLCBjYXRlZ29yeVBhdGg6IHN0cmluZyk6IEJyZWFkY3J1bWJMaXN0IHtcbiAgICAgICAgY29uc3QgY2F0YWxvZ1VybCA9IGAke3RoaXMudXJscy5zaXRlVXJsfSR7Y2F0ZWdvcnlQYXRoLnJlcGxhY2UoJzppZCcsICcnKX1gO1xuICAgICAgICBjb25zdCBicmVhZGNydW1iSXRlbXM6IExpc3RJdGVtW10gPSBbXG4gICAgICAgICAgICAvLyDQktGB0LXQs9C00LAg0LTQvtCx0LDQstC70Y/QtdC8INCz0LvQsNCy0L3Rg9GOINGB0YLRgNCw0L3QuNGG0YMuXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUJyZWFkY3J1bWJMaXN0SXRlbSgxLCAn0JPQu9Cw0LLQvdCw0Y8nLCB0aGlzLnVybHMuc2l0ZVVybCksXG4gICAgICAgICAgICAvLyDQlNC+0LHQsNCy0LvRj9C10Lwg0LrQsNGC0LDQu9C+0LMuXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUJyZWFkY3J1bWJMaXN0SXRlbSgyLCAn0JrQsNGC0LDQu9C+0LMnLCBjYXRhbG9nVXJsKSxcbiAgICAgICAgXTtcblxuICAgICAgICAvLyDQlNC+0LHQsNCy0LvRj9C10Lwg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC1IGJyZWFkY3J1bWJzINGBINC60L7RgNGA0LXQutGC0LjRgNC+0LLQutC+0Lkg0L/QvtC30LjRhtC40LkuXG4gICAgICAgIGJyZWFkY3J1bWJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gaXNBcnJheShpdGVtLnJvdXRlckxpbmspID8gaXRlbS5yb3V0ZXJMaW5rLmpvaW4oJy8nKSA6IGl0ZW0ucm91dGVyTGluaztcblxuICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW1zLnB1c2godGhpcy5jcmVhdGVCcmVhZGNydW1iTGlzdEl0ZW0oaW5kZXggKyAzLCBpdGVtLmxhYmVsLCBsaW5rID8gYCR7dGhpcy51cmxzLnNpdGVVcmx9LyR7bGlua31gIDogdW5kZWZpbmVkKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQHR5cGUnOiAnQnJlYWRjcnVtYkxpc3QnLFxuICAgICAgICAgICAgaXRlbUxpc3RPcmRlcjogJ2h0dHBzOi8vc2NoZW1hLm9yZy9JdGVtTGlzdE9yZGVyQXNjZW5kaW5nJyxcbiAgICAgICAgICAgIGl0ZW1MaXN0RWxlbWVudDogYnJlYWRjcnVtYkl0ZW1zLFxuICAgICAgICB9IGFzIEJyZWFkY3J1bWJMaXN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINGN0LvQtdC80LXQvdGCIEJyZWFkY3J1bWJMaXN0INCyINGE0L7RgNC80LDRgtC1LCDRgNC10LrQvtC80LXQvdC00L7QstCw0L3QvdC+0LwgU2NoZW1hLm9yZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwb3NpdGlvbiDQn9C+0LfQuNGG0LjRjyDRjdC70LXQvNC10L3RgtCwINCyINGG0LXQv9C+0YfQutC1LlxuICAgICAqIEBwYXJhbSBuYW1lINCd0LDQt9Cy0LDQvdC40LUg0Y3Qu9C10LzQtdC90YLQsC5cbiAgICAgKiBAcGFyYW0gdXJsIFVSTCDRjdC70LXQvNC10L3RgtCwLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1iTGlzdEl0ZW0ocG9zaXRpb246IG51bWJlciwgbmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBMaXN0SXRlbSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnQHR5cGUnOiAnTGlzdEl0ZW0nLFxuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAuLi4odXJsXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnQGlkJzogdXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7IG5hbWUgfSksXG4gICAgICAgIH0gYXMgTGlzdEl0ZW07XG4gICAgfVxufVxuIl19
|