Socket
Socket
Sign inDemoInstall

nukak

Package Overview
Dependencies
Maintainers
1
Versions
80
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nukak - npm Package Compare versions

Comparing version 0.2.30 to 0.2.31

8

dialect/abstractSqlDialect.d.ts

@@ -8,3 +8,3 @@ import { QueryFilter, Scalar, QueryFilterFieldOperatorMap, QuerySort, QueryPager, FieldKey, QueryProject, Type, QueryOptions, QueryDialect, QueryFilterOptions, QueryComparisonOptions, QueryFilterMap, QueryProjectOptions, QueryRaw, QueryProjectOperation, QuerySearch, QueryCriteria } from '../type/index.js';

criteria<E, P extends QueryProject<E>>(entity: Type<E>, qm: QueryCriteria<E>, project: P, opts?: QueryOptions): string;
projectFields<E, P extends QueryProject<E>>(entity: Type<E>, project: P, opts: QueryProjectOptions): string;
projectFields<E, P extends QueryProject<E>>(entity: Type<E>, project: P, opts?: QueryProjectOptions): string;
projectOperation<E>(operation: QueryProjectOperation<E>, alias: string): QueryRaw;

@@ -18,8 +18,8 @@ projectRelations<E>(entity: Type<E>, project?: QueryProject<E>, { prefix }?: {

select<E>(entity: Type<E>, project: QueryProject<E>, opts?: QueryOptions): string;
where<E>(entity: Type<E>, filter: QueryFilter<E>, opts: QueryFilterOptions): string;
where<E>(entity: Type<E>, filter?: QueryFilter<E>, opts?: QueryFilterOptions): string;
compare<E, K extends keyof QueryFilterMap<E>>(entity: Type<E>, key: K, val: QueryFilterMap<E>[K], opts?: QueryComparisonOptions): string;
compareFieldOperator<E, K extends keyof QueryFilterFieldOperatorMap<E>>(entity: Type<E>, key: FieldKey<E>, op: K, val: QueryFilterFieldOperatorMap<E>[K], opts?: QueryOptions): string;
getComparisonKey<E>(entity: Type<E>, key: FieldKey<E>, { prefix }: QueryOptions): Scalar;
getComparisonKey<E>(entity: Type<E>, key: FieldKey<E>, { prefix }?: QueryOptions): Scalar;
group<E>(entity: Type<E>, fields: readonly FieldKey<E>[]): string;
sort<E>(entity: Type<E>, sort: QuerySort<E>, { prefix }: QueryOptions): string;
sort<E>(entity: Type<E>, sort: QuerySort<E>, { prefix }?: QueryOptions): string;
pager(opts: QueryPager): string;

@@ -26,0 +26,0 @@ count<E>(entity: Type<E>, qm?: QuerySearch<E>, opts?: QueryOptions): string;

@@ -6,3 +6,3 @@ {

"license": "MIT",
"version": "0.2.30",
"version": "0.2.31",
"type": "module",

@@ -29,6 +29,6 @@ "main": "./index.js",

"reflect-metadata": "^0.1.13",
"tslib": "^2.6.0"
"tslib": "^2.6.1"
},
"devDependencies": {
"@types/node": "^20.4.2",
"@types/node": "^20.4.5",
"@types/sqlstring": "^2.3.0",

@@ -35,0 +35,0 @@ "@types/uuid": "^9.0.2",

@@ -224,2 +224,2 @@ import { getMeta } from '../entity/decorator/index.js';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RRdWVyaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJpZXIvYWJzdHJhY3RRdWVyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE1BQU0sT0FBZ0IsZUFBZTtJQUNuQyxXQUFXLENBQStCLE1BQWUsRUFBRSxFQUFjLEVBQUUsT0FBVztRQUNwRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUErQixNQUFlLEVBQUUsRUFBdUIsRUFBRSxPQUFXO1FBQy9GLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQVFELGdCQUFnQixDQUErQixNQUFlLEVBQUUsRUFBb0IsRUFBRSxPQUFXO1FBQy9GLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUlELEtBQUssQ0FBQyxTQUFTLENBQUksTUFB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RTtZQUN0QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEUsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDcEUsT0FBTztTQUNSO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBSSxNQUFlO1FBQzlCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUlELEtBQUssQ0FBQyxXQUFXLENBQUksUUFBcUQ7UUFDeEUsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQixPQUFPLEdBQUcsQ0FBQztTQUNaO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxDQUFDO1NBQ1g7SUFDSCxDQUFDO0NBU0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIElkVmFsdWUsXG4gIE1lcmdlLFxuICBRdWVyaWVyLFxuICBRdWVyeSxcbiAgUXVlcnlDcml0ZXJpYSxcbiAgUXVlcnlPbmVDcml0ZXJpYSxcbiAgUXVlcnlPcHRpb25zLFxuICBRdWVyeVByb2plY3QsXG4gIFF1ZXJ5U2VhcmNoLFxuICBSZWxhdGlvbktleSxcbiAgUmVsYXRpb25WYWx1ZSxcbiAgUmVwb3NpdG9yeSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZXRNZXRhIH0gZnJvbSAnLi4vZW50aXR5L2RlY29yYXRvci9pbmRleC5qcyc7XG5pbXBvcnQgeyBjbG9uZSwgZ2V0S2V5cywgZ2V0UHJvamVjdFJlbGF0aW9uS2V5cywgZ2V0UGVyc2lzdGFibGVSZWxhdGlvbnMgfSBmcm9tICcuLi91dGlsL2luZGV4LmpzJztcbmltcG9ydCB7IEdlbmVyaWNSZXBvc2l0b3J5IH0gZnJvbSAnLi4vcmVwb3NpdG9yeS9pbmRleC5qcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFF1ZXJpZXIgaW1wbGVtZW50cyBRdWVyaWVyIHtcbiAgZmluZE9uZUJ5SWQ8RSwgUCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oZW50aXR5OiBUeXBlPEU+LCBpZDogSWRWYWx1ZTxFPiwgcHJvamVjdD86IFApIHtcbiAgICByZXR1cm4gdGhpcy5maW5kT25lKGVudGl0eSwgeyAkZmlsdGVyOiBpZCB9LCBwcm9qZWN0KTtcbiAgfVxuXG4gIGFzeW5jIGZpbmRPbmU8RSwgUCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlPbmVDcml0ZXJpYTxFPiwgcHJvamVjdD86IFApIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5maW5kTWFueShlbnRpdHksIHsgLi4ucW0sICRsaW1pdDogMSB9LCBwcm9qZWN0KTtcbiAgICByZXR1cm4gcm93c1swXTtcbiAgfVxuXG4gIGFic3RyYWN0IGZpbmRNYW55PEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KFxuICAgIGVudGl0eTogVHlwZTxFPixcbiAgICBxbTogUXVlcnlDcml0ZXJpYTxFPixcbiAgICBwcm9qZWN0PzogUFxuICApOiBQcm9taXNlPE1lcmdlPEUsIFA+W10+O1xuXG4gIGZpbmRNYW55QW5kQ291bnQ8RSwgUCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlDcml0ZXJpYTxFPiwgcHJvamVjdD86IFApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3RoaXMuZmluZE1hbnkoZW50aXR5LCBxbSwgcHJvamVjdCksIHRoaXMuY291bnQoZW50aXR5LCBxbSldKTtcbiAgfVxuXG4gIGFic3RyYWN0IGNvdW50PEU+KGVudGl0eTogVHlwZTxFPiwgcW0/OiBRdWVyeVNlYXJjaDxFPik6IFByb21pc2U8bnVtYmVyPjtcblxuICBhc3luYyBpbnNlcnRPbmU8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFKSB7XG4gICAgY29uc3QgW2lkXSA9IGF3YWl0IHRoaXMuaW5zZXJ0TWFueShlbnRpdHksIFtwYXlsb2FkXSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgYWJzdHJhY3QgaW5zZXJ0TWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEVbXSk6IFByb21pc2U8SWRWYWx1ZTxFPltdPjtcblxuICB1cGRhdGVPbmVCeUlkPEU+KGVudGl0eTogVHlwZTxFPiwgaWQ6IElkVmFsdWU8RT4sIHBheWxvYWQ6IEUpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVNYW55KGVudGl0eSwgeyAkZmlsdGVyOiBpZCB9LCBwYXlsb2FkKTtcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZU1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgZGVsZXRlT25lQnlJZDxFPihlbnRpdHk6IFR5cGU8RT4sIGlkOiBJZFZhbHVlPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlTWFueShlbnRpdHksIHsgJGZpbHRlcjogaWQgfSwgb3B0cyk7XG4gIH1cblxuICBhYnN0cmFjdCBkZWxldGVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGFzeW5jIHNhdmVPbmU8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFKSB7XG4gICAgY29uc3QgW2lkXSA9IGF3YWl0IHRoaXMuc2F2ZU1hbnkoZW50aXR5LCBbcGF5bG9hZF0pO1xuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIGFzeW5jIHNhdmVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRVtdKSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCBpZHM6IElkVmFsdWU8RT5bXSA9IFtdO1xuICAgIGNvbnN0IHVwZGF0ZXM6IEVbXSA9IFtdO1xuICAgIGNvbnN0IGluc2VydHM6IEVbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBpdCBvZiBwYXlsb2FkKSB7XG4gICAgICBpZiAoaXRbbWV0YS5pZF0pIHtcbiAgICAgICAgaWYgKGdldEtleXMoaXQpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGlkcy5wdXNoKGl0W21ldGEuaWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVzLnB1c2goaXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnNlcnRzLnB1c2goaXQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAuLi5pZHMsXG4gICAgICAuLi4oaW5zZXJ0cy5sZW5ndGggPyBhd2FpdCB0aGlzLmluc2VydE1hbnkoZW50aXR5LCBpbnNlcnRzKSA6IFtdKSxcbiAgICAgIC4uLnVwZGF0ZXMubWFwKGFzeW5jIChpdCkgPT4ge1xuICAgICAgICBjb25zdCB7IFttZXRhLmlkXTogaWQsIC4uLmRhdGEgfSA9IGl0O1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9uZUJ5SWQoZW50aXR5LCBpZCwgZGF0YSBhcyBFKTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgfSksXG4gICAgXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZmluZFRvTWFueVJlbGF0aW9uczxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEVbXSwgcHJvamVjdDogUXVlcnlQcm9qZWN0PEU+KSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCByZWxhdGlvbnMgPSBnZXRQcm9qZWN0UmVsYXRpb25LZXlzKG1ldGEsIHByb2plY3QpO1xuXG4gICAgZm9yIChjb25zdCByZWxLZXkgb2YgcmVsYXRpb25zKSB7XG4gICAgICBjb25zdCByZWxPcHRzID0gbWV0YS5yZWxhdGlvbnNbcmVsS2V5XTtcbiAgICAgIGNvbnN0IHJlbEVudGl0eSA9IHJlbE9wdHMuZW50aXR5KCk7XG4gICAgICBjb25zdCByZWxQcm9qZWN0ID0gY2xvbmUocHJvamVjdFtyZWxLZXkgYXMgc3RyaW5nXSk7XG4gICAgICBjb25zdCByZWxRdWVyeTogUXVlcnk8dW5rbm93bj4gPVxuICAgICAgICByZWxQcm9qZWN0ID09PSB0cnVlIHx8IHJlbFByb2plY3QgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8ge31cbiAgICAgICAgICA6IEFycmF5LmlzQXJyYXkocmVsUHJvamVjdClcbiAgICAgICAgICA/IHsgJHByb2plY3Q6IHJlbFByb2plY3QgfVxuICAgICAgICAgIDogcmVsUHJvamVjdDtcbiAgICAgIGNvbnN0IGlkcyA9IHBheWxvYWQubWFwKChpdCkgPT4gaXRbbWV0YS5pZF0pO1xuXG4gICAgICBpZiAocmVsT3B0cy50aHJvdWdoKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsRmllbGQgPSByZWxPcHRzLnJlZmVyZW5jZXNbMF0ubG9jYWw7XG4gICAgICAgIGNvbnN0IHRocm91Z2hFbnRpdHkgPSByZWxPcHRzLnRocm91Z2goKTtcbiAgICAgICAgY29uc3QgdGhyb3VnaE1ldGEgPSBnZXRNZXRhKHRocm91Z2hFbnRpdHkpO1xuICAgICAgICBjb25zdCB0YXJnZXRSZWxLZXkgPSBPYmplY3Qua2V5cyh0aHJvdWdoTWV0YS5yZWxhdGlvbnMpLmZpbmQoKGtleSkgPT5cbiAgICAgICAgICB0aHJvdWdoTWV0YS5yZWxhdGlvbnNba2V5XS5yZWZlcmVuY2VzLnNvbWUoKHsgbG9jYWwgfSkgPT4gbG9jYWwgPT09IHJlbE9wdHMucmVmZXJlbmNlc1sxXS5sb2NhbClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdGhyb3VnaEZvdW5kcyA9IGF3YWl0IHRoaXMuZmluZE1hbnkoXG4gICAgICAgICAgdGhyb3VnaEVudGl0eSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAkZmlsdGVyOiB7XG4gICAgICAgICAgICAgIFtsb2NhbEZpZWxkXTogaWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFtsb2NhbEZpZWxkXTogdHJ1ZSxcbiAgICAgICAgICAgIFt0YXJnZXRSZWxLZXldOiB7XG4gICAgICAgICAgICAgIC4uLnJlbFF1ZXJ5LFxuICAgICAgICAgICAgICAkcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZm91bmRzID0gdGhyb3VnaEZvdW5kcy5tYXAoKGl0KSA9PiAoeyAuLi5pdFt0YXJnZXRSZWxLZXldLCBbbG9jYWxGaWVsZF06IGl0W2xvY2FsRmllbGRdIH0pKTtcbiAgICAgICAgdGhpcy5wdXRDaGlsZHJlbkluUGFyZW50cyhwYXlsb2FkLCBmb3VuZHMsIG1ldGEuaWQsIGxvY2FsRmllbGQsIHJlbEtleSk7XG4gICAgICB9IGVsc2UgaWYgKHJlbE9wdHMuY2FyZGluYWxpdHkgPT09ICcxbScpIHtcbiAgICAgICAgY29uc3QgZm9yZWlnbkZpZWxkID0gcmVsT3B0cy5yZWZlcmVuY2VzWzBdLmZvcmVpZ247XG4gICAgICAgIGlmIChyZWxRdWVyeS4kcHJvamVjdCkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbFF1ZXJ5LiRwcm9qZWN0KSkge1xuICAgICAgICAgICAgaWYgKCFyZWxRdWVyeS4kcHJvamVjdC5pbmNsdWRlcyhmb3JlaWduRmllbGQpKSB7XG4gICAgICAgICAgICAgIHJlbFF1ZXJ5LiRwcm9qZWN0LnB1c2goZm9yZWlnbkZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFyZWxRdWVyeS4kcHJvamVjdFtmb3JlaWduRmllbGRdKSB7XG4gICAgICAgICAgICByZWxRdWVyeS4kcHJvamVjdFtmb3JlaWduRmllbGRdID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVsUXVlcnkuJGZpbHRlciA9IHsgW2ZvcmVpZ25GaWVsZF06IGlkcyB9O1xuICAgICAgICBjb25zdCB7ICRwcm9qZWN0OiByZWxQcm9qZWN0LCAuLi5yZWxRbSB9ID0gcmVsUXVlcnk7XG4gICAgICAgIGNvbnN0IGZvdW5kcyA9IGF3YWl0IHRoaXMuZmluZE1hbnkocmVsRW50aXR5LCByZWxRbSwgcmVsUHJvamVjdCk7XG4gICAgICAgIHRoaXMucHV0Q2hpbGRyZW5JblBhcmVudHMocGF5bG9hZCwgZm91bmRzLCBtZXRhLmlkLCBmb3JlaWduRmllbGQsIHJlbEtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHB1dENoaWxkcmVuSW5QYXJlbnRzPEU+KFxuICAgIHBhcmVudHM6IEVbXSxcbiAgICBjaGlsZHJlbjogRVtdLFxuICAgIHBhcmVudElkS2V5OiBzdHJpbmcsXG4gICAgcmVmZXJlbmNlS2V5OiBzdHJpbmcsXG4gICAgcmVsS2V5OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW5CeVBhcmVudE1hcCA9IGNoaWxkcmVuLnJlZHVjZSgoYWNjLCBjaGlsZCkgPT4ge1xuICAgICAgY29uc3QgcGFyZW5JZCA9IGNoaWxkW3JlZmVyZW5jZUtleV07XG4gICAgICBpZiAoIWFjY1twYXJlbklkXSkge1xuICAgICAgICBhY2NbcGFyZW5JZF0gPSBbXTtcbiAgICAgIH1cbiAgICAgIGFjY1twYXJlbklkXS5wdXNoKGNoaWxkKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuXG4gICAgZm9yIChjb25zdCBwYXJlbnQgb2YgcGFyZW50cykge1xuICAgICAgY29uc3QgcGFyZW50SWQgPSBwYXJlbnRbcGFyZW50SWRLZXldO1xuICAgICAgcGFyZW50W3JlbEtleV0gPSBjaGlsZHJlbkJ5UGFyZW50TWFwW3BhcmVudElkXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaW5zZXJ0UmVsYXRpb25zPEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRVtdKSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBheWxvYWQubWFwKChpdCkgPT4ge1xuICAgICAgICBjb25zdCByZWxLZXlzID0gZ2V0UGVyc2lzdGFibGVSZWxhdGlvbnMobWV0YSwgaXQsICdwZXJzaXN0Jyk7XG4gICAgICAgIGlmICghcmVsS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJlbEtleXMubWFwKChyZWxLZXkpID0+IHRoaXMuc2F2ZVJlbGF0aW9uKGVudGl0eSwgaXQsIHJlbEtleSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB1cGRhdGVSZWxhdGlvbnM8RT4oZW50aXR5OiBUeXBlPEU+LCBjcml0ZXJpYTogUXVlcnlTZWFyY2g8RT4sIHBheWxvYWQ6IEUpIHtcbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIGNvbnN0IHJlbEtleXMgPSBnZXRQZXJzaXN0YWJsZVJlbGF0aW9ucyhtZXRhLCBwYXlsb2FkLCAncGVyc2lzdCcpO1xuXG4gICAgaWYgKCFyZWxLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kcyA9IGF3YWl0IHRoaXMuZmluZE1hbnkoZW50aXR5LCBjcml0ZXJpYSwgW21ldGEuaWRdKTtcblxuICAgIGNvbnN0IGlkcyA9IGZvdW5kcy5tYXAoKGZvdW5kKSA9PiBmb3VuZFttZXRhLmlkXSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGlkcy5tYXAoKGlkKSA9PlxuICAgICAgICBQcm9taXNlLmFsbChyZWxLZXlzLm1hcCgocmVsS2V5KSA9PiB0aGlzLnNhdmVSZWxhdGlvbihlbnRpdHksIHsgLi4ucGF5bG9hZCwgW21ldGEuaWRdOiBpZCB9LCByZWxLZXksIHRydWUpKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlbGV0ZVJlbGF0aW9uczxFPihlbnRpdHk6IFR5cGU8RT4sIGlkczogSWRWYWx1ZTxFPltdLCBvcHRzPzogUXVlcnlPcHRpb25zKSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCByZWxLZXlzID0gZ2V0UGVyc2lzdGFibGVSZWxhdGlvbnMobWV0YSwgbWV0YS5yZWxhdGlvbnMgYXMgRSwgJ2RlbGV0ZScpO1xuXG4gICAgZm9yIChjb25zdCByZWxLZXkgb2YgcmVsS2V5cykge1xuICAgICAgY29uc3QgcmVsT3B0cyA9IG1ldGEucmVsYXRpb25zW3JlbEtleV07XG4gICAgICBjb25zdCByZWxFbnRpdHkgPSByZWxPcHRzLmVudGl0eSgpO1xuICAgICAgY29uc3QgbG9jYWxGaWVsZCA9IHJlbE9wdHMucmVmZXJlbmNlc1swXS5sb2NhbDtcbiAgICAgIGlmIChyZWxPcHRzLnRocm91Z2gpIHtcbiAgICAgICAgY29uc3QgdGhyb3VnaEVudGl0eSA9IHJlbE9wdHMudGhyb3VnaCgpO1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZU1hbnkodGhyb3VnaEVudGl0eSwgeyAkZmlsdGVyOiB7IFtsb2NhbEZpZWxkXTogaWRzIH0gfSwgb3B0cyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlTWFueShyZWxFbnRpdHksIHsgW2xvY2FsRmllbGRdOiBpZHMgfSwgb3B0cyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNhdmVSZWxhdGlvbjxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEUsIHJlbEtleTogUmVsYXRpb25LZXk8RT4sIGlzVXBkYXRlPzogYm9vbGVhbikge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgaWQgPSBwYXlsb2FkW21ldGEuaWRdO1xuICAgIGNvbnN0IHsgZW50aXR5OiBlbnRpdHlHZXR0ZXIsIGNhcmRpbmFsaXR5LCByZWZlcmVuY2VzLCB0aHJvdWdoIH0gPSBtZXRhLnJlbGF0aW9uc1tyZWxLZXldO1xuICAgIGNvbnN0IHJlbEVudGl0eSA9IGVudGl0eUdldHRlcigpO1xuICAgIGNvbnN0IHJlbFBheWxvYWQgPSBwYXlsb2FkW3JlbEtleV0gYXMgdW5rbm93biBhcyBSZWxhdGlvblZhbHVlPEU+W107XG5cbiAgICBpZiAoY2FyZGluYWxpdHkgPT09ICcxbScgfHwgY2FyZGluYWxpdHkgPT09ICdtbScpIHtcbiAgICAgIGlmICh0aHJvdWdoKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsRmllbGQgPSByZWZlcmVuY2VzWzBdLmxvY2FsO1xuXG4gICAgICAgIGNvbnN0IHRocm91Z2hFbnRpdHkgPSB0aHJvdWdoKCk7XG4gICAgICAgIGlmIChpc1VwZGF0ZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlTWFueSh0aHJvdWdoRW50aXR5LCB7ICRmaWx0ZXI6IHsgW2xvY2FsRmllbGRdOiBpZCB9IH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWxQYXlsb2FkKSB7XG4gICAgICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBhd2FpdCB0aGlzLnNhdmVNYW55KHJlbEVudGl0eSwgcmVsUGF5bG9hZCk7XG4gICAgICAgICAgY29uc3QgdGhyb3VnaEJvZGllcyA9IHNhdmVkSWRzLm1hcCgocmVsSWQpID0+ICh7XG4gICAgICAgICAgICBbcmVmZXJlbmNlc1swXS5sb2NhbF06IGlkLFxuICAgICAgICAgICAgW3JlZmVyZW5jZXNbMV0ubG9jYWxdOiByZWxJZCxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnNlcnRNYW55KHRocm91Z2hFbnRpdHksIHRocm91Z2hCb2RpZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvcmVpZ25GaWVsZCA9IHJlZmVyZW5jZXNbMF0uZm9yZWlnbjtcbiAgICAgIGlmIChpc1VwZGF0ZSkge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZU1hbnkocmVsRW50aXR5LCB7ICRmaWx0ZXI6IHsgW2ZvcmVpZ25GaWVsZF06IGlkIH0gfSk7XG4gICAgICB9XG4gICAgICBpZiAocmVsUGF5bG9hZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0IG9mIHJlbFBheWxvYWQpIHtcbiAgICAgICAgICBpdFtmb3JlaWduRmllbGRdID0gaWQ7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlTWFueShyZWxFbnRpdHksIHJlbFBheWxvYWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjYXJkaW5hbGl0eSA9PT0gJzExJykge1xuICAgICAgY29uc3QgZm9yZWlnbkZpZWxkID0gcmVmZXJlbmNlc1swXS5mb3JlaWduO1xuICAgICAgaWYgKHJlbFBheWxvYWQgPT09IG51bGwpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVNYW55KHJlbEVudGl0eSwgeyAkZmlsdGVyOiB7IFtmb3JlaWduRmllbGRdOiBpZCB9IH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnNhdmVPbmUocmVsRW50aXR5LCB7IC4uLnJlbFBheWxvYWQsIFtmb3JlaWduRmllbGRdOiBpZCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2FyZGluYWxpdHkgPT09ICdtMScgJiYgcmVsUGF5bG9hZCkge1xuICAgICAgY29uc3QgbG9jYWxGaWVsZCA9IHJlZmVyZW5jZXNbMF0ubG9jYWw7XG4gICAgICBjb25zdCByZWZlcmVuY2VJZCA9IGF3YWl0IHRoaXMuaW5zZXJ0T25lKHJlbEVudGl0eSwgcmVsUGF5bG9hZCk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9uZUJ5SWQoZW50aXR5LCBpZCwgeyBbbG9jYWxGaWVsZF06IHJlZmVyZW5jZUlkIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlcG9zaXRvcnk8RT4oZW50aXR5OiBUeXBlPEU+KTogUmVwb3NpdG9yeTxFPiB7XG4gICAgcmV0dXJuIG5ldyBHZW5lcmljUmVwb3NpdG9yeShlbnRpdHksIHRoaXMpO1xuICB9XG5cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaGFzT3BlblRyYW5zYWN0aW9uOiBib29sZWFuO1xuXG4gIGFzeW5jIHRyYW5zYWN0aW9uPFQ+KGNhbGxiYWNrOiAocXVlcmllcj86IFRoaXNUeXBlPFF1ZXJpZXI+KSA9PiBQcm9taXNlPFQ+KSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgY2FsbGJhY2sodGhpcyk7XG4gICAgICBhd2FpdCB0aGlzLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKCk7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgYWJzdHJhY3QgYmVnaW5UcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGFic3RyYWN0IGNvbW1pdFRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgYWJzdHJhY3Qgcm9sbGJhY2tUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGFic3RyYWN0IHJlbGVhc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RRdWVyaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJpZXIvYWJzdHJhY3RRdWVyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE1BQU0sT0FBZ0IsZUFBZTtJQUNuQyxXQUFXLENBQStCLE1BQWUsRUFBRSxFQUFjLEVBQUUsT0FBVztRQUNwRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUErQixNQUFlLEVBQUUsRUFBdUIsRUFBRSxPQUFXO1FBQy9GLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQVFELGdCQUFnQixDQUErQixNQUFlLEVBQUUsRUFBb0IsRUFBRSxPQUFXO1FBQy9GLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUlELEtBQUssQ0FBQyxTQUFTLENBQUksTUFB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RTtZQUN0QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEUsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDcEUsT0FBTztTQUNSO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBSSxNQUFlO1FBQzlCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUlELEtBQUssQ0FBQyxXQUFXLENBQUksUUFBcUQ7UUFDeEUsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQixPQUFPLEdBQUcsQ0FBQztTQUNaO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxDQUFDO1NBQ1g7SUFDSCxDQUFDO0NBU0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIElkVmFsdWUsXG4gIE1lcmdlLFxuICBRdWVyaWVyLFxuICBRdWVyeSxcbiAgUXVlcnlDcml0ZXJpYSxcbiAgUXVlcnlPbmVDcml0ZXJpYSxcbiAgUXVlcnlPcHRpb25zLFxuICBRdWVyeVByb2plY3QsXG4gIFF1ZXJ5U2VhcmNoLFxuICBSZWxhdGlvbktleSxcbiAgUmVsYXRpb25WYWx1ZSxcbiAgUmVwb3NpdG9yeSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZXRNZXRhIH0gZnJvbSAnLi4vZW50aXR5L2RlY29yYXRvci9pbmRleC5qcyc7XG5pbXBvcnQgeyBjbG9uZSwgZ2V0S2V5cywgZ2V0UHJvamVjdFJlbGF0aW9uS2V5cywgZ2V0UGVyc2lzdGFibGVSZWxhdGlvbnMgfSBmcm9tICcuLi91dGlsL2luZGV4LmpzJztcbmltcG9ydCB7IEdlbmVyaWNSZXBvc2l0b3J5IH0gZnJvbSAnLi4vcmVwb3NpdG9yeS9pbmRleC5qcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFF1ZXJpZXIgaW1wbGVtZW50cyBRdWVyaWVyIHtcbiAgZmluZE9uZUJ5SWQ8RSwgUCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oZW50aXR5OiBUeXBlPEU+LCBpZDogSWRWYWx1ZTxFPiwgcHJvamVjdD86IFApIHtcbiAgICByZXR1cm4gdGhpcy5maW5kT25lKGVudGl0eSwgeyAkZmlsdGVyOiBpZCB9LCBwcm9qZWN0KTtcbiAgfVxuXG4gIGFzeW5jIGZpbmRPbmU8RSwgUCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlPbmVDcml0ZXJpYTxFPiwgcHJvamVjdD86IFApIHtcbiAgICBjb25zdCByb3dzID0gYXdhaXQgdGhpcy5maW5kTWFueShlbnRpdHksIHsgLi4ucW0sICRsaW1pdDogMSB9LCBwcm9qZWN0KTtcbiAgICByZXR1cm4gcm93c1swXTtcbiAgfVxuXG4gIGFic3RyYWN0IGZpbmRNYW55PEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KFxuICAgIGVudGl0eTogVHlwZTxFPixcbiAgICBxbTogUXVlcnlDcml0ZXJpYTxFPixcbiAgICBwcm9qZWN0PzogUCxcbiAgKTogUHJvbWlzZTxNZXJnZTxFLCBQPltdPjtcblxuICBmaW5kTWFueUFuZENvdW50PEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHByb2plY3Q/OiBQKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFt0aGlzLmZpbmRNYW55KGVudGl0eSwgcW0sIHByb2plY3QpLCB0aGlzLmNvdW50KGVudGl0eSwgcW0pXSk7XG4gIH1cblxuICBhYnN0cmFjdCBjb3VudDxFPihlbnRpdHk6IFR5cGU8RT4sIHFtPzogUXVlcnlTZWFyY2g8RT4pOiBQcm9taXNlPG51bWJlcj47XG5cbiAgYXN5bmMgaW5zZXJ0T25lPEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRSkge1xuICAgIGNvbnN0IFtpZF0gPSBhd2FpdCB0aGlzLmluc2VydE1hbnkoZW50aXR5LCBbcGF5bG9hZF0pO1xuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIGFic3RyYWN0IGluc2VydE1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFW10pOiBQcm9taXNlPElkVmFsdWU8RT5bXT47XG5cbiAgdXBkYXRlT25lQnlJZDxFPihlbnRpdHk6IFR5cGU8RT4sIGlkOiBJZFZhbHVlPEU+LCBwYXlsb2FkOiBFKSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlTWFueShlbnRpdHksIHsgJGZpbHRlcjogaWQgfSwgcGF5bG9hZCk7XG4gIH1cblxuICBhYnN0cmFjdCB1cGRhdGVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+LCBwYXlsb2FkOiBFKTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGRlbGV0ZU9uZUJ5SWQ8RT4oZW50aXR5OiBUeXBlPEU+LCBpZDogSWRWYWx1ZTxFPiwgb3B0cz86IFF1ZXJ5T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZU1hbnkoZW50aXR5LCB7ICRmaWx0ZXI6IGlkIH0sIG9wdHMpO1xuICB9XG5cbiAgYWJzdHJhY3QgZGVsZXRlTWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeVNlYXJjaDxFPiwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPjtcblxuICBhc3luYyBzYXZlT25lPEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRSkge1xuICAgIGNvbnN0IFtpZF0gPSBhd2FpdCB0aGlzLnNhdmVNYW55KGVudGl0eSwgW3BheWxvYWRdKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBhc3luYyBzYXZlTWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEVbXSkge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgaWRzOiBJZFZhbHVlPEU+W10gPSBbXTtcbiAgICBjb25zdCB1cGRhdGVzOiBFW10gPSBbXTtcbiAgICBjb25zdCBpbnNlcnRzOiBFW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaXQgb2YgcGF5bG9hZCkge1xuICAgICAgaWYgKGl0W21ldGEuaWRdKSB7XG4gICAgICAgIGlmIChnZXRLZXlzKGl0KS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBpZHMucHVzaChpdFttZXRhLmlkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlcy5wdXNoKGl0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zZXJ0cy5wdXNoKGl0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgLi4uaWRzLFxuICAgICAgLi4uKGluc2VydHMubGVuZ3RoID8gYXdhaXQgdGhpcy5pbnNlcnRNYW55KGVudGl0eSwgaW5zZXJ0cykgOiBbXSksXG4gICAgICAuLi51cGRhdGVzLm1hcChhc3luYyAoaXQpID0+IHtcbiAgICAgICAgY29uc3QgeyBbbWV0YS5pZF06IGlkLCAuLi5kYXRhIH0gPSBpdDtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVPbmVCeUlkKGVudGl0eSwgaWQsIGRhdGEgYXMgRSk7XG4gICAgICAgIHJldHVybiBpZDtcbiAgICAgIH0pLFxuICAgIF0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGZpbmRUb01hbnlSZWxhdGlvbnM8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFW10sIHByb2plY3Q6IFF1ZXJ5UHJvamVjdDxFPikge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgcmVsYXRpb25zID0gZ2V0UHJvamVjdFJlbGF0aW9uS2V5cyhtZXRhLCBwcm9qZWN0KTtcblxuICAgIGZvciAoY29uc3QgcmVsS2V5IG9mIHJlbGF0aW9ucykge1xuICAgICAgY29uc3QgcmVsT3B0cyA9IG1ldGEucmVsYXRpb25zW3JlbEtleV07XG4gICAgICBjb25zdCByZWxFbnRpdHkgPSByZWxPcHRzLmVudGl0eSgpO1xuICAgICAgY29uc3QgcmVsUHJvamVjdCA9IGNsb25lKHByb2plY3RbcmVsS2V5IGFzIHN0cmluZ10pO1xuICAgICAgY29uc3QgcmVsUXVlcnk6IFF1ZXJ5PHVua25vd24+ID1cbiAgICAgICAgcmVsUHJvamVjdCA9PT0gdHJ1ZSB8fCByZWxQcm9qZWN0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHt9XG4gICAgICAgICAgOiBBcnJheS5pc0FycmF5KHJlbFByb2plY3QpXG4gICAgICAgICAgPyB7ICRwcm9qZWN0OiByZWxQcm9qZWN0IH1cbiAgICAgICAgICA6IHJlbFByb2plY3Q7XG4gICAgICBjb25zdCBpZHMgPSBwYXlsb2FkLm1hcCgoaXQpID0+IGl0W21ldGEuaWRdKTtcblxuICAgICAgaWYgKHJlbE9wdHMudGhyb3VnaCkge1xuICAgICAgICBjb25zdCBsb2NhbEZpZWxkID0gcmVsT3B0cy5yZWZlcmVuY2VzWzBdLmxvY2FsO1xuICAgICAgICBjb25zdCB0aHJvdWdoRW50aXR5ID0gcmVsT3B0cy50aHJvdWdoKCk7XG4gICAgICAgIGNvbnN0IHRocm91Z2hNZXRhID0gZ2V0TWV0YSh0aHJvdWdoRW50aXR5KTtcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVsS2V5ID0gT2JqZWN0LmtleXModGhyb3VnaE1ldGEucmVsYXRpb25zKS5maW5kKChrZXkpID0+XG4gICAgICAgICAgdGhyb3VnaE1ldGEucmVsYXRpb25zW2tleV0ucmVmZXJlbmNlcy5zb21lKCh7IGxvY2FsIH0pID0+IGxvY2FsID09PSByZWxPcHRzLnJlZmVyZW5jZXNbMV0ubG9jYWwpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0aHJvdWdoRm91bmRzID0gYXdhaXQgdGhpcy5maW5kTWFueShcbiAgICAgICAgICB0aHJvdWdoRW50aXR5LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgICRmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgW2xvY2FsRmllbGRdOiBpZHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgW2xvY2FsRmllbGRdOiB0cnVlLFxuICAgICAgICAgICAgW3RhcmdldFJlbEtleV06IHtcbiAgICAgICAgICAgICAgLi4ucmVsUXVlcnksXG4gICAgICAgICAgICAgICRyZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZm91bmRzID0gdGhyb3VnaEZvdW5kcy5tYXAoKGl0KSA9PiAoeyAuLi5pdFt0YXJnZXRSZWxLZXldLCBbbG9jYWxGaWVsZF06IGl0W2xvY2FsRmllbGRdIH0pKTtcbiAgICAgICAgdGhpcy5wdXRDaGlsZHJlbkluUGFyZW50cyhwYXlsb2FkLCBmb3VuZHMsIG1ldGEuaWQsIGxvY2FsRmllbGQsIHJlbEtleSk7XG4gICAgICB9IGVsc2UgaWYgKHJlbE9wdHMuY2FyZGluYWxpdHkgPT09ICcxbScpIHtcbiAgICAgICAgY29uc3QgZm9yZWlnbkZpZWxkID0gcmVsT3B0cy5yZWZlcmVuY2VzWzBdLmZvcmVpZ247XG4gICAgICAgIGlmIChyZWxRdWVyeS4kcHJvamVjdCkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbFF1ZXJ5LiRwcm9qZWN0KSkge1xuICAgICAgICAgICAgaWYgKCFyZWxRdWVyeS4kcHJvamVjdC5pbmNsdWRlcyhmb3JlaWduRmllbGQpKSB7XG4gICAgICAgICAgICAgIHJlbFF1ZXJ5LiRwcm9qZWN0LnB1c2goZm9yZWlnbkZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFyZWxRdWVyeS4kcHJvamVjdFtmb3JlaWduRmllbGRdKSB7XG4gICAgICAgICAgICByZWxRdWVyeS4kcHJvamVjdFtmb3JlaWduRmllbGRdID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVsUXVlcnkuJGZpbHRlciA9IHsgW2ZvcmVpZ25GaWVsZF06IGlkcyB9O1xuICAgICAgICBjb25zdCB7ICRwcm9qZWN0OiByZWxQcm9qZWN0LCAuLi5yZWxRbSB9ID0gcmVsUXVlcnk7XG4gICAgICAgIGNvbnN0IGZvdW5kcyA9IGF3YWl0IHRoaXMuZmluZE1hbnkocmVsRW50aXR5LCByZWxRbSwgcmVsUHJvamVjdCk7XG4gICAgICAgIHRoaXMucHV0Q2hpbGRyZW5JblBhcmVudHMocGF5bG9hZCwgZm91bmRzLCBtZXRhLmlkLCBmb3JlaWduRmllbGQsIHJlbEtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHB1dENoaWxkcmVuSW5QYXJlbnRzPEU+KFxuICAgIHBhcmVudHM6IEVbXSxcbiAgICBjaGlsZHJlbjogRVtdLFxuICAgIHBhcmVudElkS2V5OiBzdHJpbmcsXG4gICAgcmVmZXJlbmNlS2V5OiBzdHJpbmcsXG4gICAgcmVsS2V5OiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuQnlQYXJlbnRNYXAgPSBjaGlsZHJlbi5yZWR1Y2UoKGFjYywgY2hpbGQpID0+IHtcbiAgICAgIGNvbnN0IHBhcmVuSWQgPSBjaGlsZFtyZWZlcmVuY2VLZXldO1xuICAgICAgaWYgKCFhY2NbcGFyZW5JZF0pIHtcbiAgICAgICAgYWNjW3BhcmVuSWRdID0gW107XG4gICAgICB9XG4gICAgICBhY2NbcGFyZW5JZF0ucHVzaChjaGlsZCk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIGZvciAoY29uc3QgcGFyZW50IG9mIHBhcmVudHMpIHtcbiAgICAgIGNvbnN0IHBhcmVudElkID0gcGFyZW50W3BhcmVudElkS2V5XTtcbiAgICAgIHBhcmVudFtyZWxLZXldID0gY2hpbGRyZW5CeVBhcmVudE1hcFtwYXJlbnRJZF07XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGluc2VydFJlbGF0aW9uczxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEVbXSkge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwYXlsb2FkLm1hcCgoaXQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsS2V5cyA9IGdldFBlcnNpc3RhYmxlUmVsYXRpb25zKG1ldGEsIGl0LCAncGVyc2lzdCcpO1xuICAgICAgICBpZiAoIXJlbEtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChyZWxLZXlzLm1hcCgocmVsS2V5KSA9PiB0aGlzLnNhdmVSZWxhdGlvbihlbnRpdHksIGl0LCByZWxLZXkpKSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHVwZGF0ZVJlbGF0aW9uczxFPihlbnRpdHk6IFR5cGU8RT4sIGNyaXRlcmlhOiBRdWVyeVNlYXJjaDxFPiwgcGF5bG9hZDogRSkge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgcmVsS2V5cyA9IGdldFBlcnNpc3RhYmxlUmVsYXRpb25zKG1ldGEsIHBheWxvYWQsICdwZXJzaXN0Jyk7XG5cbiAgICBpZiAoIXJlbEtleXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm91bmRzID0gYXdhaXQgdGhpcy5maW5kTWFueShlbnRpdHksIGNyaXRlcmlhLCBbbWV0YS5pZF0pO1xuXG4gICAgY29uc3QgaWRzID0gZm91bmRzLm1hcCgoZm91bmQpID0+IGZvdW5kW21ldGEuaWRdKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgaWRzLm1hcCgoaWQpID0+XG4gICAgICAgIFByb21pc2UuYWxsKHJlbEtleXMubWFwKChyZWxLZXkpID0+IHRoaXMuc2F2ZVJlbGF0aW9uKGVudGl0eSwgeyAuLi5wYXlsb2FkLCBbbWV0YS5pZF06IGlkIH0sIHJlbEtleSwgdHJ1ZSkpKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBkZWxldGVSZWxhdGlvbnM8RT4oZW50aXR5OiBUeXBlPEU+LCBpZHM6IElkVmFsdWU8RT5bXSwgb3B0cz86IFF1ZXJ5T3B0aW9ucykge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgcmVsS2V5cyA9IGdldFBlcnNpc3RhYmxlUmVsYXRpb25zKG1ldGEsIG1ldGEucmVsYXRpb25zIGFzIEUsICdkZWxldGUnKTtcblxuICAgIGZvciAoY29uc3QgcmVsS2V5IG9mIHJlbEtleXMpIHtcbiAgICAgIGNvbnN0IHJlbE9wdHMgPSBtZXRhLnJlbGF0aW9uc1tyZWxLZXldO1xuICAgICAgY29uc3QgcmVsRW50aXR5ID0gcmVsT3B0cy5lbnRpdHkoKTtcbiAgICAgIGNvbnN0IGxvY2FsRmllbGQgPSByZWxPcHRzLnJlZmVyZW5jZXNbMF0ubG9jYWw7XG4gICAgICBpZiAocmVsT3B0cy50aHJvdWdoKSB7XG4gICAgICAgIGNvbnN0IHRocm91Z2hFbnRpdHkgPSByZWxPcHRzLnRocm91Z2goKTtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVNYW55KHRocm91Z2hFbnRpdHksIHsgJGZpbHRlcjogeyBbbG9jYWxGaWVsZF06IGlkcyB9IH0sIG9wdHMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZU1hbnkocmVsRW50aXR5LCB7IFtsb2NhbEZpZWxkXTogaWRzIH0sIG9wdHMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzYXZlUmVsYXRpb248RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFLCByZWxLZXk6IFJlbGF0aW9uS2V5PEU+LCBpc1VwZGF0ZT86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBtZXRhID0gZ2V0TWV0YShlbnRpdHkpO1xuICAgIGNvbnN0IGlkID0gcGF5bG9hZFttZXRhLmlkXTtcbiAgICBjb25zdCB7IGVudGl0eTogZW50aXR5R2V0dGVyLCBjYXJkaW5hbGl0eSwgcmVmZXJlbmNlcywgdGhyb3VnaCB9ID0gbWV0YS5yZWxhdGlvbnNbcmVsS2V5XTtcbiAgICBjb25zdCByZWxFbnRpdHkgPSBlbnRpdHlHZXR0ZXIoKTtcbiAgICBjb25zdCByZWxQYXlsb2FkID0gcGF5bG9hZFtyZWxLZXldIGFzIHVua25vd24gYXMgUmVsYXRpb25WYWx1ZTxFPltdO1xuXG4gICAgaWYgKGNhcmRpbmFsaXR5ID09PSAnMW0nIHx8IGNhcmRpbmFsaXR5ID09PSAnbW0nKSB7XG4gICAgICBpZiAodGhyb3VnaCkge1xuICAgICAgICBjb25zdCBsb2NhbEZpZWxkID0gcmVmZXJlbmNlc1swXS5sb2NhbDtcblxuICAgICAgICBjb25zdCB0aHJvdWdoRW50aXR5ID0gdGhyb3VnaCgpO1xuICAgICAgICBpZiAoaXNVcGRhdGUpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZU1hbnkodGhyb3VnaEVudGl0eSwgeyAkZmlsdGVyOiB7IFtsb2NhbEZpZWxkXTogaWQgfSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVsUGF5bG9hZCkge1xuICAgICAgICAgIGNvbnN0IHNhdmVkSWRzID0gYXdhaXQgdGhpcy5zYXZlTWFueShyZWxFbnRpdHksIHJlbFBheWxvYWQpO1xuICAgICAgICAgIGNvbnN0IHRocm91Z2hCb2RpZXMgPSBzYXZlZElkcy5tYXAoKHJlbElkKSA9PiAoe1xuICAgICAgICAgICAgW3JlZmVyZW5jZXNbMF0ubG9jYWxdOiBpZCxcbiAgICAgICAgICAgIFtyZWZlcmVuY2VzWzFdLmxvY2FsXTogcmVsSWQsXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIGF3YWl0IHRoaXMuaW5zZXJ0TWFueSh0aHJvdWdoRW50aXR5LCB0aHJvdWdoQm9kaWVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBmb3JlaWduRmllbGQgPSByZWZlcmVuY2VzWzBdLmZvcmVpZ247XG4gICAgICBpZiAoaXNVcGRhdGUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVNYW55KHJlbEVudGl0eSwgeyAkZmlsdGVyOiB7IFtmb3JlaWduRmllbGRdOiBpZCB9IH0pO1xuICAgICAgfVxuICAgICAgaWYgKHJlbFBheWxvYWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdCBvZiByZWxQYXlsb2FkKSB7XG4gICAgICAgICAgaXRbZm9yZWlnbkZpZWxkXSA9IGlkO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZU1hbnkocmVsRW50aXR5LCByZWxQYXlsb2FkKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2FyZGluYWxpdHkgPT09ICcxMScpIHtcbiAgICAgIGNvbnN0IGZvcmVpZ25GaWVsZCA9IHJlZmVyZW5jZXNbMF0uZm9yZWlnbjtcbiAgICAgIGlmIChyZWxQYXlsb2FkID09PSBudWxsKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlTWFueShyZWxFbnRpdHksIHsgJGZpbHRlcjogeyBbZm9yZWlnbkZpZWxkXTogaWQgfSB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5zYXZlT25lKHJlbEVudGl0eSwgeyAuLi5yZWxQYXlsb2FkLCBbZm9yZWlnbkZpZWxkXTogaWQgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNhcmRpbmFsaXR5ID09PSAnbTEnICYmIHJlbFBheWxvYWQpIHtcbiAgICAgIGNvbnN0IGxvY2FsRmllbGQgPSByZWZlcmVuY2VzWzBdLmxvY2FsO1xuICAgICAgY29uc3QgcmVmZXJlbmNlSWQgPSBhd2FpdCB0aGlzLmluc2VydE9uZShyZWxFbnRpdHksIHJlbFBheWxvYWQpO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVPbmVCeUlkKGVudGl0eSwgaWQsIHsgW2xvY2FsRmllbGRdOiByZWZlcmVuY2VJZCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBnZXRSZXBvc2l0b3J5PEU+KGVudGl0eTogVHlwZTxFPik6IFJlcG9zaXRvcnk8RT4ge1xuICAgIHJldHVybiBuZXcgR2VuZXJpY1JlcG9zaXRvcnkoZW50aXR5LCB0aGlzKTtcbiAgfVxuXG4gIGFic3RyYWN0IHJlYWRvbmx5IGhhc09wZW5UcmFuc2FjdGlvbjogYm9vbGVhbjtcblxuICBhc3luYyB0cmFuc2FjdGlvbjxUPihjYWxsYmFjazogKHF1ZXJpZXI/OiBUaGlzVHlwZTxRdWVyaWVyPikgPT4gUHJvbWlzZTxUPikge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNhbGxiYWNrKHRoaXMpO1xuICAgICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGF3YWl0IHRoaXMucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIGFic3RyYWN0IGJlZ2luVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPjtcblxuICBhYnN0cmFjdCBjb21taXRUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGFic3RyYWN0IHJvbGxiYWNrVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPjtcblxuICBhYnN0cmFjdCByZWxlYXNlKCk6IFByb21pc2U8dm9pZD47XG59XG4iXX0=

@@ -48,2 +48,2 @@ export class GenericRepository {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpY1JlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3NpdG9yeS9nZW5lcmljUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxNQUFNLE9BQU8saUJBQWlCO0lBQ1A7SUFBMEI7SUFBL0MsWUFBcUIsTUFBZSxFQUFXLE9BQWdCO1FBQTFDLFdBQU0sR0FBTixNQUFNLENBQVM7UUFBVyxZQUFPLEdBQVAsT0FBTyxDQUFTO0lBQUcsQ0FBQztJQUVuRSxXQUFXLENBQTRCLEVBQWMsRUFBRSxPQUFXO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sQ0FBNEIsRUFBdUIsRUFBRSxPQUFXO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFFBQVEsQ0FBNEIsRUFBb0IsRUFBRSxPQUFXO1FBQ25FLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGdCQUFnQixDQUE0QixFQUFvQixFQUFFLE9BQVc7UUFDM0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsRUFBbUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsYUFBYSxDQUFDLEVBQWMsRUFBRSxPQUFVO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFrQixFQUFFLE9BQVU7UUFDdkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxRQUFRLENBQUMsT0FBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFjLEVBQUUsSUFBbUI7UUFDL0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQWtCLEVBQUUsSUFBbUI7UUFDaEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIElkVmFsdWUsXG4gIFF1ZXJpZXIsXG4gIFF1ZXJ5T3B0aW9ucyxcbiAgUmVwb3NpdG9yeSxcbiAgVHlwZSxcbiAgUXVlcnlQcm9qZWN0LFxuICBRdWVyeVNlYXJjaCxcbiAgUXVlcnlDcml0ZXJpYSxcbiAgUXVlcnlPbmVDcml0ZXJpYSxcbn0gZnJvbSAnLi4vdHlwZS9pbmRleC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmljUmVwb3NpdG9yeTxFPiBpbXBsZW1lbnRzIFJlcG9zaXRvcnk8RT4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBlbnRpdHk6IFR5cGU8RT4sIHJlYWRvbmx5IHF1ZXJpZXI6IFF1ZXJpZXIpIHt9XG5cbiAgZmluZE9uZUJ5SWQ8UCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oaWQ6IElkVmFsdWU8RT4sIHByb2plY3Q/OiBQKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci5maW5kT25lQnlJZCh0aGlzLmVudGl0eSwgaWQsIHByb2plY3QpO1xuICB9XG5cbiAgZmluZE9uZTxQIGV4dGVuZHMgUXVlcnlQcm9qZWN0PEU+PihxbTogUXVlcnlPbmVDcml0ZXJpYTxFPiwgcHJvamVjdD86IFApIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVyLmZpbmRPbmUodGhpcy5lbnRpdHksIHFtLCBwcm9qZWN0KTtcbiAgfVxuXG4gIGZpbmRNYW55PFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KHFtOiBRdWVyeUNyaXRlcmlhPEU+LCBwcm9qZWN0PzogUCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXIuZmluZE1hbnkodGhpcy5lbnRpdHksIHFtLCBwcm9qZWN0KTtcbiAgfVxuXG4gIGZpbmRNYW55QW5kQ291bnQ8UCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4ocW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHByb2plY3Q/OiBQKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci5maW5kTWFueUFuZENvdW50KHRoaXMuZW50aXR5LCBxbSwgcHJvamVjdCk7XG4gIH1cblxuICBjb3VudChxbT86IFF1ZXJ5U2VhcmNoPEU+KSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci5jb3VudCh0aGlzLmVudGl0eSwgcW0pO1xuICB9XG5cbiAgaW5zZXJ0T25lKHBheWxvYWQ6IEUpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVyLmluc2VydE9uZSh0aGlzLmVudGl0eSwgcGF5bG9hZCk7XG4gIH1cblxuICBpbnNlcnRNYW55KHBheWxvYWQ6IEVbXSkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXIuaW5zZXJ0TWFueSh0aGlzLmVudGl0eSwgcGF5bG9hZCk7XG4gIH1cblxuICB1cGRhdGVPbmVCeUlkKGlkOiBJZFZhbHVlPEU+LCBwYXlsb2FkOiBFKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci51cGRhdGVPbmVCeUlkKHRoaXMuZW50aXR5LCBpZCwgcGF5bG9hZCk7XG4gIH1cblxuICB1cGRhdGVNYW55KHFtOiBRdWVyeVNlYXJjaDxFPiwgcGF5bG9hZDogRSkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXIudXBkYXRlTWFueSh0aGlzLmVudGl0eSwgcW0sIHBheWxvYWQpO1xuICB9XG5cbiAgc2F2ZU9uZShwYXlsb2FkOiBFKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci5zYXZlT25lKHRoaXMuZW50aXR5LCBwYXlsb2FkKTtcbiAgfVxuXG4gIHNhdmVNYW55KHBheWxvYWQ6IEVbXSkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXIuc2F2ZU1hbnkodGhpcy5lbnRpdHksIHBheWxvYWQpO1xuICB9XG5cbiAgZGVsZXRlT25lQnlJZChpZDogSWRWYWx1ZTxFPiwgb3B0cz86IFF1ZXJ5T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXIuZGVsZXRlT25lQnlJZCh0aGlzLmVudGl0eSwgaWQsIG9wdHMpO1xuICB9XG5cbiAgZGVsZXRlTWFueShxbTogUXVlcnlTZWFyY2g8RT4sIG9wdHM/OiBRdWVyeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVyLmRlbGV0ZU1hbnkodGhpcy5lbnRpdHksIHFtLCBvcHRzKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpY1JlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVwb3NpdG9yeS9nZW5lcmljUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxNQUFNLE9BQU8saUJBQWlCO0lBRWpCO0lBQ0E7SUFGWCxZQUNXLE1BQWUsRUFDZixPQUFnQjtRQURoQixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQ2YsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUN4QixDQUFDO0lBRUosV0FBVyxDQUE0QixFQUFjLEVBQUUsT0FBVztRQUNoRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxPQUFPLENBQTRCLEVBQXVCLEVBQUUsT0FBVztRQUNyRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxRQUFRLENBQTRCLEVBQW9CLEVBQUUsT0FBVztRQUNuRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxnQkFBZ0IsQ0FBNEIsRUFBb0IsRUFBRSxPQUFXO1FBQzNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLEVBQW1CO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQVU7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxVQUFVLENBQUMsT0FBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFjLEVBQUUsT0FBVTtRQUN0QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxVQUFVLENBQUMsRUFBa0IsRUFBRSxPQUFVO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxhQUFhLENBQUMsRUFBYyxFQUFFLElBQW1CO1FBQy9DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFrQixFQUFFLElBQW1CO1FBQ2hELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBJZFZhbHVlLFxuICBRdWVyaWVyLFxuICBRdWVyeU9wdGlvbnMsXG4gIFJlcG9zaXRvcnksXG4gIFR5cGUsXG4gIFF1ZXJ5UHJvamVjdCxcbiAgUXVlcnlTZWFyY2gsXG4gIFF1ZXJ5Q3JpdGVyaWEsXG4gIFF1ZXJ5T25lQ3JpdGVyaWEsXG59IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuXG5leHBvcnQgY2xhc3MgR2VuZXJpY1JlcG9zaXRvcnk8RT4gaW1wbGVtZW50cyBSZXBvc2l0b3J5PEU+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgZW50aXR5OiBUeXBlPEU+LFxuICAgIHJlYWRvbmx5IHF1ZXJpZXI6IFF1ZXJpZXIsXG4gICkge31cblxuICBmaW5kT25lQnlJZDxQIGV4dGVuZHMgUXVlcnlQcm9qZWN0PEU+PihpZDogSWRWYWx1ZTxFPiwgcHJvamVjdD86IFApIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVyLmZpbmRPbmVCeUlkKHRoaXMuZW50aXR5LCBpZCwgcHJvamVjdCk7XG4gIH1cblxuICBmaW5kT25lPFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KHFtOiBRdWVyeU9uZUNyaXRlcmlhPEU+LCBwcm9qZWN0PzogUCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXIuZmluZE9uZSh0aGlzLmVudGl0eSwgcW0sIHByb2plY3QpO1xuICB9XG5cbiAgZmluZE1hbnk8UCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4ocW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHByb2plY3Q/OiBQKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci5maW5kTWFueSh0aGlzLmVudGl0eSwgcW0sIHByb2plY3QpO1xuICB9XG5cbiAgZmluZE1hbnlBbmRDb3VudDxQIGV4dGVuZHMgUXVlcnlQcm9qZWN0PEU+PihxbTogUXVlcnlDcml0ZXJpYTxFPiwgcHJvamVjdD86IFApIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVyLmZpbmRNYW55QW5kQ291bnQodGhpcy5lbnRpdHksIHFtLCBwcm9qZWN0KTtcbiAgfVxuXG4gIGNvdW50KHFtPzogUXVlcnlTZWFyY2g8RT4pIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVyLmNvdW50KHRoaXMuZW50aXR5LCBxbSk7XG4gIH1cblxuICBpbnNlcnRPbmUocGF5bG9hZDogRSkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXIuaW5zZXJ0T25lKHRoaXMuZW50aXR5LCBwYXlsb2FkKTtcbiAgfVxuXG4gIGluc2VydE1hbnkocGF5bG9hZDogRVtdKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci5pbnNlcnRNYW55KHRoaXMuZW50aXR5LCBwYXlsb2FkKTtcbiAgfVxuXG4gIHVwZGF0ZU9uZUJ5SWQoaWQ6IElkVmFsdWU8RT4sIHBheWxvYWQ6IEUpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVyLnVwZGF0ZU9uZUJ5SWQodGhpcy5lbnRpdHksIGlkLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHVwZGF0ZU1hbnkocW06IFF1ZXJ5U2VhcmNoPEU+LCBwYXlsb2FkOiBFKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci51cGRhdGVNYW55KHRoaXMuZW50aXR5LCBxbSwgcGF5bG9hZCk7XG4gIH1cblxuICBzYXZlT25lKHBheWxvYWQ6IEUpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyaWVyLnNhdmVPbmUodGhpcy5lbnRpdHksIHBheWxvYWQpO1xuICB9XG5cbiAgc2F2ZU1hbnkocGF5bG9hZDogRVtdKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci5zYXZlTWFueSh0aGlzLmVudGl0eSwgcGF5bG9hZCk7XG4gIH1cblxuICBkZWxldGVPbmVCeUlkKGlkOiBJZFZhbHVlPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcmllci5kZWxldGVPbmVCeUlkKHRoaXMuZW50aXR5LCBpZCwgb3B0cyk7XG4gIH1cblxuICBkZWxldGVNYW55KHFtOiBRdWVyeVNlYXJjaDxFPiwgb3B0cz86IFF1ZXJ5T3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnF1ZXJpZXIuZGVsZXRlTWFueSh0aGlzLmVudGl0eSwgcW0sIG9wdHMpO1xuICB9XG59XG4iXX0=
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlL3F1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZSB9IGZyb20gJy4vdXRpbGl0eS5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q3JpdGVyaWEsIFF1ZXJ5T3B0aW9ucywgUXVlcnlQcm9qZWN0LCBRdWVyeVNlYXJjaCwgTWVyZ2UsIFF1ZXJ5T25lQ3JpdGVyaWEgfSBmcm9tICcuL3F1ZXJ5LmpzJztcbmltcG9ydCB0eXBlIHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vcmVwb3NpdG9yeS5qcyc7XG5pbXBvcnQgdHlwZSB7IElkVmFsdWUgfSBmcm9tICcuL2VudGl0eS5qcyc7XG5pbXBvcnQgdHlwZSB7IFVuaXZlcnNhbFF1ZXJpZXIgfSBmcm9tICcuL3VuaXZlcnNhbFF1ZXJpZXIuanMnO1xuXG4vKipcbiAqIElzb2xhdGlvbiBsZXZlbHMgZm9yIHRyYW5zYWN0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgSXNvbGF0aW9uTGV2ZWwgPSAncmVhZCB1bmNvbW1pdHRlZCcgfCAncmVhZCBjb21taXR0ZWQnIHwgJ3JlcGV0ZWFibGUgcmVhZCcgfCAnc2VyaWFsaXphYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyaWVyIGV4dGVuZHMgVW5pdmVyc2FsUXVlcmllciB7XG4gIGZpbmRPbmVCeUlkPEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KGVudGl0eTogVHlwZTxFPiwgaWQ6IElkVmFsdWU8RT4sIHByb2plY3Q/OiBQKTogUHJvbWlzZTxNZXJnZTxFLCBQPj47XG5cbiAgZmluZE9uZTxFLCBQIGV4dGVuZHMgUXVlcnlQcm9qZWN0PEU+PihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeU9uZUNyaXRlcmlhPEU+LCBwcm9qZWN0PzogUCk6IFByb21pc2U8TWVyZ2U8RSwgUD4+O1xuXG4gIGZpbmRNYW55PEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHByb2plY3Q/OiBQKTogUHJvbWlzZTxNZXJnZTxFLCBQPltdPjtcblxuICBmaW5kTWFueUFuZENvdW50PEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KFxuICAgIGVudGl0eTogVHlwZTxFPixcbiAgICBxbTogUXVlcnlDcml0ZXJpYTxFPixcbiAgICBwcm9qZWN0PzogUFxuICApOiBQcm9taXNlPFtNZXJnZTxFLCBQPltdLCBudW1iZXJdPjtcblxuICBjb3VudDxFPihlbnRpdHk6IFR5cGU8RT4sIHFtPzogUXVlcnlTZWFyY2g8RT4pOiBQcm9taXNlPG51bWJlcj47XG5cbiAgaW5zZXJ0T25lPEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRSk6IFByb21pc2U8SWRWYWx1ZTxFPj47XG5cbiAgaW5zZXJ0TWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEVbXSk6IFByb21pc2U8SWRWYWx1ZTxFPltdPjtcblxuICB1cGRhdGVPbmVCeUlkPEU+KGVudGl0eTogVHlwZTxFPiwgaWQ6IElkVmFsdWU8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgdXBkYXRlTWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeVNlYXJjaDxFPiwgcGF5bG9hZDogRSk6IFByb21pc2U8bnVtYmVyPjtcblxuICBzYXZlT25lPEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRSk6IFByb21pc2U8SWRWYWx1ZTxFPj47XG5cbiAgc2F2ZU1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFW10pOiBQcm9taXNlPElkVmFsdWU8RT5bXT47XG5cbiAgZGVsZXRlT25lQnlJZDxFPihlbnRpdHk6IFR5cGU8RT4sIGlkOiBJZFZhbHVlPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGRlbGV0ZU1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgZ2V0UmVwb3NpdG9yeTxFPihlbnRpdHk6IFR5cGU8RT4pOiBSZXBvc2l0b3J5PEU+O1xuXG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoaXMgcXVlcmllciBpcyBpbiBhIHRyYW5zYWN0aW9uIG9yIG5vdC5cbiAgICovXG4gIHJlYWRvbmx5IGhhc09wZW5UcmFuc2FjdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogcnVuIHRoZSBnaXZlbiBjYWxsYmFjayBpbnNpZGUgYSB0cmFuc2FjdGlvbiBpbiB0aGlzIHF1ZXJpZXIuXG4gICAqL1xuICB0cmFuc2FjdGlvbjxUPihjYWxsYmFjazogKHF1ZXJpZXI/OiBUaGlzVHlwZTxRdWVyaWVyPikgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD47XG5cbiAgLyoqXG4gICAqIHN0YXJ0cyBhIG5ldyB0cmFuc2FjdGlvbiBpbiB0aGlzIHF1ZXJpZXIuXG4gICAqL1xuICBiZWdpblRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIGNvbW1pdHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgdHJhbnNhY3Rpb24gaW4gdGhpcyBxdWVyaWVyLlxuICAgKi9cbiAgY29tbWl0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogYWJvcnRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRyYW5zYWN0aW9uIGluIHRoaXMgcXVlcmllci5cbiAgICovXG4gIHJvbGxiYWNrVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogcmVsZWFzZSB0aGUgcXVlcmllciB0byB0aGUgcG9vbC5cbiAgICovXG4gIHJlbGVhc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBsb2dnZXIgZnVuY3Rpb24gdG8gZGVidWcgcXVlcmllcy5cbiAqL1xuZXhwb3J0IHR5cGUgTG9nZ2VyID0gKG1lc3NhZ2U6IHVua25vd24sIC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bjtcblxuZXhwb3J0IHR5cGUgRXh0cmFPcHRpb25zID0ge1xuICByZWFkb25seSBsb2dnZXI/OiBMb2dnZXI7XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlL3F1ZXJpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZSB9IGZyb20gJy4vdXRpbGl0eS5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q3JpdGVyaWEsIFF1ZXJ5T3B0aW9ucywgUXVlcnlQcm9qZWN0LCBRdWVyeVNlYXJjaCwgTWVyZ2UsIFF1ZXJ5T25lQ3JpdGVyaWEgfSBmcm9tICcuL3F1ZXJ5LmpzJztcbmltcG9ydCB0eXBlIHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vcmVwb3NpdG9yeS5qcyc7XG5pbXBvcnQgdHlwZSB7IElkVmFsdWUgfSBmcm9tICcuL2VudGl0eS5qcyc7XG5pbXBvcnQgdHlwZSB7IFVuaXZlcnNhbFF1ZXJpZXIgfSBmcm9tICcuL3VuaXZlcnNhbFF1ZXJpZXIuanMnO1xuXG4vKipcbiAqIElzb2xhdGlvbiBsZXZlbHMgZm9yIHRyYW5zYWN0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgSXNvbGF0aW9uTGV2ZWwgPSAncmVhZCB1bmNvbW1pdHRlZCcgfCAncmVhZCBjb21taXR0ZWQnIHwgJ3JlcGV0ZWFibGUgcmVhZCcgfCAnc2VyaWFsaXphYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyaWVyIGV4dGVuZHMgVW5pdmVyc2FsUXVlcmllciB7XG4gIGZpbmRPbmVCeUlkPEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KGVudGl0eTogVHlwZTxFPiwgaWQ6IElkVmFsdWU8RT4sIHByb2plY3Q/OiBQKTogUHJvbWlzZTxNZXJnZTxFLCBQPj47XG5cbiAgZmluZE9uZTxFLCBQIGV4dGVuZHMgUXVlcnlQcm9qZWN0PEU+PihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeU9uZUNyaXRlcmlhPEU+LCBwcm9qZWN0PzogUCk6IFByb21pc2U8TWVyZ2U8RSwgUD4+O1xuXG4gIGZpbmRNYW55PEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHByb2plY3Q/OiBQKTogUHJvbWlzZTxNZXJnZTxFLCBQPltdPjtcblxuICBmaW5kTWFueUFuZENvdW50PEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KFxuICAgIGVudGl0eTogVHlwZTxFPixcbiAgICBxbTogUXVlcnlDcml0ZXJpYTxFPixcbiAgICBwcm9qZWN0PzogUCxcbiAgKTogUHJvbWlzZTxbTWVyZ2U8RSwgUD5bXSwgbnVtYmVyXT47XG5cbiAgY291bnQ8RT4oZW50aXR5OiBUeXBlPEU+LCBxbT86IFF1ZXJ5U2VhcmNoPEU+KTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGluc2VydE9uZTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPElkVmFsdWU8RT4+O1xuXG4gIGluc2VydE1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFW10pOiBQcm9taXNlPElkVmFsdWU8RT5bXT47XG5cbiAgdXBkYXRlT25lQnlJZDxFPihlbnRpdHk6IFR5cGU8RT4sIGlkOiBJZFZhbHVlPEU+LCBwYXlsb2FkOiBFKTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIHVwZGF0ZU1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgc2F2ZU9uZTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPElkVmFsdWU8RT4+O1xuXG4gIHNhdmVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRVtdKTogUHJvbWlzZTxJZFZhbHVlPEU+W10+O1xuXG4gIGRlbGV0ZU9uZUJ5SWQ8RT4oZW50aXR5OiBUeXBlPEU+LCBpZDogSWRWYWx1ZTxFPiwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPjtcblxuICBkZWxldGVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGdldFJlcG9zaXRvcnk8RT4oZW50aXR5OiBUeXBlPEU+KTogUmVwb3NpdG9yeTxFPjtcblxuICAvKipcbiAgICogd2hldGhlciB0aGlzIHF1ZXJpZXIgaXMgaW4gYSB0cmFuc2FjdGlvbiBvciBub3QuXG4gICAqL1xuICByZWFkb25seSBoYXNPcGVuVHJhbnNhY3Rpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHJ1biB0aGUgZ2l2ZW4gY2FsbGJhY2sgaW5zaWRlIGEgdHJhbnNhY3Rpb24gaW4gdGhpcyBxdWVyaWVyLlxuICAgKi9cbiAgdHJhbnNhY3Rpb248VD4oY2FsbGJhY2s6IChxdWVyaWVyPzogVGhpc1R5cGU8UXVlcmllcj4pID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+O1xuXG4gIC8qKlxuICAgKiBzdGFydHMgYSBuZXcgdHJhbnNhY3Rpb24gaW4gdGhpcyBxdWVyaWVyLlxuICAgKi9cbiAgYmVnaW5UcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBjb21taXRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRyYW5zYWN0aW9uIGluIHRoaXMgcXVlcmllci5cbiAgICovXG4gIGNvbW1pdFRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIGFib3J0cyB0aGUgY3VycmVudGx5IGFjdGl2ZSB0cmFuc2FjdGlvbiBpbiB0aGlzIHF1ZXJpZXIuXG4gICAqL1xuICByb2xsYmFja1RyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIHJlbGVhc2UgdGhlIHF1ZXJpZXIgdG8gdGhlIHBvb2wuXG4gICAqL1xuICByZWxlYXNlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogbG9nZ2VyIGZ1bmN0aW9uIHRvIGRlYnVnIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIExvZ2dlciA9IChtZXNzYWdlOiB1bmtub3duLCAuLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd247XG5cbmV4cG9ydCB0eXBlIEV4dHJhT3B0aW9ucyA9IHtcbiAgcmVhZG9ubHkgbG9nZ2VyPzogTG9nZ2VyO1xufTtcbiJdfQ==

@@ -112,3 +112,4 @@ import { FieldKey, IdValue, Key, RelationKey } from './entity.js';

*/
export type QueryFilterMap<E> = QueryFilterFieldMap<E> & {
export type QueryFilterMap<E> = QueryFilterFieldMap<E> & QueryFilterRootOperator<E>;
export type QueryFilterRootOperator<E> = {
/**

@@ -115,0 +116,0 @@ * joins query clauses with a logical `AND`, returns records that match all the clauses.

@@ -9,2 +9,2 @@ export class QueryRaw {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4WUEsTUFBTSxPQUFPLFFBQVE7SUFDRTtJQUFxQztJQUExRCxZQUFxQixLQUEwQixFQUFXLEtBQWM7UUFBbkQsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFBVyxVQUFLLEdBQUwsS0FBSyxDQUFTO0lBQUcsQ0FBQztDQUM3RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkS2V5LCBJZFZhbHVlLCBLZXksIFJlbGF0aW9uS2V5IH0gZnJvbSAnLi9lbnRpdHkuanMnO1xuaW1wb3J0IHsgQm9vbGVhbkxpa2UsIEV4cGFuZFNjYWxhciwgU2NhbGFyLCBUeXBlLCBVbnBhY2tlZCB9IGZyb20gJy4vdXRpbGl0eS5qcyc7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIHVzZSBvciBvbWl0IGBzb2Z0RGVsZXRlYCBhdHRyaWJ1dGUuXG4gICAqL1xuICByZWFkb25seSBzb2Z0RGVsZXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIHByZWZpeCB0aGUgcXVlcnkgd2l0aCB0aGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogYXV0b21hdGljYWxseSBpbmZlciB0aGUgcHJlZml4IGZvciB0aGUgcXVlcnkuXG4gICAqL1xuICByZWFkb25seSBhdXRvUHJlZml4PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UHJvamVjdE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBwcmVmaXggdGhlIHF1ZXJ5IHdpdGggdGhpcy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBwcmVmaXggZm9yIHRoZSBhbGlhcy5cbiAgICovXG4gIHJlYWRvbmx5IGF1dG9QcmVmaXhBbGlhcz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIHF1ZXJ5IHByb2plY3Rpb24gb2Ygb3BlcmF0aW9uc1xuICovXG5leHBvcnQgdHlwZSBRdWVyeVByb2plY3RPcGVyYXRpb248RT4gPSB7XG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBxdWFudGl0eSBvZiBlbnRyaWVzXG4gICAqL1xuICByZWFkb25seSAkY291bnQ/OiBGaWVsZEtleTxFPiB8IDE7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG1heGltdW0gdmFsdWUgb2YgYSBmaWVsZCBpbiB0aGUgZW50aXR5XG4gICAqL1xuICByZWFkb25seSAkbWF4PzogRmllbGRLZXk8RT47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG1pbmltdW0gdmFsdWUgb2YgYSBmaWVsZCBpbiB0aGUgZW50aXR5XG4gICAqL1xuICByZWFkb25seSAkbWluPzogRmllbGRLZXk8RT47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGF2ZXJhZ2UgdmFsdWUgb2YgYSBmaWVsZCBpbiB0aGUgZW50aXR5XG4gICAqL1xuICByZWFkb25seSAkYXZnPzogRmllbGRLZXk8RT47XG5cbiAgLyoqXG4gICAqIFN1bXMgdXAgdGhlIHNwZWNpZmllZCB2YWx1ZXMgb2YgYWxsIGVudHJpZXMgaW4gdGhlIGVudGl0eVxuICAgKi9cbiAgcmVhZG9ubHkgJHN1bT86IEZpZWxkS2V5PEU+O1xufTtcblxuLyoqXG4gKiBxdWVyeSBwcm9qZWN0aW9uIGFzIGFuIGFycmF5LlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVByb2plY3RBcnJheTxFPiA9IHJlYWRvbmx5IChLZXk8RT4gfCBRdWVyeVJhdylbXTtcblxuLyoqXG4gKiBxdWVyeSBwcm9qZWN0aW9uIGFzIGEgbWFwLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVByb2plY3RNYXA8RT4gPSBRdWVyeVByb2plY3RGaWVsZE1hcDxFPiB8IFF1ZXJ5UHJvamVjdFJlbGF0aW9uTWFwPEU+O1xuXG4vKipcbiAqIHF1ZXJ5IHByb2plY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UHJvamVjdDxFPiA9IFF1ZXJ5UHJvamVjdEFycmF5PEU+IHwgUXVlcnlQcm9qZWN0TWFwPEU+O1xuXG4vKipcbiAqIHF1ZXJ5IHByb2plY3Rpb24gb2YgZmllbGRzIGFzIGEgbWFwLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVByb2plY3RGaWVsZE1hcDxFPiA9XG4gIHwge1xuICAgICAgLy8gVE9ETyBhZGQgc3VwcG9ydCB0byB1c2UgYWxpYXMgZm9yIHByb2plY3RlZCBmaWVsZHMgKHN0cmluZyB2YWx1ZSlcbiAgICAgIFtLIGluIEZpZWxkS2V5PEU+XT86IEJvb2xlYW5MaWtlO1xuICAgIH1cbiAgfCB7IFtLOiBzdHJpbmddOiBRdWVyeVByb2plY3RPcGVyYXRpb248RT4gfCBRdWVyeVJhdyB9O1xuXG4vKipcbiAqIHF1ZXJ5IHByb2plY3Rpb24gb2YgcmVsYXRpb25zIGFzIGEgbWFwLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVByb2plY3RSZWxhdGlvbk1hcDxFPiA9IHtcbiAgW0sgaW4gUmVsYXRpb25LZXk8RT5dPzogQm9vbGVhbkxpa2UgfCByZWFkb25seSBLZXk8VW5wYWNrZWQ8RVtLXT4+W10gfCBRdWVyeVByb2plY3RSZWxhdGlvbk9wdGlvbnM8RVtLXT47XG59O1xuXG4vKipcbiAqIG9wdGlvbnMgdG8gcHJvamVjdCBhIHJlbGF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVByb2plY3RSZWxhdGlvbk9wdGlvbnM8RT4gPSAoRSBleHRlbmRzIHVua25vd25bXSA/IFF1ZXJ5PFVucGFja2VkPEU+PiA6IFF1ZXJ5VW5pcXVlPFVucGFja2VkPEU+PikgJiB7XG4gIHJlYWRvbmx5ICRyZXF1aXJlZD86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIG9wdGlvbnMgZm9yIGZ1bGwtdGV4dC1zZWFyY2ggb3BlcmF0b3IuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5VGV4dFNlYXJjaE9wdGlvbnM8RT4gPSB7XG4gIC8qKlxuICAgKiB0ZXh0IHRvIHNlYXJjaCBmb3IuXG4gICAqL1xuICByZWFkb25seSAkdmFsdWU6IHN0cmluZztcbiAgLyoqXG4gICAqIGxpc3Qgb2YgZmllbGRzIHRvIHNlYXJjaCBvbi5cbiAgICovXG4gIHJlYWRvbmx5ICRmaWVsZHM/OiByZWFkb25seSBGaWVsZEtleTxFPltdO1xufTtcblxuLyoqXG4gKiB2YWx1ZSBmb3IgYSBsb2dpY2FsIGZpbHRlcmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlGaWx0ZXJMb2dpY2FsPEU+ID0gcmVhZG9ubHkgUXVlcnlGaWx0ZXI8RT5bXTtcblxuLyoqXG4gKiBjb21wYXJpc29uIGJ5IGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlGaWx0ZXJGaWVsZE1hcDxFPiA9XG4gIHwgeyByZWFkb25seSBbSyBpbiBGaWVsZEtleTxFPl0/OiBRdWVyeUZpbHRlckZpZWxkVmFsdWU8RVtLXT4gfVxuICB8IHsgcmVhZG9ubHkgW0s6IHN0cmluZ106IFF1ZXJ5RmlsdGVyRmllbGRWYWx1ZTxFW2FueV0+IH07XG5cbi8qKlxuICogY29tcGxleCBvcGVyYXRvcnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyTWFwPEU+ID0gUXVlcnlGaWx0ZXJGaWVsZE1hcDxFPiAmIHtcbiAgLyoqXG4gICAqIGpvaW5zIHF1ZXJ5IGNsYXVzZXMgd2l0aCBhIGxvZ2ljYWwgYEFORGAsIHJldHVybnMgcmVjb3JkcyB0aGF0IG1hdGNoIGFsbCB0aGUgY2xhdXNlcy5cbiAgICovXG4gIHJlYWRvbmx5ICRhbmQ/OiBRdWVyeUZpbHRlckxvZ2ljYWw8RT47XG4gIC8qKlxuICAgKiBqb2lucyBxdWVyeSBjbGF1c2VzIHdpdGggYSBsb2dpY2FsIGBPUmAsIHJldHVybnMgcmVjb3JkcyB0aGF0IG1hdGNoIGFueSBvZiB0aGUgY2xhdXNlcy5cbiAgICovXG4gIHJlYWRvbmx5ICRvcj86IFF1ZXJ5RmlsdGVyTG9naWNhbDxFPjtcbiAgLyoqXG4gICAqIGpvaW5zIHF1ZXJ5IGNsYXVzZXMgd2l0aCBhIGxvZ2ljYWwgYEFORGAsIHJldHVybnMgcmVjb3JkcyB0aGF0IGRvIG5vdCBtYXRjaCBhbGwgdGhlIGNsYXVzZXMuXG4gICAqL1xuICByZWFkb25seSAkbm90PzogUXVlcnlGaWx0ZXJMb2dpY2FsPEU+O1xuICAvKipcbiAgICogam9pbnMgcXVlcnkgY2xhdXNlcyB3aXRoIGEgbG9naWNhbCBgT1JgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBkbyBub3QgbWF0Y2ggYW55IG9mIHRoZSBjbGF1c2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgJG5vcj86IFF1ZXJ5RmlsdGVyTG9naWNhbDxFPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBmaWVsZHMgbWF0Y2ggYWdhaW5zdCBhIGZ1bGwtdGV4dCBzZWFyY2ggb2YgdGhlIGdpdmVuIHN0cmluZy5cbiAgICovXG4gIHJlYWRvbmx5ICR0ZXh0PzogUXVlcnlUZXh0U2VhcmNoT3B0aW9uczxFPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgdGhlIHJlY29yZCBleGlzdHMgaW4gdGhlIGdpdmVuIHN1Yi1xdWVyeS5cbiAgICovXG4gIHJlYWRvbmx5ICRleGlzdHM/OiBRdWVyeVJhdztcbiAgLyoqXG4gICAqIHdoZXRoZXIgdGhlIHJlY29yZCBkb2VzIG5vdCBleGlzdHMgaW4gdGhlIGdpdmVuIHN1Yi1xdWVyeS5cbiAgICovXG4gIHJlYWRvbmx5ICRuZXhpc3RzPzogUXVlcnlSYXc7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUZpbHRlckZpZWxkT3BlcmF0b3JNYXA8VD4gPSB7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgJGVxPzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqL1xuICByZWFkb25seSAkbmU/OiBFeHBhbmRTY2FsYXI8VD47XG4gIC8qKlxuICAgKiBuZWdhdGVzIHRoZSBnaXZlbiBjb21wYXJpc29uLlxuICAgKi9cbiAgcmVhZG9ubHkgJG5vdD86IFF1ZXJ5RmlsdGVyRmllbGRWYWx1ZTxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgJGx0PzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqL1xuICByZWFkb25seSAkbHRlPzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqL1xuICByZWFkb25seSAkZ3Q/OiBFeHBhbmRTY2FsYXI8VD47XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5ICRndGU/OiBFeHBhbmRTY2FsYXI8VD47XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGJlZ2lucyB3aXRoIHRoZSBnaXZlbiBzdHJpbmcgKGNhc2Ugc2Vuc2l0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5ICRzdGFydHNXaXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBiZWdpbnMgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIGluc2Vuc2l0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5ICRpc3RhcnRzV2l0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdHJpbmcgKGNhc2Ugc2Vuc2l0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5ICRlbmRzV2l0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdHJpbmcgKGNhc2UgaW5zZW5zaXRpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgJGllbmRzV2l0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIHNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkaW5jbHVkZXM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGdpdmVuIHN0cmluZyAoY2FzZSBpbnNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkaWluY2x1ZGVzPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBmdWxmaWxscyB0aGUgZ2l2ZW4gcGF0dGVybiAoY2FzZSBzZW5zaXRpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgJGxpa2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGZ1bGZpbGxzIHRoZSBnaXZlbiBwYXR0ZXJuIChjYXNlIGluc2Vuc2l0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5ICRpbGlrZT86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgJHJlZ2V4Pzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIG1hdGNoZXMgYW55IG9mIHRoZSBnaXZlbiB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSAkaW4/OiByZWFkb25seSBFeHBhbmRTY2FsYXI8VD5bXTtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCBhbnkgb2YgdGhlIGdpdmVuIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5ICRuaW4/OiByZWFkb25seSBFeHBhbmRTY2FsYXI8VD5bXTtcbn07XG5cbi8qKlxuICogVmFsdWUgZm9yIGEgZmllbGQgY29tcGFyaXNvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlGaWx0ZXJGaWVsZFZhbHVlPFQ+ID0gVCB8IHJlYWRvbmx5IFRbXSB8IFF1ZXJ5RmlsdGVyRmllbGRPcGVyYXRvck1hcDxUPiB8IFF1ZXJ5UmF3O1xuXG4vKipcbiAqIHF1ZXJ5IGZpbHRlci5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlGaWx0ZXI8RT4gPSBJZFZhbHVlPEU+IHwgcmVhZG9ubHkgSWRWYWx1ZTxFPltdIHwgUXVlcnlSYXcgfCBRdWVyeUZpbHRlck1hcDxFPjtcblxuLyoqXG4gKiBkaXJlY3Rpb24gZm9yIHRoZSBzb3J0LlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnREaXJlY3Rpb24gPSAtMSB8IDEgfCAnYXNjJyB8ICdkZXNjJztcblxuLyoqXG4gKiBzb3J0IGJ5IHR1cGxlc1xuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnRUdXBsZXM8RT4gPSByZWFkb25seSBbRmllbGRLZXk8RT4sIFF1ZXJ5U29ydERpcmVjdGlvbl1bXTtcblxuLyoqXG4gKiBzb3J0IGJ5IG9iamVjdHMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U29ydE9iamVjdHM8RT4gPSByZWFkb25seSB7IHJlYWRvbmx5IGZpZWxkOiBGaWVsZEtleTxFPjsgcmVhZG9ubHkgc29ydDogUXVlcnlTb3J0RGlyZWN0aW9uIH1bXTtcblxuLyoqXG4gKiBzb3J0IGJ5IGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0RmllbGRNYXA8RT4gPVxuICB8IHtcbiAgICAgIFtLIGluIEZpZWxkS2V5PEU+XT86IFF1ZXJ5U29ydERpcmVjdGlvbjtcbiAgICB9XG4gIHwgeyBbSzogc3RyaW5nXTogUXVlcnlTb3J0RGlyZWN0aW9uIH07XG5cbi8qKlxuICogc29ydCBieSByZWxhdGlvbnMgZmllbGRzLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnRSZWxhdGlvbk1hcDxFPiA9IHtcbiAgW0sgaW4gUmVsYXRpb25LZXk8RT5dPzogUXVlcnlTb3J0TWFwPFVucGFja2VkPEVbS10+Pjtcbn07XG5cbi8qKlxuICogc29ydCBieSBtYXAuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U29ydE1hcDxFPiA9IFF1ZXJ5U29ydEZpZWxkTWFwPEU+IHwgUXVlcnlTb3J0UmVsYXRpb25NYXA8RT47XG5cbi8qKlxuICogc29ydCBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnQ8RT4gPSBRdWVyeVNvcnRNYXA8RT4gfCBRdWVyeVNvcnRUdXBsZXM8RT4gfCBRdWVyeVNvcnRPYmplY3RzPEU+O1xuXG4vKipcbiAqIHBhZ2VyIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UGFnZXIgPSB7XG4gIC8qKlxuICAgKiBJbmRleCBmcm9tIHdoZXJlIHN0YXJ0IHRoZSBzZWFyY2hcbiAgICovXG4gICRza2lwPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXggbnVtYmVyIG9mIHJlY29yZHMgdG8gcmV0cmlldmVcbiAgICovXG4gICRsaW1pdD86IG51bWJlcjtcbn07XG5cbi8qKlxuICogc2VhcmNoIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U2VhcmNoPEU+ID0ge1xuICAvKipcbiAgICogZmlsdGVyaW5nIG9wdGlvbnMuXG4gICAqL1xuICAkZmlsdGVyPzogUXVlcnlGaWx0ZXI8RT47XG5cbiAgLyoqXG4gICAqIGxpc3Qgb2YgZmllbGRzIHRvIGdyb3VwLlxuICAgKi9cbiAgJGdyb3VwPzogcmVhZG9ubHkgRmllbGRLZXk8RT5bXTtcblxuICAvKipcbiAgICogaGF2aW5nIG9wdGlvbnMuXG4gICAqL1xuICAkaGF2aW5nPzogUXVlcnlGaWx0ZXI8RT47XG59ICYgUXVlcnlQYWdlcjtcblxuLyoqXG4gKiBjcml0ZXJpYSBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeUNyaXRlcmlhPEU+ID0gUXVlcnlTZWFyY2g8RT4gJiB7XG4gIC8qKlxuICAgKiBzb3J0aW5nIG9wdGlvbnMuXG4gICAqL1xuICAkc29ydD86IFF1ZXJ5U29ydDxFPjtcbn07XG5cbi8qKlxuICogY3JpdGVyaWEgb25lIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5T25lQ3JpdGVyaWE8RT4gPSBPbWl0PFF1ZXJ5Q3JpdGVyaWE8RT4sICckbGltaXQnPjtcblxuLyoqXG4gKiBxdWVyeSBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeTxFPiA9IHtcbiAgLyoqXG4gICAqIHByb2plY3Rpb24gb3B0aW9ucy5cbiAgICovXG4gICRwcm9qZWN0PzogUXVlcnlQcm9qZWN0PEU+O1xufSAmIFF1ZXJ5Q3JpdGVyaWE8RT47XG5cbi8qKlxuICogb3B0aW9ucyB0byBnZXQgYSBzaW5nbGUgcmVjb3JkLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeU9uZTxFPiA9IE9taXQ8UXVlcnk8RT4sICckbGltaXQnPjtcblxuLyoqXG4gKiBvcHRpb25zIHRvIGdldCBhbiB1bmlxdWUgcmVjb3JkLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVVuaXF1ZTxFPiA9IFBpY2s8UXVlcnlPbmU8RT4sICckcHJvamVjdCcgfCAnJGZpbHRlcic+O1xuXG4vKipcbiAqIHN0cmluZ2lmaWVkIHF1ZXJ5LlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVN0cmluZ2lmaWVkID0ge1xuICByZWFkb25seSBbSyBpbiBrZXlvZiBRdWVyeTxhbnk+XT86IHN0cmluZztcbn07XG5cbi8qKlxuICogcmVzdWx0IG9mIGFuIHVwZGF0ZSBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5VXBkYXRlUmVzdWx0ID0ge1xuICAvKipcbiAgICogbnVtYmVyIG9mIGNoYW5nZXMuXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzPzogbnVtYmVyO1xuICAvKipcbiAgICogZmlyc3QgaW5zZXJ0ZWQgSUQuXG4gICAqL1xuICByZWFkb25seSBmaXJzdElkPzogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBvcHRpb25zIGZvciB0aGUgYHJhd2AgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UmF3Rm5PcHRpb25zID0ge1xuICAvKipcbiAgICogdGhlIGN1cnJlbnQgZGlhbGVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGRpYWxlY3Q6IFF1ZXJ5RGlhbGVjdDtcbiAgLyoqXG4gICAqIHRoZSBwcmVmaXguXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB0aGUgZXNjYXBlZCBwcmVmaXguXG4gICAqL1xuICByZWFkb25seSBlc2NhcGVkUHJlZml4Pzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBhIGByYXdgIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5UmF3Rm4gPSAob3B0cz86IFF1ZXJ5UmF3Rm5PcHRpb25zKSA9PiBzdHJpbmc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeVJhdyB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHZhbHVlOiBTY2FsYXIgfCBRdWVyeVJhd0ZuLCByZWFkb25seSBhbGlhcz86IHN0cmluZykge31cbn1cblxuLyoqXG4gKiBjb21wYXJpc29uIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMgPSBRdWVyeU9wdGlvbnMgJiB7XG4gIC8qKlxuICAgKiB1c2UgcHJlY2VkZW5jZSBmb3IgdGhlIGNvbXBhcmlzb24gb3Igbm90LlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlUHJlY2VkZW5jZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIHF1ZXJ5IGZpbHRlciBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeUZpbHRlck9wdGlvbnMgPSBRdWVyeUNvbXBhcmlzb25PcHRpb25zICYge1xuICAvKipcbiAgICogY2xhdXNlIHRvIGJlIHVzZWQgaW4gdGhlIGZpbHRlci5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXVzZT86ICdXSEVSRScgfCAnSEFWSU5HJyB8IGZhbHNlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeURpYWxlY3Qge1xuICAvKipcbiAgICogb2J0YWlucyB0aGUgcmVjb3JkcyBtYXRjaGluZyB0aGUgZ2l2ZW4gc2VhcmNoIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRzIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBmaW5kPEUsIFAgZXh0ZW5kcyBRdWVyeVByb2plY3Q8RT4+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5Q3JpdGVyaWE8RT4sIHByb2plY3Q/OiBQLCBvcHRzPzogUXVlcnlPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBjb3VudHMgdGhlIG51bWJlciBvZiByZWNvcmRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdHMgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIGNvdW50PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBpbnNlciByZWNvcmRzLlxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSB0YXJnZXQgZW50aXR5XG4gICAqIEBwYXJhbSBxbSB0aGUgY3JpdGVyaWEgb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0cyB0aGUgcXVlcnkgb3B0aW9uc1xuICAgKi9cbiAgaW5zZXJ0PEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRSB8IHJlYWRvbmx5IEVbXSwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IHN0cmluZztcblxuICAvKipcbiAgICogdXBkYXRlIHJlY29yZHMuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqIEBwYXJhbSBwYXlsb2FkXG4gICAqIEBwYXJhbSBvcHRzIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICB1cGRhdGU8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIHBheWxvYWQ6IEUsIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGRlbGV0ZSByZWNvcmRzLlxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSB0YXJnZXQgZW50aXR5XG4gICAqIEBwYXJhbSBxbSB0aGUgY3JpdGVyaWEgb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0cyB0aGUgcXVlcnkgb3B0aW9uc1xuICAgKi9cbiAgZGVsZXRlPEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBlc2NhcGUgYW4gaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHZhbCB0aGUgdmFsdWUgdG8gYmUgZXNjYXBlZFxuICAgKiBAcGFyYW0gZm9yYmlkUXVhbGlmaWVkIGRvbid0IGVzY2FwZSBkb3RzXG4gICAqIEBwYXJhbSBhZGREb3QgdXNlIGEgZG90IGFzIHN1ZmZpeFxuICAgKi9cbiAgZXNjYXBlSWQodmFsOiBzdHJpbmcsIGZvcmJpZFF1YWxpZmllZD86IGJvb2xlYW4sIGFkZERvdD86IGJvb2xlYW4pOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGVzY2FwZSBhIHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsIHRoZSB2YWx1ZSB0byBlc2NhcGVcbiAgICovXG4gIGVzY2FwZSh2YWw6IGFueSk6IFNjYWxhcjtcbn1cblxuZXhwb3J0IHR5cGUgTWVyZ2U8RSwgUD4gPSBFICYgKFAgZXh0ZW5kcyBzdHJpbmdbXSA/IHt9IDogeyBbSyBpbiBFeGNsdWRlPGtleW9mIFAsIGtleW9mIEU+XTogU2NhbGFyIH0pO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnWkEsTUFBTSxPQUFPLFFBQVE7SUFFUjtJQUNBO0lBRlgsWUFDVyxLQUEwQixFQUMxQixLQUFjO1FBRGQsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBUztJQUN0QixDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZEtleSwgSWRWYWx1ZSwgS2V5LCBSZWxhdGlvbktleSB9IGZyb20gJy4vZW50aXR5LmpzJztcbmltcG9ydCB7IEJvb2xlYW5MaWtlLCBFeHBhbmRTY2FsYXIsIFNjYWxhciwgVHlwZSwgVW5wYWNrZWQgfSBmcm9tICcuL3V0aWxpdHkuanMnO1xuXG5leHBvcnQgdHlwZSBRdWVyeU9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiB1c2Ugb3Igb21pdCBgc29mdERlbGV0ZWAgYXR0cmlidXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgc29mdERlbGV0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBwcmVmaXggdGhlIHF1ZXJ5IHdpdGggdGhpcy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIGF1dG9tYXRpY2FsbHkgaW5mZXIgdGhlIHByZWZpeCBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b1ByZWZpeD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeVByb2plY3RPcHRpb25zID0ge1xuICAvKipcbiAgICogcHJlZml4IHRoZSBxdWVyeSB3aXRoIHRoaXMuXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgcHJlZml4IGZvciB0aGUgYWxpYXMuXG4gICAqL1xuICByZWFkb25seSBhdXRvUHJlZml4QWxpYXM/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBxdWVyeSBwcm9qZWN0aW9uIG9mIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0T3BlcmF0aW9uPEU+ID0ge1xuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgcXVhbnRpdHkgb2YgZW50cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgJGNvdW50PzogRmllbGRLZXk8RT4gfCAxO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGEgZmllbGQgaW4gdGhlIGVudGl0eVxuICAgKi9cbiAgcmVhZG9ubHkgJG1heD86IEZpZWxkS2V5PEU+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGEgZmllbGQgaW4gdGhlIGVudGl0eVxuICAgKi9cbiAgcmVhZG9ubHkgJG1pbj86IEZpZWxkS2V5PEU+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBhdmVyYWdlIHZhbHVlIG9mIGEgZmllbGQgaW4gdGhlIGVudGl0eVxuICAgKi9cbiAgcmVhZG9ubHkgJGF2Zz86IEZpZWxkS2V5PEU+O1xuXG4gIC8qKlxuICAgKiBTdW1zIHVwIHRoZSBzcGVjaWZpZWQgdmFsdWVzIG9mIGFsbCBlbnRyaWVzIGluIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5ICRzdW0/OiBGaWVsZEtleTxFPjtcbn07XG5cbi8qKlxuICogcXVlcnkgcHJvamVjdGlvbiBhcyBhbiBhcnJheS5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0QXJyYXk8RT4gPSByZWFkb25seSAoS2V5PEU+IHwgUXVlcnlSYXcpW107XG5cbi8qKlxuICogcXVlcnkgcHJvamVjdGlvbiBhcyBhIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0TWFwPEU+ID0gUXVlcnlQcm9qZWN0RmllbGRNYXA8RT4gfCBRdWVyeVByb2plY3RSZWxhdGlvbk1hcDxFPjtcblxuLyoqXG4gKiBxdWVyeSBwcm9qZWN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVByb2plY3Q8RT4gPSBRdWVyeVByb2plY3RBcnJheTxFPiB8IFF1ZXJ5UHJvamVjdE1hcDxFPjtcblxuLyoqXG4gKiBxdWVyeSBwcm9qZWN0aW9uIG9mIGZpZWxkcyBhcyBhIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0RmllbGRNYXA8RT4gPVxuICB8IHtcbiAgICAgIC8vIFRPRE8gYWRkIHN1cHBvcnQgdG8gdXNlIGFsaWFzIGZvciBwcm9qZWN0ZWQgZmllbGRzIChzdHJpbmcgdmFsdWUpXG4gICAgICBbSyBpbiBGaWVsZEtleTxFPl0/OiBCb29sZWFuTGlrZTtcbiAgICB9XG4gIHwgeyBbSzogc3RyaW5nXTogUXVlcnlQcm9qZWN0T3BlcmF0aW9uPEU+IHwgUXVlcnlSYXcgfTtcblxuLyoqXG4gKiBxdWVyeSBwcm9qZWN0aW9uIG9mIHJlbGF0aW9ucyBhcyBhIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0UmVsYXRpb25NYXA8RT4gPSB7XG4gIFtLIGluIFJlbGF0aW9uS2V5PEU+XT86IEJvb2xlYW5MaWtlIHwgcmVhZG9ubHkgS2V5PFVucGFja2VkPEVbS10+PltdIHwgUXVlcnlQcm9qZWN0UmVsYXRpb25PcHRpb25zPEVbS10+O1xufTtcblxuLyoqXG4gKiBvcHRpb25zIHRvIHByb2plY3QgYSByZWxhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlQcm9qZWN0UmVsYXRpb25PcHRpb25zPEU+ID0gKEUgZXh0ZW5kcyB1bmtub3duW10gPyBRdWVyeTxVbnBhY2tlZDxFPj4gOiBRdWVyeVVuaXF1ZTxVbnBhY2tlZDxFPj4pICYge1xuICByZWFkb25seSAkcmVxdWlyZWQ/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBvcHRpb25zIGZvciBmdWxsLXRleHQtc2VhcmNoIG9wZXJhdG9yLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVRleHRTZWFyY2hPcHRpb25zPEU+ID0ge1xuICAvKipcbiAgICogdGV4dCB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgJHZhbHVlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBsaXN0IG9mIGZpZWxkcyB0byBzZWFyY2ggb24uXG4gICAqL1xuICByZWFkb25seSAkZmllbGRzPzogcmVhZG9ubHkgRmllbGRLZXk8RT5bXTtcbn07XG5cbi8qKlxuICogdmFsdWUgZm9yIGEgbG9naWNhbCBmaWx0ZXJpbmcuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyTG9naWNhbDxFPiA9IHJlYWRvbmx5IFF1ZXJ5RmlsdGVyPEU+W107XG5cbi8qKlxuICogY29tcGFyaXNvbiBieSBmaWVsZHMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyRmllbGRNYXA8RT4gPVxuICB8IHsgcmVhZG9ubHkgW0sgaW4gRmllbGRLZXk8RT5dPzogUXVlcnlGaWx0ZXJGaWVsZFZhbHVlPEVbS10+IH1cbiAgfCB7IHJlYWRvbmx5IFtLOiBzdHJpbmddOiBRdWVyeUZpbHRlckZpZWxkVmFsdWU8RVthbnldPiB9O1xuXG4vKipcbiAqIGNvbXBsZXggb3BlcmF0b3JzLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeUZpbHRlck1hcDxFPiA9IFF1ZXJ5RmlsdGVyRmllbGRNYXA8RT4gJiBRdWVyeUZpbHRlclJvb3RPcGVyYXRvcjxFPjtcblxuZXhwb3J0IHR5cGUgUXVlcnlGaWx0ZXJSb290T3BlcmF0b3I8RT4gPSB7XG4gIC8qKlxuICAgKiBqb2lucyBxdWVyeSBjbGF1c2VzIHdpdGggYSBsb2dpY2FsIGBBTkRgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBtYXRjaCBhbGwgdGhlIGNsYXVzZXMuXG4gICAqL1xuICByZWFkb25seSAkYW5kPzogUXVlcnlGaWx0ZXJMb2dpY2FsPEU+O1xuICAvKipcbiAgICogam9pbnMgcXVlcnkgY2xhdXNlcyB3aXRoIGEgbG9naWNhbCBgT1JgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBtYXRjaCBhbnkgb2YgdGhlIGNsYXVzZXMuXG4gICAqL1xuICByZWFkb25seSAkb3I/OiBRdWVyeUZpbHRlckxvZ2ljYWw8RT47XG4gIC8qKlxuICAgKiBqb2lucyBxdWVyeSBjbGF1c2VzIHdpdGggYSBsb2dpY2FsIGBBTkRgLCByZXR1cm5zIHJlY29yZHMgdGhhdCBkbyBub3QgbWF0Y2ggYWxsIHRoZSBjbGF1c2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgJG5vdD86IFF1ZXJ5RmlsdGVyTG9naWNhbDxFPjtcbiAgLyoqXG4gICAqIGpvaW5zIHF1ZXJ5IGNsYXVzZXMgd2l0aCBhIGxvZ2ljYWwgYE9SYCwgcmV0dXJucyByZWNvcmRzIHRoYXQgZG8gbm90IG1hdGNoIGFueSBvZiB0aGUgY2xhdXNlcy5cbiAgICovXG4gIHJlYWRvbmx5ICRub3I/OiBRdWVyeUZpbHRlckxvZ2ljYWw8RT47XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgZmllbGRzIG1hdGNoIGFnYWluc3QgYSBmdWxsLXRleHQgc2VhcmNoIG9mIHRoZSBnaXZlbiBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSAkdGV4dD86IFF1ZXJ5VGV4dFNlYXJjaE9wdGlvbnM8RT47XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSByZWNvcmQgZXhpc3RzIGluIHRoZSBnaXZlbiBzdWItcXVlcnkuXG4gICAqL1xuICByZWFkb25seSAkZXhpc3RzPzogUXVlcnlSYXc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIHRoZSByZWNvcmQgZG9lcyBub3QgZXhpc3RzIGluIHRoZSBnaXZlbiBzdWItcXVlcnkuXG4gICAqL1xuICByZWFkb25seSAkbmV4aXN0cz86IFF1ZXJ5UmF3O1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlGaWx0ZXJGaWVsZE9wZXJhdG9yTWFwPFQ+ID0ge1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5ICRlcT86IEV4cGFuZFNjYWxhcjxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgJG5lPzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogbmVnYXRlcyB0aGUgZ2l2ZW4gY29tcGFyaXNvbi5cbiAgICovXG4gIHJlYWRvbmx5ICRub3Q/OiBRdWVyeUZpbHRlckZpZWxkVmFsdWU8VD47XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5ICRsdD86IEV4cGFuZFNjYWxhcjxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgJGx0ZT86IEV4cGFuZFNjYWxhcjxUPjtcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgJGd0PzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqL1xuICByZWFkb25seSAkZ3RlPzogRXhwYW5kU2NhbGFyPFQ+O1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBiZWdpbnMgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIHNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkc3RhcnRzV2l0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgYmVnaW5zIHdpdGggdGhlIGdpdmVuIHN0cmluZyAoY2FzZSBpbnNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkaXN0YXJ0c1dpdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIHNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkZW5kc1dpdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nIChjYXNlIGluc2Vuc2l0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5ICRpZW5kc1dpdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGdpdmVuIHN0cmluZyAoY2FzZSBzZW5zaXRpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgJGluY2x1ZGVzPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBpcyBjb250YWluZWQgd2l0aGluIHRoZSBnaXZlbiBzdHJpbmcgKGNhc2UgaW5zZW5zaXRpdmUpLlxuICAgKi9cbiAgcmVhZG9ubHkgJGlpbmNsdWRlcz86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSBzdHJpbmcgZnVsZmlsbHMgdGhlIGdpdmVuIHBhdHRlcm4gKGNhc2Ugc2Vuc2l0aXZlKS5cbiAgICovXG4gIHJlYWRvbmx5ICRsaWtlPzogc3RyaW5nO1xuICAvKipcbiAgICogd2hldGhlciBhIHN0cmluZyBmdWxmaWxscyB0aGUgZ2l2ZW4gcGF0dGVybiAoY2FzZSBpbnNlbnNpdGl2ZSkuXG4gICAqL1xuICByZWFkb25seSAkaWxpa2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgc3RyaW5nIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5ICRyZWdleD86IHN0cmluZztcbiAgLyoqXG4gICAqIHdoZXRoZXIgYSB2YWx1ZSBtYXRjaGVzIGFueSBvZiB0aGUgZ2l2ZW4gdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgJGluPzogcmVhZG9ubHkgRXhwYW5kU2NhbGFyPFQ+W107XG4gIC8qKlxuICAgKiB3aGV0aGVyIGEgdmFsdWUgZG9lcyBub3QgbWF0Y2ggYW55IG9mIHRoZSBnaXZlbiB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSAkbmluPzogcmVhZG9ubHkgRXhwYW5kU2NhbGFyPFQ+W107XG59O1xuXG4vKipcbiAqIFZhbHVlIGZvciBhIGZpZWxkIGNvbXBhcmlzb24uXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyRmllbGRWYWx1ZTxUPiA9IFQgfCByZWFkb25seSBUW10gfCBRdWVyeUZpbHRlckZpZWxkT3BlcmF0b3JNYXA8VD4gfCBRdWVyeVJhdztcblxuLyoqXG4gKiBxdWVyeSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyPEU+ID0gSWRWYWx1ZTxFPiB8IHJlYWRvbmx5IElkVmFsdWU8RT5bXSB8IFF1ZXJ5UmF3IHwgUXVlcnlGaWx0ZXJNYXA8RT47XG5cbi8qKlxuICogZGlyZWN0aW9uIGZvciB0aGUgc29ydC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0RGlyZWN0aW9uID0gLTEgfCAxIHwgJ2FzYycgfCAnZGVzYyc7XG5cbi8qKlxuICogc29ydCBieSB0dXBsZXNcbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0VHVwbGVzPEU+ID0gcmVhZG9ubHkgW0ZpZWxkS2V5PEU+LCBRdWVyeVNvcnREaXJlY3Rpb25dW107XG5cbi8qKlxuICogc29ydCBieSBvYmplY3RzLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnRPYmplY3RzPEU+ID0gcmVhZG9ubHkgeyByZWFkb25seSBmaWVsZDogRmllbGRLZXk8RT47IHJlYWRvbmx5IHNvcnQ6IFF1ZXJ5U29ydERpcmVjdGlvbiB9W107XG5cbi8qKlxuICogc29ydCBieSBmaWVsZHMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U29ydEZpZWxkTWFwPEU+ID1cbiAgfCB7XG4gICAgICBbSyBpbiBGaWVsZEtleTxFPl0/OiBRdWVyeVNvcnREaXJlY3Rpb247XG4gICAgfVxuICB8IHsgW0s6IHN0cmluZ106IFF1ZXJ5U29ydERpcmVjdGlvbiB9O1xuXG4vKipcbiAqIHNvcnQgYnkgcmVsYXRpb25zIGZpZWxkcy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0UmVsYXRpb25NYXA8RT4gPSB7XG4gIFtLIGluIFJlbGF0aW9uS2V5PEU+XT86IFF1ZXJ5U29ydE1hcDxVbnBhY2tlZDxFW0tdPj47XG59O1xuXG4vKipcbiAqIHNvcnQgYnkgbWFwLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNvcnRNYXA8RT4gPSBRdWVyeVNvcnRGaWVsZE1hcDxFPiB8IFF1ZXJ5U29ydFJlbGF0aW9uTWFwPEU+O1xuXG4vKipcbiAqIHNvcnQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTb3J0PEU+ID0gUXVlcnlTb3J0TWFwPEU+IHwgUXVlcnlTb3J0VHVwbGVzPEU+IHwgUXVlcnlTb3J0T2JqZWN0czxFPjtcblxuLyoqXG4gKiBwYWdlciBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVBhZ2VyID0ge1xuICAvKipcbiAgICogSW5kZXggZnJvbSB3aGVyZSBzdGFydCB0aGUgc2VhcmNoXG4gICAqL1xuICAkc2tpcD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4IG51bWJlciBvZiByZWNvcmRzIHRvIHJldHJpZXZlXG4gICAqL1xuICAkbGltaXQ/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIHNlYXJjaCBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVNlYXJjaDxFPiA9IHtcbiAgLyoqXG4gICAqIGZpbHRlcmluZyBvcHRpb25zLlxuICAgKi9cbiAgJGZpbHRlcj86IFF1ZXJ5RmlsdGVyPEU+O1xuXG4gIC8qKlxuICAgKiBsaXN0IG9mIGZpZWxkcyB0byBncm91cC5cbiAgICovXG4gICRncm91cD86IHJlYWRvbmx5IEZpZWxkS2V5PEU+W107XG5cbiAgLyoqXG4gICAqIGhhdmluZyBvcHRpb25zLlxuICAgKi9cbiAgJGhhdmluZz86IFF1ZXJ5RmlsdGVyPEU+O1xufSAmIFF1ZXJ5UGFnZXI7XG5cbi8qKlxuICogY3JpdGVyaWEgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlDcml0ZXJpYTxFPiA9IFF1ZXJ5U2VhcmNoPEU+ICYge1xuICAvKipcbiAgICogc29ydGluZyBvcHRpb25zLlxuICAgKi9cbiAgJHNvcnQ/OiBRdWVyeVNvcnQ8RT47XG59O1xuXG4vKipcbiAqIGNyaXRlcmlhIG9uZSBvcHRpb25zLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeU9uZUNyaXRlcmlhPEU+ID0gT21pdDxRdWVyeUNyaXRlcmlhPEU+LCAnJGxpbWl0Jz47XG5cbi8qKlxuICogcXVlcnkgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnk8RT4gPSB7XG4gIC8qKlxuICAgKiBwcm9qZWN0aW9uIG9wdGlvbnMuXG4gICAqL1xuICAkcHJvamVjdD86IFF1ZXJ5UHJvamVjdDxFPjtcbn0gJiBRdWVyeUNyaXRlcmlhPEU+O1xuXG4vKipcbiAqIG9wdGlvbnMgdG8gZ2V0IGEgc2luZ2xlIHJlY29yZC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlPbmU8RT4gPSBPbWl0PFF1ZXJ5PEU+LCAnJGxpbWl0Jz47XG5cbi8qKlxuICogb3B0aW9ucyB0byBnZXQgYW4gdW5pcXVlIHJlY29yZC5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlVbmlxdWU8RT4gPSBQaWNrPFF1ZXJ5T25lPEU+LCAnJHByb2plY3QnIHwgJyRmaWx0ZXInPjtcblxuLyoqXG4gKiBzdHJpbmdpZmllZCBxdWVyeS5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTdHJpbmdpZmllZCA9IHtcbiAgcmVhZG9ubHkgW0sgaW4ga2V5b2YgUXVlcnk8YW55Pl0/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIHJlc3VsdCBvZiBhbiB1cGRhdGUgb3BlcmF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVVwZGF0ZVJlc3VsdCA9IHtcbiAgLyoqXG4gICAqIG51bWJlciBvZiBjaGFuZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIGZpcnN0IGluc2VydGVkIElELlxuICAgKi9cbiAgcmVhZG9ubHkgZmlyc3RJZD86IG51bWJlcjtcbn07XG5cbi8qKlxuICogb3B0aW9ucyBmb3IgdGhlIGByYXdgIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBRdWVyeVJhd0ZuT3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIHRoZSBjdXJyZW50IGRpYWxlY3QuXG4gICAqL1xuICByZWFkb25seSBkaWFsZWN0OiBRdWVyeURpYWxlY3Q7XG4gIC8qKlxuICAgKiB0aGUgcHJlZml4LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogdGhlIGVzY2FwZWQgcHJlZml4LlxuICAgKi9cbiAgcmVhZG9ubHkgZXNjYXBlZFByZWZpeD86IHN0cmluZztcbn07XG5cbi8qKlxuICogYSBgcmF3YCBmdW5jdGlvblxuICovXG5leHBvcnQgdHlwZSBRdWVyeVJhd0ZuID0gKG9wdHM/OiBRdWVyeVJhd0ZuT3B0aW9ucykgPT4gc3RyaW5nO1xuXG5leHBvcnQgY2xhc3MgUXVlcnlSYXcge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSB2YWx1ZTogU2NhbGFyIHwgUXVlcnlSYXdGbixcbiAgICByZWFkb25seSBhbGlhcz86IHN0cmluZyxcbiAgKSB7fVxufVxuXG4vKipcbiAqIGNvbXBhcmlzb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUXVlcnlDb21wYXJpc29uT3B0aW9ucyA9IFF1ZXJ5T3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIHVzZSBwcmVjZWRlbmNlIGZvciB0aGUgY29tcGFyaXNvbiBvciBub3QuXG4gICAqL1xuICByZWFkb25seSB1c2VQcmVjZWRlbmNlPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogcXVlcnkgZmlsdGVyIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RmlsdGVyT3B0aW9ucyA9IFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMgJiB7XG4gIC8qKlxuICAgKiBjbGF1c2UgdG8gYmUgdXNlZCBpbiB0aGUgZmlsdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xhdXNlPzogJ1dIRVJFJyB8ICdIQVZJTkcnIHwgZmFsc2U7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5RGlhbGVjdCB7XG4gIC8qKlxuICAgKiBvYnRhaW5zIHRoZSByZWNvcmRzIG1hdGNoaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdHMgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIGZpbmQ8RSwgUCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlDcml0ZXJpYTxFPiwgcHJvamVjdD86IFAsIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGNvdW50cyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0gZW50aXR5IHRoZSB0YXJnZXQgZW50aXR5XG4gICAqIEBwYXJhbSBxbSB0aGUgY3JpdGVyaWEgb3B0aW9uc1xuICAgKiBAcGFyYW0gb3B0cyB0aGUgcXVlcnkgb3B0aW9uc1xuICAgKi9cbiAgY291bnQ8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGluc2VyIHJlY29yZHMuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRzIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBpbnNlcnQ8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFIHwgcmVhZG9ubHkgRVtdLCBvcHRzPzogUXVlcnlPcHRpb25zKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB1cGRhdGUgcmVjb3Jkcy5cbiAgICogQHBhcmFtIGVudGl0eSB0aGUgdGFyZ2V0IGVudGl0eVxuICAgKiBAcGFyYW0gcW0gdGhlIGNyaXRlcmlhIG9wdGlvbnNcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICogQHBhcmFtIG9wdHMgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIHVwZGF0ZTxFPihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeVNlYXJjaDxFPiwgcGF5bG9hZDogRSwgb3B0cz86IFF1ZXJ5T3B0aW9ucyk6IHN0cmluZztcblxuICAvKipcbiAgICogZGVsZXRlIHJlY29yZHMuXG4gICAqIEBwYXJhbSBlbnRpdHkgdGhlIHRhcmdldCBlbnRpdHlcbiAgICogQHBhcmFtIHFtIHRoZSBjcml0ZXJpYSBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRzIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBkZWxldGU8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIG9wdHM/OiBRdWVyeU9wdGlvbnMpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGVzY2FwZSBhbiBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0gdmFsIHRoZSB2YWx1ZSB0byBiZSBlc2NhcGVkXG4gICAqIEBwYXJhbSBmb3JiaWRRdWFsaWZpZWQgZG9uJ3QgZXNjYXBlIGRvdHNcbiAgICogQHBhcmFtIGFkZERvdCB1c2UgYSBkb3QgYXMgc3VmZml4XG4gICAqL1xuICBlc2NhcGVJZCh2YWw6IHN0cmluZywgZm9yYmlkUXVhbGlmaWVkPzogYm9vbGVhbiwgYWRkRG90PzogYm9vbGVhbik6IHN0cmluZztcblxuICAvKipcbiAgICogZXNjYXBlIGEgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWwgdGhlIHZhbHVlIHRvIGVzY2FwZVxuICAgKi9cbiAgZXNjYXBlKHZhbDogYW55KTogU2NhbGFyO1xufVxuXG5leHBvcnQgdHlwZSBNZXJnZTxFLCBQPiA9IEUgJiAoUCBleHRlbmRzIHN0cmluZ1tdID8ge30gOiB7IFtLIGluIEV4Y2x1ZGU8a2V5b2YgUCwga2V5b2YgRT5dOiBTY2FsYXIgfSk7XG4iXX0=

@@ -100,2 +100,2 @@ import { getKeys } from '../util/index.js';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbGVjdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZGlhbGVjdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBUUwsUUFBUSxHQVFULE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUF3RTtJQUNsRyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQztJQUM5RCxNQUFNLEdBQUcsR0FBRyxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUN6RixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzFCLElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxPQUFPLEdBQUcsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7S0FDckM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFJLElBQW1CLEVBQUUsT0FBVSxFQUFFLFdBQXdCO0lBQ3pGLE9BQU8sZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVELE1BQU0sVUFBVSxl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QUFFLEVBQzNCLFNBQXlCLEVBQUU7SUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsT0FBTztRQUNMLEdBQUcsZ0JBQWdCO1FBQ25CLEdBQUcsZ0JBQWdCO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFJLElBQW1CLEVBQUUsU0FBeUIsRUFBRTtJQUNyRixJQUFJLE1BQU0sWUFBWSxRQUFRLEVBQUU7UUFDOUIsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUF1QixDQUFDO0tBQ2hEO0lBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFRLE1BQWtCLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtRQUNoSCxPQUFPO1lBQ0wsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtTQUNHLENBQUM7S0FDeEI7SUFDRCxPQUFPLE1BQTJCLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEtleXMgfSBmcm9tICcuLi91dGlsL2luZGV4LmpzJztcbmltcG9ydCB7XG4gIEVudGl0eU1ldGEsXG4gIEZpZWxkS2V5LFxuICBRdWVyeVByb2plY3QsXG4gIENhc2NhZGVUeXBlLFxuICBSZWxhdGlvbktleSxcbiAgRmllbGRPcHRpb25zLFxuICBLZXksXG4gIFF1ZXJ5UmF3LFxuICBRdWVyeVNvcnQsXG4gIFF1ZXJ5U29ydE1hcCxcbiAgUXVlcnlSYXdGbk9wdGlvbnMsXG4gIFF1ZXJ5RmlsdGVyLFxuICBRdWVyeUZpbHRlck1hcCxcbiAgT25GaWVsZENhbGxiYWNrLFxuICBNb25nb0lkLFxufSBmcm9tICcuLi90eXBlL2luZGV4LmpzJztcblxudHlwZSBDYWxsYmFja0tleSA9IGtleW9mIFBpY2s8RmllbGRPcHRpb25zLCAnb25JbnNlcnQnIHwgJ29uVXBkYXRlJyB8ICdvbkRlbGV0ZSc+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF3VmFsdWUob3B0czogUXVlcnlSYXdGbk9wdGlvbnMgJiB7IHZhbHVlOiBRdWVyeVJhdzsgYXV0b1ByZWZpeEFsaWFzPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHsgdmFsdWUsIHByZWZpeCA9ICcnLCBkaWFsZWN0LCBhdXRvUHJlZml4QWxpYXMgfSA9IG9wdHM7XG4gIGNvbnN0IHZhbCA9IHR5cGVvZiB2YWx1ZS52YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlKG9wdHMpIDogcHJlZml4ICsgdmFsdWUudmFsdWU7XG4gIGNvbnN0IGFsaWFzID0gdmFsdWUuYWxpYXM7XG4gIGlmIChhbGlhcykge1xuICAgIGNvbnN0IGZ1bGxBbGlhcyA9IGF1dG9QcmVmaXhBbGlhcyA/IHByZWZpeCArIGFsaWFzIDogYWxpYXM7XG4gICAgY29uc3QgZXNjYXBlZEZ1bGxBbGlhcyA9IGRpYWxlY3QuZXNjYXBlSWQoZnVsbEFsaWFzLCB0cnVlKTtcbiAgICByZXR1cm4gYCR7dmFsfSAke2VzY2FwZWRGdWxsQWxpYXN9YDtcbiAgfVxuICByZXR1cm4gdmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdGFibGU8RT4obWV0YTogRW50aXR5TWV0YTxFPiwgcGF5bG9hZDogRSwgY2FsbGJhY2tLZXk6IENhbGxiYWNrS2V5KTogRSB7XG4gIHJldHVybiBnZXRQZXJzaXN0YWJsZXMobWV0YSwgcGF5bG9hZCwgY2FsbGJhY2tLZXkpWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdGFibGVzPEU+KG1ldGE6IEVudGl0eU1ldGE8RT4sIHBheWxvYWQ6IEUgfCBFW10sIGNhbGxiYWNrS2V5OiBDYWxsYmFja0tleSk6IEVbXSB7XG4gIGNvbnN0IHBheWxvYWRzID0gZmlsbE9uRmllbGRzKG1ldGEsIHBheWxvYWQsIGNhbGxiYWNrS2V5KTtcbiAgY29uc3QgcGVyc2lzdGFibGVLZXlzID0gZ2V0S2V5cyhwYXlsb2Fkc1swXSkuZmlsdGVyKChrZXkpID0+IGtleSBpbiBtZXRhLmZpZWxkcykgYXMgRmllbGRLZXk8RT5bXTtcbiAgcmV0dXJuIHBheWxvYWRzLm1hcCgoaXQpID0+XG4gICAgcGVyc2lzdGFibGVLZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGFjY1trZXldID0gaXRba2V5XTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgRSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkQ2FsbGJhY2tWYWx1ZSh2YWw6IE9uRmllbGRDYWxsYmFjaykge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJyA/IHZhbCgpIDogdmFsO1xufVxuXG5mdW5jdGlvbiBmaWxsT25GaWVsZHM8RT4obWV0YTogRW50aXR5TWV0YTxFPiwgcGF5bG9hZDogRSB8IEVbXSwgY2FsbGJhY2tLZXk6IENhbGxiYWNrS2V5KTogRVtdIHtcbiAgY29uc3QgcGF5bG9hZHMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQpID8gcGF5bG9hZCA6IFtwYXlsb2FkXTtcbiAgY29uc3Qga2V5cyA9IGdldEtleXMobWV0YS5maWVsZHMpLmZpbHRlcigoa2V5KSA9PiBtZXRhLmZpZWxkc1trZXldW2NhbGxiYWNrS2V5XSk7XG4gIHJldHVybiBwYXlsb2Fkcy5tYXAoKGl0KSA9PiB7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKGl0W2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpdFtrZXldID0gZ2V0RmllbGRDYWxsYmFja1ZhbHVlKG1ldGEuZmllbGRzW2tleV1bY2FsbGJhY2tLZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGl0O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBlcnNpc3RhYmxlUmVsYXRpb25zPEU+KG1ldGE6IEVudGl0eU1ldGE8RT4sIHBheWxvYWQ6IEUsIGFjdGlvbjogQ2FzY2FkZVR5cGUpOiBSZWxhdGlvbktleTxFPltdIHtcbiAgY29uc3Qga2V5cyA9IGdldEtleXMocGF5bG9hZCk7XG4gIHJldHVybiBrZXlzLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgY29uc3QgcmVsT3B0cyA9IG1ldGEucmVsYXRpb25zW2tleSBhcyBSZWxhdGlvbktleTxFPl07XG4gICAgcmV0dXJuIHJlbE9wdHMgJiYgaXNDYXNjYWRhYmxlKGFjdGlvbiwgcmVsT3B0cy5jYXNjYWRlKTtcbiAgfSkgYXMgUmVsYXRpb25LZXk8RT5bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2FzY2FkYWJsZShhY3Rpb246IENhc2NhZGVUeXBlLCBjb25maWd1cmF0aW9uPzogYm9vbGVhbiB8IENhc2NhZGVUeXBlKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cbiAgcmV0dXJuIGNvbmZpZ3VyYXRpb24gPT09IGFjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2plY3RSZWxhdGlvbktleXM8RT4obWV0YTogRW50aXR5TWV0YTxFPiwgcHJvamVjdDogUXVlcnlQcm9qZWN0PEU+KTogUmVsYXRpb25LZXk8RT5bXSB7XG4gIGNvbnN0IGtleXMgPSBnZXRQb3NpdGl2ZUtleXMocHJvamVjdCk7XG4gIHJldHVybiBrZXlzLmZpbHRlcigoa2V5KSA9PiBrZXkgaW4gbWV0YS5yZWxhdGlvbnMpIGFzIFJlbGF0aW9uS2V5PEU+W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb2plY3RpbmdSZWxhdGlvbnM8RT4obWV0YTogRW50aXR5TWV0YTxFPiwgcHJvamVjdDogUXVlcnlQcm9qZWN0PEU+KTogYm9vbGVhbiB7XG4gIGNvbnN0IGtleXMgPSBnZXRQb3NpdGl2ZUtleXMocHJvamVjdCk7XG4gIHJldHVybiBrZXlzLnNvbWUoKGtleSkgPT4ga2V5IGluIG1ldGEucmVsYXRpb25zKTtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zaXRpdmVLZXlzPEU+KHByb2plY3Q6IFF1ZXJ5UHJvamVjdDxFPik6IEtleTxFPltdIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocHJvamVjdCkpIHtcbiAgICByZXR1cm4gcHJvamVjdCBhcyBLZXk8RT5bXTtcbiAgfVxuICByZXR1cm4gZ2V0S2V5cyhwcm9qZWN0KS5maWx0ZXIoKGtleSkgPT4gcHJvamVjdFtrZXldKSBhcyBLZXk8RT5bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU29ydE1hcDxFPihzb3J0OiBRdWVyeVNvcnQ8RT4pOiBRdWVyeVNvcnRNYXA8RT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzb3J0KSkge1xuICAgIHJldHVybiBzb3J0LnJlZHVjZSgoYWNjLCBpdCkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXQpKSB7XG4gICAgICAgIGFjY1tpdFswXV0gPSBpdFsxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjY1tpdC5maWVsZF0gPSBpdC5zb3J0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBRdWVyeVNvcnRNYXA8RT4pO1xuICB9XG4gIHJldHVybiBzb3J0IGFzIFF1ZXJ5U29ydE1hcDxFPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF1Z21lbnRGaWx0ZXI8RT4oXG4gIG1ldGE6IEVudGl0eU1ldGE8RT4sXG4gIHRhcmdldDogUXVlcnlGaWx0ZXI8RT4gPSB7fSxcbiAgc291cmNlOiBRdWVyeUZpbHRlcjxFPiA9IHt9XG4pOiBRdWVyeUZpbHRlcjxFPiB7XG4gIGNvbnN0IHRhcmdldENvbXBhcmlzb24gPSBnZXRRdWVyeUZpbHRlckFzTWFwKG1ldGEsIHRhcmdldCk7XG4gIGNvbnN0IHNvdXJjZUNvbXBhcmlzb24gPSBnZXRRdWVyeUZpbHRlckFzTWFwKG1ldGEsIHNvdXJjZSk7XG4gIHJldHVybiB7XG4gICAgLi4udGFyZ2V0Q29tcGFyaXNvbixcbiAgICAuLi5zb3VyY2VDb21wYXJpc29uLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVlcnlGaWx0ZXJBc01hcDxFPihtZXRhOiBFbnRpdHlNZXRhPEU+LCBmaWx0ZXI6IFF1ZXJ5RmlsdGVyPEU+ID0ge30pOiBRdWVyeUZpbHRlck1hcDxFPiB7XG4gIGlmIChmaWx0ZXIgaW5zdGFuY2VvZiBRdWVyeVJhdykge1xuICAgIHJldHVybiB7ICRhbmQ6IFtmaWx0ZXJdIH0gYXMgUXVlcnlGaWx0ZXJNYXA8RT47XG4gIH1cbiAgaWYgKHR5cGVvZiBmaWx0ZXIgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZmlsdGVyKSB8fCB0eXBlb2YgKGZpbHRlciBhcyBNb25nb0lkKS50b0hleFN0cmluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB7XG4gICAgICBbbWV0YS5pZF06IGZpbHRlcixcbiAgICB9IGFzIFF1ZXJ5RmlsdGVyTWFwPEU+O1xuICB9XG4gIHJldHVybiBmaWx0ZXIgYXMgUXVlcnlGaWx0ZXJNYXA8RT47XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbGVjdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZGlhbGVjdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBUUwsUUFBUSxHQVFULE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUF3RTtJQUNsRyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQztJQUM5RCxNQUFNLEdBQUcsR0FBRyxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUN6RixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzFCLElBQUksS0FBSyxFQUFFO1FBQ1QsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRCxPQUFPLEdBQUcsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7S0FDckM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFJLElBQW1CLEVBQUUsT0FBVSxFQUFFLFdBQXdCO0lBQ3pGLE9BQU8sZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVELE1BQU0sVUFBVSxl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QUFFLEVBQzNCLFNBQXlCLEVBQUU7SUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsT0FBTztRQUNMLEdBQUcsZ0JBQWdCO1FBQ25CLEdBQUcsZ0JBQWdCO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFJLElBQW1CLEVBQUUsU0FBeUIsRUFBRTtJQUNyRixJQUFJLE1BQU0sWUFBWSxRQUFRLEVBQUU7UUFDOUIsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUF1QixDQUFDO0tBQ2hEO0lBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFRLE1BQWtCLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtRQUNoSCxPQUFPO1lBQ0wsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtTQUNHLENBQUM7S0FDeEI7SUFDRCxPQUFPLE1BQTJCLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEtleXMgfSBmcm9tICcuLi91dGlsL2luZGV4LmpzJztcbmltcG9ydCB7XG4gIEVudGl0eU1ldGEsXG4gIEZpZWxkS2V5LFxuICBRdWVyeVByb2plY3QsXG4gIENhc2NhZGVUeXBlLFxuICBSZWxhdGlvbktleSxcbiAgRmllbGRPcHRpb25zLFxuICBLZXksXG4gIFF1ZXJ5UmF3LFxuICBRdWVyeVNvcnQsXG4gIFF1ZXJ5U29ydE1hcCxcbiAgUXVlcnlSYXdGbk9wdGlvbnMsXG4gIFF1ZXJ5RmlsdGVyLFxuICBRdWVyeUZpbHRlck1hcCxcbiAgT25GaWVsZENhbGxiYWNrLFxuICBNb25nb0lkLFxufSBmcm9tICcuLi90eXBlL2luZGV4LmpzJztcblxudHlwZSBDYWxsYmFja0tleSA9IGtleW9mIFBpY2s8RmllbGRPcHRpb25zLCAnb25JbnNlcnQnIHwgJ29uVXBkYXRlJyB8ICdvbkRlbGV0ZSc+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF3VmFsdWUob3B0czogUXVlcnlSYXdGbk9wdGlvbnMgJiB7IHZhbHVlOiBRdWVyeVJhdzsgYXV0b1ByZWZpeEFsaWFzPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IHsgdmFsdWUsIHByZWZpeCA9ICcnLCBkaWFsZWN0LCBhdXRvUHJlZml4QWxpYXMgfSA9IG9wdHM7XG4gIGNvbnN0IHZhbCA9IHR5cGVvZiB2YWx1ZS52YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlKG9wdHMpIDogcHJlZml4ICsgdmFsdWUudmFsdWU7XG4gIGNvbnN0IGFsaWFzID0gdmFsdWUuYWxpYXM7XG4gIGlmIChhbGlhcykge1xuICAgIGNvbnN0IGZ1bGxBbGlhcyA9IGF1dG9QcmVmaXhBbGlhcyA/IHByZWZpeCArIGFsaWFzIDogYWxpYXM7XG4gICAgY29uc3QgZXNjYXBlZEZ1bGxBbGlhcyA9IGRpYWxlY3QuZXNjYXBlSWQoZnVsbEFsaWFzLCB0cnVlKTtcbiAgICByZXR1cm4gYCR7dmFsfSAke2VzY2FwZWRGdWxsQWxpYXN9YDtcbiAgfVxuICByZXR1cm4gdmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdGFibGU8RT4obWV0YTogRW50aXR5TWV0YTxFPiwgcGF5bG9hZDogRSwgY2FsbGJhY2tLZXk6IENhbGxiYWNrS2V5KTogRSB7XG4gIHJldHVybiBnZXRQZXJzaXN0YWJsZXMobWV0YSwgcGF5bG9hZCwgY2FsbGJhY2tLZXkpWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGVyc2lzdGFibGVzPEU+KG1ldGE6IEVudGl0eU1ldGE8RT4sIHBheWxvYWQ6IEUgfCBFW10sIGNhbGxiYWNrS2V5OiBDYWxsYmFja0tleSk6IEVbXSB7XG4gIGNvbnN0IHBheWxvYWRzID0gZmlsbE9uRmllbGRzKG1ldGEsIHBheWxvYWQsIGNhbGxiYWNrS2V5KTtcbiAgY29uc3QgcGVyc2lzdGFibGVLZXlzID0gZ2V0S2V5cyhwYXlsb2Fkc1swXSkuZmlsdGVyKChrZXkpID0+IGtleSBpbiBtZXRhLmZpZWxkcykgYXMgRmllbGRLZXk8RT5bXTtcbiAgcmV0dXJuIHBheWxvYWRzLm1hcCgoaXQpID0+XG4gICAgcGVyc2lzdGFibGVLZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGFjY1trZXldID0gaXRba2V5XTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgRSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZENhbGxiYWNrVmFsdWUodmFsOiBPbkZpZWxkQ2FsbGJhY2spIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicgPyB2YWwoKSA6IHZhbDtcbn1cblxuZnVuY3Rpb24gZmlsbE9uRmllbGRzPEU+KG1ldGE6IEVudGl0eU1ldGE8RT4sIHBheWxvYWQ6IEUgfCBFW10sIGNhbGxiYWNrS2V5OiBDYWxsYmFja0tleSk6IEVbXSB7XG4gIGNvbnN0IHBheWxvYWRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkKSA/IHBheWxvYWQgOiBbcGF5bG9hZF07XG4gIGNvbnN0IGtleXMgPSBnZXRLZXlzKG1ldGEuZmllbGRzKS5maWx0ZXIoKGtleSkgPT4gbWV0YS5maWVsZHNba2V5XVtjYWxsYmFja0tleV0pO1xuICByZXR1cm4gcGF5bG9hZHMubWFwKChpdCkgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGlmIChpdFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaXRba2V5XSA9IGdldEZpZWxkQ2FsbGJhY2tWYWx1ZShtZXRhLmZpZWxkc1trZXldW2NhbGxiYWNrS2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpdDtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQZXJzaXN0YWJsZVJlbGF0aW9uczxFPihtZXRhOiBFbnRpdHlNZXRhPEU+LCBwYXlsb2FkOiBFLCBhY3Rpb246IENhc2NhZGVUeXBlKTogUmVsYXRpb25LZXk8RT5bXSB7XG4gIGNvbnN0IGtleXMgPSBnZXRLZXlzKHBheWxvYWQpO1xuICByZXR1cm4ga2V5cy5maWx0ZXIoKGtleSkgPT4ge1xuICAgIGNvbnN0IHJlbE9wdHMgPSBtZXRhLnJlbGF0aW9uc1trZXkgYXMgUmVsYXRpb25LZXk8RT5dO1xuICAgIHJldHVybiByZWxPcHRzICYmIGlzQ2FzY2FkYWJsZShhY3Rpb24sIHJlbE9wdHMuY2FzY2FkZSk7XG4gIH0pIGFzIFJlbGF0aW9uS2V5PEU+W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Nhc2NhZGFibGUoYWN0aW9uOiBDYXNjYWRlVHlwZSwgY29uZmlndXJhdGlvbj86IGJvb2xlYW4gfCBDYXNjYWRlVHlwZSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24gPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG4gIHJldHVybiBjb25maWd1cmF0aW9uID09PSBhY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9qZWN0UmVsYXRpb25LZXlzPEU+KG1ldGE6IEVudGl0eU1ldGE8RT4sIHByb2plY3Q6IFF1ZXJ5UHJvamVjdDxFPik6IFJlbGF0aW9uS2V5PEU+W10ge1xuICBjb25zdCBrZXlzID0gZ2V0UG9zaXRpdmVLZXlzKHByb2plY3QpO1xuICByZXR1cm4ga2V5cy5maWx0ZXIoKGtleSkgPT4ga2V5IGluIG1ldGEucmVsYXRpb25zKSBhcyBSZWxhdGlvbktleTxFPltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9qZWN0aW5nUmVsYXRpb25zPEU+KG1ldGE6IEVudGl0eU1ldGE8RT4sIHByb2plY3Q6IFF1ZXJ5UHJvamVjdDxFPik6IGJvb2xlYW4ge1xuICBjb25zdCBrZXlzID0gZ2V0UG9zaXRpdmVLZXlzKHByb2plY3QpO1xuICByZXR1cm4ga2V5cy5zb21lKChrZXkpID0+IGtleSBpbiBtZXRhLnJlbGF0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGdldFBvc2l0aXZlS2V5czxFPihwcm9qZWN0OiBRdWVyeVByb2plY3Q8RT4pOiBLZXk8RT5bXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb2plY3QpKSB7XG4gICAgcmV0dXJuIHByb2plY3QgYXMgS2V5PEU+W107XG4gIH1cbiAgcmV0dXJuIGdldEtleXMocHJvamVjdCkuZmlsdGVyKChrZXkpID0+IHByb2plY3Rba2V5XSkgYXMgS2V5PEU+W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNvcnRNYXA8RT4oc29ydDogUXVlcnlTb3J0PEU+KTogUXVlcnlTb3J0TWFwPEU+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc29ydCkpIHtcbiAgICByZXR1cm4gc29ydC5yZWR1Y2UoKGFjYywgaXQpID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0KSkge1xuICAgICAgICBhY2NbaXRbMF1dID0gaXRbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY2NbaXQuZmllbGRdID0gaXQuc29ydDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUXVlcnlTb3J0TWFwPEU+KTtcbiAgfVxuICByZXR1cm4gc29ydCBhcyBRdWVyeVNvcnRNYXA8RT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50RmlsdGVyPEU+KFxuICBtZXRhOiBFbnRpdHlNZXRhPEU+LFxuICB0YXJnZXQ6IFF1ZXJ5RmlsdGVyPEU+ID0ge30sXG4gIHNvdXJjZTogUXVlcnlGaWx0ZXI8RT4gPSB7fSxcbik6IFF1ZXJ5RmlsdGVyPEU+IHtcbiAgY29uc3QgdGFyZ2V0Q29tcGFyaXNvbiA9IGdldFF1ZXJ5RmlsdGVyQXNNYXAobWV0YSwgdGFyZ2V0KTtcbiAgY29uc3Qgc291cmNlQ29tcGFyaXNvbiA9IGdldFF1ZXJ5RmlsdGVyQXNNYXAobWV0YSwgc291cmNlKTtcbiAgcmV0dXJuIHtcbiAgICAuLi50YXJnZXRDb21wYXJpc29uLFxuICAgIC4uLnNvdXJjZUNvbXBhcmlzb24sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeUZpbHRlckFzTWFwPEU+KG1ldGE6IEVudGl0eU1ldGE8RT4sIGZpbHRlcjogUXVlcnlGaWx0ZXI8RT4gPSB7fSk6IFF1ZXJ5RmlsdGVyTWFwPEU+IHtcbiAgaWYgKGZpbHRlciBpbnN0YW5jZW9mIFF1ZXJ5UmF3KSB7XG4gICAgcmV0dXJuIHsgJGFuZDogW2ZpbHRlcl0gfSBhcyBRdWVyeUZpbHRlck1hcDxFPjtcbiAgfVxuICBpZiAodHlwZW9mIGZpbHRlciAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShmaWx0ZXIpIHx8IHR5cGVvZiAoZmlsdGVyIGFzIE1vbmdvSWQpLnRvSGV4U3RyaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFttZXRhLmlkXTogZmlsdGVyLFxuICAgIH0gYXMgUXVlcnlGaWx0ZXJNYXA8RT47XG4gIH1cbiAgcmV0dXJuIGZpbHRlciBhcyBRdWVyeUZpbHRlck1hcDxFPjtcbn1cbiJdfQ==

@@ -50,2 +50,2 @@ import { hasKeys, getKeys } from './object.util.js';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9zcWwudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE1BQU0sVUFBVSxVQUFVLENBQUksR0FBTSxFQUFFLEdBQVk7SUFDaEQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUN4QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQzFGLEVBQU8sQ0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFJLEdBQU0sRUFBRSxHQUFXLEVBQUUsR0FBUSxFQUFFLEdBQVk7SUFDckUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNDLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUTtRQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQzVGLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUksT0FBWTtJQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDOUMsT0FBTyxPQUFPLENBQUM7S0FDaEI7SUFFRCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sT0FBTyxDQUFDO0tBQ2hCO0lBRUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDekIsTUFBTSxHQUFHLEdBQUcsRUFBTyxDQUFDO1FBRXBCLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ3JCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDckIsU0FBUzthQUNWO1lBQ0QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUN2RCxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTt3QkFDaEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztxQkFDZjtvQkFDRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNsRDtpQkFBTTtnQkFDTCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3JCO1NBQ0Y7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUksR0FBTTtJQUNqQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDdEMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsRUFBK0IsQ0FBQyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNLZXlzLCBnZXRLZXlzIH0gZnJvbSAnLi9vYmplY3QudXRpbC5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0T2JqZWN0PEU+KG9iajogRSwgcHJlPzogc3RyaW5nKTogRSB7XG4gIHJldHVybiBnZXRLZXlzKG9iaikucmVkdWNlKFxuICAgIChhY2MsIGtleSkgPT4gZmxhdE9iamVjdEVudHJ5KGFjYywga2V5LCBvYmpba2V5XSwgdHlwZW9mIG9ialtrZXldID09PSAnb2JqZWN0JyA/ICcnIDogcHJlKSxcbiAgICB7fSBhcyBFXG4gICk7XG59XG5cbmZ1bmN0aW9uIGZsYXRPYmplY3RFbnRyeTxFPihtYXA6IEUsIGtleTogc3RyaW5nLCB2YWw6IGFueSwgcHJlPzogc3RyaW5nKTogRSB7XG4gIGNvbnN0IHByZWZpeCA9IHByZSA/IGAke3ByZX0uJHtrZXl9YCA6IGtleTtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnXG4gICAgPyBPYmplY3Qua2V5cyh2YWwpLnJlZHVjZSgoYWNjLCBwcm9wKSA9PiBmbGF0T2JqZWN0RW50cnkoYWNjLCBwcm9wLCB2YWxbcHJvcF0sIHByZWZpeCksIG1hcClcbiAgICA6IHsgLi4ubWFwLCBbcHJlZml4XTogdmFsIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmZsYXRPYmplY3RzPFQ+KG9iamVjdHM6IFRbXSk6IFRbXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShvYmplY3RzKSB8fCAhb2JqZWN0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gb2JqZWN0cztcbiAgfVxuXG4gIGNvbnN0IGF0dHJzUGF0aHMgPSBvYnRhaW5BdHRyc1BhdGhzKG9iamVjdHNbMF0pO1xuXG4gIGlmICghaGFzS2V5cyhhdHRyc1BhdGhzKSkge1xuICAgIHJldHVybiBvYmplY3RzO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdHMubWFwKChyb3cpID0+IHtcbiAgICBjb25zdCBkdG8gPSB7fSBhcyBUO1xuXG4gICAgZm9yIChjb25zdCBjb2wgaW4gcm93KSB7XG4gICAgICBpZiAocm93W2NvbF0gPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBhdHRyUGF0aCA9IGF0dHJzUGF0aHNbY29sXTtcbiAgICAgIGlmIChhdHRyUGF0aCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBhdHRyUGF0aC5zbGljZSgwLCAtMSkucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgYWNjW2tleV0gIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjW2tleV07XG4gICAgICAgIH0sIGR0byk7XG4gICAgICAgIHRhcmdldFthdHRyUGF0aFthdHRyUGF0aC5sZW5ndGggLSAxXV0gPSByb3dbY29sXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGR0b1tjb2xdID0gcm93W2NvbF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGR0bztcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9idGFpbkF0dHJzUGF0aHM8VD4ocm93OiBUKSB7XG4gIHJldHVybiBnZXRLZXlzKHJvdykucmVkdWNlKChhY2MsIGNvbCkgPT4ge1xuICAgIGlmIChjb2wuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgYWNjW2NvbF0gPSBjb2wuc3BsaXQoJy4nKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30gYXMgeyBbazogc3RyaW5nXTogc3RyaW5nW10gfSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9zcWwudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE1BQU0sVUFBVSxVQUFVLENBQUksR0FBTSxFQUFFLEdBQVk7SUFDaEQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUN4QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQzFGLEVBQU8sQ0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFJLEdBQU0sRUFBRSxHQUFXLEVBQUUsR0FBUSxFQUFFLEdBQVk7SUFDckUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNDLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUTtRQUM1QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQzVGLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUksT0FBWTtJQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDOUMsT0FBTyxPQUFPLENBQUM7S0FDaEI7SUFFRCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sT0FBTyxDQUFDO0tBQ2hCO0lBRUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDekIsTUFBTSxHQUFHLEdBQUcsRUFBTyxDQUFDO1FBRXBCLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ3JCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDckIsU0FBUzthQUNWO1lBQ0QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUN2RCxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTt3QkFDaEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztxQkFDZjtvQkFDRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNsRDtpQkFBTTtnQkFDTCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3JCO1NBQ0Y7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUksR0FBTTtJQUNqQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQ3hCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ1gsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQ0QsRUFBK0IsQ0FDaEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNLZXlzLCBnZXRLZXlzIH0gZnJvbSAnLi9vYmplY3QudXRpbC5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0T2JqZWN0PEU+KG9iajogRSwgcHJlPzogc3RyaW5nKTogRSB7XG4gIHJldHVybiBnZXRLZXlzKG9iaikucmVkdWNlKFxuICAgIChhY2MsIGtleSkgPT4gZmxhdE9iamVjdEVudHJ5KGFjYywga2V5LCBvYmpba2V5XSwgdHlwZW9mIG9ialtrZXldID09PSAnb2JqZWN0JyA/ICcnIDogcHJlKSxcbiAgICB7fSBhcyBFLFxuICApO1xufVxuXG5mdW5jdGlvbiBmbGF0T2JqZWN0RW50cnk8RT4obWFwOiBFLCBrZXk6IHN0cmluZywgdmFsOiBhbnksIHByZT86IHN0cmluZyk6IEUge1xuICBjb25zdCBwcmVmaXggPSBwcmUgPyBgJHtwcmV9LiR7a2V5fWAgOiBrZXk7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnb2JqZWN0J1xuICAgID8gT2JqZWN0LmtleXModmFsKS5yZWR1Y2UoKGFjYywgcHJvcCkgPT4gZmxhdE9iamVjdEVudHJ5KGFjYywgcHJvcCwgdmFsW3Byb3BdLCBwcmVmaXgpLCBtYXApXG4gICAgOiB7IC4uLm1hcCwgW3ByZWZpeF06IHZhbCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5mbGF0T2JqZWN0czxUPihvYmplY3RzOiBUW10pOiBUW10ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkob2JqZWN0cykgfHwgIW9iamVjdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG9iamVjdHM7XG4gIH1cblxuICBjb25zdCBhdHRyc1BhdGhzID0gb2J0YWluQXR0cnNQYXRocyhvYmplY3RzWzBdKTtcblxuICBpZiAoIWhhc0tleXMoYXR0cnNQYXRocykpIHtcbiAgICByZXR1cm4gb2JqZWN0cztcbiAgfVxuXG4gIHJldHVybiBvYmplY3RzLm1hcCgocm93KSA9PiB7XG4gICAgY29uc3QgZHRvID0ge30gYXMgVDtcblxuICAgIGZvciAoY29uc3QgY29sIGluIHJvdykge1xuICAgICAgaWYgKHJvd1tjb2xdID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgYXR0clBhdGggPSBhdHRyc1BhdGhzW2NvbF07XG4gICAgICBpZiAoYXR0clBhdGgpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gYXR0clBhdGguc2xpY2UoMCwgLTEpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGFjY1trZXldICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgYWNjW2tleV0gPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjY1trZXldO1xuICAgICAgICB9LCBkdG8pO1xuICAgICAgICB0YXJnZXRbYXR0clBhdGhbYXR0clBhdGgubGVuZ3RoIC0gMV1dID0gcm93W2NvbF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkdG9bY29sXSA9IHJvd1tjb2xdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkdG87XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvYnRhaW5BdHRyc1BhdGhzPFQ+KHJvdzogVCkge1xuICByZXR1cm4gZ2V0S2V5cyhyb3cpLnJlZHVjZShcbiAgICAoYWNjLCBjb2wpID0+IHtcbiAgICAgIGlmIChjb2wuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICBhY2NbY29sXSA9IGNvbC5zcGxpdCgnLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9IGFzIHsgW2s6IHN0cmluZ106IHN0cmluZ1tdIH0sXG4gICk7XG59XG4iXX0=

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc