Socket
Socket
Sign inDemoInstall

nukak

Package Overview
Dependencies
2
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.31 to 0.2.32

querier/abstractQuerierPool.d.ts

32

CHANGELOG.md

@@ -1,17 +0,31 @@

## 0.2.21 (Apr 15, 2023)
# Changelog
### fix(nukak-browser): check if ids are returned before use $in to delete them
All notable changes to this project will be documented in this file. Please add new changes to the top.
- https://github.com/rogerpadilla/nukak/commit/463ff888de7c578c069668f810b049d36624166b
date format is [yyyy-mm-dd]
## 0.2.21 (Apr 15, 2023)
## [0.3.0] - 2023-10-18
### Reuse community open-source npm packages to escape literal-values according to each DB vendor
- Add support for `transaction` operations using a QuerierPool.
Automatically wraps the code of the callback inside a transaction, and auto-releases the querier after running.
- Update dependencies.
- https://github.com/rogerpadilla/nukak/commit/b64539e273589c46a22420d3260b3465b83e5e79
```ts
const ids = await querierPool.transaction(async (querier) => {
const data = await querier.findMany(...);
const ids = await querier.insertMany(...);
return ids;
});
```
## 0.2.0 (Jan 02, 2023)
## [0.2.21] 2023-04-15
### Move projection to a new parameter to improve type inference of the results
- fix(nukak-browser): check if ids are returned before use $in to delete them.
- Support dynamic operations while projecting fields, and move `$project` as an independent parameter in the `find*` functions [#55](https://github.com/rogerpadilla/nukak/pull/55)
- Reuse community open-source npm packages to escape literal-values according to each DB vendor.
## [0.2.0] 2023-01-02
- Move projection to a new parameter to improve type inference of the results.
- Support dynamic operations while projecting fields, and move `$project` as an independent parameter in the `find*` functions [#55](https://github.com/rogerpadilla/nukak/pull/55).

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

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

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

"reflect-metadata": "^0.1.13",
"tslib": "^2.6.1"
"tslib": "^2.6.2"
},
"devDependencies": {
"@types/node": "^20.4.5",
"@types/sqlstring": "^2.3.0",
"@types/uuid": "^9.0.2",
"@types/node": "^20.8.7",
"@types/sqlstring": "^2.3.1",
"@types/uuid": "^9.0.6",
"copyfiles": "^2.4.1",
"rimraf": "^5.0.1",
"typescript": "^5.1.6",
"uuid": "^9.0.0"
"rimraf": "^5.0.5",
"typescript": "^5.2.2",
"uuid": "^9.0.1"
},

@@ -75,2 +75,2 @@ "author": "Roger Padilla",

"gitHead": "9b67d4c713b755788a5e708a4cd400ab9e30fbaa"
}
}

@@ -24,3 +24,3 @@ import type { IdValue, Merge, Querier, QueryCriteria, QueryOneCriteria, QueryOptions, QueryProject, QuerySearch, RelationKey, Repository, Type } from '../type/index.js';

abstract readonly hasOpenTransaction: boolean;
transaction<T>(callback: (querier?: ThisType<Querier>) => Promise<T>): Promise<T>;
transaction<T>(callback: () => Promise<T>): Promise<T>;
abstract beginTransaction(): Promise<void>;

@@ -27,0 +27,0 @@ abstract commitTransaction(): Promise<void>;

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

await this.beginTransaction();
const res = await callback(this);
const res = await callback();
await this.commitTransaction();

@@ -225,2 +225,2 @@ return res;

}
//# 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=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RRdWVyaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJpZXIvYWJzdHJhY3RRdWVyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE1BQU0sT0FBZ0IsZUFBZTtJQUNuQyxXQUFXLENBQStCLE1BQWUsRUFBRSxFQUFjLEVBQUUsT0FBVztRQUNwRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUErQixNQUFlLEVBQUUsRUFBdUIsRUFBRSxPQUFXO1FBQy9GLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQVFELGdCQUFnQixDQUErQixNQUFlLEVBQUUsRUFBb0IsRUFBRSxPQUFXO1FBQy9GLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUlELEtBQUssQ0FBQyxTQUFTLENBQUksTUFB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RTtZQUN0QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEUsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDcEUsT0FBTztTQUNSO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBSSxNQUFlO1FBQzlCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUlELEtBQUssQ0FBQyxXQUFXLENBQUksUUFBMEI7UUFDN0MsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxRQUFRLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDakMsTUFBTSxHQUFHLENBQUM7U0FDWDtJQUNILENBQUM7Q0FTRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgSWRWYWx1ZSxcbiAgTWVyZ2UsXG4gIFF1ZXJpZXIsXG4gIFF1ZXJ5LFxuICBRdWVyeUNyaXRlcmlhLFxuICBRdWVyeU9uZUNyaXRlcmlhLFxuICBRdWVyeU9wdGlvbnMsXG4gIFF1ZXJ5UHJvamVjdCxcbiAgUXVlcnlTZWFyY2gsXG4gIFJlbGF0aW9uS2V5LFxuICBSZWxhdGlvblZhbHVlLFxuICBSZXBvc2l0b3J5LFxuICBUeXBlLFxufSBmcm9tICcuLi90eXBlL2luZGV4LmpzJztcbmltcG9ydCB7IGdldE1ldGEgfSBmcm9tICcuLi9lbnRpdHkvZGVjb3JhdG9yL2luZGV4LmpzJztcbmltcG9ydCB7IGNsb25lLCBnZXRLZXlzLCBnZXRQcm9qZWN0UmVsYXRpb25LZXlzLCBnZXRQZXJzaXN0YWJsZVJlbGF0aW9ucyB9IGZyb20gJy4uL3V0aWwvaW5kZXguanMnO1xuaW1wb3J0IHsgR2VuZXJpY1JlcG9zaXRvcnkgfSBmcm9tICcuLi9yZXBvc2l0b3J5L2luZGV4LmpzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UXVlcmllciBpbXBsZW1lbnRzIFF1ZXJpZXIge1xuICBmaW5kT25lQnlJZDxFLCBQIGV4dGVuZHMgUXVlcnlQcm9qZWN0PEU+PihlbnRpdHk6IFR5cGU8RT4sIGlkOiBJZFZhbHVlPEU+LCBwcm9qZWN0PzogUCkge1xuICAgIHJldHVybiB0aGlzLmZpbmRPbmUoZW50aXR5LCB7ICRmaWx0ZXI6IGlkIH0sIHByb2plY3QpO1xuICB9XG5cbiAgYXN5bmMgZmluZE9uZTxFLCBQIGV4dGVuZHMgUXVlcnlQcm9qZWN0PEU+PihlbnRpdHk6IFR5cGU8RT4sIHFtOiBRdWVyeU9uZUNyaXRlcmlhPEU+LCBwcm9qZWN0PzogUCkge1xuICAgIGNvbnN0IHJvd3MgPSBhd2FpdCB0aGlzLmZpbmRNYW55KGVudGl0eSwgeyAuLi5xbSwgJGxpbWl0OiAxIH0sIHByb2plY3QpO1xuICAgIHJldHVybiByb3dzWzBdO1xuICB9XG5cbiAgYWJzdHJhY3QgZmluZE1hbnk8RSwgUCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oXG4gICAgZW50aXR5OiBUeXBlPEU+LFxuICAgIHFtOiBRdWVyeUNyaXRlcmlhPEU+LFxuICAgIHByb2plY3Q/OiBQLFxuICApOiBQcm9taXNlPE1lcmdlPEUsIFA+W10+O1xuXG4gIGZpbmRNYW55QW5kQ291bnQ8RSwgUCBleHRlbmRzIFF1ZXJ5UHJvamVjdDxFPj4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlDcml0ZXJpYTxFPiwgcHJvamVjdD86IFApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3RoaXMuZmluZE1hbnkoZW50aXR5LCBxbSwgcHJvamVjdCksIHRoaXMuY291bnQoZW50aXR5LCBxbSldKTtcbiAgfVxuXG4gIGFic3RyYWN0IGNvdW50PEU+KGVudGl0eTogVHlwZTxFPiwgcW0/OiBRdWVyeVNlYXJjaDxFPik6IFByb21pc2U8bnVtYmVyPjtcblxuICBhc3luYyBpbnNlcnRPbmU8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFKSB7XG4gICAgY29uc3QgW2lkXSA9IGF3YWl0IHRoaXMuaW5zZXJ0TWFueShlbnRpdHksIFtwYXlsb2FkXSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgYWJzdHJhY3QgaW5zZXJ0TWFueTxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEVbXSk6IFByb21pc2U8SWRWYWx1ZTxFPltdPjtcblxuICB1cGRhdGVPbmVCeUlkPEU+KGVudGl0eTogVHlwZTxFPiwgaWQ6IElkVmFsdWU8RT4sIHBheWxvYWQ6IEUpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVNYW55KGVudGl0eSwgeyAkZmlsdGVyOiBpZCB9LCBwYXlsb2FkKTtcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZU1hbnk8RT4oZW50aXR5OiBUeXBlPEU+LCBxbTogUXVlcnlTZWFyY2g8RT4sIHBheWxvYWQ6IEUpOiBQcm9taXNlPG51bWJlcj47XG5cbiAgZGVsZXRlT25lQnlJZDxFPihlbnRpdHk6IFR5cGU8RT4sIGlkOiBJZFZhbHVlPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlTWFueShlbnRpdHksIHsgJGZpbHRlcjogaWQgfSwgb3B0cyk7XG4gIH1cblxuICBhYnN0cmFjdCBkZWxldGVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcW06IFF1ZXJ5U2VhcmNoPEU+LCBvcHRzPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+O1xuXG4gIGFzeW5jIHNhdmVPbmU8RT4oZW50aXR5OiBUeXBlPEU+LCBwYXlsb2FkOiBFKSB7XG4gICAgY29uc3QgW2lkXSA9IGF3YWl0IHRoaXMuc2F2ZU1hbnkoZW50aXR5LCBbcGF5bG9hZF0pO1xuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIGFzeW5jIHNhdmVNYW55PEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRVtdKSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCBpZHM6IElkVmFsdWU8RT5bXSA9IFtdO1xuICAgIGNvbnN0IHVwZGF0ZXM6IEVbXSA9IFtdO1xuICAgIGNvbnN0IGluc2VydHM6IEVbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBpdCBvZiBwYXlsb2FkKSB7XG4gICAgICBpZiAoaXRbbWV0YS5pZF0pIHtcbiAgICAgICAgaWYgKGdldEtleXMoaXQpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGlkcy5wdXNoKGl0W21ldGEuaWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVzLnB1c2goaXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnNlcnRzLnB1c2goaXQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAuLi5pZHMsXG4gICAgICAuLi4oaW5zZXJ0cy5sZW5ndGggPyBhd2FpdCB0aGlzLmluc2VydE1hbnkoZW50aXR5LCBpbnNlcnRzKSA6IFtdKSxcbiAgICAgIC4uLnVwZGF0ZXMubWFwKGFzeW5jIChpdCkgPT4ge1xuICAgICAgICBjb25zdCB7IFttZXRhLmlkXTogaWQsIC4uLmRhdGEgfSA9IGl0O1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9uZUJ5SWQoZW50aXR5LCBpZCwgZGF0YSBhcyBFKTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgfSksXG4gICAgXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZmluZFRvTWFueVJlbGF0aW9uczxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEVbXSwgcHJvamVjdDogUXVlcnlQcm9qZWN0PEU+KSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCByZWxhdGlvbnMgPSBnZXRQcm9qZWN0UmVsYXRpb25LZXlzKG1ldGEsIHByb2plY3QpO1xuXG4gICAgZm9yIChjb25zdCByZWxLZXkgb2YgcmVsYXRpb25zKSB7XG4gICAgICBjb25zdCByZWxPcHRzID0gbWV0YS5yZWxhdGlvbnNbcmVsS2V5XTtcbiAgICAgIGNvbnN0IHJlbEVudGl0eSA9IHJlbE9wdHMuZW50aXR5KCk7XG4gICAgICBjb25zdCByZWxQcm9qZWN0ID0gY2xvbmUocHJvamVjdFtyZWxLZXkgYXMgc3RyaW5nXSk7XG4gICAgICBjb25zdCByZWxRdWVyeTogUXVlcnk8dW5rbm93bj4gPVxuICAgICAgICByZWxQcm9qZWN0ID09PSB0cnVlIHx8IHJlbFByb2plY3QgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8ge31cbiAgICAgICAgICA6IEFycmF5LmlzQXJyYXkocmVsUHJvamVjdClcbiAgICAgICAgICA/IHsgJHByb2plY3Q6IHJlbFByb2plY3QgfVxuICAgICAgICAgIDogcmVsUHJvamVjdDtcbiAgICAgIGNvbnN0IGlkcyA9IHBheWxvYWQubWFwKChpdCkgPT4gaXRbbWV0YS5pZF0pO1xuXG4gICAgICBpZiAocmVsT3B0cy50aHJvdWdoKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsRmllbGQgPSByZWxPcHRzLnJlZmVyZW5jZXNbMF0ubG9jYWw7XG4gICAgICAgIGNvbnN0IHRocm91Z2hFbnRpdHkgPSByZWxPcHRzLnRocm91Z2goKTtcbiAgICAgICAgY29uc3QgdGhyb3VnaE1ldGEgPSBnZXRNZXRhKHRocm91Z2hFbnRpdHkpO1xuICAgICAgICBjb25zdCB0YXJnZXRSZWxLZXkgPSBPYmplY3Qua2V5cyh0aHJvdWdoTWV0YS5yZWxhdGlvbnMpLmZpbmQoKGtleSkgPT5cbiAgICAgICAgICB0aHJvdWdoTWV0YS5yZWxhdGlvbnNba2V5XS5yZWZlcmVuY2VzLnNvbWUoKHsgbG9jYWwgfSkgPT4gbG9jYWwgPT09IHJlbE9wdHMucmVmZXJlbmNlc1sxXS5sb2NhbCksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRocm91Z2hGb3VuZHMgPSBhd2FpdCB0aGlzLmZpbmRNYW55KFxuICAgICAgICAgIHRocm91Z2hFbnRpdHksXG4gICAgICAgICAge1xuICAgICAgICAgICAgJGZpbHRlcjoge1xuICAgICAgICAgICAgICBbbG9jYWxGaWVsZF06IGlkcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbbG9jYWxGaWVsZF06IHRydWUsXG4gICAgICAgICAgICBbdGFyZ2V0UmVsS2V5XToge1xuICAgICAgICAgICAgICAuLi5yZWxRdWVyeSxcbiAgICAgICAgICAgICAgJHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmb3VuZHMgPSB0aHJvdWdoRm91bmRzLm1hcCgoaXQpID0+ICh7IC4uLml0W3RhcmdldFJlbEtleV0sIFtsb2NhbEZpZWxkXTogaXRbbG9jYWxGaWVsZF0gfSkpO1xuICAgICAgICB0aGlzLnB1dENoaWxkcmVuSW5QYXJlbnRzKHBheWxvYWQsIGZvdW5kcywgbWV0YS5pZCwgbG9jYWxGaWVsZCwgcmVsS2V5KTtcbiAgICAgIH0gZWxzZSBpZiAocmVsT3B0cy5jYXJkaW5hbGl0eSA9PT0gJzFtJykge1xuICAgICAgICBjb25zdCBmb3JlaWduRmllbGQgPSByZWxPcHRzLnJlZmVyZW5jZXNbMF0uZm9yZWlnbjtcbiAgICAgICAgaWYgKHJlbFF1ZXJ5LiRwcm9qZWN0KSB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsUXVlcnkuJHByb2plY3QpKSB7XG4gICAgICAgICAgICBpZiAoIXJlbFF1ZXJ5LiRwcm9qZWN0LmluY2x1ZGVzKGZvcmVpZ25GaWVsZCkpIHtcbiAgICAgICAgICAgICAgcmVsUXVlcnkuJHByb2plY3QucHVzaChmb3JlaWduRmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIXJlbFF1ZXJ5LiRwcm9qZWN0W2ZvcmVpZ25GaWVsZF0pIHtcbiAgICAgICAgICAgIHJlbFF1ZXJ5LiRwcm9qZWN0W2ZvcmVpZ25GaWVsZF0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZWxRdWVyeS4kZmlsdGVyID0geyBbZm9yZWlnbkZpZWxkXTogaWRzIH07XG4gICAgICAgIGNvbnN0IHsgJHByb2plY3Q6IHJlbFByb2plY3QsIC4uLnJlbFFtIH0gPSByZWxRdWVyeTtcbiAgICAgICAgY29uc3QgZm91bmRzID0gYXdhaXQgdGhpcy5maW5kTWFueShyZWxFbnRpdHksIHJlbFFtLCByZWxQcm9qZWN0KTtcbiAgICAgICAgdGhpcy5wdXRDaGlsZHJlbkluUGFyZW50cyhwYXlsb2FkLCBmb3VuZHMsIG1ldGEuaWQsIGZvcmVpZ25GaWVsZCwgcmVsS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcHV0Q2hpbGRyZW5JblBhcmVudHM8RT4oXG4gICAgcGFyZW50czogRVtdLFxuICAgIGNoaWxkcmVuOiBFW10sXG4gICAgcGFyZW50SWRLZXk6IHN0cmluZyxcbiAgICByZWZlcmVuY2VLZXk6IHN0cmluZyxcbiAgICByZWxLZXk6IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW5CeVBhcmVudE1hcCA9IGNoaWxkcmVuLnJlZHVjZSgoYWNjLCBjaGlsZCkgPT4ge1xuICAgICAgY29uc3QgcGFyZW5JZCA9IGNoaWxkW3JlZmVyZW5jZUtleV07XG4gICAgICBpZiAoIWFjY1twYXJlbklkXSkge1xuICAgICAgICBhY2NbcGFyZW5JZF0gPSBbXTtcbiAgICAgIH1cbiAgICAgIGFjY1twYXJlbklkXS5wdXNoKGNoaWxkKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuXG4gICAgZm9yIChjb25zdCBwYXJlbnQgb2YgcGFyZW50cykge1xuICAgICAgY29uc3QgcGFyZW50SWQgPSBwYXJlbnRbcGFyZW50SWRLZXldO1xuICAgICAgcGFyZW50W3JlbEtleV0gPSBjaGlsZHJlbkJ5UGFyZW50TWFwW3BhcmVudElkXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaW5zZXJ0UmVsYXRpb25zPEU+KGVudGl0eTogVHlwZTxFPiwgcGF5bG9hZDogRVtdKSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHBheWxvYWQubWFwKChpdCkgPT4ge1xuICAgICAgICBjb25zdCByZWxLZXlzID0gZ2V0UGVyc2lzdGFibGVSZWxhdGlvbnMobWV0YSwgaXQsICdwZXJzaXN0Jyk7XG4gICAgICAgIGlmICghcmVsS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJlbEtleXMubWFwKChyZWxLZXkpID0+IHRoaXMuc2F2ZVJlbGF0aW9uKGVudGl0eSwgaXQsIHJlbEtleSkpKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlUmVsYXRpb25zPEU+KGVudGl0eTogVHlwZTxFPiwgY3JpdGVyaWE6IFF1ZXJ5U2VhcmNoPEU+LCBwYXlsb2FkOiBFKSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCByZWxLZXlzID0gZ2V0UGVyc2lzdGFibGVSZWxhdGlvbnMobWV0YSwgcGF5bG9hZCwgJ3BlcnNpc3QnKTtcblxuICAgIGlmICghcmVsS2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb3VuZHMgPSBhd2FpdCB0aGlzLmZpbmRNYW55KGVudGl0eSwgY3JpdGVyaWEsIFttZXRhLmlkXSk7XG5cbiAgICBjb25zdCBpZHMgPSBmb3VuZHMubWFwKChmb3VuZCkgPT4gZm91bmRbbWV0YS5pZF0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBpZHMubWFwKChpZCkgPT5cbiAgICAgICAgUHJvbWlzZS5hbGwocmVsS2V5cy5tYXAoKHJlbEtleSkgPT4gdGhpcy5zYXZlUmVsYXRpb24oZW50aXR5LCB7IC4uLnBheWxvYWQsIFttZXRhLmlkXTogaWQgfSwgcmVsS2V5LCB0cnVlKSkpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGRlbGV0ZVJlbGF0aW9uczxFPihlbnRpdHk6IFR5cGU8RT4sIGlkczogSWRWYWx1ZTxFPltdLCBvcHRzPzogUXVlcnlPcHRpb25zKSB7XG4gICAgY29uc3QgbWV0YSA9IGdldE1ldGEoZW50aXR5KTtcbiAgICBjb25zdCByZWxLZXlzID0gZ2V0UGVyc2lzdGFibGVSZWxhdGlvbnMobWV0YSwgbWV0YS5yZWxhdGlvbnMgYXMgRSwgJ2RlbGV0ZScpO1xuXG4gICAgZm9yIChjb25zdCByZWxLZXkgb2YgcmVsS2V5cykge1xuICAgICAgY29uc3QgcmVsT3B0cyA9IG1ldGEucmVsYXRpb25zW3JlbEtleV07XG4gICAgICBjb25zdCByZWxFbnRpdHkgPSByZWxPcHRzLmVudGl0eSgpO1xuICAgICAgY29uc3QgbG9jYWxGaWVsZCA9IHJlbE9wdHMucmVmZXJlbmNlc1swXS5sb2NhbDtcbiAgICAgIGlmIChyZWxPcHRzLnRocm91Z2gpIHtcbiAgICAgICAgY29uc3QgdGhyb3VnaEVudGl0eSA9IHJlbE9wdHMudGhyb3VnaCgpO1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZU1hbnkodGhyb3VnaEVudGl0eSwgeyAkZmlsdGVyOiB7IFtsb2NhbEZpZWxkXTogaWRzIH0gfSwgb3B0cyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlTWFueShyZWxFbnRpdHksIHsgW2xvY2FsRmllbGRdOiBpZHMgfSwgb3B0cyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNhdmVSZWxhdGlvbjxFPihlbnRpdHk6IFR5cGU8RT4sIHBheWxvYWQ6IEUsIHJlbEtleTogUmVsYXRpb25LZXk8RT4sIGlzVXBkYXRlPzogYm9vbGVhbikge1xuICAgIGNvbnN0IG1ldGEgPSBnZXRNZXRhKGVudGl0eSk7XG4gICAgY29uc3QgaWQgPSBwYXlsb2FkW21ldGEuaWRdO1xuICAgIGNvbnN0IHsgZW50aXR5OiBlbnRpdHlHZXR0ZXIsIGNhcmRpbmFsaXR5LCByZWZlcmVuY2VzLCB0aHJvdWdoIH0gPSBtZXRhLnJlbGF0aW9uc1tyZWxLZXldO1xuICAgIGNvbnN0IHJlbEVudGl0eSA9IGVudGl0eUdldHRlcigpO1xuICAgIGNvbnN0IHJlbFBheWxvYWQgPSBwYXlsb2FkW3JlbEtleV0gYXMgdW5rbm93biBhcyBSZWxhdGlvblZhbHVlPEU+W107XG5cbiAgICBpZiAoY2FyZGluYWxpdHkgPT09ICcxbScgfHwgY2FyZGluYWxpdHkgPT09ICdtbScpIHtcbiAgICAgIGlmICh0aHJvdWdoKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsRmllbGQgPSByZWZlcmVuY2VzWzBdLmxvY2FsO1xuXG4gICAgICAgIGNvbnN0IHRocm91Z2hFbnRpdHkgPSB0aHJvdWdoKCk7XG4gICAgICAgIGlmIChpc1VwZGF0ZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlTWFueSh0aHJvdWdoRW50aXR5LCB7ICRmaWx0ZXI6IHsgW2xvY2FsRmllbGRdOiBpZCB9IH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWxQYXlsb2FkKSB7XG4gICAgICAgICAgY29uc3Qgc2F2ZWRJZHMgPSBhd2FpdCB0aGlzLnNhdmVNYW55KHJlbEVudGl0eSwgcmVsUGF5bG9hZCk7XG4gICAgICAgICAgY29uc3QgdGhyb3VnaEJvZGllcyA9IHNhdmVkSWRzLm1hcCgocmVsSWQpID0+ICh7XG4gICAgICAgICAgICBbcmVmZXJlbmNlc1swXS5sb2NhbF06IGlkLFxuICAgICAgICAgICAgW3JlZmVyZW5jZXNbMV0ubG9jYWxdOiByZWxJZCxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnNlcnRNYW55KHRocm91Z2hFbnRpdHksIHRocm91Z2hCb2RpZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvcmVpZ25GaWVsZCA9IHJlZmVyZW5jZXNbMF0uZm9yZWlnbjtcbiAgICAgIGlmIChpc1VwZGF0ZSkge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZU1hbnkocmVsRW50aXR5LCB7ICRmaWx0ZXI6IHsgW2ZvcmVpZ25GaWVsZF06IGlkIH0gfSk7XG4gICAgICB9XG4gICAgICBpZiAocmVsUGF5bG9hZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0IG9mIHJlbFBheWxvYWQpIHtcbiAgICAgICAgICBpdFtmb3JlaWduRmllbGRdID0gaWQ7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlTWFueShyZWxFbnRpdHksIHJlbFBheWxvYWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjYXJkaW5hbGl0eSA9PT0gJzExJykge1xuICAgICAgY29uc3QgZm9yZWlnbkZpZWxkID0gcmVmZXJlbmNlc1swXS5mb3JlaWduO1xuICAgICAgaWYgKHJlbFBheWxvYWQgPT09IG51bGwpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVNYW55KHJlbEVudGl0eSwgeyAkZmlsdGVyOiB7IFtmb3JlaWduRmllbGRdOiBpZCB9IH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnNhdmVPbmUocmVsRW50aXR5LCB7IC4uLnJlbFBheWxvYWQsIFtmb3JlaWduRmllbGRdOiBpZCB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2FyZGluYWxpdHkgPT09ICdtMScgJiYgcmVsUGF5bG9hZCkge1xuICAgICAgY29uc3QgbG9jYWxGaWVsZCA9IHJlZmVyZW5jZXNbMF0ubG9jYWw7XG4gICAgICBjb25zdCByZWZlcmVuY2VJZCA9IGF3YWl0IHRoaXMuaW5zZXJ0T25lKHJlbEVudGl0eSwgcmVsUGF5bG9hZCk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9uZUJ5SWQoZW50aXR5LCBpZCwgeyBbbG9jYWxGaWVsZF06IHJlZmVyZW5jZUlkIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlcG9zaXRvcnk8RT4oZW50aXR5OiBUeXBlPEU+KTogUmVwb3NpdG9yeTxFPiB7XG4gICAgcmV0dXJuIG5ldyBHZW5lcmljUmVwb3NpdG9yeShlbnRpdHksIHRoaXMpO1xuICB9XG5cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaGFzT3BlblRyYW5zYWN0aW9uOiBib29sZWFuO1xuXG4gIGFzeW5jIHRyYW5zYWN0aW9uPFQ+KGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPFQ+KSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgY2FsbGJhY2soKTtcbiAgICAgIGF3YWl0IHRoaXMuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBhd2FpdCB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCBiZWdpblRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgYWJzdHJhY3QgY29tbWl0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPjtcblxuICBhYnN0cmFjdCByb2xsYmFja1RyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgYWJzdHJhY3QgcmVsZWFzZSgpOiBQcm9taXNlPHZvaWQ+O1xufVxuIl19
export * from './abstractQuerier.js';
export * from './abstractSqlQuerier.js';
export * from './abstractQuerierPool.js';
export * from './decorator/index.js';
export * from './abstractQuerier.js';
export * from './abstractSqlQuerier.js';
export * from './abstractQuerierPool.js';
export * from './decorator/index.js';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcmllci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3RRdWVyaWVyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3RTcWxRdWVyaWVyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9yL2luZGV4LmpzJztcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcmllci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdFF1ZXJpZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdFNxbFF1ZXJpZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdFF1ZXJpZXJQb29sLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9yL2luZGV4LmpzJztcbiJdfQ==

@@ -32,3 +32,3 @@ import type { Type } from './utility.js';

*/
transaction<T>(callback: (querier?: ThisType<Querier>) => Promise<T>): Promise<T>;
transaction<T>(callback: () => Promise<T>): Promise<T>;
/**

@@ -35,0 +35,0 @@ * starts a new transaction in this querier.

export {};
//# 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==
//# 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+KTogUmVwb3NpdG9yeTxFPjtcblxuICAvKipcbiAgICogd2hldGhlciB0aGlzIHF1ZXJpZXIgaXMgaW4gYSB0cmFuc2FjdGlvbiBvciBub3QuXG4gICAqL1xuICByZWFkb25seSBoYXNPcGVuVHJhbnNhY3Rpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHJ1biB0aGUgZ2l2ZW4gY2FsbGJhY2sgaW5zaWRlIGEgdHJhbnNhY3Rpb24gaW4gdGhpcyBxdWVyaWVyLlxuICAgKi9cbiAgdHJhbnNhY3Rpb248VD4oY2FsbGJhY2s6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+O1xuXG4gIC8qKlxuICAgKiBzdGFydHMgYSBuZXcgdHJhbnNhY3Rpb24gaW4gdGhpcyBxdWVyaWVyLlxuICAgKi9cbiAgYmVnaW5UcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBjb21taXRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRyYW5zYWN0aW9uIGluIHRoaXMgcXVlcmllci5cbiAgICovXG4gIGNvbW1pdFRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIGFib3J0cyB0aGUgY3VycmVudGx5IGFjdGl2ZSB0cmFuc2FjdGlvbiBpbiB0aGlzIHF1ZXJpZXIuXG4gICAqL1xuICByb2xsYmFja1RyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIHJlbGVhc2UgdGhlIHF1ZXJpZXIgdG8gdGhlIHBvb2wuXG4gICAqL1xuICByZWxlYXNlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogbG9nZ2VyIGZ1bmN0aW9uIHRvIGRlYnVnIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIExvZ2dlciA9IChtZXNzYWdlOiB1bmtub3duLCAuLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd247XG5cbmV4cG9ydCB0eXBlIEV4dHJhT3B0aW9ucyA9IHtcbiAgcmVhZG9ubHkgbG9nZ2VyPzogTG9nZ2VyO1xufTtcbiJdfQ==

@@ -15,2 +15,7 @@ import { ExtraOptions, Querier } from './querier.js';

/**
* Automatically wraps the given callback inside a transaction, and auto-releases the querier after running.
* @param callback the function to execute inside the transaction context.
*/
transaction<T>(callback: (querier: Querier) => Promise<T>): Promise<T>;
/**
* end the pool.

@@ -17,0 +22,0 @@ */

export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllclBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9xdWVyaWVyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXh0cmFPcHRpb25zLCBRdWVyaWVyIH0gZnJvbSAnLi9xdWVyaWVyLmpzJztcblxuLyoqXG4gKiBxdWVyaWVyIHBvb2wuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJpZXJQb29sPFEgZXh0ZW5kcyBRdWVyaWVyID0gUXVlcmllcj4gPSB7XG4gIC8qKlxuICAgKiBleHRyYSBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBleHRyYT86IEV4dHJhT3B0aW9ucztcblxuICAvKipcbiAgICogZ2V0IGEgcXVlcmllciBmcm9tIHRoZSBwb29sLlxuICAgKi9cbiAgZ2V0UXVlcmllcjogKCkgPT4gUHJvbWlzZTxRPjtcblxuICAvKipcbiAgICogZW5kIHRoZSBwb29sLlxuICAgKi9cbiAgZW5kKCk6IFByb21pc2U8dm9pZD47XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllclBvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZS9xdWVyaWVyUG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXh0cmFPcHRpb25zLCBRdWVyaWVyIH0gZnJvbSAnLi9xdWVyaWVyLmpzJztcblxuLyoqXG4gKiBxdWVyaWVyIHBvb2wuXG4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJpZXJQb29sPFEgZXh0ZW5kcyBRdWVyaWVyID0gUXVlcmllcj4gPSB7XG4gIC8qKlxuICAgKiBleHRyYSBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSBleHRyYT86IEV4dHJhT3B0aW9ucztcblxuICAvKipcbiAgICogZ2V0IGEgcXVlcmllciBmcm9tIHRoZSBwb29sLlxuICAgKi9cbiAgZ2V0UXVlcmllcjogKCkgPT4gUHJvbWlzZTxRPjtcblxuICAvKipcbiAgICogQXV0b21hdGljYWxseSB3cmFwcyB0aGUgZ2l2ZW4gY2FsbGJhY2sgaW5zaWRlIGEgdHJhbnNhY3Rpb24sIGFuZCBhdXRvLXJlbGVhc2VzIHRoZSBxdWVyaWVyIGFmdGVyIHJ1bm5pbmcuXG4gICAqIEBwYXJhbSBjYWxsYmFjayB0aGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBpbnNpZGUgdGhlIHRyYW5zYWN0aW9uIGNvbnRleHQuXG4gICAqL1xuICB0cmFuc2FjdGlvbjxUPihjYWxsYmFjazogKHF1ZXJpZXI6IFF1ZXJpZXIpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+O1xuXG4gIC8qKlxuICAgKiBlbmQgdGhlIHBvb2wuXG4gICAqL1xuICBlbmQoKTogUHJvbWlzZTx2b2lkPjtcbn07XG4iXX0=
SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc