@fundamental-ngx/platform 0.44.0-rc.0 → 0.44.0-rc.2
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/esm2022/form/switch/switch/switch.component.mjs +3 -3
- package/esm2022/form/text-area/text-area.component.mjs +3 -3
- package/esm2022/list/base-list-item.mjs +2 -2
- package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +2 -2
- package/esm2022/table-helpers/domain/table-data-provider.mjs +2 -2
- package/esm2022/table-helpers/helpers.mjs +2 -4
- package/fesm2022/fundamental-ngx-platform-form.mjs +4 -4
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +10 -13
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.44.0-rc.2.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/fundamental-ngx-platform-v0.44.0-rc.0.tgz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isSelectItem } from '@fundamental-ngx/platform/shared';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
3
|
import { map, take, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import get from 'lodash-es
|
|
4
|
+
import { get } from 'lodash-es';
|
|
5
5
|
import { isCollectionFilter } from '../utils';
|
|
6
6
|
export class BaseTableDataProvider {
|
|
7
7
|
constructor() {
|
|
@@ -342,4 +342,4 @@ export class TableChildrenDataProvider extends BaseTableDataProvider {
|
|
|
342
342
|
}), takeUntil(this._destroy$));
|
|
343
343
|
}
|
|
344
344
|
}
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL2RvbWFpbi90YWJsZS1kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBYXRELE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUVoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUMsTUFBTSxPQUFnQixxQkFBcUI7SUFBM0M7UUFhSSxjQUFjO1FBQ0osY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUF3UzlDLENBQUM7SUFsU0c7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxRQUFvQyxFQUFFLFdBQXlCO1FBQ3RFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxLQUFVLEVBQUUsT0FBbUM7UUFDMUQsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNuRSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQixDQUFDLElBQVM7UUFDeEIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFL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LE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUNwQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNWLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDbEIsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUN4RjtnQkFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2YsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDM0Q7Z0JBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDdkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDckI7cUJBQU07b0JBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7aUJBQzVCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUM1QixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyLCBGZERhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBpc1NlbGVjdEl0ZW0sIFNlbGVjdEl0ZW0gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ29sbGVjdGlvbkJvb2xlYW5GaWx0ZXIsXG4gICAgQ29sbGVjdGlvbkRhdGVGaWx0ZXIsXG4gICAgQ29sbGVjdGlvbkZpbHRlcixcbiAgICBDb2xsZWN0aW9uRmlsdGVyQW5kR3JvdXAsXG4gICAgQ29sbGVjdGlvbkZpbHRlckdyb3VwLFxuICAgIENvbGxlY3Rpb25OdW1iZXJGaWx0ZXIsXG4gICAgQ29sbGVjdGlvblNlbGVjdEZpbHRlcixcbiAgICBDb2xsZWN0aW9uU3RyaW5nRmlsdGVyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvY29sbGVjdGlvbi1maWx0ZXIuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLWVzL2dldCc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBpc0NvbGxlY3Rpb25GaWx0ZXIgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVGFibGVEYXRhUHJvdmlkZXI8VCwgUCA9IFRbXT4ge1xuICAgIC8qKiBUb3RhbCBpdGVtcyBjb3VudC4gKi9cbiAgICB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gICAgLyoqIEFycmF5IG9mIGl0ZW1zLiAqL1xuICAgIGl0ZW1zOiBQO1xuICAgIC8qKiBEYXRlIHRpbWUgYWRhcHRlciBmb3IgZGF0ZSBmaWVsZCBmaWx0ZXJpbmcuICovXG4gICAgZGF0ZVRpbWVBZGFwdGVyPzogRGF0ZXRpbWVBZGFwdGVyPGFueT47XG5cbiAgICAvKiogQWRkaXRpb25hbCBzZXQgb2YgZmlsdGVycyBwcm92aWRlZCBieSBvdXRzaWRlIGNvbXBvbmVudC4gKi9cbiAgICBwcm90ZWN0ZWQgZmlsdGVyQnk6IENvbGxlY3Rpb25GaWx0ZXJBbmRHcm91cFtdO1xuICAgIC8qKiBBZGRpdGlvbmFsIHNlYXJjaCBxdWVyeSBwcm92aWRlZCBieSBvdXRzaWRlIGNvbXBvbmVudC4gKi9cbiAgICBwcm90ZWN0ZWQgc2VhcmNoSW5wdXQ/OiBTZWFyY2hJbnB1dDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBhYnN0cmFjdCBmZXRjaChzdGF0ZT86IFRhYmxlU3RhdGUsIHBhcmVudFJvd3M/OiBUYWJsZVJvdzxUPltdKTogT2JzZXJ2YWJsZTxQPjtcblxuICAgIGFic3RyYWN0IGZldGNoRGF0YShzdGF0ZTogVGFibGVTdGF0ZSwgcGFyZW50Um93cz86IFRhYmxlUm93PFQ+W10pOiBPYnNlcnZhYmxlPFA+O1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBzZXR0aW5nIGV4dGVybmFsIGZpbHRlcmluZyBjb25kaXRpb25zLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJCeSBTZXQgb2YgY29sdW1uIGZpbHRlcnMuXG4gICAgICogQHBhcmFtIHNlYXJjaElucHV0IFNlYXJjaCBjb25kaXRpb24gZnJvbSBzZWFyY2ggZmllbGQuXG4gICAgICovXG4gICAgc2V0RmlsdGVycyhmaWx0ZXJCeTogQ29sbGVjdGlvbkZpbHRlckFuZEdyb3VwW10sIHNlYXJjaElucHV0PzogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCeSA9IGZpbHRlckJ5O1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0ID0gc2VhcmNoSW5wdXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBmaWx0ZXJpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIGl0ZW1zIEFycmF5IG9mIGRhdGEgc291cmNlIGl0ZW1zLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzIFNldCBvZiBjb2x1bW4gZmlsdGVycy5cbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiBmaWx0ZXJlZCBpdGVtcy5cbiAgICAgKi9cbiAgICBhcHBseUZpbHRlcmluZyhpdGVtczogVFtdLCBmaWx0ZXJzOiBDb2xsZWN0aW9uRmlsdGVyQW5kR3JvdXBbXSk6IFRbXSB7XG4gICAgICAgIGl0ZW1zID0gaXRlbXMuZmlsdGVyKChpKSA9PiB0aGlzLmdldEZpbHRlcmluZ1N0cmF0ZWd5KGksIGZpbHRlcnMpKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0U2VsZWN0SXRlbVZhbHVlKGl0ZW06IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiBpc1NlbGVjdEl0ZW0oaXRlbSkgPyBpdGVtLnZhbHVlIDogaXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2Qgd2hpY2ggc2VsZWN0cyBhcHByb3ByaWF0ZSBmaWx0ZXJpbmcgc3RyYXRlZ3kgb2YgdGhlIGZpZWxkIGRlcGVuZGluZyBvbiB0aGUgZmlsdGVyIHR5cGUuXG4gICAgICogRGV2ZWxvcGVycyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZXh0ZW5kIHRoZSBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKiBAcGFyYW0gaXRlbSBpdGVtIG9mIHRoZSBkYXRhIHNvdXJjZS5cbiAgICAgKiBAcGFyYW0gZmlsdGVycyBTZXQgb2YgY29sdW1uIGZpbHRlcnMuXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgaXRlbSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGF0YSBhcnJheS5cbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJpbmdTdHJhdGVneShpdGVtOiBULCBmaWx0ZXJzOiBDb2xsZWN0aW9uRmlsdGVyQW5kR3JvdXBbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmlsdGVyc1xuICAgICAgICAgICAgLmZpbHRlcigoY29uZGl0aW9uKSA9PiBjb25kaXRpb24uZmllbGQpXG4gICAgICAgICAgICAuZXZlcnkoKGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc0NvbGxlY3Rpb25GaWx0ZXIoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uRmlsdGVyU3RyYXRlZ3koaXRlbSwgZmlsdGVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uRmlsdGVyR3JvdXBTdHJhdGVneShpdGVtLCBmaWx0ZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHdoaWNoIGZpbHRlcnMgaXRlbSBkZXBlbmRpbmcgb24gYXBwbGllZCBjb25kaXRpb24gcmVzdWx0LlxuICAgICAqIERldmVsb3BlcnMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGV4dGVuZCBpdHMgZnVuY3Rpb25hbGl0eVxuICAgICAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gYXBwbHkgY29uZGl0aW9ucyB0by5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIENvbHVtbiBmaWx0ZXIuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhpcyBpdGVtIHNob3VsZCBiZSBwcmVzZW50IGluIGZpbHRlcmVkIGFycmF5IG9mIGl0ZW1zLlxuICAgICAqL1xuICAgIGNvbGxlY3Rpb25GaWx0ZXJTdHJhdGVneShpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25GaWx0ZXIpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmZpbHRlckJvb2xlYW4oaXRlbSwgZmlsdGVyIGFzIENvbGxlY3Rpb25Cb29sZWFuRmlsdGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5maWx0ZXJOdW1iZXIoaXRlbSwgZmlsdGVyIGFzIENvbGxlY3Rpb25OdW1iZXJGaWx0ZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmZpbHRlckRhdGUoaXRlbSwgZmlsdGVyIGFzIENvbGxlY3Rpb25EYXRlRmlsdGVyLCB0aGlzLmRhdGVUaW1lQWRhcHRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmZpbHRlckFycmF5KGl0ZW0sIGZpbHRlciBhcyBDb2xsZWN0aW9uU2VsZWN0RmlsdGVyKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZmlsdGVyU3RyaW5nKGl0ZW0sIGZpbHRlciBhcyBDb2xsZWN0aW9uU3RyaW5nRmlsdGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHdoaWNoIGFwcGxpZXMgZ3JvdXAgZmlsdGVyaW5nIGNvbmRpdGlvbnMgZm9yIHRoZSBpdGVtLlxuICAgICAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gYXBwbHkgY29uZGl0aW9ucyB0by5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIEZpbHRlciBncm91cC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGlzIGl0ZW0gc2hvdWxkIGJlIHByZXNlbnQgaW4gZmlsdGVyZWQgaXRlbXMgYXJyYXkuXG4gICAgICovXG4gICAgY29sbGVjdGlvbkZpbHRlckdyb3VwU3RyYXRlZ3koaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uRmlsdGVyR3JvdXApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlci5zdHJhdGVneSA9PT0gJ2FuZCdcbiAgICAgICAgICAgID8gZmlsdGVyLmZpbHRlcnMuZXZlcnkoKGYpID0+IHRoaXMuY29sbGVjdGlvbkZpbHRlclN0cmF0ZWd5KGl0ZW0sIGYpKVxuICAgICAgICAgICAgOiBmaWx0ZXIuZmlsdGVycy5zb21lKChmKSA9PiB0aGlzLmNvbGxlY3Rpb25GaWx0ZXJTdHJhdGVneShpdGVtLCBmKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyBzZWFyY2ggb2YgdGhlIHNlYXJjaCB0ZXJtIGZvciB2aXNpYmxlIHRhYmxlIGNvbHVtbnMuXG4gICAgICogRGV2ZWxvcGVycyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZXh0ZW5kIHRoZSBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKiBAcGFyYW0gaXRlbXMgZGF0YSBzb3VyY2UgaXRlbXMgYXJyYXkuXG4gICAgICogQHBhcmFtIHRhYmxlU3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIGZpbHRlcmVkIGRhdGEgc291cmNlIGl0ZW1zIGFycmF5LlxuICAgICAqL1xuICAgIHNlYXJjaChpdGVtczogVFtdLCB7IHNlYXJjaElucHV0LCBjb2x1bW5LZXlzIH06IFRhYmxlU3RhdGUpOiBUW10ge1xuICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc2VhcmNoSW5wdXQ/LnRleHQgfHwgJyc7XG4gICAgICAgIGNvbnN0IGtleXNUb1NlYXJjaEJ5ID0gY29sdW1uS2V5cztcblxuICAgICAgICBpZiAoc2VhcmNoVGV4dC50cmltKCkgPT09ICcnIHx8IGtleXNUb1NlYXJjaEJ5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlc0ZvclNlYXJjaCA9IGtleXNUb1NlYXJjaEJ5Lm1hcCgoa2V5KSA9PiBnZXQoaXRlbSwga2V5KSk7XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXNGb3JTZWFyY2hcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gISF2YWx1ZSlcbiAgICAgICAgICAgICAgICAubWFwKCh2YWx1ZSk6IHN0cmluZyA9PiB2YWx1ZS50b1N0cmluZygpKVxuICAgICAgICAgICAgICAgIC5zb21lKCh2YWx1ZSkgPT4gdmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmluZyBmaWx0ZXJpbmcgc3RyYXRlZ3lcbiAgICAgKiBAcGFyYW0gaXRlbSBkYXRhIHNvdXJjZSBhcnJheSBpdGVtLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG9iamVjdFxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgc291cmNlIGFycmF5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJTdHJpbmcoaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uU3RyaW5nRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyLnZhbHVlICYmIGZpbHRlci52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZTIgPSAoZmlsdGVyLnZhbHVlMiAmJiBmaWx0ZXIudmFsdWUyLnRvTG9jYWxlTG93ZXJDYXNlKCkpIHx8ICcnO1xuICAgICAgICBsZXQgaXRlbVZhbHVlID0gZ2V0KGl0ZW0sIGZpbHRlci5maWVsZCk7XG5cbiAgICAgICAgaXRlbVZhbHVlID0gaXRlbVZhbHVlID8gaXRlbVZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkgOiBpdGVtVmFsdWU7XG5cbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID09PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPiBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuT3JFcXVhbFRvJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPj0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXNzVGhhbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlIDwgZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXNzVGhhbk9yRXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlIDw9IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmV0d2Vlbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID49IGZpbHRlclZhbHVlICYmIGl0ZW1WYWx1ZSA8PSBmaWx0ZXJWYWx1ZTI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiZWdpbnNXaXRoJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUuc3RhcnRzV2l0aChmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbmRzV2l0aCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlLmVuZHNXaXRoKGZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID8gaXRlbVZhbHVlLmluY2x1ZGVzKGZpbHRlclZhbHVlKSA6IGl0ZW1WYWx1ZSA9PT0gZmlsdGVyVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE51bWJlciBmaWx0ZXJpbmcgc3RyYXRlZ3lcbiAgICAgKiBAcGFyYW0gaXRlbSBkYXRhIHNvdXJjZSBhcnJheSBpdGVtLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG9iamVjdFxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgc291cmNlIGFycmF5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJOdW1iZXIoaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uTnVtYmVyRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQoZmlsdGVyLnZhbHVlIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUyID0gTnVtYmVyLnBhcnNlRmxvYXQoZmlsdGVyLnZhbHVlMiBhcyB1bmtub3duIGFzIHN0cmluZykgfHwgMDtcbiAgICAgICAgY29uc3QgaXRlbVZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQoZ2V0KGl0ZW0sIGZpbHRlci5maWVsZCkpO1xuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdncmVhdGVyVGhhbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID4gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdncmVhdGVyVGhhbk9yRXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID49IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGVzc1RoYW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA8IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGVzc1RoYW5PckVxdWFsVG8nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA8PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA+PSBmaWx0ZXJWYWx1ZSAmJiBpdGVtVmFsdWUgPD0gZmlsdGVyVmFsdWUyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA9PT0gZmlsdGVyVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERhdGUgZmlsdGVyaW5nIHN0cmF0ZWd5XG4gICAgICogQHBhcmFtIGl0ZW0gZGF0YSBzb3VyY2UgYXJyYXkgaXRlbS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBvYmplY3RcbiAgICAgKiBAcGFyYW0gYWRhcHRlclxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgc291cmNlIGFycmF5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJEYXRlPEQgPSBGZERhdGU+KGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvbkRhdGVGaWx0ZXIsIGFkYXB0ZXI/OiBEYXRldGltZUFkYXB0ZXI8RD4pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFhZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ0luIG9yZGVyIHRvIGZpbHRlciBkYXRlIGNvbHVtbnMsIHBsZWFzZSBwcm92aWRlIERhdGVUaW1lIGFkYXB0ZXIgaW4geW91ciBUYWJsZURhdGFQcm92aWRlciBjb25zdHJ1Y3Rvci4nXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlMiA9IGZpbHRlci52YWx1ZTI7XG4gICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGdldChpdGVtLCBmaWx0ZXIuZmllbGQpO1xuICAgICAgICBjb25zdCBkaWZmID0gYWRhcHRlci5jb21wYXJlRGF0ZShpdGVtVmFsdWUsIGZpbHRlclZhbHVlKTtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYWZ0ZXInOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRpZmYgPiAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb25PckFmdGVyJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBkaWZmID49IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRpZmYgPCAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmVmb3JlT3JPbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGlmZiA8PSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmV0d2Vlbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYWRhcHRlci5pc0JldHdlZW4oaXRlbVZhbHVlLCBmaWx0ZXJWYWx1ZSwgZmlsdGVyVmFsdWUyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFkYXB0ZXIuZGF0ZVRpbWVzRXF1YWwoaXRlbVZhbHVlLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJvb2xlYW4gZmlsdGVyaW5nIHN0cmF0ZWd5XG4gICAgICogQHBhcmFtIGl0ZW0gZGF0YSBzb3VyY2UgYXJyYXkgaXRlbS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBvYmplY3RcbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpdGVtIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkYXRhIHNvdXJjZSBhcnJheS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZmlsdGVyQm9vbGVhbihpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25Cb29sZWFuRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSBnZXQoaXRlbSwgZmlsdGVyLmZpZWxkKTtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA9PT0gZmlsdGVyVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFycmF5IGZpbHRlcmluZyBzdHJhdGVneVxuICAgICAqIEBwYXJhbSBpdGVtIGRhdGEgc291cmNlIGFycmF5IGl0ZW0uXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXIgb2JqZWN0XG4gICAgICogQHJldHVybnMgd2hldGhlciBvciBub3QgaXRlbSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGF0YSBzb3VyY2UgYXJyYXkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZpbHRlckFycmF5KGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvblNlbGVjdEZpbHRlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPSBmaWx0ZXIudmFsdWUubWFwKCh2KSA9PiB0aGlzLmdldFNlbGVjdEl0ZW1WYWx1ZSh2KSk7XG4gICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGdldChpdGVtLCBmaWx0ZXIuZmllbGQpO1xuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdlcXVhbFRvJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGl0ZW1WYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIWZpbHRlclZhbHVlcy5sZW5ndGggfHwgZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhUHJvdmlkZXI8VD4gZXh0ZW5kcyBCYXNlVGFibGVEYXRhUHJvdmlkZXI8VD4ge1xuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gdGFibGVTdGF0ZSBAc2VlIFRhYmxlU3RhdGUgU2V0IG9mIHRhYmxlIHBhcmFtZXRlcnMuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIGRhdGEuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGZldGNoKHRhYmxlU3RhdGU/OiBUYWJsZVN0YXRlKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmZXRjaCBtZXRob2Qgc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IGRldmVsb3BlcnMgZm9yIGN1c3RvbSBkYXRhIHByb3ZpZGVycy4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIGFwcGx5aW5nIGZpbHRlcmluZyBhbmQgcmV0cmlldmluZyB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBmaWx0ZXJlZCBkYXRhLlxuICAgICAqL1xuICAgIGZldGNoRGF0YShzdGF0ZTogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoKHN0YXRlKS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5zZWFyY2goaXRlbXMsIHsgLi4uc3RhdGUsIC4uLnsgc2VhcmNoSW5wdXQ6IHRoaXMuc2VhcmNoSW5wdXQgfSB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJCeSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IHRoaXMuYXBwbHlGaWx0ZXJpbmcoaXRlbXMsIHRoaXMuZmlsdGVyQnkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgZ2V0dGluZyBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgcGFydGljdWxhciBmaWVsZC5cbiAgICAgKiBVc2VkIGZvciBjcmVhdGluZyBzZWxlY3Qgb3B0aW9ucy5cbiAgICAgKiBEZXZlbG9wZXJzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBleHRlbmQgdGhlIGZpbHRlcmluZyBmdW5jdGlvbmFsaXR5LlxuICAgICAqIEBwYXJhbSBmaWVsZCBrZXkgb2YgdGhlIGRhdGEgaXRlbS5cbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggc2VsZWN0IGl0ZW1zLlxuICAgICAqL1xuICAgIGdldEZpZWxkT3B0aW9ucyhmaWVsZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2goKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IFNlbGVjdEl0ZW1bXSA9IGRhdGEubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0KGl0ZW0sIGZpZWxkKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdldChpdGVtLCBmaWVsZClcbiAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVDaGlsZHJlbkRhdGFQcm92aWRlcjxUPiBleHRlbmRzIEJhc2VUYWJsZURhdGFQcm92aWRlcjxULCBNYXA8VGFibGVSb3c8VD4sIFRbXT4+IHtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGFtb3VudCBvZiBjaGlsZCBpdGVtZiBvciBhIGRlZmluZWQgcm93LlxuICAgICAqIEBwYXJhbSByb3dcbiAgICAgKi9cbiAgICBhYnN0cmFjdCByb3dDaGlsZHJlbkNvdW50KHJvdzogVGFibGVSb3c8VD4sIHN0YXRlOiBUYWJsZVN0YXRlKTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gdGFibGVTdGF0ZSBAc2VlIFRhYmxlU3RhdGUgU2V0IG9mIHRhYmxlIHBhcmFtZXRlcnMuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIGRhdGEuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGZldGNoKHRhYmxlU3RhdGU/OiBUYWJsZVN0YXRlLCBwYXJlbnRSb3dzPzogVGFibGVSb3c8VD5bXSk6IE9ic2VydmFibGU8TWFwPFRhYmxlUm93PFQ+LCBUW10+PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZmV0Y2ggbWV0aG9kIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBkZXZlbG9wZXJzIGZvciBjdXN0b20gZGF0YSBwcm92aWRlcnMuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBhcHBseWluZyBmaWx0ZXJpbmcgYW5kIHJldHJpZXZpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggZmlsdGVyZWQgZGF0YS5cbiAgICAgKi9cbiAgICBmZXRjaERhdGEoc3RhdGU6IFRhYmxlU3RhdGUsIHRhYmxlUm93cz86IFRhYmxlUm93PFQ+W10pOiBPYnNlcnZhYmxlPE1hcDxUYWJsZVJvdzxUPiwgVFtdPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaChzdGF0ZSwgdGFibGVSb3dzKS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKHJvd0l0ZW1zLCByb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0l0ZW1zID0gdGhpcy5zZWFyY2gocm93SXRlbXMsIHsgLi4uc3RhdGUsIC4uLnsgc2VhcmNoSW5wdXQ6IHRoaXMuc2VhcmNoSW5wdXQgfSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJdGVtcyA9IHRoaXMuYXBwbHlGaWx0ZXJpbmcocm93SXRlbXMsIHRoaXMuZmlsdGVyQnkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvd0l0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZGVsZXRlKHJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5zZXQocm93LCByb3dJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL2RvbWFpbi90YWJsZS1kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBYXRELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlDLE1BQU0sT0FBZ0IscUJBQXFCO0lBQTNDO1FBYUksY0FBYztRQUNKLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBd1M5QyxDQUFDO0lBbFNHOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsUUFBb0MsRUFBRSxXQUF5QjtRQUN0RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsS0FBVSxFQUFFLE9BQW1DO1FBQzFELEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbkUsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxJQUFTO1FBQ3hCLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFDLElBQU8sRUFBRSxPQUFtQztRQUM3RCxPQUFPLE9BQU87YUFDVCxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDdEMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDZCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM1QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDdEQ7WUFFRCxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsd0JBQXdCLENBQUMsSUFBTyxFQUFFLE1BQXdCO1FBQ3RELElBQUksTUFBZSxDQUFDO1FBRXBCLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLFNBQVM7Z0JBQ1YsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQWlDLENBQUMsQ0FBQztnQkFDckUsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBZ0MsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNO1lBQ1YsS0FBSyxNQUFNLENBQUMsQ0FBQztnQkFDVCxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBOEIsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3JGLE1BQU07YUFDVDtZQUNELEtBQUssUUFBUSxDQUFDO1lBQ2Q7Z0JBQ0ksTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQWdDLENBQUM7b0JBQzFELENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFnQyxDQUFDLENBQUM7Z0JBQ2hFLE1BQU07U0FDYjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDZCQUE2QixDQUFDLElBQU8sRUFBRSxNQUE2QjtRQUNoRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSztZQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFjO1FBQ3RELE1BQU0sVUFBVSxHQUFHLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzNDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztRQUVsQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekQsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzFCLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVwRSxPQUFPLGVBQWU7aUJBQ2pCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpQkFDMUIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3hDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFlBQVksQ0FBQyxJQUFPLEVBQUUsTUFBOEI7UUFDMUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDckUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRixJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWxFLElBQUksTUFBZSxDQUFDO1FBRXBCLFFBQVEsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNyQixLQUFLLFNBQVM7Z0JBQ1YsTUFBTSxHQUFHLFNBQVMsS0FBSyxXQUFXLENBQUM7Z0JBQ25DLE1BQU07WUFDVixLQUFLLGFBQWE7Z0JBQ2QsTUFBTSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUM7Z0JBQ2pDLE1BQU07WUFDVixLQUFLLHNCQUFzQjtnQkFDdkIsTUFBTSxHQUFHLFNBQVMsSUFBSSxXQUFXLENBQUM7Z0JBQ2xDLE1BQU07WUFDVixLQUFLLFVBQVU7Z0JBQ1gsTUFBTSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUM7Z0JBQ2pDLE1BQU07WUFDVixLQUFLLG1CQUFtQjtnQkFDcEIsTUFBTSxHQUFHLFNBQVMsSUFBSSxXQUFXLENBQUM7Z0JBQ2xDLE1BQU07WUFDVixLQUFLLFNBQVM7Z0JBQ1YsTUFBTSxHQUFHLFNBQVMsSUFBSSxXQUFXLElBQUksU0FBUyxJQUFJLFlBQVksQ0FBQztnQkFDL0QsTUFBTTtZQUNWLEtBQUssWUFBWTtnQkFDYixNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxNQUFNLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDekMsTUFBTTtZQUNWLEtBQUssVUFBVSxDQUFDO1lBQ2hCO2dCQUNJLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUM7U0FDeEY7UUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sWUFBWSxDQUFDLElBQU8sRUFBRSxNQUE4QjtRQUMxRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUEwQixDQUFDLENBQUM7UUFDekUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxNQUFlLENBQUM7UUFFcEIsUUFBUSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssYUFBYTtnQkFDZCxNQUFNLEdBQUcsU0FBUyxHQUFHLFdBQVcsQ0FBQztnQkFDakMsTUFBTTtZQUNWLEtBQUssc0JBQXNCO2dCQUN2QixNQUFNLEdBQUcsU0FBUyxJQUFJLFdBQVcsQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxNQUFNLEdBQUcsU0FBUyxHQUFHLFdBQVcsQ0FBQztnQkFDakMsTUFBTTtZQUNWLEtBQUssbUJBQW1CO2dCQUNwQixNQUFNLEdBQUcsU0FBUyxJQUFJLFdBQVcsQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssU0FBUztnQkFDVixNQUFNLEdBQUcsU0FBUyxJQUFJLFdBQVcsSUFBSSxTQUFTLElBQUksWUFBWSxDQUFDO2dCQUMvRCxNQUFNO1lBQ1YsS0FBSyxTQUFTLENBQUM7WUFDZjtnQkFDSSxNQUFNLEdBQUcsU0FBUyxLQUFLLFdBQVcsQ0FBQztTQUMxQztRQUVELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sVUFBVSxDQUFhLElBQU8sRUFBRSxNQUE0QixFQUFFLE9BQTRCO1FBQ2hHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUNYLHlHQUF5RyxDQUM1RyxDQUFDO1NBQ0w7UUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekQsSUFBSSxNQUFlLENBQUM7UUFFcEIsUUFBUSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssT0FBTztnQkFDUixNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsTUFBTTtZQUNWLEtBQUssV0FBVztnQkFDWixNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDbkIsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsTUFBTTtZQUNWLEtBQUssWUFBWTtnQkFDYixNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDbkIsTUFBTTtZQUNWLEtBQUssU0FBUztnQkFDVixNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUNqRSxNQUFNO1lBRVYsS0FBSyxTQUFTLENBQUM7WUFDZjtnQkFDSSxNQUFNLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sYUFBYSxDQUFDLElBQU8sRUFBRSxNQUErQjtRQUM1RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksTUFBZSxDQUFDO1FBRXBCLFFBQVEsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNyQixLQUFLLFNBQVMsQ0FBQztZQUNmO2dCQUNJLE1BQU0sR0FBRyxTQUFTLEtBQUssV0FBVyxDQUFDO1NBQzFDO1FBRUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFdBQVcsQ0FBQyxJQUFPLEVBQUUsTUFBOEI7UUFDekQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksTUFBZSxDQUFDO1FBRXBCLFFBQVEsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNyQixLQUFLLFNBQVMsQ0FBQztZQUNmO2dCQUNJLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNyRSxDQUFDO0lBRUQsY0FBYztJQUNKLFdBQVc7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxpQkFBcUIsU0FBUSxxQkFBd0I7SUFDOUQ7Ozs7T0FJRztJQUNILDZEQUE2RDtJQUM3RCxLQUFLLENBQUMsVUFBdUI7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDbEY7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2YsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNyRDtZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzVCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLEtBQWE7UUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUNwQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDVCxNQUFNLE9BQU8sR0FBaUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUN2QixLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7YUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFFSixPQUFPLE9BQU8sQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFnQix5QkFBNkIsU0FBUSxxQkFBK0M7SUFNdEc7Ozs7T0FJRztJQUNILDZEQUE2RDtJQUM3RCxLQUFLLENBQUMsVUFBdUIsRUFBRSxVQUEwQjtRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBaUIsRUFBRSxTQUF5QjtRQUNsRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDVixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2xCLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDeEY7Z0JBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNmLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzNEO2dCQUVELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUM1QjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDNUIsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGV0aW1lQWRhcHRlciwgRmREYXRlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgaXNTZWxlY3RJdGVtLCBTZWxlY3RJdGVtIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIENvbGxlY3Rpb25Cb29sZWFuRmlsdGVyLFxuICAgIENvbGxlY3Rpb25EYXRlRmlsdGVyLFxuICAgIENvbGxlY3Rpb25GaWx0ZXIsXG4gICAgQ29sbGVjdGlvbkZpbHRlckFuZEdyb3VwLFxuICAgIENvbGxlY3Rpb25GaWx0ZXJHcm91cCxcbiAgICBDb2xsZWN0aW9uTnVtYmVyRmlsdGVyLFxuICAgIENvbGxlY3Rpb25TZWxlY3RGaWx0ZXIsXG4gICAgQ29sbGVjdGlvblN0cmluZ0ZpbHRlclxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZmlsdGVyLmludGVyZmFjZSc7XG5cbmltcG9ydCB7IFRhYmxlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgaXNDb2xsZWN0aW9uRmlsdGVyIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVRhYmxlRGF0YVByb3ZpZGVyPFQsIFAgPSBUW10+IHtcbiAgICAvKiogVG90YWwgaXRlbXMgY291bnQuICovXG4gICAgdG90YWxJdGVtczogbnVtYmVyO1xuICAgIC8qKiBBcnJheSBvZiBpdGVtcy4gKi9cbiAgICBpdGVtczogUDtcbiAgICAvKiogRGF0ZSB0aW1lIGFkYXB0ZXIgZm9yIGRhdGUgZmllbGQgZmlsdGVyaW5nLiAqL1xuICAgIGRhdGVUaW1lQWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxhbnk+O1xuXG4gICAgLyoqIEFkZGl0aW9uYWwgc2V0IG9mIGZpbHRlcnMgcHJvdmlkZWQgYnkgb3V0c2lkZSBjb21wb25lbnQuICovXG4gICAgcHJvdGVjdGVkIGZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyQW5kR3JvdXBbXTtcbiAgICAvKiogQWRkaXRpb25hbCBzZWFyY2ggcXVlcnkgcHJvdmlkZWQgYnkgb3V0c2lkZSBjb21wb25lbnQuICovXG4gICAgcHJvdGVjdGVkIHNlYXJjaElucHV0PzogU2VhcmNoSW5wdXQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgYWJzdHJhY3QgZmV0Y2goc3RhdGU/OiBUYWJsZVN0YXRlLCBwYXJlbnRSb3dzPzogVGFibGVSb3c8VD5bXSk6IE9ic2VydmFibGU8UD47XG5cbiAgICBhYnN0cmFjdCBmZXRjaERhdGEoc3RhdGU6IFRhYmxlU3RhdGUsIHBhcmVudFJvd3M/OiBUYWJsZVJvdzxUPltdKTogT2JzZXJ2YWJsZTxQPjtcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3Igc2V0dGluZyBleHRlcm5hbCBmaWx0ZXJpbmcgY29uZGl0aW9ucy5cbiAgICAgKiBAcGFyYW0gZmlsdGVyQnkgU2V0IG9mIGNvbHVtbiBmaWx0ZXJzLlxuICAgICAqIEBwYXJhbSBzZWFyY2hJbnB1dCBTZWFyY2ggY29uZGl0aW9uIGZyb20gc2VhcmNoIGZpZWxkLlxuICAgICAqL1xuICAgIHNldEZpbHRlcnMoZmlsdGVyQnk6IENvbGxlY3Rpb25GaWx0ZXJBbmRHcm91cFtdLCBzZWFyY2hJbnB1dD86IFNlYXJjaElucHV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyQnkgPSBmaWx0ZXJCeTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dCA9IHNlYXJjaElucHV0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgZmlsdGVyaW5nIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBkYXRhIHNvdXJjZSBpdGVtcy5cbiAgICAgKiBAcGFyYW0gZmlsdGVycyBTZXQgb2YgY29sdW1uIGZpbHRlcnMuXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgZmlsdGVyZWQgaXRlbXMuXG4gICAgICovXG4gICAgYXBwbHlGaWx0ZXJpbmcoaXRlbXM6IFRbXSwgZmlsdGVyczogQ29sbGVjdGlvbkZpbHRlckFuZEdyb3VwW10pOiBUW10ge1xuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcigoaSkgPT4gdGhpcy5nZXRGaWx0ZXJpbmdTdHJhdGVneShpLCBmaWx0ZXJzKSk7XG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFNlbGVjdEl0ZW1WYWx1ZShpdGVtOiBhbnkpOiBhbnkge1xuICAgICAgICByZXR1cm4gaXNTZWxlY3RJdGVtKGl0ZW0pID8gaXRlbS52YWx1ZSA6IGl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHdoaWNoIHNlbGVjdHMgYXBwcm9wcmlhdGUgZmlsdGVyaW5nIHN0cmF0ZWd5IG9mIHRoZSBmaWVsZCBkZXBlbmRpbmcgb24gdGhlIGZpbHRlciB0eXBlLlxuICAgICAqIERldmVsb3BlcnMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGV4dGVuZCB0aGUgZmlsdGVyaW5nIGZ1bmN0aW9uYWxpdHkuXG4gICAgICogQHBhcmFtIGl0ZW0gaXRlbSBvZiB0aGUgZGF0YSBzb3VyY2UuXG4gICAgICogQHBhcmFtIGZpbHRlcnMgU2V0IG9mIGNvbHVtbiBmaWx0ZXJzLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgYXJyYXkuXG4gICAgICovXG4gICAgZ2V0RmlsdGVyaW5nU3RyYXRlZ3koaXRlbTogVCwgZmlsdGVyczogQ29sbGVjdGlvbkZpbHRlckFuZEdyb3VwW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlcnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbmRpdGlvbikgPT4gY29uZGl0aW9uLmZpZWxkKVxuICAgICAgICAgICAgLmV2ZXJ5KChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNDb2xsZWN0aW9uRmlsdGVyKGZpbHRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbkZpbHRlclN0cmF0ZWd5KGl0ZW0sIGZpbHRlcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbkZpbHRlckdyb3VwU3RyYXRlZ3koaXRlbSwgZmlsdGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB3aGljaCBmaWx0ZXJzIGl0ZW0gZGVwZW5kaW5nIG9uIGFwcGxpZWQgY29uZGl0aW9uIHJlc3VsdC5cbiAgICAgKiBEZXZlbG9wZXJzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBleHRlbmQgaXRzIGZ1bmN0aW9uYWxpdHlcbiAgICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGFwcGx5IGNvbmRpdGlvbnMgdG8uXG4gICAgICogQHBhcmFtIGZpbHRlciBDb2x1bW4gZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoaXMgaXRlbSBzaG91bGQgYmUgcHJlc2VudCBpbiBmaWx0ZXJlZCBhcnJheSBvZiBpdGVtcy5cbiAgICAgKi9cbiAgICBjb2xsZWN0aW9uRmlsdGVyU3RyYXRlZ3koaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW47XG5cbiAgICAgICAgc3dpdGNoIChmaWx0ZXIudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5maWx0ZXJCb29sZWFuKGl0ZW0sIGZpbHRlciBhcyBDb2xsZWN0aW9uQm9vbGVhbkZpbHRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZmlsdGVyTnVtYmVyKGl0ZW0sIGZpbHRlciBhcyBDb2xsZWN0aW9uTnVtYmVyRmlsdGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5maWx0ZXJEYXRlKGl0ZW0sIGZpbHRlciBhcyBDb2xsZWN0aW9uRGF0ZUZpbHRlciwgdGhpcy5kYXRlVGltZUFkYXB0ZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gQXJyYXkuaXNBcnJheShmaWx0ZXIudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5maWx0ZXJBcnJheShpdGVtLCBmaWx0ZXIgYXMgQ29sbGVjdGlvblNlbGVjdEZpbHRlcilcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmZpbHRlclN0cmluZyhpdGVtLCBmaWx0ZXIgYXMgQ29sbGVjdGlvblN0cmluZ0ZpbHRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB3aGljaCBhcHBsaWVzIGdyb3VwIGZpbHRlcmluZyBjb25kaXRpb25zIGZvciB0aGUgaXRlbS5cbiAgICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGFwcGx5IGNvbmRpdGlvbnMgdG8uXG4gICAgICogQHBhcmFtIGZpbHRlciBGaWx0ZXIgZ3JvdXAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhpcyBpdGVtIHNob3VsZCBiZSBwcmVzZW50IGluIGZpbHRlcmVkIGl0ZW1zIGFycmF5LlxuICAgICAqL1xuICAgIGNvbGxlY3Rpb25GaWx0ZXJHcm91cFN0cmF0ZWd5KGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvbkZpbHRlckdyb3VwKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmaWx0ZXIuc3RyYXRlZ3kgPT09ICdhbmQnXG4gICAgICAgICAgICA/IGZpbHRlci5maWx0ZXJzLmV2ZXJ5KChmKSA9PiB0aGlzLmNvbGxlY3Rpb25GaWx0ZXJTdHJhdGVneShpdGVtLCBmKSlcbiAgICAgICAgICAgIDogZmlsdGVyLmZpbHRlcnMuc29tZSgoZikgPT4gdGhpcy5jb2xsZWN0aW9uRmlsdGVyU3RyYXRlZ3koaXRlbSwgZikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgc2VhcmNoIG9mIHRoZSBzZWFyY2ggdGVybSBmb3IgdmlzaWJsZSB0YWJsZSBjb2x1bW5zLlxuICAgICAqIERldmVsb3BlcnMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGV4dGVuZCB0aGUgZmlsdGVyaW5nIGZ1bmN0aW9uYWxpdHkuXG4gICAgICogQHBhcmFtIGl0ZW1zIGRhdGEgc291cmNlIGl0ZW1zIGFycmF5LlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKiBAcmV0dXJucyBmaWx0ZXJlZCBkYXRhIHNvdXJjZSBpdGVtcyBhcnJheS5cbiAgICAgKi9cbiAgICBzZWFyY2goaXRlbXM6IFRbXSwgeyBzZWFyY2hJbnB1dCwgY29sdW1uS2V5cyB9OiBUYWJsZVN0YXRlKTogVFtdIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IHNlYXJjaElucHV0Py50ZXh0IHx8ICcnO1xuICAgICAgICBjb25zdCBrZXlzVG9TZWFyY2hCeSA9IGNvbHVtbktleXM7XG5cbiAgICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpID09PSAnJyB8fCBrZXlzVG9TZWFyY2hCeS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW1zID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXNGb3JTZWFyY2ggPSBrZXlzVG9TZWFyY2hCeS5tYXAoKGtleSkgPT4gZ2V0KGl0ZW0sIGtleSkpO1xuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzRm9yU2VhcmNoXG4gICAgICAgICAgICAgICAgLmZpbHRlcigodmFsdWUpID0+ICEhdmFsdWUpXG4gICAgICAgICAgICAgICAgLm1hcCgodmFsdWUpOiBzdHJpbmcgPT4gdmFsdWUudG9TdHJpbmcoKSlcbiAgICAgICAgICAgICAgICAuc29tZSgodmFsdWUpID0+IHZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdHJpbmcgZmlsdGVyaW5nIHN0cmF0ZWd5XG4gICAgICogQHBhcmFtIGl0ZW0gZGF0YSBzb3VyY2UgYXJyYXkgaXRlbS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBvYmplY3RcbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpdGVtIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkYXRhIHNvdXJjZSBhcnJheS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZmlsdGVyU3RyaW5nKGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvblN0cmluZ0ZpbHRlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGZpbHRlci52YWx1ZSAmJiBmaWx0ZXIudmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUyID0gKGZpbHRlci52YWx1ZTIgJiYgZmlsdGVyLnZhbHVlMi50b0xvY2FsZUxvd2VyQ2FzZSgpKSB8fCAnJztcbiAgICAgICAgbGV0IGl0ZW1WYWx1ZSA9IGdldChpdGVtLCBmaWx0ZXIuZmllbGQpO1xuXG4gICAgICAgIGl0ZW1WYWx1ZSA9IGl0ZW1WYWx1ZSA/IGl0ZW1WYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpIDogaXRlbVZhbHVlO1xuXG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW47XG5cbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2VxdWFsVG8nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA9PT0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdncmVhdGVyVGhhbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID4gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdncmVhdGVyVGhhbk9yRXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID49IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGVzc1RoYW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA8IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGVzc1RoYW5PckVxdWFsVG8nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA8PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA+PSBmaWx0ZXJWYWx1ZSAmJiBpdGVtVmFsdWUgPD0gZmlsdGVyVmFsdWUyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmVnaW5zV2l0aCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlLnN0YXJ0c1dpdGgoZmlsdGVyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW5kc1dpdGgnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZS5lbmRzV2l0aChmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb250YWlucyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA/IGl0ZW1WYWx1ZS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkgOiBpdGVtVmFsdWUgPT09IGZpbHRlclZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlci5leGNsdWRlID8gIXJlc3VsdCA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgZmlsdGVyaW5nIHN0cmF0ZWd5XG4gICAgICogQHBhcmFtIGl0ZW0gZGF0YSBzb3VyY2UgYXJyYXkgaXRlbS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBvYmplY3RcbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpdGVtIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkYXRhIHNvdXJjZSBhcnJheS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZmlsdGVyTnVtYmVyKGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvbk51bWJlckZpbHRlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGZpbHRlci52YWx1ZSBhcyB1bmtub3duIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlMiA9IE51bWJlci5wYXJzZUZsb2F0KGZpbHRlci52YWx1ZTIgYXMgdW5rbm93biBhcyBzdHJpbmcpIHx8IDA7XG4gICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGdldChpdGVtLCBmaWx0ZXIuZmllbGQpKTtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnZ3JlYXRlclRoYW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA+IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZ3JlYXRlclRoYW5PckVxdWFsVG8nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA+PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xlc3NUaGFuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPCBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xlc3NUaGFuT3JFcXVhbFRvJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPD0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiZXR3ZWVuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPj0gZmlsdGVyVmFsdWUgJiYgaXRlbVZhbHVlIDw9IGZpbHRlclZhbHVlMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VxdWFsVG8nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPT09IGZpbHRlclZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlci5leGNsdWRlID8gIXJlc3VsdCA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEYXRlIGZpbHRlcmluZyBzdHJhdGVneVxuICAgICAqIEBwYXJhbSBpdGVtIGRhdGEgc291cmNlIGFycmF5IGl0ZW0uXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXIgb2JqZWN0XG4gICAgICogQHBhcmFtIGFkYXB0ZXJcbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpdGVtIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkYXRhIHNvdXJjZSBhcnJheS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZmlsdGVyRGF0ZTxEID0gRmREYXRlPihpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25EYXRlRmlsdGVyLCBhZGFwdGVyPzogRGF0ZXRpbWVBZGFwdGVyPEQ+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghYWRhcHRlcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdJbiBvcmRlciB0byBmaWx0ZXIgZGF0ZSBjb2x1bW5zLCBwbGVhc2UgcHJvdmlkZSBEYXRlVGltZSBhZGFwdGVyIGluIHlvdXIgVGFibGVEYXRhUHJvdmlkZXIgY29uc3RydWN0b3IuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZTIgPSBmaWx0ZXIudmFsdWUyO1xuICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSBnZXQoaXRlbSwgZmlsdGVyLmZpZWxkKTtcbiAgICAgICAgY29uc3QgZGlmZiA9IGFkYXB0ZXIuY29tcGFyZURhdGUoaXRlbVZhbHVlLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW47XG5cbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBkaWZmID4gMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29uT3JBZnRlcic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGlmZiA+PSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBkaWZmIDwgMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JlZm9yZU9yT24nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRpZmYgPD0gMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFkYXB0ZXIuaXNCZXR3ZWVuKGl0ZW1WYWx1ZSwgZmlsdGVyVmFsdWUsIGZpbHRlclZhbHVlMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2VxdWFsVG8nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhZGFwdGVyLmRhdGVUaW1lc0VxdWFsKGl0ZW1WYWx1ZSwgZmlsdGVyVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlci5leGNsdWRlID8gIXJlc3VsdCA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCb29sZWFuIGZpbHRlcmluZyBzdHJhdGVneVxuICAgICAqIEBwYXJhbSBpdGVtIGRhdGEgc291cmNlIGFycmF5IGl0ZW0uXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXIgb2JqZWN0XG4gICAgICogQHJldHVybnMgd2hldGhlciBvciBub3QgaXRlbSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGF0YSBzb3VyY2UgYXJyYXkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZpbHRlckJvb2xlYW4oaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uQm9vbGVhbkZpbHRlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICAgICAgY29uc3QgaXRlbVZhbHVlID0gZ2V0KGl0ZW0sIGZpbHRlci5maWVsZCk7XG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW47XG5cbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2VxdWFsVG8nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPT09IGZpbHRlclZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlci5leGNsdWRlID8gIXJlc3VsdCA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSBmaWx0ZXJpbmcgc3RyYXRlZ3lcbiAgICAgKiBAcGFyYW0gaXRlbSBkYXRhIHNvdXJjZSBhcnJheSBpdGVtLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG9iamVjdFxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgc291cmNlIGFycmF5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJBcnJheShpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25TZWxlY3RGaWx0ZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWVzID0gZmlsdGVyLnZhbHVlLm1hcCgodikgPT4gdGhpcy5nZXRTZWxlY3RJdGVtVmFsdWUodikpO1xuICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSBnZXQoaXRlbSwgZmlsdGVyLmZpZWxkKTtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZpbHRlclZhbHVlcy5pbmNsdWRlcyhpdGVtVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICFmaWx0ZXJWYWx1ZXMubGVuZ3RoIHx8IGZpbHRlci5leGNsdWRlID8gIXJlc3VsdCA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCB1bnN1YnNjcmliZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVByb3ZpZGVyPFQ+IGV4dGVuZHMgQmFzZVRhYmxlRGF0YVByb3ZpZGVyPFQ+IHtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHRhYmxlU3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBkYXRhLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBmZXRjaCh0YWJsZVN0YXRlPzogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZmV0Y2ggbWV0aG9kIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBkZXZlbG9wZXJzIGZvciBjdXN0b20gZGF0YSBwcm92aWRlcnMuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBhcHBseWluZyBmaWx0ZXJpbmcgYW5kIHJldHJpZXZpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggZmlsdGVyZWQgZGF0YS5cbiAgICAgKi9cbiAgICBmZXRjaERhdGEoc3RhdGU6IFRhYmxlU3RhdGUpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaChzdGF0ZSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IHRoaXMuc2VhcmNoKGl0ZW1zLCB7IC4uLnN0YXRlLCAuLi57IHNlYXJjaElucHV0OiB0aGlzLnNlYXJjaElucHV0IH0gfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyQnkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLmFwcGx5RmlsdGVyaW5nKGl0ZW1zLCB0aGlzLmZpbHRlckJ5KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIGdldHRpbmcgYWxsIHBvc3NpYmxlIG9wdGlvbnMgZm9yIHBhcnRpY3VsYXIgZmllbGQuXG4gICAgICogVXNlZCBmb3IgY3JlYXRpbmcgc2VsZWN0IG9wdGlvbnMuXG4gICAgICogRGV2ZWxvcGVycyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZXh0ZW5kIHRoZSBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKiBAcGFyYW0gZmllbGQga2V5IG9mIHRoZSBkYXRhIGl0ZW0uXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIHNlbGVjdCBpdGVtcy5cbiAgICAgKi9cbiAgICBnZXRGaWVsZE9wdGlvbnMoZmllbGQ6IHN0cmluZyk6IE9ic2VydmFibGU8U2VsZWN0SXRlbVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoKCkucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zOiBTZWxlY3RJdGVtW10gPSBkYXRhLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldChpdGVtLCBmaWVsZCksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBnZXQoaXRlbSwgZmllbGQpXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlQ2hpbGRyZW5EYXRhUHJvdmlkZXI8VD4gZXh0ZW5kcyBCYXNlVGFibGVEYXRhUHJvdmlkZXI8VCwgTWFwPFRhYmxlUm93PFQ+LCBUW10+PiB7XG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciByZXRyaWV2aW5nIHRoZSBhbW91bnQgb2YgY2hpbGQgaXRlbWYgb3IgYSBkZWZpbmVkIHJvdy5cbiAgICAgKiBAcGFyYW0gcm93XG4gICAgICovXG4gICAgYWJzdHJhY3Qgcm93Q2hpbGRyZW5Db3VudChyb3c6IFRhYmxlUm93PFQ+LCBzdGF0ZTogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHRhYmxlU3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBkYXRhLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBmZXRjaCh0YWJsZVN0YXRlPzogVGFibGVTdGF0ZSwgcGFyZW50Um93cz86IFRhYmxlUm93PFQ+W10pOiBPYnNlcnZhYmxlPE1hcDxUYWJsZVJvdzxUPiwgVFtdPj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZldGNoIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgZGV2ZWxvcGVycyBmb3IgY3VzdG9tIGRhdGEgcHJvdmlkZXJzLicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgYXBwbHlpbmcgZmlsdGVyaW5nIGFuZCByZXRyaWV2aW5nIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSBzdGF0ZSBAc2VlIFRhYmxlU3RhdGUgU2V0IG9mIHRhYmxlIHBhcmFtZXRlcnMuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIGZpbHRlcmVkIGRhdGEuXG4gICAgICovXG4gICAgZmV0Y2hEYXRhKHN0YXRlOiBUYWJsZVN0YXRlLCB0YWJsZVJvd3M/OiBUYWJsZVJvdzxUPltdKTogT2JzZXJ2YWJsZTxNYXA8VGFibGVSb3c8VD4sIFRbXT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2goc3RhdGUsIHRhYmxlUm93cykucGlwZShcbiAgICAgICAgICAgIG1hcCgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChyb3dJdGVtcywgcm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJdGVtcyA9IHRoaXMuc2VhcmNoKHJvd0l0ZW1zLCB7IC4uLnN0YXRlLCAuLi57IHNlYXJjaElucHV0OiB0aGlzLnNlYXJjaElucHV0IH0gfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJCeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93SXRlbXMgPSB0aGlzLmFwcGx5RmlsdGVyaW5nKHJvd0l0ZW1zLCB0aGlzLmZpbHRlckJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyb3dJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmRlbGV0ZShyb3cpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuc2V0KHJvdywgcm93SXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -5,10 +5,8 @@ import { SelectionMode } from './enums/selection-mode.enum';
|
|
|
5
5
|
import { isDataSource } from '@fundamental-ngx/platform/shared';
|
|
6
6
|
import { ArrayTableDataSource } from './domain/array-data-source';
|
|
7
7
|
import { ObservableTableDataSource } from './domain/observable-data-source';
|
|
8
|
-
import cloneDeep from 'lodash-es
|
|
9
|
-
import set from 'lodash-es/set';
|
|
8
|
+
import { cloneDeep, set, get } from 'lodash-es';
|
|
10
9
|
import { SortDirection } from './enums/sort-direction.enum';
|
|
11
|
-
import get from 'lodash-es/get';
|
|
12
10
|
import { isObservable } from 'rxjs';
|
|
13
11
|
/** @hidden */
|
|
14
12
|
export function newTableRow(row) {
|
|
@@ -367,4 +365,4 @@ export function convertObjectsToTableRows(source, addedItems, selectedKey, rowNa
|
|
|
367
365
|
export function isTreeRowFirstCell(cellIndex, row, event) {
|
|
368
366
|
return (cellIndex === 0 && isTreeRow(row)) || (!!event && !row.isTree);
|
|
369
367
|
}
|
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFZLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQXNCLE1BQU0sNkJBQTZCLENBQUM7QUFJaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUdoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsY0FBYztBQUNkLE1BQU0sVUFBVSxXQUFXLENBQVUsR0FBeUI7SUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7S0FDNUU7SUFFRCxNQUFNLE1BQU0sR0FBZ0IsSUFBSSxZQUFZLENBQUM7UUFDekMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLElBQUk7UUFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLElBQUksS0FBSztRQUM3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QUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDakcsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBTyxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDO1lBQ3BCLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN6RCxLQUFLO1lBQ0wsS0FBSyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsV0FBVyxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN6RCxHQUFHLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDaEQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFNBQWlCLEVBQUUsR0FBYSxFQUFFLEtBQWE7SUFDOUUsT0FBTyxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlUm93VHlwZSB9IGZyb20gJy4vZW51bXMvcm93LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBpc1RhYmxlUm93LCBUYWJsZVJvdywgVGFibGVSb3dJbXBsIH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtcm93Lm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZSwgU2VsZWN0aW9uTW9kZVZhbHVlIH0gZnJvbSAnLi9lbnVtcy9zZWxlY3Rpb24tbW9kZS5lbnVtJztcbmltcG9ydCB7IFJvd0NvbXBhcmF0b3IgfSBmcm9tICcuL21vZGVscy9yb3ctY29tcGFyYXRvci5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi90YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBGZHBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL21vZGVscy9kYXRhLXNvdXJjZS50eXBlJztcbmltcG9ydCB7IGlzRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IEFycmF5VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4vYXJyYXktZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vZG9tYWluL29ic2VydmFibGUtZGF0YS1zb3VyY2UnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gtZXMvY2xvbmVEZWVwJztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoLWVzL3NldCc7XG5pbXBvcnQgeyBHcm91cFRhYmxlUm93VmFsdWVUeXBlLCBUcmVlTGlrZSB9IGZyb20gJy4vbW9kZWxzL3RyZWUtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkdyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3NvcnQtZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gtZXMvZ2V0JztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5ld1RhYmxlUm93PFQgPSBhbnk+KHJvdzogUGFydGlhbDxUYWJsZVJvdzxUPj4pOiBUYWJsZVJvdzxUPiB7XG4gICAgaWYgKCFyb3cudmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlLiBUYWJsZVJvdy52YWx1ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1JvdzogVGFibGVSb3c8VD4gPSBuZXcgVGFibGVSb3dJbXBsKHtcbiAgICAgICAgdHlwZTogcm93LnR5cGUgfHwgVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgIGNoZWNrZWQ6IHJvdy5jaGVja2VkIHx8IGZhbHNlLFxuICAgICAgICBpbmRleDogcm93LmluZGV4IHx8IDAsXG4gICAgICAgIHZhbHVlOiByb3cudmFsdWUsXG4gICAgICAgIHBhcmVudDogcm93LnBhcmVudCB8fCBudWxsLFxuICAgICAgICBsZXZlbDogcm93LmxldmVsIHx8IDAsXG4gICAgICAgIGV4cGFuZGFibGU6IHJvdy5leHBhbmRhYmxlIHx8IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogcm93LmV4cGFuZGVkIHx8IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHJvdy5oaWRkZW4gfHwgZmFsc2UsXG4gICAgICAgIG5hdmlnYXRhYmxlOiByb3cubmF2aWdhdGFibGUgfHwgZmFsc2UsXG4gICAgICAgIHN0YXRlOiByb3cuc3RhdGUgfHwgJ3JlYWRvbmx5JyxcbiAgICAgICAgY2hpbGRyZW46IHJvdy5jaGlsZHJlbiB8fCBbXVxuICAgIH0pO1xuICAgIHJldHVybiBuZXdSb3c7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0YWJsZVJvd3Mocm93czogVGFibGVSb3dbXSwgc2VsZWN0YWJsZUtleTogc3RyaW5nKTogVGFibGVSb3dbXSB7XG4gICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyb3cpID0+IGlzU2VsZWN0YWJsZVJvdyhyb3csIHNlbGVjdGFibGVLZXkpKTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdGFibGVSb3cocm93OiBUYWJsZVJvdywgc2VsZWN0YWJsZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChpc0l0ZW1Sb3cocm93KSB8fCBpc1RyZWVSb3cocm93KSkgJiYgcm93LnZhbHVlW3NlbGVjdGFibGVLZXldICE9PSBmYWxzZTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0l0ZW1Sb3cocm93OiBUYWJsZVJvdyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByb3cudHlwZSA9PT0gVGFibGVSb3dUeXBlLklURU07XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmVlUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5UUkVFO1xufVxuXG4vKipcbiAqIFNpbmNlIHdlIGRvbnQgd29yayB3aXRoIHRoZSB0cmVlLCB3ZSBuZWVkIHRvIGNvbnZlcnQgaW5jb21pbmcgdHJlZSB0b1xuICogZmxhdCBmb3JtYXQgd2hpbGUgbWFpbnRhaW5pbmcgb3JpZ2luYWwgc3RhdGUuXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRyZWVUYWJsZVJvd1RvRmxhdExpc3Q8VD4ocm93czogVGFibGVSb3c8VD5bXSwgcm93TmF2aWdhdGFibGU6IHN0cmluZyB8IGJvb2xlYW4pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBsZXQgZmxhdExpc3Q6IFRhYmxlUm93W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiByb3dzKSB7XG4gICAgICAgIGl0ZW0ubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0gYXMgVCwgcm93TmF2aWdhdGFibGUpO1xuICAgICAgICBmbGF0TGlzdC5wdXNoKGl0ZW0pO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGMpID0+IChjLmhpZGRlbiA9ICFpdGVtLmV4cGFuZGVkKSk7XG4gICAgICAgICAgICBmbGF0TGlzdCA9IGZsYXRMaXN0LmNvbmNhdChjb252ZXJ0VHJlZVRhYmxlUm93VG9GbGF0TGlzdChpdGVtLmNoaWxkcmVuLCByb3dOYXZpZ2F0YWJsZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmbGF0TGlzdDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Jvd05hdmlnYXRhYmxlPFQ+KHJvdzogVCwgcm93TmF2aWdhdGFibGU6IHN0cmluZyB8IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoIXJvdykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIElmIGtleSBvZiB0aGUgcm93J3MgaXRlbSBmaWVsZCBwYXNzZWQgKi9cbiAgICBpZiAoaXNTdHJpbmcocm93TmF2aWdhdGFibGUpKSB7XG4gICAgICAgIHJldHVybiAhIXJvd1tyb3dOYXZpZ2F0YWJsZSBhcyBzdHJpbmddO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJvd05hdmlnYXRhYmxlO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWV6YWJsZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSwgZnJlZXplQ29sdW1uc1RvOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICBpZiAoIWNvbHVtbnMubGVuZ3RoIHx8ICFmcmVlemVDb2x1bW5zVG8pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKCFjb2x1bW4ubmFtZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1c2luZyBjb2x1bW5OYW1lcy5zaXplIGFzIGluZGV4IG9mIGEgY29sdW1uXG4gICAgICAgIGNvbHVtbk5hbWVzLnNldChjb2x1bW4ubmFtZSwgY29sdW1uTmFtZXMuc2l6ZSk7XG5cbiAgICAgICAgaWYgKGNvbHVtbi5uYW1lID09PSBmcmVlemVDb2x1bW5zVG8pIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgTWFwKCk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RnJlZXphYmxlRW5kQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdLCBmcmVlemVFbmRDb2x1bW5zVG86IHN0cmluZyk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICAgIGlmICghY29sdW1ucy5sZW5ndGggfHwgIWZyZWV6ZUVuZENvbHVtbnNUbykge1xuICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IGNvbHVtbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgLy8gdXNpbmcgY29sdW1uTmFtZXMuc2l6ZSBhcyBpbmRleCBvZiBhIGNvbHVtblxuICAgICAgICBjb2x1bW5OYW1lcy5zZXQoY29sdW1uc1tpXS5uYW1lLCBjb2x1bW5OYW1lcy5zaXplKTtcblxuICAgICAgICBpZiAoY29sdW1uc1tpXS5uYW1lID09PSBmcmVlemVFbmRDb2x1bW5zVG8pIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgTWFwKCk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRyZWVPYmplY3RzVG9UYWJsZVJvd3M8VD4oXG4gICAgc291cmNlOiBUW10sXG4gICAgc2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uTW9kZVZhbHVlLFxuICAgIHRhYmxlUm93czogVGFibGVSb3c8VD5bXSxcbiAgICByb3dDb21wYXJhdG9yOiBSb3dDb21wYXJhdG9yPFQ+LFxuICAgIHJlbGF0aW9uS2V5OiBzdHJpbmcsXG4gICAgaGFzQ2hpbGRyZW5LZXk6IHN0cmluZyxcbiAgICBzZWxlY3RlZEtleTogc3RyaW5nLFxuICAgIGV4cGFuZGVkU3RhdGVLZXk6IHN0cmluZyxcbiAgICByb3dOYXZpZ2F0YWJsZTogc3RyaW5nIHwgYm9vbGVhblxuKTogVGFibGVSb3c8VD5bXSB7XG4gICAgY29uc3Qgcm93czogVGFibGVSb3c8VD5bXSA9IFtdO1xuICAgIGNvbnN0IHNlbGVjdGVkUm93c01hcCA9IGdldFNlbGVjdGlvblN0YXR1c0J5Um93VmFsdWUoc291cmNlLCBzZWxlY3Rpb25Nb2RlLCB0YWJsZVJvd3MsIHJvd0NvbXBhcmF0b3IpO1xuXG4gICAgc291cmNlLmZvckVhY2goKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgaGFzQ2hpbGRyZW4gPVxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGl0ZW0sIHJlbGF0aW9uS2V5KSAmJlxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShpdGVtW3JlbGF0aW9uS2V5XSkgJiZcbiAgICAgICAgICAgIGl0ZW1bcmVsYXRpb25LZXldLmxlbmd0aDtcblxuICAgICAgICBjb25zdCByb3cgPSBpc1RhYmxlUm93KGl0ZW0gYXMgVGFibGVSb3c8VD4pXG4gICAgICAgICAgICA/IChpdGVtIGFzIFRhYmxlUm93PFQ+KVxuICAgICAgICAgICAgOiBuZXdUYWJsZVJvdyh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBoYXNDaGlsZHJlbiB8fCBpdGVtW2hhc0NoaWxkcmVuS2V5XSA9PT0gdHJ1ZSA/IFRhYmxlUm93VHlwZS5UUkVFIDogVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBpdGVtW3NlbGVjdGVkS2V5XSA/PyAhIXNlbGVjdGVkUm93c01hcC5nZXQoaXRlbSksXG4gICAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJvdy5leHBhbmRlZCA9XG4gICAgICAgICAgICBleHBhbmRlZFN0YXRlS2V5ICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLCBleHBhbmRlZFN0YXRlS2V5KVxuICAgICAgICAgICAgICAgID8gaXRlbVtleHBhbmRlZFN0YXRlS2V5XVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgIHJvdy5uYXZpZ2F0YWJsZSA9IGlzUm93TmF2aWdhdGFibGUoaXRlbSwgcm93TmF2aWdhdGFibGUpO1xuICAgICAgICByb3dzLnB1c2gocm93KTtcblxuICAgICAgICBpZiAoaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gY29udmVydFRyZWVPYmplY3RzVG9UYWJsZVJvd3MoXG4gICAgICAgICAgICAgICAgaXRlbVtyZWxhdGlvbktleV0sXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTW9kZSxcbiAgICAgICAgICAgICAgICB0YWJsZVJvd3MsXG4gICAgICAgICAgICAgICAgcm93Q29tcGFyYXRvcixcbiAgICAgICAgICAgICAgICByZWxhdGlvbktleSxcbiAgICAgICAgICAgICAgICBoYXNDaGlsZHJlbktleSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleSxcbiAgICAgICAgICAgICAgICBleHBhbmRlZFN0YXRlS2V5LFxuICAgICAgICAgICAgICAgIHJvd05hdmlnYXRhYmxlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgYy5wYXJlbnQgPSBjLnBhcmVudCB8fCByb3c7XG4gICAgICAgICAgICAgICAgYy5sZXZlbCA9IGMucGFyZW50LmxldmVsICsgMTtcbiAgICAgICAgICAgICAgICBjLmhpZGRlbiA9ICFjLnBhcmVudC5leHBhbmRlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcm93LmNoaWxkcmVuLnB1c2goLi4uY2hpbGRyZW4pO1xuXG4gICAgICAgICAgICByb3dzLnB1c2goLi4uY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93cztcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBSdW5zIGByb3dDb21wYXJhdG9yYCBmdW5jdGlvbiBhZ2FpbnN0IGNoZWNrZWQgcm93cyBhbmQgY29tcGFyZXMgdGhlbSB3aXRoIHRoZSBuZXcgYHNvdXJjZWBcbiAqIElmIG1hdGNoZWQsIGNyZWF0ZXMgYW4gYXNzb2NpYXRpb24gYmV0d2VlbiB0aGUgc291cmNlIGl0ZW0gYW5kIGNoZWNrZWQgc3RhdHVzIG9mIGNvcnJlc3BvbmRpbmcgcm93LlxuICpcbiAqIEByZXR1cm5zIGBNYXBgIG9iamVjdCB3aXRoIHRoZSBgY2hlY2tlZGAgc3RhdHVzIGZvciBwYXJ0aWN1bGFyIHNvdXJjZSBpdGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlPFQ+KFxuICAgIHNvdXJjZTogVFtdLFxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGVWYWx1ZSxcbiAgICB0YWJsZVJvd3M6IFRhYmxlUm93W10sXG4gICAgcm93Q29tcGFyYXRvcjogUm93Q29tcGFyYXRvcjxUPlxuKTogTWFwPFQsIGJvb2xlYW4gfCBudWxsPiB7XG4gICAgY29uc3Qgcm93TWFwID0gbmV3IE1hcDxULCBib29sZWFuIHwgbnVsbD4oKTtcbiAgICBpZiAoXG4gICAgICAgIChzZWxlY3Rpb25Nb2RlID09PSBTZWxlY3Rpb25Nb2RlLlNJTkdMRSB8fCBzZWxlY3Rpb25Nb2RlID09PSBTZWxlY3Rpb25Nb2RlLk1VTFRJUExFKSAmJlxuICAgICAgICB0eXBlb2Ygcm93Q29tcGFyYXRvciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICkge1xuICAgICAgICBjb25zdCBjaGVja2VkUm93cyA9IHRhYmxlUm93cy5maWx0ZXIoKHIpID0+IHIuY2hlY2tlZCk7XG4gICAgICAgIGNoZWNrZWRSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSBzb3VyY2UuZmluZCgoZSkgPT4gcm93Q29tcGFyYXRvcihyb3cudmFsdWUsIGUpKTtcbiAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgIHJvd01hcC5zZXQoZm91bmQsIHJvdy5jaGVja2VkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb3dNYXA7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvd0NoaWxkcmVuPFQ+KHJvdzogVGFibGVSb3c8VD4sIGFsbFJvd3M6IFRhYmxlUm93PFQ+W10pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBjb25zdCByb3dzTGVuZ3RoID0gYWxsUm93cy5sZW5ndGg7XG5cbiAgICAvKipcbiAgICAgKiBTaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgZmxhdCBsaXN0XG4gICAgICogaXQgbWVhbnMgYWxsIGNoaWxkcmVuIGdvIG5leHQgcmlnaHQgYWZ0ZXIgdGhlIGV4cGFuZGFibGUgcm93XG4gICAgICogdW50aWwgdGhlIG5leHQgcm93IGhhcyBhIG11dHVhbCBwYXJlbnRcbiAgICAgKi9cblxuICAgIGxldCBpbmRleCA9IGFsbFJvd3MuaW5kZXhPZihyb3cpO1xuICAgIGNvbnN0IHBhcmVudHMgPSBnZXRSb3dQYXJlbnRzKHJvdyk7XG4gICAgY29uc3QgY2hpbGRyZW46IFRhYmxlUm93PFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChpbmRleCsrIDwgcm93c0xlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0Um93ID0gYWxsUm93c1tpbmRleF07XG4gICAgICAgIGlmICghbmV4dFJvdz8ucGFyZW50IHx8IHBhcmVudHMuaW5jbHVkZXMobmV4dFJvdy5wYXJlbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbi5wdXNoKG5leHRSb3cpO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZHJlbjtcbn1cblxuLyoqXG4gKiBHZXQgcm93IHBhcmVudHMgcGF0aCB3aGVyZSB0aGUgZmlyc3QgaXMgdGhlIGRpcmVjdCBwYXJlbnRcbiAqIEBwYXJhbSByb3cgUm93IHdoaWNoIHBhcmVudHMgd2UgbmVlZCB0byBmaW5kXG4gKiBAcGFyYW0gdW50aWxQYXJlbnQgUGFyZW50IHRvIHN0b3AgYSBzZWFyY2ggb24uIERlZmF1bHQgaXMgXCJudWxsXCIgdGhhdCBtZWFucyBsb29rIHVwIHVudGlsIHRoZSByb290XG4gKiBAcmV0dXJucyBwYXJlbnRzIGxpc3QgW2RpcmVjdCBwYXJlbnQsIC4uLiwgYW5jZXN0b3JdXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3dQYXJlbnRzPFQ+KHJvdzogVGFibGVSb3c8VD4sIHVudGlsUGFyZW50OiBUYWJsZVJvdzxUPiB8IG51bGwgPSBudWxsKTogVGFibGVSb3c8VD5bXSB7XG4gICAgdW50aWxQYXJlbnQgPSB1bnRpbFBhcmVudCB8fCBudWxsOyAvLyB0byBhdm9pZCBcInVuZGVmaW5lZFwiXG4gICAgY29uc3QgcGFyZW50czogVGFibGVSb3c8VD5bXSA9IFtdO1xuICAgIGxldCBwYXJlbnQgPSByb3cucGFyZW50IHx8IG51bGw7IC8vIGVtcHR5IHBhcmVudCBzaG91bGQgYmUgY29lcmNlZCB0byBcIm51bGxcIiBkbyBub3QgZ2V0IGludG8gaW5maW5pdGUgbG9vcFxuICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50ICE9PSB1bnRpbFBhcmVudCkge1xuICAgICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudCB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50cztcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGFTdHJlYW08VD4oc291cmNlOiBGZHBUYWJsZURhdGFTb3VyY2U8VD4pOiBUYWJsZURhdGFTb3VyY2U8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc0RhdGFTb3VyY2Uoc291cmNlKSkge1xuICAgICAgICByZXR1cm4gc291cmNlIGFzIFRhYmxlRGF0YVNvdXJjZTxUPjtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlUYWJsZURhdGFTb3VyY2Uoc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKHNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlVGFibGVEYXRhU291cmNlKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8qKlxuICogQGhpZGRlblxuICogQ3JlYXRlcyBhbiBlbXB0eSBjb2x1bW4gc2tlbGV0b24gb2JqZWN0LlxuICogQHJldHVybnMgQ29sdW1uIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGROZXdSb3dTa2VsZXRvbjxUPihlZGl0YWJsZVJvd1NrZWxldG9uOiBULCBjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogVCB7XG4gICAgaWYgKGVkaXRhYmxlUm93U2tlbGV0b24pIHtcbiAgICAgICAgcmV0dXJuIGNsb25lRGVlcChlZGl0YWJsZVJvd1NrZWxldG9uKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Um93ID0ge307XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgbmV3Um93ID0gc2V0KG5ld1JvdywgY29sdW1uLmtleSwgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXdSb3cgYXMgVDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5HUk9VUDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0VHJlZUxpa2VHcm91cGVkUm93cyhcbiAgICBncm91cGVkUm93czogVHJlZUxpa2U8VGFibGVSb3c+W10sXG4gICAgZ3JvdXBSdWxlc01hcDogTWFwPHN0cmluZywgQ29sbGVjdGlvbkdyb3VwPlxuKTogVHJlZUxpa2U8VGFibGVSb3c+W10ge1xuICAgIGlmICghZ3JvdXBlZFJvd3NbMF0gfHwgIWlzR3JvdXBSb3coZ3JvdXBlZFJvd3NbMF0pKSB7XG4gICAgICAgIHJldHVybiBncm91cGVkUm93cztcbiAgICB9XG5cbiAgICBjb25zdCB0cmVlTGlrZVJvd3MgPSBncm91cGVkUm93cyBhcyBUcmVlTGlrZTxUYWJsZVJvdzxHcm91cFRhYmxlUm93VmFsdWVUeXBlPj5bXTtcbiAgICBjb25zdCBmaXJzdFJvdyA9IHRyZWVMaWtlUm93c1swXTtcblxuICAgIHRyZWVMaWtlUm93cy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBpZiAoZ3JvdXAuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICBncm91cC5fY2hpbGRyZW4gPSBzb3J0VHJlZUxpa2VHcm91cGVkUm93cyhncm91cC5fY2hpbGRyZW4sIGdyb3VwUnVsZXNNYXApO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBncm91cFJ1bGUgPSBncm91cFJ1bGVzTWFwLmdldChmaXJzdFJvdy52YWx1ZS5maWVsZCk7XG5cbiAgICBpZiAoIWdyb3VwUnVsZSB8fCBncm91cFJ1bGUuZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLk5PTkUpIHtcbiAgICAgICAgcmV0dXJuIHRyZWVMaWtlUm93cztcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBncm91cFJ1bGUuZGlyZWN0aW9uO1xuICAgIGNvbnN0IGRpcmVjdGlvbk11bHRpcGxpZXIgPSBkaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uQVNDID8gMSA6IGRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5ERVNDID8gLTEgOiAwO1xuXG4gICAgcmV0dXJuIHRyZWVMaWtlUm93cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYVZhbHVlID0gYS52YWx1ZS52YWx1ZSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGJWYWx1ZSA9IGIudmFsdWUudmFsdWUgYXMgYW55O1xuXG4gICAgICAgIGNvbnN0IGFOdW1iZXIgPSBOdW1iZXIucGFyc2VGbG9hdChhVmFsdWUpO1xuICAgICAgICBjb25zdCBiTnVtYmVyID0gTnVtYmVyLnBhcnNlRmxvYXQoYlZhbHVlKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYU51bWJlcikgJiYgIU51bWJlci5pc05hTihiTnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIChhTnVtYmVyIC0gYk51bWJlcikgKiBkaXJlY3Rpb25NdWx0aXBsaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChhVmFsdWUgPiBiVmFsdWUgPyAxIDogLTEpICogZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICB9KTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VHJlZUxpa2VUb0ZsYXRMaXN0PEs+KHRyZWVMaWtlTGlzdDogVHJlZUxpa2U8Sz5bXSk6IEtbXSB7XG4gICAgbGV0IGZsYXRMaXN0OiBLW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0cmVlTGlrZUxpc3QpIHtcbiAgICAgICAgZmxhdExpc3QucHVzaChpdGVtKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLl9jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGZsYXRMaXN0ID0gZmxhdExpc3QuY29uY2F0KGNvbnZlcnRUcmVlTGlrZVRvRmxhdExpc3QoaXRlbS5fY2hpbGRyZW4pKTtcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLl9jaGlsZHJlbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmbGF0TGlzdDtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBHcm91cCB0YWJsZSByb3dzIGFuZCByZXR1cm4gdHJlZSBsaWtlIHJvd3MgbGlzdC5cbiAqIEl0J3MgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5LlxuICogQHBhcmFtIHJ1bGVzIGdyb3VwIHJ1bGVzIHRvIGdyb3VwIGJ5XG4gKiBAcGFyYW0gcm93cyBzb3VyY2UgdGFibGUgcm93c1xuICogQHBhcmFtIHBhcmVudCByb3cgcGFyZW50XG4gKiBAcGFyYW0gbGV2ZWwgbGV2ZWwgb2YgbmVzdGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUoXG4gICAgcnVsZXM6IENvbGxlY3Rpb25Hcm91cFtdLFxuICAgIHJvd3M6IFRhYmxlUm93W10sXG4gICAgcGFyZW50OiBUYWJsZVJvdyB8IG51bGwgPSBudWxsLFxuICAgIGxldmVsID0gMFxuKTogVHJlZUxpa2U8VGFibGVSb3c+W10ge1xuICAgIHJ1bGVzID0gWy4uLnJ1bGVzXTtcblxuICAgIGlmICghcnVsZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIG5vIHJ1bGVzIG1lYW4gdGhhdCBpdCdzIHRoZSBsZXZlbCBvZiBzb3VyY2UgaXRlbXNcbiAgICAgICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgIHJvdy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICByb3cubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICAgIHJvdy5oaWRkZW4gPSAhIXBhcmVudCAmJiAhcGFyZW50LmV4cGFuZGVkO1xuICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUmV0cmlldmUgZmlyc3QgZ3JvdXAgcnVsZVxuICAgIGNvbnN0IHJ1bGUgPSBydWxlcy5zaGlmdCgpITtcblxuICAgIC8vIEJ1aWxkIG1hcCBvZiB1bmlxdWUgdmFsdWVzIGZvciBhIGdpdmVuIGdyb3VwIHJ1bGVcbiAgICBjb25zdCB2YWx1ZXNIYXNoID0gcm93c1xuICAgICAgICAuZmlsdGVyKChyKSA9PiByLnN0YXRlICE9PSAnZWRpdGFibGUnKVxuICAgICAgICAucmVkdWNlKChoYXNoLCByb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSBnZXQocm93LnZhbHVlLCBydWxlLmZpZWxkKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNoLmhhcyhtb2RlbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGhhc2guc2V0KG1vZGVsVmFsdWUsIFtdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzaC5nZXQobW9kZWxWYWx1ZSk/LnB1c2gocm93KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgICAgIH0sIG5ldyBNYXA8dW5rbm93biwgVGFibGVSb3dbXT4oKSk7XG5cbiAgICAvLyBCdWlsZCB0YWJsZSByb3dzIHRyZWVcbiAgICBsZXQgZ3JvdXBlZFRhYmxlUm93czogVHJlZUxpa2U8VGFibGVSb3c+W10gPSBbXTtcblxuICAgIGlmIChyb3dzLnNvbWUoKHIpID0+IHIuc3RhdGUgPT09ICdlZGl0YWJsZScpKSB7XG4gICAgICAgIGdyb3VwZWRUYWJsZVJvd3MgPSByb3dzXG4gICAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnN0YXRlID09PSAnZWRpdGFibGUnKVxuICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgcm93LnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICByb3cubGV2ZWwgPSAtMTtcbiAgICAgICAgICAgICAgICByb3cuaGlkZGVuID0gISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbdmFsdWUsIHZhbHVlc10gb2YgQXJyYXkuZnJvbSh2YWx1ZXNIYXNoKSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFJvd3MgPSByb3dzLmZpbHRlcigoX2l0ZW0pID0+IHZhbHVlcy5pbmNsdWRlcyhfaXRlbSkpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwVGFibGVSb3c6IFRyZWVMaWtlPFRhYmxlUm93PEdyb3VwVGFibGVSb3dWYWx1ZVR5cGU+PiA9IG5ld1RhYmxlUm93PEdyb3VwVGFibGVSb3dWYWx1ZVR5cGU+KHtcbiAgICAgICAgICAgIHR5cGU6IFRhYmxlUm93VHlwZS5HUk9VUCxcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgICB2YWx1ZTogeyBmaWVsZDogcnVsZS5maWVsZCwgdmFsdWUsIGNvdW50OiAwIH0sXG4gICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICBleHBhbmRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGhpZGRlbjogISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZHMgZ3JvdXAncyBjaGlsZHJlbiByb3dzXG4gICAgICAgIGdyb3VwVGFibGVSb3cuX2NoaWxkcmVuID0gY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUocnVsZXMsIGZpbHRlcmVkUm93cywgZ3JvdXBUYWJsZVJvdywgbGV2ZWwgKyAxKTtcblxuICAgICAgICBncm91cFRhYmxlUm93LnZhbHVlLmNvdW50ID0gZ3JvdXBUYWJsZVJvdy5fY2hpbGRyZW4/Lmxlbmd0aDtcblxuICAgICAgICBncm91cGVkVGFibGVSb3dzLnB1c2goZ3JvdXBUYWJsZVJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwZWRUYWJsZVJvd3M7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE9iamVjdHNUb1RhYmxlUm93czxUPihcbiAgICBzb3VyY2U6IFRbXSxcbiAgICBhZGRlZEl0ZW1zOiBUW10sXG4gICAgc2VsZWN0ZWRLZXk6IHN0cmluZyxcbiAgICByb3dOYXZpZ2F0YWJsZTogYm9vbGVhbiB8IHN0cmluZyxcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWUsXG4gICAgcm93czogVGFibGVSb3dbXSxcbiAgICByb3dDb21wYXJhdG9yOiBSb3dDb21wYXJhdG9yXG4pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBjb25zdCByb3dJdGVtID0gc291cmNlWzBdIGFzIGFueTtcblxuICAgIGlmIChpc1RhYmxlUm93KHJvd0l0ZW0pKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2UgYXMgVGFibGVSb3dbXTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZFJvd3NNYXAgPSBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlKHNvdXJjZSwgc2VsZWN0aW9uTW9kZSwgcm93cywgcm93Q29tcGFyYXRvcik7XG4gICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgaXNOZXdJdGVtID0gYWRkZWRJdGVtcy5pbmNsdWRlcyhpdGVtKTtcbiAgICAgICAgY29uc3Qgcm93ID0gbmV3VGFibGVSb3coe1xuICAgICAgICAgICAgdHlwZTogVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgICAgICBjaGVja2VkOiBpdGVtW3NlbGVjdGVkS2V5XSA/PyAhIXNlbGVjdGVkUm93c01hcC5nZXQoaXRlbSksXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICAgIH0pO1xuICAgICAgICByb3cubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0sIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgcm93LnN0YXRlID0gaXNOZXdJdGVtID8gJ2VkaXRhYmxlJyA6ICdyZWFkb25seSc7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmVlUm93Rmlyc3RDZWxsKGNlbGxJbmRleDogbnVtYmVyLCByb3c6IFRhYmxlUm93LCBldmVudD86IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChjZWxsSW5kZXggPT09IDAgJiYgaXNUcmVlUm93KHJvdykpIHx8ICghIWV2ZW50ICYmICFyb3cuaXNUcmVlKTtcbn1cbiJdfQ==
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFZLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQXNCLE1BQU0sNkJBQTZCLENBQUM7QUFJaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxjQUFjO0FBQ2QsTUFBTSxVQUFVLFdBQVcsQ0FBVSxHQUF5QjtJQUMxRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztLQUM1RTtJQUVELE1BQU0sTUFBTSxHQUFnQixJQUFJLFlBQVksQ0FBQztRQUN6QyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSTtRQUNuQyxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSxLQUFLO1FBQzdCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLENB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LElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNqRyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFPLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDekMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUM7WUFDcEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3pELEtBQUs7WUFDTCxLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELEdBQUcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNoRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxHQUFhLEVBQUUsS0FBYTtJQUM5RSxPQUFPLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgVGFibGVSb3dUeXBlIH0gZnJvbSAnLi9lbnVtcy9yb3ctdHlwZS5lbnVtJztcbmltcG9ydCB7IGlzVGFibGVSb3csIFRhYmxlUm93LCBUYWJsZVJvd0ltcGwgfSBmcm9tICcuL21vZGVscy90YWJsZS1yb3cubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuL3RhYmxlLWNvbHVtbic7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlLCBTZWxlY3Rpb25Nb2RlVmFsdWUgfSBmcm9tICcuL2VudW1zL3NlbGVjdGlvbi1tb2RlLmVudW0nO1xuaW1wb3J0IHsgUm93Q29tcGFyYXRvciB9IGZyb20gJy4vbW9kZWxzL3Jvdy1jb21wYXJhdG9yLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vZG9tYWluL3RhYmxlLWRhdGEtc291cmNlJztcbmltcG9ydCB7IEZkcFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vbW9kZWxzL2RhdGEtc291cmNlLnR5cGUnO1xuaW1wb3J0IHsgaXNEYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgQXJyYXlUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi9hcnJheS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4vb2JzZXJ2YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIHNldCwgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEdyb3VwVGFibGVSb3dWYWx1ZVR5cGUsIFRyZWVMaWtlIH0gZnJvbSAnLi9tb2RlbHMvdHJlZS10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvY29sbGVjdGlvbi1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU29ydERpcmVjdGlvbiB9IGZyb20gJy4vZW51bXMvc29ydC1kaXJlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXdUYWJsZVJvdzxUID0gYW55Pihyb3c6IFBhcnRpYWw8VGFibGVSb3c8VD4+KTogVGFibGVSb3c8VD4ge1xuICAgIGlmICghcm93LnZhbHVlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCB2YWx1ZS4gVGFibGVSb3cudmFsdWUgY2Fubm90IGJlIHVuZGVmaW5lZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSb3c6IFRhYmxlUm93PFQ+ID0gbmV3IFRhYmxlUm93SW1wbCh7XG4gICAgICAgIHR5cGU6IHJvdy50eXBlIHx8IFRhYmxlUm93VHlwZS5JVEVNLFxuICAgICAgICBjaGVja2VkOiByb3cuY2hlY2tlZCB8fCBmYWxzZSxcbiAgICAgICAgaW5kZXg6IHJvdy5pbmRleCB8fCAwLFxuICAgICAgICB2YWx1ZTogcm93LnZhbHVlLFxuICAgICAgICBwYXJlbnQ6IHJvdy5wYXJlbnQgfHwgbnVsbCxcbiAgICAgICAgbGV2ZWw6IHJvdy5sZXZlbCB8fCAwLFxuICAgICAgICBleHBhbmRhYmxlOiByb3cuZXhwYW5kYWJsZSB8fCBmYWxzZSxcbiAgICAgICAgZXhwYW5kZWQ6IHJvdy5leHBhbmRlZCB8fCBmYWxzZSxcbiAgICAgICAgaGlkZGVuOiByb3cuaGlkZGVuIHx8IGZhbHNlLFxuICAgICAgICBuYXZpZ2F0YWJsZTogcm93Lm5hdmlnYXRhYmxlIHx8IGZhbHNlLFxuICAgICAgICBzdGF0ZTogcm93LnN0YXRlIHx8ICdyZWFkb25seScsXG4gICAgICAgIGNoaWxkcmVuOiByb3cuY2hpbGRyZW4gfHwgW11cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3Um93O1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGFibGVSb3dzKHJvd3M6IFRhYmxlUm93W10sIHNlbGVjdGFibGVLZXk6IHN0cmluZyk6IFRhYmxlUm93W10ge1xuICAgIHJldHVybiByb3dzLmZpbHRlcigocm93KSA9PiBpc1NlbGVjdGFibGVSb3cocm93LCBzZWxlY3RhYmxlS2V5KSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RhYmxlUm93KHJvdzogVGFibGVSb3csIHNlbGVjdGFibGVLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoaXNJdGVtUm93KHJvdykgfHwgaXNUcmVlUm93KHJvdykpICYmIHJvdy52YWx1ZVtzZWxlY3RhYmxlS2V5XSAhPT0gZmFsc2U7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJdGVtUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5JVEVNO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJlZVJvdyhyb3c6IFRhYmxlUm93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSBUYWJsZVJvd1R5cGUuVFJFRTtcbn1cblxuLyoqXG4gKiBTaW5jZSB3ZSBkb250IHdvcmsgd2l0aCB0aGUgdHJlZSwgd2UgbmVlZCB0byBjb252ZXJ0IGluY29taW5nIHRyZWUgdG9cbiAqIGZsYXQgZm9ybWF0IHdoaWxlIG1haW50YWluaW5nIG9yaWdpbmFsIHN0YXRlLlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUcmVlVGFibGVSb3dUb0ZsYXRMaXN0PFQ+KHJvd3M6IFRhYmxlUm93PFQ+W10sIHJvd05hdmlnYXRhYmxlOiBzdHJpbmcgfCBib29sZWFuKTogVGFibGVSb3c8VD5bXSB7XG4gICAgbGV0IGZsYXRMaXN0OiBUYWJsZVJvd1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygcm93cykge1xuICAgICAgICBpdGVtLm5hdmlnYXRhYmxlID0gaXNSb3dOYXZpZ2F0YWJsZShpdGVtIGFzIFQsIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgZmxhdExpc3QucHVzaChpdGVtKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjKSA9PiAoYy5oaWRkZW4gPSAhaXRlbS5leHBhbmRlZCkpO1xuICAgICAgICAgICAgZmxhdExpc3QgPSBmbGF0TGlzdC5jb25jYXQoY29udmVydFRyZWVUYWJsZVJvd1RvRmxhdExpc3QoaXRlbS5jaGlsZHJlbiwgcm93TmF2aWdhdGFibGUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmxhdExpc3Q7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSb3dOYXZpZ2F0YWJsZTxUPihyb3c6IFQsIHJvd05hdmlnYXRhYmxlOiBzdHJpbmcgfCBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBJZiBrZXkgb2YgdGhlIHJvdydzIGl0ZW0gZmllbGQgcGFzc2VkICovXG4gICAgaWYgKGlzU3RyaW5nKHJvd05hdmlnYXRhYmxlKSkge1xuICAgICAgICByZXR1cm4gISFyb3dbcm93TmF2aWdhdGFibGUgYXMgc3RyaW5nXTtcbiAgICB9XG5cbiAgICByZXR1cm4gISFyb3dOYXZpZ2F0YWJsZTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmVlemFibGVDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10sIGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nKTogTWFwPHN0cmluZywgbnVtYmVyPiB7XG4gICAgY29uc3QgY29sdW1uTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gICAgaWYgKCFjb2x1bW5zLmxlbmd0aCB8fCAhZnJlZXplQ29sdW1uc1RvKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmICghY29sdW1uLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXNpbmcgY29sdW1uTmFtZXMuc2l6ZSBhcyBpbmRleCBvZiBhIGNvbHVtblxuICAgICAgICBjb2x1bW5OYW1lcy5zZXQoY29sdW1uLm5hbWUsIGNvbHVtbk5hbWVzLnNpemUpO1xuXG4gICAgICAgIGlmIChjb2x1bW4ubmFtZSA9PT0gZnJlZXplQ29sdW1uc1RvKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1hcCgpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWV6YWJsZUVuZENvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSwgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICBpZiAoIWNvbHVtbnMubGVuZ3RoIHx8ICFmcmVlemVFbmRDb2x1bW5zVG8pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBjb2x1bW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIC8vIHVzaW5nIGNvbHVtbk5hbWVzLnNpemUgYXMgaW5kZXggb2YgYSBjb2x1bW5cbiAgICAgICAgY29sdW1uTmFtZXMuc2V0KGNvbHVtbnNbaV0ubmFtZSwgY29sdW1uTmFtZXMuc2l6ZSk7XG5cbiAgICAgICAgaWYgKGNvbHVtbnNbaV0ubmFtZSA9PT0gZnJlZXplRW5kQ29sdW1uc1RvKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1hcCgpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUcmVlT2JqZWN0c1RvVGFibGVSb3dzPFQ+KFxuICAgIHNvdXJjZTogVFtdLFxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGVWYWx1ZSxcbiAgICB0YWJsZVJvd3M6IFRhYmxlUm93PFQ+W10sXG4gICAgcm93Q29tcGFyYXRvcjogUm93Q29tcGFyYXRvcjxUPixcbiAgICByZWxhdGlvbktleTogc3RyaW5nLFxuICAgIGhhc0NoaWxkcmVuS2V5OiBzdHJpbmcsXG4gICAgc2VsZWN0ZWRLZXk6IHN0cmluZyxcbiAgICBleHBhbmRlZFN0YXRlS2V5OiBzdHJpbmcsXG4gICAgcm93TmF2aWdhdGFibGU6IHN0cmluZyB8IGJvb2xlYW5cbik6IFRhYmxlUm93PFQ+W10ge1xuICAgIGNvbnN0IHJvd3M6IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3NNYXAgPSBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlKHNvdXJjZSwgc2VsZWN0aW9uTW9kZSwgdGFibGVSb3dzLCByb3dDb21wYXJhdG9yKTtcblxuICAgIHNvdXJjZS5mb3JFYWNoKChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0NoaWxkcmVuID1cbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLCByZWxhdGlvbktleSkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaXRlbVtyZWxhdGlvbktleV0pICYmXG4gICAgICAgICAgICBpdGVtW3JlbGF0aW9uS2V5XS5sZW5ndGg7XG5cbiAgICAgICAgY29uc3Qgcm93ID0gaXNUYWJsZVJvdyhpdGVtIGFzIFRhYmxlUm93PFQ+KVxuICAgICAgICAgICAgPyAoaXRlbSBhcyBUYWJsZVJvdzxUPilcbiAgICAgICAgICAgIDogbmV3VGFibGVSb3coe1xuICAgICAgICAgICAgICAgICAgdHlwZTogaGFzQ2hpbGRyZW4gfHwgaXRlbVtoYXNDaGlsZHJlbktleV0gPT09IHRydWUgPyBUYWJsZVJvd1R5cGUuVFJFRSA6IFRhYmxlUm93VHlwZS5JVEVNLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogaXRlbVtzZWxlY3RlZEtleV0gPz8gISFzZWxlY3RlZFJvd3NNYXAuZ2V0KGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICByb3cuZXhwYW5kZWQgPVxuICAgICAgICAgICAgZXhwYW5kZWRTdGF0ZUtleSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbSwgZXhwYW5kZWRTdGF0ZUtleSlcbiAgICAgICAgICAgICAgICA/IGl0ZW1bZXhwYW5kZWRTdGF0ZUtleV1cbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICByb3cubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0sIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgcm93cy5wdXNoKHJvdyk7XG5cbiAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNvbnZlcnRUcmVlT2JqZWN0c1RvVGFibGVSb3dzKFxuICAgICAgICAgICAgICAgIGl0ZW1bcmVsYXRpb25LZXldLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGUsXG4gICAgICAgICAgICAgICAgdGFibGVSb3dzLFxuICAgICAgICAgICAgICAgIHJvd0NvbXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25LZXksXG4gICAgICAgICAgICAgICAgaGFzQ2hpbGRyZW5LZXksXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXksXG4gICAgICAgICAgICAgICAgZXhwYW5kZWRTdGF0ZUtleSxcbiAgICAgICAgICAgICAgICByb3dOYXZpZ2F0YWJsZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICAgIGMucGFyZW50ID0gYy5wYXJlbnQgfHwgcm93O1xuICAgICAgICAgICAgICAgIGMubGV2ZWwgPSBjLnBhcmVudC5sZXZlbCArIDE7XG4gICAgICAgICAgICAgICAgYy5oaWRkZW4gPSAhYy5wYXJlbnQuZXhwYW5kZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJvdy5jaGlsZHJlbi5wdXNoKC4uLmNoaWxkcmVuKTtcblxuICAgICAgICAgICAgcm93cy5wdXNoKC4uLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvd3M7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogUnVucyBgcm93Q29tcGFyYXRvcmAgZnVuY3Rpb24gYWdhaW5zdCBjaGVja2VkIHJvd3MgYW5kIGNvbXBhcmVzIHRoZW0gd2l0aCB0aGUgbmV3IGBzb3VyY2VgXG4gKiBJZiBtYXRjaGVkLCBjcmVhdGVzIGFuIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlIHNvdXJjZSBpdGVtIGFuZCBjaGVja2VkIHN0YXR1cyBvZiBjb3JyZXNwb25kaW5nIHJvdy5cbiAqXG4gKiBAcmV0dXJucyBgTWFwYCBvYmplY3Qgd2l0aCB0aGUgYGNoZWNrZWRgIHN0YXR1cyBmb3IgcGFydGljdWxhciBzb3VyY2UgaXRlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0aW9uU3RhdHVzQnlSb3dWYWx1ZTxUPihcbiAgICBzb3VyY2U6IFRbXSxcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWUsXG4gICAgdGFibGVSb3dzOiBUYWJsZVJvd1tdLFxuICAgIHJvd0NvbXBhcmF0b3I6IFJvd0NvbXBhcmF0b3I8VD5cbik6IE1hcDxULCBib29sZWFuIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJvd01hcCA9IG5ldyBNYXA8VCwgYm9vbGVhbiB8IG51bGw+KCk7XG4gICAgaWYgKFxuICAgICAgICAoc2VsZWN0aW9uTW9kZSA9PT0gU2VsZWN0aW9uTW9kZS5TSU5HTEUgfHwgc2VsZWN0aW9uTW9kZSA9PT0gU2VsZWN0aW9uTW9kZS5NVUxUSVBMRSkgJiZcbiAgICAgICAgdHlwZW9mIHJvd0NvbXBhcmF0b3IgPT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgICAgY29uc3QgY2hlY2tlZFJvd3MgPSB0YWJsZVJvd3MuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpO1xuICAgICAgICBjaGVja2VkUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gc291cmNlLmZpbmQoKGUpID0+IHJvd0NvbXBhcmF0b3Iocm93LnZhbHVlLCBlKSk7XG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByb3dNYXAuc2V0KGZvdW5kLCByb3cuY2hlY2tlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm93TWFwO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRSb3dDaGlsZHJlbjxUPihyb3c6IFRhYmxlUm93PFQ+LCBhbGxSb3dzOiBUYWJsZVJvdzxUPltdKTogVGFibGVSb3c8VD5bXSB7XG4gICAgY29uc3Qgcm93c0xlbmd0aCA9IGFsbFJvd3MubGVuZ3RoO1xuXG4gICAgLyoqXG4gICAgICogU2luY2Ugd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGZsYXQgbGlzdFxuICAgICAqIGl0IG1lYW5zIGFsbCBjaGlsZHJlbiBnbyBuZXh0IHJpZ2h0IGFmdGVyIHRoZSBleHBhbmRhYmxlIHJvd1xuICAgICAqIHVudGlsIHRoZSBuZXh0IHJvdyBoYXMgYSBtdXR1YWwgcGFyZW50XG4gICAgICovXG5cbiAgICBsZXQgaW5kZXggPSBhbGxSb3dzLmluZGV4T2Yocm93KTtcbiAgICBjb25zdCBwYXJlbnRzID0gZ2V0Um93UGFyZW50cyhyb3cpO1xuICAgIGNvbnN0IGNoaWxkcmVuOiBUYWJsZVJvdzxUPltdID0gW107XG5cbiAgICB3aGlsZSAoaW5kZXgrKyA8IHJvd3NMZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV4dFJvdyA9IGFsbFJvd3NbaW5kZXhdO1xuICAgICAgICBpZiAoIW5leHRSb3c/LnBhcmVudCB8fCBwYXJlbnRzLmluY2x1ZGVzKG5leHRSb3cucGFyZW50KSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2hpbGRyZW4ucHVzaChuZXh0Um93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGRyZW47XG59XG5cbi8qKlxuICogR2V0IHJvdyBwYXJlbnRzIHBhdGggd2hlcmUgdGhlIGZpcnN0IGlzIHRoZSBkaXJlY3QgcGFyZW50XG4gKiBAcGFyYW0gcm93IFJvdyB3aGljaCBwYXJlbnRzIHdlIG5lZWQgdG8gZmluZFxuICogQHBhcmFtIHVudGlsUGFyZW50IFBhcmVudCB0byBzdG9wIGEgc2VhcmNoIG9uLiBEZWZhdWx0IGlzIFwibnVsbFwiIHRoYXQgbWVhbnMgbG9vayB1cCB1bnRpbCB0aGUgcm9vdFxuICogQHJldHVybnMgcGFyZW50cyBsaXN0IFtkaXJlY3QgcGFyZW50LCAuLi4sIGFuY2VzdG9yXVxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um93UGFyZW50czxUPihyb3c6IFRhYmxlUm93PFQ+LCB1bnRpbFBhcmVudDogVGFibGVSb3c8VD4gfCBudWxsID0gbnVsbCk6IFRhYmxlUm93PFQ+W10ge1xuICAgIHVudGlsUGFyZW50ID0gdW50aWxQYXJlbnQgfHwgbnVsbDsgLy8gdG8gYXZvaWQgXCJ1bmRlZmluZWRcIlxuICAgIGNvbnN0IHBhcmVudHM6IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICBsZXQgcGFyZW50ID0gcm93LnBhcmVudCB8fCBudWxsOyAvLyBlbXB0eSBwYXJlbnQgc2hvdWxkIGJlIGNvZXJjZWQgdG8gXCJudWxsXCIgZG8gbm90IGdldCBpbnRvIGluZmluaXRlIGxvb3BcbiAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudCAhPT0gdW50aWxQYXJlbnQpIHtcbiAgICAgICAgcGFyZW50cy5wdXNoKHBhcmVudCk7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQgfHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHM7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRhU3RyZWFtPFQ+KHNvdXJjZTogRmRwVGFibGVEYXRhU291cmNlPFQ+KTogVGFibGVEYXRhU291cmNlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoaXNEYXRhU291cmNlKHNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZSBhcyBUYWJsZURhdGFTb3VyY2U8VD47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5VGFibGVEYXRhU291cmNlKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZVRhYmxlRGF0YVNvdXJjZShzb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG4vKipcbiAqIEBoaWRkZW5cbiAqIENyZWF0ZXMgYW4gZW1wdHkgY29sdW1uIHNrZWxldG9uIG9iamVjdC5cbiAqIEByZXR1cm5zIENvbHVtbiBtb2RlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTmV3Um93U2tlbGV0b248VD4oZWRpdGFibGVSb3dTa2VsZXRvbjogVCwgY29sdW1uczogVGFibGVDb2x1bW5bXSk6IFQge1xuICAgIGlmIChlZGl0YWJsZVJvd1NrZWxldG9uKSB7XG4gICAgICAgIHJldHVybiBjbG9uZURlZXAoZWRpdGFibGVSb3dTa2VsZXRvbik7XG4gICAgfVxuXG4gICAgbGV0IG5ld1JvdyA9IHt9O1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgIG5ld1JvdyA9IHNldChuZXdSb3csIGNvbHVtbi5rZXksIHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3Um93IGFzIFQ7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHcm91cFJvdyhyb3c6IFRhYmxlUm93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSBUYWJsZVJvd1R5cGUuR1JPVVA7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFRyZWVMaWtlR3JvdXBlZFJvd3MoXG4gICAgZ3JvdXBlZFJvd3M6IFRyZWVMaWtlPFRhYmxlUm93PltdLFxuICAgIGdyb3VwUnVsZXNNYXA6IE1hcDxzdHJpbmcsIENvbGxlY3Rpb25Hcm91cD5cbik6IFRyZWVMaWtlPFRhYmxlUm93PltdIHtcbiAgICBpZiAoIWdyb3VwZWRSb3dzWzBdIHx8ICFpc0dyb3VwUm93KGdyb3VwZWRSb3dzWzBdKSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBlZFJvd3M7XG4gICAgfVxuXG4gICAgY29uc3QgdHJlZUxpa2VSb3dzID0gZ3JvdXBlZFJvd3MgYXMgVHJlZUxpa2U8VGFibGVSb3c8R3JvdXBUYWJsZVJvd1ZhbHVlVHlwZT4+W107XG4gICAgY29uc3QgZmlyc3RSb3cgPSB0cmVlTGlrZVJvd3NbMF07XG5cbiAgICB0cmVlTGlrZVJvd3MuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgaWYgKGdyb3VwLl9jaGlsZHJlbikge1xuICAgICAgICAgICAgZ3JvdXAuX2NoaWxkcmVuID0gc29ydFRyZWVMaWtlR3JvdXBlZFJvd3MoZ3JvdXAuX2NoaWxkcmVuLCBncm91cFJ1bGVzTWFwKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZ3JvdXBSdWxlID0gZ3JvdXBSdWxlc01hcC5nZXQoZmlyc3RSb3cudmFsdWUuZmllbGQpO1xuXG4gICAgaWYgKCFncm91cFJ1bGUgfHwgZ3JvdXBSdWxlLmRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5OT05FKSB7XG4gICAgICAgIHJldHVybiB0cmVlTGlrZVJvd3M7XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gZ3JvdXBSdWxlLmRpcmVjdGlvbjtcbiAgICBjb25zdCBkaXJlY3Rpb25NdWx0aXBsaWVyID0gZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLkFTQyA/IDEgOiBkaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uREVTQyA/IC0xIDogMDtcblxuICAgIHJldHVybiB0cmVlTGlrZVJvd3Muc2xpY2UoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGFWYWx1ZSA9IGEudmFsdWUudmFsdWUgYXMgYW55O1xuICAgICAgICBjb25zdCBiVmFsdWUgPSBiLnZhbHVlLnZhbHVlIGFzIGFueTtcblxuICAgICAgICBjb25zdCBhTnVtYmVyID0gTnVtYmVyLnBhcnNlRmxvYXQoYVZhbHVlKTtcbiAgICAgICAgY29uc3QgYk51bWJlciA9IE51bWJlci5wYXJzZUZsb2F0KGJWYWx1ZSk7XG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKGFOdW1iZXIpICYmICFOdW1iZXIuaXNOYU4oYk51bWJlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAoYU51bWJlciAtIGJOdW1iZXIpICogZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoYVZhbHVlID4gYlZhbHVlID8gMSA6IC0xKSAqIGRpcmVjdGlvbk11bHRpcGxpZXI7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRyZWVMaWtlVG9GbGF0TGlzdDxLPih0cmVlTGlrZUxpc3Q6IFRyZWVMaWtlPEs+W10pOiBLW10ge1xuICAgIGxldCBmbGF0TGlzdDogS1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdHJlZUxpa2VMaXN0KSB7XG4gICAgICAgIGZsYXRMaXN0LnB1c2goaXRlbSk7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5fY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBmbGF0TGlzdCA9IGZsYXRMaXN0LmNvbmNhdChjb252ZXJ0VHJlZUxpa2VUb0ZsYXRMaXN0KGl0ZW0uX2NoaWxkcmVuKSk7XG4gICAgICAgICAgICBkZWxldGUgaXRlbS5fY2hpbGRyZW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdExpc3Q7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogR3JvdXAgdGFibGUgcm93cyBhbmQgcmV0dXJuIHRyZWUgbGlrZSByb3dzIGxpc3QuXG4gKiBJdCdzIGludGVuZGVkIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseS5cbiAqIEBwYXJhbSBydWxlcyBncm91cCBydWxlcyB0byBncm91cCBieVxuICogQHBhcmFtIHJvd3Mgc291cmNlIHRhYmxlIHJvd3NcbiAqIEBwYXJhbSBwYXJlbnQgcm93IHBhcmVudFxuICogQHBhcmFtIGxldmVsIGxldmVsIG9mIG5lc3RpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyb3VwZWRUYWJsZVJvd3NUcmVlKFxuICAgIHJ1bGVzOiBDb2xsZWN0aW9uR3JvdXBbXSxcbiAgICByb3dzOiBUYWJsZVJvd1tdLFxuICAgIHBhcmVudDogVGFibGVSb3cgfCBudWxsID0gbnVsbCxcbiAgICBsZXZlbCA9IDBcbik6IFRyZWVMaWtlPFRhYmxlUm93PltdIHtcbiAgICBydWxlcyA9IFsuLi5ydWxlc107XG5cbiAgICBpZiAoIXJ1bGVzLmxlbmd0aCkge1xuICAgICAgICAvLyBubyBydWxlcyBtZWFuIHRoYXQgaXQncyB0aGUgbGV2ZWwgb2Ygc291cmNlIGl0ZW1zXG4gICAgICAgIHJldHVybiByb3dzLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICByb3cucGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgICAgcm93LmxldmVsID0gbGV2ZWw7XG4gICAgICAgICAgICByb3cuaGlkZGVuID0gISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZDtcbiAgICAgICAgICAgIHJldHVybiByb3c7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJldHJpZXZlIGZpcnN0IGdyb3VwIHJ1bGVcbiAgICBjb25zdCBydWxlID0gcnVsZXMuc2hpZnQoKSE7XG5cbiAgICAvLyBCdWlsZCBtYXAgb2YgdW5pcXVlIHZhbHVlcyBmb3IgYSBnaXZlbiBncm91cCBydWxlXG4gICAgY29uc3QgdmFsdWVzSGFzaCA9IHJvd3NcbiAgICAgICAgLmZpbHRlcigocikgPT4gci5zdGF0ZSAhPT0gJ2VkaXRhYmxlJylcbiAgICAgICAgLnJlZHVjZSgoaGFzaCwgcm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gZ2V0KHJvdy52YWx1ZSwgcnVsZS5maWVsZCk7XG5cbiAgICAgICAgICAgIGlmICghaGFzaC5oYXMobW9kZWxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBoYXNoLnNldChtb2RlbFZhbHVlLCBbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhhc2guZ2V0KG1vZGVsVmFsdWUpPy5wdXNoKHJvdyk7XG5cbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICB9LCBuZXcgTWFwPHVua25vd24sIFRhYmxlUm93W10+KCkpO1xuXG4gICAgLy8gQnVpbGQgdGFibGUgcm93cyB0cmVlXG4gICAgbGV0IGdyb3VwZWRUYWJsZVJvd3M6IFRyZWVMaWtlPFRhYmxlUm93PltdID0gW107XG5cbiAgICBpZiAocm93cy5zb21lKChyKSA9PiByLnN0YXRlID09PSAnZWRpdGFibGUnKSkge1xuICAgICAgICBncm91cGVkVGFibGVSb3dzID0gcm93c1xuICAgICAgICAgICAgLmZpbHRlcigocikgPT4gci5zdGF0ZSA9PT0gJ2VkaXRhYmxlJylcbiAgICAgICAgICAgIC5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIHJvdy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgcm93LmxldmVsID0gLTE7XG4gICAgICAgICAgICAgICAgcm93LmhpZGRlbiA9ICEhcGFyZW50ICYmICFwYXJlbnQuZXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3ZhbHVlLCB2YWx1ZXNdIG9mIEFycmF5LmZyb20odmFsdWVzSGFzaCkpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRSb3dzID0gcm93cy5maWx0ZXIoKF9pdGVtKSA9PiB2YWx1ZXMuaW5jbHVkZXMoX2l0ZW0pKTtcblxuICAgICAgICBpZiAoZmlsdGVyZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cFRhYmxlUm93OiBUcmVlTGlrZTxUYWJsZVJvdzxHcm91cFRhYmxlUm93VmFsdWVUeXBlPj4gPSBuZXdUYWJsZVJvdzxHcm91cFRhYmxlUm93VmFsdWVUeXBlPih7XG4gICAgICAgICAgICB0eXBlOiBUYWJsZVJvd1R5cGUuR1JPVVAsXG4gICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgICAgdmFsdWU6IHsgZmllbGQ6IHJ1bGUuZmllbGQsIHZhbHVlLCBjb3VudDogMCB9LFxuICAgICAgICAgICAgcGFyZW50LFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gICAgICAgICAgICBoaWRkZW46ICEhcGFyZW50ICYmICFwYXJlbnQuZXhwYW5kZWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRzIGdyb3VwJ3MgY2hpbGRyZW4gcm93c1xuICAgICAgICBncm91cFRhYmxlUm93Ll9jaGlsZHJlbiA9IGNyZWF0ZUdyb3VwZWRUYWJsZVJvd3NUcmVlKHJ1bGVzLCBmaWx0ZXJlZFJvd3MsIGdyb3VwVGFibGVSb3csIGxldmVsICsgMSk7XG5cbiAgICAgICAgZ3JvdXBUYWJsZVJvdy52YWx1ZS5jb3VudCA9IGdyb3VwVGFibGVSb3cuX2NoaWxkcmVuPy5sZW5ndGg7XG5cbiAgICAgICAgZ3JvdXBlZFRhYmxlUm93cy5wdXNoKGdyb3VwVGFibGVSb3cpO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cGVkVGFibGVSb3dzO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRPYmplY3RzVG9UYWJsZVJvd3M8VD4oXG4gICAgc291cmNlOiBUW10sXG4gICAgYWRkZWRJdGVtczogVFtdLFxuICAgIHNlbGVjdGVkS2V5OiBzdHJpbmcsXG4gICAgcm93TmF2aWdhdGFibGU6IGJvb2xlYW4gfCBzdHJpbmcsXG4gICAgc2VsZWN0aW9uTW9kZTogU2VsZWN0aW9uTW9kZVZhbHVlLFxuICAgIHJvd3M6IFRhYmxlUm93W10sXG4gICAgcm93Q29tcGFyYXRvcjogUm93Q29tcGFyYXRvclxuKTogVGFibGVSb3c8VD5bXSB7XG4gICAgY29uc3Qgcm93SXRlbSA9IHNvdXJjZVswXSBhcyBhbnk7XG5cbiAgICBpZiAoaXNUYWJsZVJvdyhyb3dJdGVtKSkge1xuICAgICAgICByZXR1cm4gc291cmNlIGFzIFRhYmxlUm93W107XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzTWFwID0gZ2V0U2VsZWN0aW9uU3RhdHVzQnlSb3dWYWx1ZShzb3VyY2UsIHNlbGVjdGlvbk1vZGUsIHJvd3MsIHJvd0NvbXBhcmF0b3IpO1xuICAgIHJldHVybiBzb3VyY2UubWFwKChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTmV3SXRlbSA9IGFkZGVkSXRlbXMuaW5jbHVkZXMoaXRlbSk7XG4gICAgICAgIGNvbnN0IHJvdyA9IG5ld1RhYmxlUm93KHtcbiAgICAgICAgICAgIHR5cGU6IFRhYmxlUm93VHlwZS5JVEVNLFxuICAgICAgICAgICAgY2hlY2tlZDogaXRlbVtzZWxlY3RlZEtleV0gPz8gISFzZWxlY3RlZFJvd3NNYXAuZ2V0KGl0ZW0pLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICB9KTtcbiAgICAgICAgcm93Lm5hdmlnYXRhYmxlID0gaXNSb3dOYXZpZ2F0YWJsZShpdGVtLCByb3dOYXZpZ2F0YWJsZSk7XG4gICAgICAgIHJvdy5zdGF0ZSA9IGlzTmV3SXRlbSA/ICdlZGl0YWJsZScgOiAncmVhZG9ubHknO1xuICAgICAgICByZXR1cm4gcm93O1xuICAgIH0pO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJlZVJvd0ZpcnN0Q2VsbChjZWxsSW5kZXg6IG51bWJlciwgcm93OiBUYWJsZVJvdywgZXZlbnQ/OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoY2VsbEluZGV4ID09PSAwICYmIGlzVHJlZVJvdyhyb3cpKSB8fCAoISFldmVudCAmJiAhcm93LmlzVHJlZSk7XG59XG4iXX0=
|
|
@@ -2438,7 +2438,7 @@ class TextAreaComponent extends BaseInput {
|
|
|
2438
2438
|
useExisting: TextAreaComponent,
|
|
2439
2439
|
multi: true
|
|
2440
2440
|
}
|
|
2441
|
-
], viewQueries: [{ propertyName: "_textareaCounter", first: true, predicate: ["counter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<textarea\n #inputElementRef\n fd-form-control\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"id + '-counter'\"\n [attr.aria-required]=\"required\"\n [attr.placeholder]=\"placeholder\"\n [
|
|
2441
|
+
], viewQueries: [{ propertyName: "_textareaCounter", first: true, predicate: ["counter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<textarea\n #inputElementRef\n fd-form-control\n [disabled]=\"disabled\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"id + '-counter'\"\n [attr.aria-required]=\"required\"\n [attr.placeholder]=\"placeholder\"\n [attr.rows]=\"growing ? 2 : height ? 2 : growingMaxLines\"\n [attr.cols]=\"cols\"\n [attr.wrap]=\"wrapType\"\n [attr.maxlength]=\"!showExceededText ? maxLength : null\"\n [attr.readonly]=\"readonly ? true : null\"\n [(ngModel)]=\"value\"\n [state]=\"getUpdatedState()\"\n (paste)=\"handlePasteInteraction()\"\n (blur)=\"_onFocusChanged(false)\"\n (focus)=\"_onFocusChanged(true)\"\n></textarea>\n\n<!-- ICU recommends full text in format -->\n<div\n class=\"fd-textarea-counter\"\n *ngIf=\"showExceededText\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n [attr.id]=\"id + '-counter'\"\n #counter\n>\n <!-- render spaces instead of the actual value while translation string is loading in order to avoid content jumps -->\n <ng-container *ngIf=\"counterExcessOrRemaining === 'excess'; else charactersRemaining\">\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersOverTheLimitSingular'\n : 'platformTextarea.counterMessageCharactersOverTheLimitPlural'\n ) | fdTranslate : { count: exceededCharCount } : ' '\n \"\n ></span>\n </ng-container>\n <ng-template #charactersRemaining>\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersRemainingSingular'\n : 'platformTextarea.counterMessageCharactersRemainingPlural'\n ) | fdTranslate : { count: exceededCharCount } : ' '\n \"\n ></span>\n </ng-template>\n</div>\n", styles: [".fd-textarea-counter{display:inline-block;width:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i4.TextareaFormControlDirective, selector: "textarea[fd-form-control]" }, { kind: "pipe", type: i5$1.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2442
2442
|
}
|
|
2443
2443
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
2444
2444
|
type: Component,
|
|
@@ -2448,7 +2448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
2448
2448
|
useExisting: TextAreaComponent,
|
|
2449
2449
|
multi: true
|
|
2450
2450
|
}
|
|
2451
|
-
], template: "<textarea\n #inputElementRef\n fd-form-control\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"id + '-counter'\"\n [attr.aria-required]=\"required\"\n [attr.placeholder]=\"placeholder\"\n [
|
|
2451
|
+
], template: "<textarea\n #inputElementRef\n fd-form-control\n [disabled]=\"disabled\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-describedby]=\"id + '-counter'\"\n [attr.aria-required]=\"required\"\n [attr.placeholder]=\"placeholder\"\n [attr.rows]=\"growing ? 2 : height ? 2 : growingMaxLines\"\n [attr.cols]=\"cols\"\n [attr.wrap]=\"wrapType\"\n [attr.maxlength]=\"!showExceededText ? maxLength : null\"\n [attr.readonly]=\"readonly ? true : null\"\n [(ngModel)]=\"value\"\n [state]=\"getUpdatedState()\"\n (paste)=\"handlePasteInteraction()\"\n (blur)=\"_onFocusChanged(false)\"\n (focus)=\"_onFocusChanged(true)\"\n></textarea>\n\n<!-- ICU recommends full text in format -->\n<div\n class=\"fd-textarea-counter\"\n *ngIf=\"showExceededText\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n [attr.id]=\"id + '-counter'\"\n #counter\n>\n <!-- render spaces instead of the actual value while translation string is loading in order to avoid content jumps -->\n <ng-container *ngIf=\"counterExcessOrRemaining === 'excess'; else charactersRemaining\">\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersOverTheLimitSingular'\n : 'platformTextarea.counterMessageCharactersOverTheLimitPlural'\n ) | fdTranslate : { count: exceededCharCount } : ' '\n \"\n ></span>\n </ng-container>\n <ng-template #charactersRemaining>\n <span\n [innerHtml]=\"\n (exceededCharCount === 1\n ? 'platformTextarea.counterMessageCharactersRemainingSingular'\n : 'platformTextarea.counterMessageCharactersRemainingPlural'\n ) | fdTranslate : { count: exceededCharCount } : ' '\n \"\n ></span>\n </ng-template>\n</div>\n", styles: [".fd-textarea-counter{display:inline-block;width:100%}\n"] }]
|
|
2452
2452
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$1.NgControl, decorators: [{
|
|
2453
2453
|
type: Optional
|
|
2454
2454
|
}, {
|
|
@@ -3526,11 +3526,11 @@ class SwitchComponent extends BaseInput {
|
|
|
3526
3526
|
this.switchChange.emit(event);
|
|
3527
3527
|
}
|
|
3528
3528
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SwitchComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$1.NgControl, optional: true, self: true }, { token: i1$1.ControlContainer, optional: true, skipSelf: true }, { token: i1$1.NgForm, optional: true, skipSelf: true }, { token: FD_FORM_FIELD, host: true, optional: true, skipSelf: true }, { token: FD_FORM_FIELD_CONTROL, host: true, optional: true, skipSelf: true }, { token: SwitchConfig }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3529
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SwitchComponent, selector: "fdp-switch", inputs: { ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", semantic: "semantic" }, outputs: { switchChange: "switchChange" }, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel\"\n [
|
|
3529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SwitchComponent, selector: "fdp-switch", inputs: { ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", semantic: "semantic" }, outputs: { switchChange: "switchChange" }, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledby\"\n [checked]=\"switchCurrentValue\"\n (checkedChange)=\"onValueChange($event)\"\n></fd-switch>\n", dependencies: [{ kind: "component", type: i3$4.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "disabled", "id", "name", "required", "checked", "semantic", "ariaLabel", "ariaLabelledby", "ariaLabelledBy", "semanticAcceptLabel", "semanticDeclineLabel"], outputs: ["checkedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3530
3530
|
}
|
|
3531
3531
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SwitchComponent, decorators: [{
|
|
3532
3532
|
type: Component,
|
|
3533
|
-
args: [{ selector: 'fdp-switch', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], template: "<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel\"\n [
|
|
3533
|
+
args: [{ selector: 'fdp-switch', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], template: "<fd-switch\n [id]=\"id\"\n [required]=\"required\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [semantic]=\"semantic\"\n [ariaLabel]=\"ariaLabel\"\n [ariaLabelledBy]=\"ariaLabelledby\"\n [checked]=\"switchCurrentValue\"\n (checkedChange)=\"onValueChange($event)\"\n></fd-switch>\n" }]
|
|
3534
3534
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$1.NgControl, decorators: [{
|
|
3535
3535
|
type: Optional
|
|
3536
3536
|
}, {
|