Socket
Socket
Sign inDemoInstall

deso-protocol

Package Overview
Dependencies
52
Maintainers
4
Versions
210
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.6.6-beta.4 to 2.6.6-beta.5

2

package.json
{
"name": "deso-protocol",
"version": "2.6.6-beta.4",
"version": "2.6.6-beta.5",
"license": "MIT",

@@ -5,0 +5,0 @@ "description": "Client side typescript/javascript SDK for building web3 applications for the DeSo blockchain.",

@@ -140,2 +140,11 @@ export function compareTransactionSpendingLimits(expectedPermissions, actualPermissions) {

}, []);
if (result.StakeLimitMap) {
result.StakeLimitMap = Object.values(result.StakeLimitMap);
}
if (result.UnstakeLimitMap) {
result.UnstakeLimitMap = Object.values(result.UnstakeLimitMap);
}
if (result.UnlockStakeLimitMap) {
result.UnlockStakeLimitMap = Object.values(result.UnlockStakeLimitMap);
}
if (result.AccessGroupLimitMap) {

@@ -220,2 +229,2 @@ result.AccessGroupLimitMap = Object.values(result.AccessGroupLimitMap);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvcGVybWlzc2lvbnMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxtQkFBNEQsRUFDNUQsaUJBQW1EO0lBRW5ELElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBRTdCLG9FQUFvRTtJQUNwRSxJQUFJLGlCQUFpQixFQUFFLFdBQVcsRUFBRTtRQUNsQyxPQUFPLGlCQUFpQixDQUFDO0tBQzFCO0lBRUQsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2pELDBFQUEwRTtRQUMxRSxzRUFBc0U7UUFDdEUscUVBQXFFO1FBQ3JFLHdFQUF3RTtRQUN4RSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pCLEtBQUsscUJBQXFCO2dCQUN4QixJQUNFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNuRCxPQUFPLENBQ0wsR0FBRyxDQUFDLFNBQVMsS0FBSyxLQUFLO3dCQUN2QixHQUFHLENBQUMsa0JBQWtCLEtBQUssRUFBRTt3QkFDN0IsR0FBRyxDQUFDLGFBQWEsS0FBSyxLQUFLO3dCQUMzQixHQUFHLENBQUMsT0FBTzs0QkFDVCxjQUFjLENBQ1osbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQ3pELEVBQUUsT0FBTyxDQUNaLENBQ0osQ0FBQztnQkFDSixDQUFDLENBQUMsRUFDRjtvQkFDQSxPQUFPO2lCQUNSO2dCQUNELE1BQU07WUFDUixLQUFLLDJCQUEyQjtnQkFDOUIsSUFDRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVB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QUssSUFBSSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlIH0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRzKFxuICBleHBlY3RlZFBlcm1pc3Npb25zOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMsXG4gIGFjdHVhbFBlcm1pc3Npb25zOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZVxuKTogYm9vbGVhbiB7XG4gIGxldCBoYXNBbGxQZXJtaXNzaW9ucyA9IHRydWU7XG5cbiAgLy8gaWYgdGhlIGtleSBpcyB1bmxpbWl0ZWQgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGFueXRoaW5nIGVsc2VcbiAgaWYgKGFjdHVhbFBlcm1pc3Npb25zPy5Jc1VubGltaXRlZCkge1xuICAgIHJldHVybiBoYXNBbGxQZXJtaXNzaW9ucztcbiAgfVxuXG4gIHdhbGtPYmooZXhwZWN0ZWRQZXJtaXNzaW9ucywgKGV4cGVjdGVkVmFsLCBwYXRoKSA9PiB7XG4gICAgLy8gSWYgdGhlIGFjdHVhbCBwZXJtaXNzaW9ucyBhcmUgY29uZmlndXJlZCB3aXRoIGFueSBvZiB0aGUgc3BlY2lhbCBcImFsbG93XG4gICAgLy8gYW55dGhpbmdcIiBtYXBwaW5ncyB0aGVuIHdlIHJld3JpdGUgdGhlIGxvb2t1cCBwYXRoIGZvciBhbnkgZXhwbGljaXRcbiAgICAvLyBtYXBwaW5nIHRvIG1hdGNoIG9uIHRoZSBcImFsbG93IGFueVwiIG1hcHBpbmcuIEluIHNvbWUgY2FzZXMsIHNpbXBseVxuICAgIC8vIGNvbXBhcmUgdGhlIE9wQ291bnRzIGFuZCByZXR1cm4gZWFybHkgaWYgdGhlaXIgY2FuIGJlIG9ubHkgMSBtYXBwaW5nLlxuICAgIHN3aXRjaCAocGF0aD8uWzBdKSB7XG4gICAgICBjYXNlICdBY2Nlc3NHcm91cExpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5BY2Nlc3NHcm91cExpbWl0TWFwPy5maW5kKChtYXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIG1hcC5TY29wZVR5cGUgPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5BY2Nlc3NHcm91cEtleU5hbWUgPT09ICcnICYmXG4gICAgICAgICAgICAgIG1hcC5PcGVyYXRpb25UeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBMaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgICAgPy5PcENvdW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwPy5maW5kKChtYXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIG1hcC5TY29wZVR5cGUgPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5BY2Nlc3NHcm91cEtleU5hbWUgPT09ICcnICYmXG4gICAgICAgICAgICAgIG1hcC5PcGVyYXRpb25UeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcD8uW1xuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGF0aFsxXSlcbiAgICAgICAgICAgICAgICAgIF0/Lk9wQ291bnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fzc29jaWF0aW9uTGltaXRNYXAnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgYWN0dWFsUGVybWlzc2lvbnM/LkFzc29jaWF0aW9uTGltaXRNYXA/LmZpbmQoKG1hcCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgbWFwLkFzc29jaWF0aW9uQ2xhc3MgPT09XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQXNzb2NpYXRpb25MaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgID8uQXNzb2NpYXRpb25DbGFzcyAmJlxuICAgICAgICAgICAgICBtYXAuQXBwU2NvcGVUeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuQXNzb2NpYXRpb25UeXBlID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuQXNzb2NpYXRpb25PcGVyYXRpb24gPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5PcENvdW50ID49XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplQ291bnQoXG4gICAgICAgICAgICAgICAgICBleHBlY3RlZFBlcm1pc3Npb25zPy5Bc3NvY2lhdGlvbkxpbWl0TWFwPy5bTnVtYmVyKHBhdGhbMV0pXVxuICAgICAgICAgICAgICAgICAgICA/Lk9wQ291bnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXAnOlxuICAgICAgICBpZiAoYWN0dWFsUGVybWlzc2lvbnM/LkNyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA/LlsnJ10pIHtcbiAgICAgICAgICBwYXRoID1cbiAgICAgICAgICAgIHR5cGVvZiBhY3R1YWxQZXJtaXNzaW9ucz8uQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcFsnJ10/LmFueSA9PT1cbiAgICAgICAgICAgICdudW1iZXInXG4gICAgICAgICAgICAgID8gWydDcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwJywgJycsICdhbnknXVxuICAgICAgICAgICAgICA6IFsnQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcCcsICcnLCBwYXRoW3BhdGgubGVuZ3RoIC0gMV1dO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTkZUT3BlcmF0aW9uTGltaXRNYXAnOlxuICAgICAgICBpZiAoYWN0dWFsUGVybWlzc2lvbnM/Lk5GVE9wZXJhdGlvbkxpbWl0TWFwPy5bJyddPy5bMF0pIHtcbiAgICAgICAgICBwYXRoID1cbiAgICAgICAgICAgIHR5cGVvZiBhY3R1YWxQZXJtaXNzaW9ucz8uTkZUT3BlcmF0aW9uTGltaXRNYXA/LlsnJ10/LlswXT8uYW55ID09PVxuICAgICAgICAgICAgJ251bWJlcidcbiAgICAgICAgICAgICAgPyBbJ05GVE9wZXJhdGlvbkxpbWl0TWFwJywgJycsICcwJywgJ2FueSddXG4gICAgICAgICAgICAgIDogWydORlRPcGVyYXRpb25MaW1pdE1hcCcsICcnLCAnMCcsIHBhdGhbcGF0aC5sZW5ndGggLSAxXV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBUT0RPOiBzdXBwb3J0IGZvciBtYWtpbmcgc3VyZSBhIGRlcml2ZWQga2V5IGhhcyB0aGVzZSBsaW1pdHMuLi5cbiAgICAgIC8vIEBqYWNrc29uZGVhbiAtIHRoaXMgaXMgYSBsaXR0bGUgbW9yZSBhbm5veWluZyBzaW5jZVxuICAgICAgLy8gc3Rha2UgYW5kIHVuc3Rha2UgbGltaXRzIGRvbid0IGhhdmUgYW4gb3AgY291bnQsIGJ1dCByYXRoZXIgYSBkZXNvIGxpbWl0LlxuICAgICAgY2FzZSAnU3Rha2VMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uU3Rha2VMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2sgPT09ICcnICYmXG4gICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LlN0YWtlTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgPy5TdGFrZUxpbWl0ICYmXG4gICAgICAgICAgICAgIHBhcnNlSW50KG1hcC5TdGFrZUxpbWl0LCAxNikgPj1cbiAgICAgICAgICAgICAgICBwYXJzZUludChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LlN0YWtlTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICAgID8uU3Rha2VMaW1pdCxcbiAgICAgICAgICAgICAgICAgIDE2XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdVbnN0YWtlTGltaXRNYXAnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgYWN0dWFsUGVybWlzc2lvbnM/LlVuc3Rha2VMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2sgPT09ICcnICYmXG4gICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LlVuc3Rha2VMaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICA/LlVuc3Rha2VMaW1pdCAmJlxuICAgICAgICAgICAgICBwYXJzZUludChtYXAuVW5zdGFrZUxpbWl0LCAxNikgPj1cbiAgICAgICAgICAgICAgICBwYXJzZUludChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LlVuc3Rha2VMaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgICAgPy5VbnN0YWtlTGltaXQsXG4gICAgICAgICAgICAgICAgICAxNlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVW5sb2NrU3Rha2VMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uVW5sb2NrU3Rha2VMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2sgPT09ICcnICYmXG4gICAgICAgICAgICAgIG1hcC5PcENvdW50ID49XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplQ291bnQoXG4gICAgICAgICAgICAgICAgICBleHBlY3RlZFBlcm1pc3Npb25zPy5VbmxvY2tTdGFrZUxpbWl0TWFwPy5bTnVtYmVyKHBhdGhbMV0pXVxuICAgICAgICAgICAgICAgICAgICA/Lk9wQ291bnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xvY2t1cExpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5Mb2NrdXBMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuUHJvZmlsZVB1YmxpY0tleUJhc2U1OENoZWNrID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uTG9ja3VwTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICAgID8uT3BDb3VudFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFZhbCA9IGdldERlZXBWYWx1ZShhY3R1YWxQZXJtaXNzaW9ucywgcGF0aCk7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgYWN0dWFsVmFsID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgKHR5cGVvZiBhY3R1YWxWYWwgPT09ICdudW1iZXInICYmXG4gICAgICAgIGFjdHVhbFZhbCA8IG5vcm1hbGl6ZUNvdW50KGV4cGVjdGVkVmFsKSkgfHxcbiAgICAgICh0eXBlb2YgYWN0dWFsVmFsID09PSAnc3RyaW5nJyAmJiBhY3R1YWxWYWwgIT09IGV4cGVjdGVkVmFsKVxuICAgICkge1xuICAgICAgaGFzQWxsUGVybWlzc2lvbnMgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBoYXNBbGxQZXJtaXNzaW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UoXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zOiBQYXJ0aWFsPFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9ucz5cbik6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlIHtcbiAgaWYgKHNwZW5kaW5nTGltaXRPcHRpb25zLklzVW5saW1pdGVkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIElzVW5saW1pdGVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAoc3BlbmRpbmdMaW1pdE9wdGlvbnMuR2xvYmFsREVTT0xpbWl0Py50b1N0cmluZygpID09PSAnVU5MSU1JVEVEJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdHbG9iYWxERVNPTGltaXQgY2Fubm90IGJlIHVubGltaXRlZC4gWW91IG11c3Qgc3BlY2lmeSBhIHNwZWNpZmljIGxpbWl0LCBvciBzZXQgdGhlIElzVW5saW1pdGVkIGZsYWcgdG8gdHJ1ZS4nXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UgPSB7fTtcblxuICB3YWxrT2JqKFxuICAgIHNwZW5kaW5nTGltaXRPcHRpb25zLFxuICAgICh2YWwsIHBhdGgpID0+IHtcbiAgICAgIHNldERlZXBWYWx1ZShyZXN1bHQsIHBhdGgsIHZhbCA9PT0gJ1VOTElNSVRFRCcgPyAxZTkgOiB2YWwpO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBpZiAocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApIHtcbiAgICByZXN1bHQuQWNjZXNzR3JvdXBMaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApO1xuICB9XG4gIGlmIChyZXN1bHQuQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcCkge1xuICAgIHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwXG4gICAgKTtcbiAgfVxuICBpZiAocmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXApIHtcbiAgICByZXN1bHQuQXNzb2NpYXRpb25MaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXApO1xuICAgIC8vIFZhbGlkYXRlIGVhY2ggYXNzb2NpYXRpb24gbGltaXQgb2JqZWN0XG4gICAgcmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXAuZm9yRWFjaCgoYXNzb2NpYXRpb25MaW1pdEl0ZW0pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgJiZcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwU2NvcGVUeXBlID09PSAnQW55J1xuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgbXVzdCBiZSBzZXQgdG8gdW5kZWZpbmVkIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBBcHBTY29wZVR5cGUgaXMgQW55LiBZb3UgcHJvdmlkZWQgJHthc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBQdWJsaWNLZXlCYXNlNThDaGVja31gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICEvXig/OkJDMXx0QkMpLisvLnRlc3QoYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2spICYmXG4gICAgICAgIGFzc29jaWF0aW9uTGltaXRJdGVtLkFwcFNjb3BlVHlwZSA9PT0gJ1Njb3BlZCdcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcFB1YmxpY0tleUJhc2U1OENoZWNrIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgcHVibGljIGtleSBpZiBBcHBTY29wZVR5cGUgaXMgU2NvcGVkLiBZb3UgcHJvdmlkZWQ6ICR7YXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2t9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8vIFRPRE86IHN1cHBvcnQgZm9yIG5ldyBQb1MgU3BlbmRpbmcgbGltaXRzIG1hcHMuXG5cbiAgcmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCA9IHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXAgPz8ge307XG5cbiAgaWYgKFxuICAgIHR5cGVvZiByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXSA9PT1cbiAgICAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwID0ge1xuICAgICAgLi4ucmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCxcbiAgICAgIEFVVEhPUklaRV9ERVJJVkVEX0tFWTogMSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXBbJ0FVVEhPUklaRV9ERVJJVkVEX0tFWSddIDwgMCkge1xuICAgIGRlbGV0ZSByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHdhbGtPYmooXG4gIG5vZGU6IGFueSxcbiAgY2FsbGJhY2s6ICh2YWw6IGFueSwgcGF0aDogc3RyaW5nW10pID0+IHZvaWQsXG4gIHBhdGg6IHN0cmluZ1tdID0gW11cbikge1xuICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobm9kZSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3YWxrT2JqKG5vZGVba2V5c1tpXV0sIGNhbGxiYWNrLCBwYXRoLmNvbmNhdChrZXlzW2ldKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKG5vZGUsIHBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZXBWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBjdXJyS2V5ID0gcGF0aFswXTtcblxuICBpZiAoXG4gICAgb2JqID09PSBudWxsIHx8XG4gICAgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHxcbiAgICB0eXBlb2Ygb2JqW2N1cnJLZXldID09PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gb2JqW2N1cnJLZXldO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXREZWVwVmFsdWUob2JqW2N1cnJLZXldLCBwYXRoLnNsaWNlKDEpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXREZWVwVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogYW55KSB7XG4gIGNvbnN0IGN1cnJLZXkgPSBwYXRoWzBdO1xuICBpZiAodHlwZW9mIG9ialtjdXJyS2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvYmpbY3VycktleV0gPSB7fTtcbiAgfVxuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgIG9ialtjdXJyS2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHNldERlZXBWYWx1ZShvYmpbY3VycktleV0sIHBhdGguc2xpY2UoMSksIHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVDb3VudChjb3VudD86IG51bWJlciB8ICdVTkxJTUlURUQnKSB7XG4gIC8vIE5PVEU6IElmIGNoZWNraW5nIGZvciB1bmxpbWl0ZWQsIHdlIGp1c3QgY2hlY2sgaWYgaXQncyBncmVhdGVyIHRoYW4gMVxuICAvLyBiZWNhdXNlIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRvIGtub3cgaWYgdGhlIG9yaWdpbmFsIHZhbHVlIHdhcyAnVU5MSU1JVEVEJ1xuICAvLyBvciBzb21lIG90aGVyIG51bWVyaWMuICBBcyBsb25nIGFzIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMSwgd2UganVzdCBsZXRcbiAgLy8gaXQgcGFzcyBhcyAnVU5MSU1JVEVELicgSW4gdGhlIGVuZCB0aGlzIHNob3VsZG4ndCBtYXR0ZXIgc2luY2Ugd2UgZmFpbCB0aGVcbiAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIG5vIG1vcmUgdHJhbnNhY3Rpb25zIGxlZnQgdG8gc3BlbmQuXG4gIHJldHVybiBjb3VudCA9PT0gJ1VOTElNSVRFRCcgfHwgY291bnQgPT09IDFlOSA/IDEgOiBjb3VudCA/PyAwO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvcGVybWlzc2lvbnMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxtQkFBNEQsRUFDNUQsaUJBQW1EO0lBRW5ELElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBRTdCLG9FQUFvRTtJQUNwRSxJQUFJLGlCQUFpQixFQUFFLFdBQVcsRUFBRTtRQUNsQyxPQUFPLGlCQUFpQixDQUFDO0tBQzFCO0lBRUQsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2pELDBFQUEwRTtRQUMxRSxzRUFBc0U7UUFDdEUscUVBQXFFO1FBQ3JFLHdFQUF3RTtRQUN4RSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pCLEtBQUsscUJBQXFCO2dCQUN4QixJQUNFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNuRCxPQUFPLENBQ0wsR0FBRyxDQUFDLFNBQVMsS0FBSyxLQUFLO3dCQUN2QixHQUFHLENBQUMsa0JBQWtCLEtBQUssRUFBRTt3QkFDN0IsR0FBRyxDQUFDLGFBQWEsS0FBSyxLQUFLO3dCQUMzQixHQUFHLENBQUMsT0FBTzs0QkFDVCxjQUFjLENBQ1osbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQ3pELEVBQUUsT0FBTyxDQUNaLENBQ0osQ0FBQztnQkFDSixDQUFDLENBQUMsRUFDRjtvQkFDQSxPQUFPO2lCQUNSO2dCQUNELE1BQU07WUFDUixLQUFLLDJCQUEyQjtnQkFDOUIsSUFDRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVB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LEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDdEI7U0FBTTtRQUNMLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNsRDtBQUNILENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUE0QjtJQUNsRCx3RUFBd0U7SUFDeEUsNkVBQTZFO0lBQzdFLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UseURBQXlEO0lBQ3pELE9BQU8sS0FBSyxLQUFLLFdBQVcsSUFBSSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlIH0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRzKFxuICBleHBlY3RlZFBlcm1pc3Npb25zOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMsXG4gIGFjdHVhbFBlcm1pc3Npb25zOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZVxuKTogYm9vbGVhbiB7XG4gIGxldCBoYXNBbGxQZXJtaXNzaW9ucyA9IHRydWU7XG5cbiAgLy8gaWYgdGhlIGtleSBpcyB1bmxpbWl0ZWQgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGFueXRoaW5nIGVsc2VcbiAgaWYgKGFjdHVhbFBlcm1pc3Npb25zPy5Jc1VubGltaXRlZCkge1xuICAgIHJldHVybiBoYXNBbGxQZXJtaXNzaW9ucztcbiAgfVxuXG4gIHdhbGtPYmooZXhwZWN0ZWRQZXJtaXNzaW9ucywgKGV4cGVjdGVkVmFsLCBwYXRoKSA9PiB7XG4gICAgLy8gSWYgdGhlIGFjdHVhbCBwZXJtaXNzaW9ucyBhcmUgY29uZmlndXJlZCB3aXRoIGFueSBvZiB0aGUgc3BlY2lhbCBcImFsbG93XG4gICAgLy8gYW55dGhpbmdcIiBtYXBwaW5ncyB0aGVuIHdlIHJld3JpdGUgdGhlIGxvb2t1cCBwYXRoIGZvciBhbnkgZXhwbGljaXRcbiAgICAvLyBtYXBwaW5nIHRvIG1hdGNoIG9uIHRoZSBcImFsbG93IGFueVwiIG1hcHBpbmcuIEluIHNvbWUgY2FzZXMsIHNpbXBseVxuICAgIC8vIGNvbXBhcmUgdGhlIE9wQ291bnRzIGFuZCByZXR1cm4gZWFybHkgaWYgdGhlaXIgY2FuIGJlIG9ubHkgMSBtYXBwaW5nLlxuICAgIHN3aXRjaCAocGF0aD8uWzBdKSB7XG4gICAgICBjYXNlICdBY2Nlc3NHcm91cExpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5BY2Nlc3NHcm91cExpbWl0TWFwPy5maW5kKChtYXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIG1hcC5TY29wZVR5cGUgPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5BY2Nlc3NHcm91cEtleU5hbWUgPT09ICcnICYmXG4gICAgICAgICAgICAgIG1hcC5PcGVyYXRpb25UeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBMaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgICAgPy5PcENvdW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwPy5maW5kKChtYXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIG1hcC5TY29wZVR5cGUgPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5BY2Nlc3NHcm91cEtleU5hbWUgPT09ICcnICYmXG4gICAgICAgICAgICAgIG1hcC5PcGVyYXRpb25UeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcD8uW1xuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGF0aFsxXSlcbiAgICAgICAgICAgICAgICAgIF0/Lk9wQ291bnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fzc29jaWF0aW9uTGltaXRNYXAnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgYWN0dWFsUGVybWlzc2lvbnM/LkFzc29jaWF0aW9uTGltaXRNYXA/LmZpbmQoKG1hcCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgbWFwLkFzc29jaWF0aW9uQ2xhc3MgPT09XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQXNzb2NpYXRpb25MaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgID8uQXNzb2NpYXRpb25DbGFzcyAmJlxuICAgICAgICAgICAgICBtYXAuQXBwU2NvcGVUeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuQXNzb2NpYXRpb25UeXBlID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuQXNzb2NpYXRpb25PcGVyYXRpb24gPT09ICdBbnknICYmXG4gICAgICAgICAgICAgIG1hcC5PcENvdW50ID49XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplQ291bnQoXG4gICAgICAgICAgICAgICAgICBleHBlY3RlZFBlcm1pc3Npb25zPy5Bc3NvY2lhdGlvbkxpbWl0TWFwPy5bTnVtYmVyKHBhdGhbMV0pXVxuICAgICAgICAgICAgICAgICAgICA/Lk9wQ291bnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXAnOlxuICAgICAgICBpZiAoYWN0dWFsUGVybWlzc2lvbnM/LkNyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA/LlsnJ10pIHtcbiAgICAgICAgICBwYXRoID1cbiAgICAgICAgICAgIHR5cGVvZiBhY3R1YWxQZXJtaXNzaW9ucz8uQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcFsnJ10/LmFueSA9PT1cbiAgICAgICAgICAgICdudW1iZXInXG4gICAgICAgICAgICAgID8gWydDcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwJywgJycsICdhbnknXVxuICAgICAgICAgICAgICA6IFsnQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcCcsICcnLCBwYXRoW3BhdGgubGVuZ3RoIC0gMV1dO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTkZUT3BlcmF0aW9uTGltaXRNYXAnOlxuICAgICAgICBpZiAoYWN0dWFsUGVybWlzc2lvbnM/Lk5GVE9wZXJhdGlvbkxpbWl0TWFwPy5bJyddPy5bMF0pIHtcbiAgICAgICAgICBwYXRoID1cbiAgICAgICAgICAgIHR5cGVvZiBhY3R1YWxQZXJtaXNzaW9ucz8uTkZUT3BlcmF0aW9uTGltaXRNYXA/LlsnJ10/LlswXT8uYW55ID09PVxuICAgICAgICAgICAgJ251bWJlcidcbiAgICAgICAgICAgICAgPyBbJ05GVE9wZXJhdGlvbkxpbWl0TWFwJywgJycsICcwJywgJ2FueSddXG4gICAgICAgICAgICAgIDogWydORlRPcGVyYXRpb25MaW1pdE1hcCcsICcnLCAnMCcsIHBhdGhbcGF0aC5sZW5ndGggLSAxXV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBUT0RPOiBzdXBwb3J0IGZvciBtYWtpbmcgc3VyZSBhIGRlcml2ZWQga2V5IGhhcyB0aGVzZSBsaW1pdHMuLi5cbiAgICAgIC8vIEBqYWNrc29uZGVhbiAtIHRoaXMgaXMgYSBsaXR0bGUgbW9yZSBhbm5veWluZyBzaW5jZVxuICAgICAgLy8gc3Rha2UgYW5kIHVuc3Rha2UgbGltaXRzIGRvbid0IGhhdmUgYW4gb3AgY291bnQsIGJ1dCByYXRoZXIgYSBkZXNvIGxpbWl0LlxuICAgICAgY2FzZSAnU3Rha2VMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uU3Rha2VMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2sgPT09ICcnICYmXG4gICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LlN0YWtlTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgPy5TdGFrZUxpbWl0ICYmXG4gICAgICAgICAgICAgIHBhcnNlSW50KG1hcC5TdGFrZUxpbWl0LCAxNikgPj1cbiAgICAgICAgICAgICAgICBwYXJzZUludChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LlN0YWtlTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICAgID8uU3Rha2VMaW1pdCxcbiAgICAgICAgICAgICAgICAgIDE2XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdVbnN0YWtlTGltaXRNYXAnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgYWN0dWFsUGVybWlzc2lvbnM/LlVuc3Rha2VMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2sgPT09ICcnICYmXG4gICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LlVuc3Rha2VMaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICA/LlVuc3Rha2VMaW1pdCAmJlxuICAgICAgICAgICAgICBwYXJzZUludChtYXAuVW5zdGFrZUxpbWl0LCAxNikgPj1cbiAgICAgICAgICAgICAgICBwYXJzZUludChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LlVuc3Rha2VMaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgICAgPy5VbnN0YWtlTGltaXQsXG4gICAgICAgICAgICAgICAgICAxNlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVW5sb2NrU3Rha2VMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uVW5sb2NrU3Rha2VMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2sgPT09ICcnICYmXG4gICAgICAgICAgICAgIG1hcC5PcENvdW50ID49XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplQ291bnQoXG4gICAgICAgICAgICAgICAgICBleHBlY3RlZFBlcm1pc3Npb25zPy5VbmxvY2tTdGFrZUxpbWl0TWFwPy5bTnVtYmVyKHBhdGhbMV0pXVxuICAgICAgICAgICAgICAgICAgICA/Lk9wQ291bnRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0xvY2t1cExpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5Mb2NrdXBMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuUHJvZmlsZVB1YmxpY0tleUJhc2U1OENoZWNrID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uTG9ja3VwTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICAgID8uT3BDb3VudFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFZhbCA9IGdldERlZXBWYWx1ZShhY3R1YWxQZXJtaXNzaW9ucywgcGF0aCk7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgYWN0dWFsVmFsID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgKHR5cGVvZiBhY3R1YWxWYWwgPT09ICdudW1iZXInICYmXG4gICAgICAgIGFjdHVhbFZhbCA8IG5vcm1hbGl6ZUNvdW50KGV4cGVjdGVkVmFsKSkgfHxcbiAgICAgICh0eXBlb2YgYWN0dWFsVmFsID09PSAnc3RyaW5nJyAmJiBhY3R1YWxWYWwgIT09IGV4cGVjdGVkVmFsKVxuICAgICkge1xuICAgICAgaGFzQWxsUGVybWlzc2lvbnMgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBoYXNBbGxQZXJtaXNzaW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UoXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zOiBQYXJ0aWFsPFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9ucz5cbik6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlIHtcbiAgaWYgKHNwZW5kaW5nTGltaXRPcHRpb25zLklzVW5saW1pdGVkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIElzVW5saW1pdGVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAoc3BlbmRpbmdMaW1pdE9wdGlvbnMuR2xvYmFsREVTT0xpbWl0Py50b1N0cmluZygpID09PSAnVU5MSU1JVEVEJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdHbG9iYWxERVNPTGltaXQgY2Fubm90IGJlIHVubGltaXRlZC4gWW91IG11c3Qgc3BlY2lmeSBhIHNwZWNpZmljIGxpbWl0LCBvciBzZXQgdGhlIElzVW5saW1pdGVkIGZsYWcgdG8gdHJ1ZS4nXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UgPSB7fTtcblxuICB3YWxrT2JqKFxuICAgIHNwZW5kaW5nTGltaXRPcHRpb25zLFxuICAgICh2YWwsIHBhdGgpID0+IHtcbiAgICAgIHNldERlZXBWYWx1ZShyZXN1bHQsIHBhdGgsIHZhbCA9PT0gJ1VOTElNSVRFRCcgPyAxZTkgOiB2YWwpO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBpZiAocmVzdWx0LlN0YWtlTGltaXRNYXApIHtcbiAgICByZXN1bHQuU3Rha2VMaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LlN0YWtlTGltaXRNYXApO1xuICB9XG5cbiAgaWYgKHJlc3VsdC5VbnN0YWtlTGltaXRNYXApIHtcbiAgICByZXN1bHQuVW5zdGFrZUxpbWl0TWFwID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQuVW5zdGFrZUxpbWl0TWFwKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQuVW5sb2NrU3Rha2VMaW1pdE1hcCkge1xuICAgIHJlc3VsdC5VbmxvY2tTdGFrZUxpbWl0TWFwID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQuVW5sb2NrU3Rha2VMaW1pdE1hcCk7XG4gIH1cblxuICBpZiAocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApIHtcbiAgICByZXN1bHQuQWNjZXNzR3JvdXBMaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApO1xuICB9XG5cbiAgaWYgKHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwKSB7XG4gICAgcmVzdWx0LkFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXAgPSBPYmplY3QudmFsdWVzKFxuICAgICAgcmVzdWx0LkFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXBcbiAgICApO1xuICB9XG4gIGlmIChyZXN1bHQuQXNzb2NpYXRpb25MaW1pdE1hcCkge1xuICAgIHJlc3VsdC5Bc3NvY2lhdGlvbkxpbWl0TWFwID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQuQXNzb2NpYXRpb25MaW1pdE1hcCk7XG4gICAgLy8gVmFsaWRhdGUgZWFjaCBhc3NvY2lhdGlvbiBsaW1pdCBvYmplY3RcbiAgICByZXN1bHQuQXNzb2NpYXRpb25MaW1pdE1hcC5mb3JFYWNoKChhc3NvY2lhdGlvbkxpbWl0SXRlbSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBhc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayAmJlxuICAgICAgICBhc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBTY29wZVR5cGUgPT09ICdBbnknXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBcHBQdWJsaWNLZXlCYXNlNThDaGVjayBtdXN0IGJlIHNldCB0byB1bmRlZmluZWQgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIEFwcFNjb3BlVHlwZSBpcyBBbnkuIFlvdSBwcm92aWRlZCAke2Fzc29jaWF0aW9uTGltaXRJdGVtLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgIS9eKD86QkMxfHRCQykuKy8udGVzdChhc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBQdWJsaWNLZXlCYXNlNThDaGVjaykgJiZcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwU2NvcGVUeXBlID09PSAnU2NvcGVkJ1xuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgbXVzdCBiZSBzZXQgdG8gYSB2YWxpZCBwdWJsaWMga2V5IGlmIEFwcFNjb3BlVHlwZSBpcyBTY29wZWQuIFlvdSBwcm92aWRlZDogJHthc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBQdWJsaWNLZXlCYXNlNThDaGVja31gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLy8gVE9ETzogc3VwcG9ydCBmb3IgbmV3IFBvUyBTcGVuZGluZyBsaW1pdHMgbWFwcy5cblxuICByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwID0gcmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCA/PyB7fTtcblxuICBpZiAoXG4gICAgdHlwZW9mIHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXBbJ0FVVEhPUklaRV9ERVJJVkVEX0tFWSddID09PVxuICAgICd1bmRlZmluZWQnXG4gICkge1xuICAgIHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXAgPSB7XG4gICAgICAuLi5yZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwLFxuICAgICAgQVVUSE9SSVpFX0RFUklWRURfS0VZOiAxLFxuICAgIH07XG4gIH0gZWxzZSBpZiAocmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcFsnQVVUSE9SSVpFX0RFUklWRURfS0VZJ10gPCAwKSB7XG4gICAgZGVsZXRlIHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXBbJ0FVVEhPUklaRV9ERVJJVkVEX0tFWSddO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gd2Fsa09iaihcbiAgbm9kZTogYW55LFxuICBjYWxsYmFjazogKHZhbDogYW55LCBwYXRoOiBzdHJpbmdbXSkgPT4gdm9pZCxcbiAgcGF0aDogc3RyaW5nW10gPSBbXVxuKSB7XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgbm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhub2RlKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHdhbGtPYmoobm9kZVtrZXlzW2ldXSwgY2FsbGJhY2ssIHBhdGguY29uY2F0KGtleXNbaV0pKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2sobm9kZSwgcGF0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVlcFZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IGN1cnJLZXkgPSBwYXRoWzBdO1xuXG4gIGlmIChcbiAgICBvYmogPT09IG51bGwgfHxcbiAgICB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fFxuICAgIHR5cGVvZiBvYmpbY3VycktleV0gPT09ICd1bmRlZmluZWQnXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBvYmpbY3VycktleV07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdldERlZXBWYWx1ZShvYmpbY3VycktleV0sIHBhdGguc2xpY2UoMSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldERlZXBWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nW10sIHZhbHVlOiBhbnkpIHtcbiAgY29uc3QgY3VycktleSA9IHBhdGhbMF07XG4gIGlmICh0eXBlb2Ygb2JqW2N1cnJLZXldID09PSAndW5kZWZpbmVkJykge1xuICAgIG9ialtjdXJyS2V5XSA9IHt9O1xuICB9XG5cbiAgaWYgKHBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgb2JqW2N1cnJLZXldID0gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgc2V0RGVlcFZhbHVlKG9ialtjdXJyS2V5XSwgcGF0aC5zbGljZSgxKSwgdmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvdW50KGNvdW50PzogbnVtYmVyIHwgJ1VOTElNSVRFRCcpIHtcbiAgLy8gTk9URTogSWYgY2hlY2tpbmcgZm9yIHVubGltaXRlZCwgd2UganVzdCBjaGVjayBpZiBpdCdzIGdyZWF0ZXIgdGhhbiAxXG4gIC8vIGJlY2F1c2UgdGhlcmUgaXMgbm8gZ29vZCB3YXkgdG8ga25vdyBpZiB0aGUgb3JpZ2luYWwgdmFsdWUgd2FzICdVTkxJTUlURUQnXG4gIC8vIG9yIHNvbWUgb3RoZXIgbnVtZXJpYy4gIEFzIGxvbmcgYXMgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiAxLCB3ZSBqdXN0IGxldFxuICAvLyBpdCBwYXNzIGFzICdVTkxJTUlURUQuJyBJbiB0aGUgZW5kIHRoaXMgc2hvdWxkbid0IG1hdHRlciBzaW5jZSB3ZSBmYWlsIHRoZVxuICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgbm8gbW9yZSB0cmFuc2FjdGlvbnMgbGVmdCB0byBzcGVuZC5cbiAgcmV0dXJuIGNvdW50ID09PSAnVU5MSU1JVEVEJyB8fCBjb3VudCA9PT0gMWU5ID8gMSA6IGNvdW50ID8/IDA7XG59XG4iXX0=

@@ -0,3 +1,3 @@

import { ConstructedTransactionResponse, StakeRequest, StakeTxnResponse, UnlockStakeRequest, UnstakeRequest } from '../backend-types/index.js';
import { ConstructedAndSubmittedTx, TxRequestOptions, TypeWithOptionalFeesAndExtraData } from '../types.js';
import { ConstructedTransactionResponse, StakeRequest, StakeTxnResponse, UnlockStakeRequest, UnstakeRequest } from '../backend-types/index.js';
type StakeRequestParams = TypeWithOptionalFeesAndExtraData<StakeRequest>;

@@ -4,0 +4,0 @@ export declare const constructStakeTransaction: (params: StakeRequestParams) => Promise<ConstructedTransactionResponse>;

@@ -0,6 +1,6 @@

import { hexToBytes } from '@noble/hashes/utils';
import { StakeRewardMethod, } from '../backend-types/index.js';
import { bs58PublicKeyToCompressedBytes, TransactionMetadataStake, TransactionMetadataUnlockStake, TransactionMetadataUnstake, } from '../identity/index.js';
import { hexToBytes } from '@noble/hashes/utils';
import { TransactionMetadataStake, TransactionMetadataUnlockStake, TransactionMetadataUnstake, bs58PublicKeyToCompressedBytes, } from '../identity/index.js';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal.js';
import { guardTxPermission } from './utils.js';
import { guardTxPermission, stripHexPrefix } from './utils.js';
const buildStakeMetadata = (params) => {

@@ -11,4 +11,5 @@ const metadata = new TransactionMetadataStake();

params.RewardMethod === StakeRewardMethod.PayToBalance ? 0 : 1;
// TODO: make sure this replace is correct.
metadata.stakeAmountNanos = hexToBytes(params.StakeAmountNanos.replace('0x', 'x'));
const hex = stripHexPrefix(params.StakeAmountNanos);
metadata.stakeAmountNanos =
hex === '0' ? new Uint8Array([0]) : hexToBytes(hex);
return metadata;

@@ -50,4 +51,5 @@ };

metadata.validatorPublicKey = bs58PublicKeyToCompressedBytes(params.ValidatorPublicKeyBase58Check);
// TODO: make sure this replace is correct.
metadata.unstakeAmountNanos = hexToBytes(params.UnstakeAmountNanos.replace('0x', 'x'));
const hex = stripHexPrefix(params.UnstakeAmountNanos);
metadata.unstakeAmountNanos =
hex === '0' ? new Uint8Array([0]) : hexToBytes(hex);
return metadata;

@@ -120,2 +122,2 @@ };

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb25zL3N0YWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFHTCxpQkFBaUIsR0FJbEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLHdCQUF3QixFQUN4Qiw4QkFBOEIsRUFDOUIsMEJBQTBCLEdBQzNCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJL0MsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7SUFDaEQsUUFBUSxDQUFDLGtCQUFrQixHQUFHLDhCQUE4QixDQUMxRCxNQUFNLENBQUMsNkJBQTZCLENBQ3JDLENBQUM7SUFDRixRQUFRLENBQUMsWUFBWTtRQUNuQixNQUFNLENBQUMsWUFBWSxLQUFLLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsMkNBQTJDO0lBQzNDLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQ3BDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUMzQyxDQUFDO0lBRUYsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsTUFBMEIsRUFDZSxFQUFFO0lBQzNDLE9BQU8sdUJBQXVCLENBQzVCLE1BQU0sQ0FBQyw4QkFBOEIsRUFDckMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQzFCO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQ3hCLE1BQTBCLEVBQzFCLE9BQTBCLEVBRzFCLEVBQUU7SUFDRixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FDakMsTUFBTSxDQUFDLDhCQUE4QixFQUNyQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFDMUI7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0lBRUYsSUFBSSxPQUFPLEVBQUUsZ0JBQWdCLEtBQUssS0FBSyxFQUFFO1FBQ3ZDLE1BQU0saUJBQWlCLENBQUM7WUFDdEIsZUFBZSxFQUNiLFFBQVEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO2dCQUNyQyxTQUFTLENBQUMsUUFBUTtnQkFDbEIsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUM1QyxhQUFhLEVBQUU7Z0JBQ2I7b0JBQ0UsNkJBQTZCLEVBQUUsTUFBTSxDQUFDLDZCQUE2QjtvQkFDbkUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7aUJBQ3BDO2FBQ0Y7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sbUJBQW1CLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRTtRQUNqRCxHQUFHLE9BQU87UUFDVixvQkFBb0IsRUFBRSx5QkFBeUI7S0FDaEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBSUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQTRCLEVBQUUsRUFBRTtJQUM1RCxNQUFNLFFBQVEsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7SUFDbEQsUUFBUSxDQUFDLGtCQUFrQixHQUFHLDhCQUE4QixDQUMxRCxNQUFNLENBQUMsNkJBQTZCLENBQ3JDLENBQUM7SUFDRiwyQ0FBMkM7SUFDM0MsUUFBUSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FDdEMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzdDLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUN6QyxNQUE0QixFQUNhLEVBQUU7SUFDM0MsT0FBTyx1QkFBdUIsQ0FDNUIsTUFBTSxDQUFDLDhCQUE4QixFQUNyQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsRUFDNUI7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFDMUIsTUFBNEIsRUFDNUIsT0FBMEIsRUFHMUIsRUFBRTtJQUNGLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUNqQyxNQUFNLENBQUMsOEJBQThCLEVBQ3JDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUM1QjtRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7SUFFRixJQUFJLE9BQU8sRUFBRSxnQkFBZ0IsS0FBSyxLQUFLLEVBQUU7UUFDdkMsTUFBTSxpQkFBaUIsQ0FBQztZQUN0QixlQUFlLEVBQ2IsU0FBUyxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQ2pFLGVBQWUsRUFBRTtnQkFDZjtvQkFDRSw2QkFBNkIsRUFBRSxNQUFNLENBQUMsNkJBQTZCO29CQUNuRSxZQUFZLEVBQUUsTUFBTSxDQUFDLGtCQUFrQjtpQkFDeEM7YUFDRjtTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7UUFDbkQsR0FBRyxPQUFPO1FBQ1Ysb0JBQW9CLEVBQUUsMkJBQTJCO0tBQ2xELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUtGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7SUFDcEUsTUFBTSxRQUFRLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyw4QkFBOEIsQ0FDMUQsTUFBTSxDQUFDLDZCQUE2QixDQUNyQyxDQUFDO0lBQ0YsUUFBUSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNwRCxRQUFRLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFFaEQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FDN0MsTUFBZ0MsRUFDUyxFQUFFO0lBQzNDLE9BQU8sdUJBQXVCLENBQzVCLE1BQU0sQ0FBQyw4QkFBOEIsRUFDckMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEVBQ2hDO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQzlCLE1BQWdDLEVBQ2hDLE9BQTBCLEVBRzFCLEVBQUU7SUFDRixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FDakMsTUFBTSxDQUFDLDhCQUE4QixFQUNyQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsRUFDaEM7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0lBRUYsSUFBSSxPQUFPLEVBQUUsZ0JBQWdCLEtBQUssS0FBSyxFQUFFO1FBQ3ZDLE1BQU0saUJBQWlCLENBQUM7WUFDdEIsZUFBZSxFQUNiLFNBQVMsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUNqRSxtQkFBbUIsRUFBRTtnQkFDbkI7b0JBQ0UsNkJBQTZCLEVBQUUsTUFBTSxDQUFDLDZCQUE2QjtvQkFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLElBQUksQ0FBQztpQkFDcEM7YUFDRjtTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLEVBQUU7UUFDeEQsR0FBRyxPQUFPO1FBQ1Ysb0JBQW9CLEVBQUUsK0JBQStCO0tBQ3RELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsXG4gIFR4UmVxdWVzdE9wdGlvbnMsXG4gIFR5cGVXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIFN0YWtlUmVxdWVzdCxcbiAgU3Rha2VSZXdhcmRNZXRob2QsXG4gIFN0YWtlVHhuUmVzcG9uc2UsXG4gIFVubG9ja1N0YWtlUmVxdWVzdCxcbiAgVW5zdGFrZVJlcXVlc3QsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhU3Rha2UsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFVbmxvY2tTdGFrZSxcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVVuc3Rha2UsXG59IGZyb20gJy4uL2lkZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB7IGhleFRvQnl0ZXMgfSBmcm9tICdAbm9ibGUvaGFzaGVzL3V0aWxzJztcbmltcG9ydCB7XG4gIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4LFxuICBnZXRUeFdpdGhGZWVOYW5vcyxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgc3VtVHJhbnNhY3Rpb25GZWVzLFxufSBmcm9tICcuLi9pbnRlcm5hbC5qcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG50eXBlIFN0YWtlUmVxdWVzdFBhcmFtcyA9IFR5cGVXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFN0YWtlUmVxdWVzdD47XG5cbmNvbnN0IGJ1aWxkU3Rha2VNZXRhZGF0YSA9IChwYXJhbXM6IFN0YWtlUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhU3Rha2UoKTtcbiAgbWV0YWRhdGEudmFsaWRhdG9yUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5WYWxpZGF0b3JQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5yZXdhcmRNZXRob2QgPVxuICAgIHBhcmFtcy5SZXdhcmRNZXRob2QgPT09IFN0YWtlUmV3YXJkTWV0aG9kLlBheVRvQmFsYW5jZSA/IDAgOiAxO1xuICAvLyBUT0RPOiBtYWtlIHN1cmUgdGhpcyByZXBsYWNlIGlzIGNvcnJlY3QuXG4gIG1ldGFkYXRhLnN0YWtlQW1vdW50TmFub3MgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5TdGFrZUFtb3VudE5hbm9zLnJlcGxhY2UoJzB4JywgJ3gnKVxuICApO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RTdGFrZVRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFN0YWtlUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRTdGFrZU1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc3Rha2UgPSBhc3luYyAoXG4gIHBhcmFtczogU3Rha2VSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxTdGFrZVR4blJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRTdGFrZU1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICBwYXJzZUludChwYXJhbXMuU3Rha2VBbW91bnROYW5vcywgMTYpICtcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICtcbiAgICAgICAgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgU3Rha2VMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHBhcmFtcy5WYWxpZGF0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICAgICAgICBTdGFrZUxpbWl0OiBwYXJhbXMuU3Rha2VBbW91bnROYW5vcyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3N0YWtlJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0U3Rha2VUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG50eXBlIFVuc3Rha2VSZXF1ZXN0UGFyYW1zID0gVHlwZVdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8VW5zdGFrZVJlcXVlc3Q+O1xuXG5jb25zdCBidWlsZFVuc3Rha2VNZXRhZGF0YSA9IChwYXJhbXM6IFVuc3Rha2VSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFVbnN0YWtlKCk7XG4gIG1ldGFkYXRhLnZhbGlkYXRvclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgLy8gVE9ETzogbWFrZSBzdXJlIHRoaXMgcmVwbGFjZSBpcyBjb3JyZWN0LlxuICBtZXRhZGF0YS51bnN0YWtlQW1vdW50TmFub3MgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5VbnN0YWtlQW1vdW50TmFub3MucmVwbGFjZSgnMHgnLCAneCcpXG4gICk7XG5cbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFVuc3Rha2VUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVbnN0YWtlUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVbnN0YWtlTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1bnN0YWtlID0gYXN5bmMgKFxuICBwYXJhbXM6IFVuc3Rha2VSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxTdGFrZVR4blJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVbnN0YWtlTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFVuc3Rha2VMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHBhcmFtcy5WYWxpZGF0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICAgICAgICBVbnN0YWtlTGltaXQ6IHBhcmFtcy5VbnN0YWtlQW1vdW50TmFub3MsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC91bnN0YWtlJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VW5zdGFrZVRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbnR5cGUgVW5sb2NrU3Rha2VSZXF1ZXN0UGFyYW1zID1cbiAgVHlwZVdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8VW5sb2NrU3Rha2VSZXF1ZXN0PjtcblxuY29uc3QgYnVpbGRVbmxvY2tTdGFrZU1ldGFkYXRhID0gKHBhcmFtczogVW5sb2NrU3Rha2VSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFVbmxvY2tTdGFrZSgpO1xuICBtZXRhZGF0YS52YWxpZGF0b3JQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlZhbGlkYXRvclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLnN0YXJ0RXBvY2hOdW1iZXIgPSBwYXJhbXMuU3RhcnRFcG9jaE51bWJlcjtcbiAgbWV0YWRhdGEuZW5kRXBvY2hOdW1iZXIgPSBwYXJhbXMuRW5kRXBvY2hOdW1iZXI7XG5cbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFVubG9ja1N0YWtlVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogVW5sb2NrU3Rha2VSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVubG9ja1N0YWtlTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1bmxvY2tTdGFrZSA9IGFzeW5jIChcbiAgcGFyYW1zOiBVbmxvY2tTdGFrZVJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFN0YWtlVHhuUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVubG9ja1N0YWtlTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFVubG9ja1N0YWtlTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIFZhbGlkYXRvclB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC91bmxvY2stc3Rha2UnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RVbmxvY2tTdGFrZVRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb25zL3N0YWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBR0wsaUJBQWlCLEdBSWxCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qiw4QkFBOEIsRUFDOUIsMEJBQTBCLEVBQzFCLDhCQUE4QixHQUMvQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQU14QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSS9ELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUEwQixFQUFFLEVBQUU7SUFDeEQsTUFBTSxRQUFRLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO0lBQ2hELFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyw4QkFBOEIsQ0FDMUQsTUFBTSxDQUFDLDZCQUE2QixDQUNyQyxDQUFDO0lBQ0YsUUFBUSxDQUFDLFlBQVk7UUFDbkIsTUFBTSxDQUFDLFlBQVksS0FBSyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRCxRQUFRLENBQUMsZ0JBQWdCO1FBQ3ZCLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXRELE9BQU8sUUFB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RUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUM5QixNQUFnQyxFQUNoQyxPQUEwQixFQUcxQixFQUFFO0lBQ0YsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQ2pDLE1BQU0sQ0FBQyw4QkFBOEIsRUFDckMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEVBQ2hDO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztJQUVGLElBQUksT0FBTyxFQUFFLGdCQUFnQixLQUFLLEtBQUssRUFBRTtRQUN2QyxNQUFNLGlCQUFpQixDQUFDO1lBQ3RCLGVBQWUsRUFDYixTQUFTLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDakUsbUJBQW1CLEVBQUU7Z0JBQ25CO29CQUNFLDZCQUE2QixFQUFFLE1BQU0sQ0FBQyw2QkFBNkI7b0JBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxJQUFJLENBQUM7aUJBQ3BDO2FBQ0Y7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sbUJBQW1CLENBQUMscUJBQXFCLEVBQUUsTUFBTSxFQUFFO1FBQ3hELEdBQUcsT0FBTztRQUNWLG9CQUFvQixFQUFFLCtCQUErQjtLQUN0RCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhUb0J5dGVzIH0gZnJvbSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIFN0YWtlUmVxdWVzdCxcbiAgU3Rha2VSZXdhcmRNZXRob2QsXG4gIFN0YWtlVHhuUmVzcG9uc2UsXG4gIFVubG9ja1N0YWtlUmVxdWVzdCxcbiAgVW5zdGFrZVJlcXVlc3QsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVN0YWtlLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhVW5sb2NrU3Rha2UsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFVbnN0YWtlLFxuICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMsXG59IGZyb20gJy4uL2lkZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB7XG4gIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4LFxuICBnZXRUeFdpdGhGZWVOYW5vcyxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgc3VtVHJhbnNhY3Rpb25GZWVzLFxufSBmcm9tICcuLi9pbnRlcm5hbC5qcyc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4LFxuICBUeFJlcXVlc3RPcHRpb25zLFxuICBUeXBlV2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHsgZ3VhcmRUeFBlcm1pc3Npb24sIHN0cmlwSGV4UHJlZml4IH0gZnJvbSAnLi91dGlscy5qcyc7XG5cbnR5cGUgU3Rha2VSZXF1ZXN0UGFyYW1zID0gVHlwZVdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8U3Rha2VSZXF1ZXN0PjtcblxuY29uc3QgYnVpbGRTdGFrZU1ldGFkYXRhID0gKHBhcmFtczogU3Rha2VSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFTdGFrZSgpO1xuICBtZXRhZGF0YS52YWxpZGF0b3JQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlZhbGlkYXRvclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLnJld2FyZE1ldGhvZCA9XG4gICAgcGFyYW1zLlJld2FyZE1ldGhvZCA9PT0gU3Rha2VSZXdhcmRNZXRob2QuUGF5VG9CYWxhbmNlID8gMCA6IDE7XG4gIGNvbnN0IGhleCA9IHN0cmlwSGV4UHJlZml4KHBhcmFtcy5TdGFrZUFtb3VudE5hbm9zKTtcbiAgbWV0YWRhdGEuc3Rha2VBbW91bnROYW5vcyA9XG4gICAgaGV4ID09PSAnMCcgPyBuZXcgVWludDhBcnJheShbMF0pIDogaGV4VG9CeXRlcyhoZXgpO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RTdGFrZVRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFN0YWtlUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRTdGFrZU1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3Qgc3Rha2UgPSBhc3luYyAoXG4gIHBhcmFtczogU3Rha2VSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxTdGFrZVR4blJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRTdGFrZU1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICBwYXJzZUludChwYXJhbXMuU3Rha2VBbW91bnROYW5vcywgMTYpICtcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICtcbiAgICAgICAgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgU3Rha2VMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2s6IHBhcmFtcy5WYWxpZGF0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICAgICAgICBTdGFrZUxpbWl0OiBwYXJhbXMuU3Rha2VBbW91bnROYW5vcyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3N0YWtlJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0U3Rha2VUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG50eXBlIFVuc3Rha2VSZXF1ZXN0UGFyYW1zID0gVHlwZVdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8VW5zdGFrZVJlcXVlc3Q+O1xuXG5jb25zdCBidWlsZFVuc3Rha2VNZXRhZGF0YSA9IChwYXJhbXM6IFVuc3Rha2VSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFVbnN0YWtlKCk7XG4gIG1ldGFkYXRhLnZhbGlkYXRvclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgY29uc3QgaGV4ID0gc3RyaXBIZXhQcmVmaXgocGFyYW1zLlVuc3Rha2VBbW91bnROYW5vcyk7XG4gIG1ldGFkYXRhLnVuc3Rha2VBbW91bnROYW5vcyA9XG4gICAgaGV4ID09PSAnMCcgPyBuZXcgVWludDhBcnJheShbMF0pIDogaGV4VG9CeXRlcyhoZXgpO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVbnN0YWtlVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogVW5zdGFrZVJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVW5zdGFrZU1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdW5zdGFrZSA9IGFzeW5jIChcbiAgcGFyYW1zOiBVbnN0YWtlUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8U3Rha2VUeG5SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVW5zdGFrZU1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBVbnN0YWtlTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIFZhbGlkYXRvclB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuVmFsaWRhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgICAgICAgVW5zdGFrZUxpbWl0OiBwYXJhbXMuVW5zdGFrZUFtb3VudE5hbm9zLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdW5zdGFrZScsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFVuc3Rha2VUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG50eXBlIFVubG9ja1N0YWtlUmVxdWVzdFBhcmFtcyA9XG4gIFR5cGVXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFVubG9ja1N0YWtlUmVxdWVzdD47XG5cbmNvbnN0IGJ1aWxkVW5sb2NrU3Rha2VNZXRhZGF0YSA9IChwYXJhbXM6IFVubG9ja1N0YWtlUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhVW5sb2NrU3Rha2UoKTtcbiAgbWV0YWRhdGEudmFsaWRhdG9yUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5WYWxpZGF0b3JQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5zdGFydEVwb2NoTnVtYmVyID0gcGFyYW1zLlN0YXJ0RXBvY2hOdW1iZXI7XG4gIG1ldGFkYXRhLmVuZEVwb2NoTnVtYmVyID0gcGFyYW1zLkVuZEVwb2NoTnVtYmVyO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVbmxvY2tTdGFrZVRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFVubG9ja1N0YWtlUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVbmxvY2tTdGFrZU1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdW5sb2NrU3Rha2UgPSBhc3luYyAoXG4gIHBhcmFtczogVW5sb2NrU3Rha2VSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxTdGFrZVR4blJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVbmxvY2tTdGFrZU1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBVbmxvY2tTdGFrZUxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBWYWxpZGF0b3JQdWJsaWNLZXlCYXNlNThDaGVjazogcGFyYW1zLlZhbGlkYXRvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdW5sb2NrLXN0YWtlJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VW5sb2NrU3Rha2VUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuIl19
import { TransactionSpendingLimitResponseOptions } from '../identity/index.js';
export declare function guardTxPermission(spendingLimitOptions: TransactionSpendingLimitResponseOptions): Promise<import("../identity/types.js").IdentityDerivePayload | undefined>;
export declare function stripHexPrefix(hex: string): string;

@@ -20,2 +20,5 @@ import { identity, } from '../identity/index.js';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxRQUFRLEdBQ1QsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxvQkFBNkQ7SUFFN0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sS0FBSyxHQUFHLENBQUMsY0FBdUIsRUFBRSxFQUFFO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQ2pDLEdBQUcsb0JBQW9CO2dCQUN2QixlQUFlLEVBQ2IsQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQztvQkFDL0QsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDO2FBQzlDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsSUFBSSxPQUFPLGNBQWMsS0FBSyxTQUFTLEVBQUU7UUFDdkMsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDOUI7U0FBTTtRQUNMLE9BQVEsY0FBbUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDekQ7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zLFxuICBpZGVudGl0eSxcbn0gZnJvbSAnLi4vaWRlbnRpdHkvaW5kZXguanMnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3VhcmRUeFBlcm1pc3Npb24oXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zOiBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnNcbikge1xuICBjb25zdCBoYXNQZXJtaXNzaW9ucyA9IGlkZW50aXR5Lmhhc1Blcm1pc3Npb25zKHNwZW5kaW5nTGltaXRPcHRpb25zKTtcbiAgY29uc3QgZ3VhcmQgPSAoaGFzUGVybWlzc2lvbnM6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoIWhhc1Blcm1pc3Npb25zKSB7XG4gICAgICByZXR1cm4gaWRlbnRpdHkucmVxdWVzdFBlcm1pc3Npb25zKHtcbiAgICAgICAgLi4uc3BlbmRpbmdMaW1pdE9wdGlvbnMsXG4gICAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgICAoaWRlbnRpdHkudHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0T3B0aW9ucy5HbG9iYWxERVNPTGltaXQgPz8gMCkgK1xuICAgICAgICAgIChzcGVuZGluZ0xpbWl0T3B0aW9ucy5HbG9iYWxERVNPTGltaXQgPz8gMCksXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKHR5cGVvZiBoYXNQZXJtaXNzaW9ucyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuIGd1YXJkKGhhc1Blcm1pc3Npb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKGhhc1Blcm1pc3Npb25zIGFzIFByb21pc2U8Ym9vbGVhbj4pLnRoZW4oZ3VhcmQpO1xuICB9XG59XG4iXX0=
export function stripHexPrefix(hex) {
return hex.startsWith('0x') ? hex.slice(2) : hex;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb25zL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxRQUFRLEdBQ1QsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxvQkFBNkQ7SUFFN0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sS0FBSyxHQUFHLENBQUMsY0FBdUIsRUFBRSxFQUFFO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQ2pDLEdBQUcsb0JBQW9CO2dCQUN2QixlQUFlLEVBQ2IsQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQztvQkFDL0QsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDO2FBQzlDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsSUFBSSxPQUFPLGNBQWMsS0FBSyxTQUFTLEVBQUU7UUFDdkMsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDOUI7U0FBTTtRQUNMLE9BQVEsY0FBbUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDekQ7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUFXO0lBQ3hDLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMsXG4gIGlkZW50aXR5LFxufSBmcm9tICcuLi9pZGVudGl0eS9pbmRleC5qcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBndWFyZFR4UGVybWlzc2lvbihcbiAgc3BlbmRpbmdMaW1pdE9wdGlvbnM6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9uc1xuKSB7XG4gIGNvbnN0IGhhc1Blcm1pc3Npb25zID0gaWRlbnRpdHkuaGFzUGVybWlzc2lvbnMoc3BlbmRpbmdMaW1pdE9wdGlvbnMpO1xuICBjb25zdCBndWFyZCA9IChoYXNQZXJtaXNzaW9uczogYm9vbGVhbikgPT4ge1xuICAgIGlmICghaGFzUGVybWlzc2lvbnMpIHtcbiAgICAgIHJldHVybiBpZGVudGl0eS5yZXF1ZXN0UGVybWlzc2lvbnMoe1xuICAgICAgICAuLi5zcGVuZGluZ0xpbWl0T3B0aW9ucyxcbiAgICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICAgIChpZGVudGl0eS50cmFuc2FjdGlvblNwZW5kaW5nTGltaXRPcHRpb25zLkdsb2JhbERFU09MaW1pdCA/PyAwKSArXG4gICAgICAgICAgKHNwZW5kaW5nTGltaXRPcHRpb25zLkdsb2JhbERFU09MaW1pdCA/PyAwKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBpZiAodHlwZW9mIGhhc1Blcm1pc3Npb25zID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gZ3VhcmQoaGFzUGVybWlzc2lvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoaGFzUGVybWlzc2lvbnMgYXMgUHJvbWlzZTxib29sZWFuPikudGhlbihndWFyZCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwSGV4UHJlZml4KGhleDogc3RyaW5nKSB7XG4gIHJldHVybiBoZXguc3RhcnRzV2l0aCgnMHgnKSA/IGhleC5zbGljZSgyKSA6IGhleDtcbn1cbiJdfQ==

@@ -1,5 +0,5 @@

import { encodeUTF8ToBytes, identity, TransactionMetadataRegisterAsValidator, TransactionMetadataUnjailValidator, TransactionMetadataUnregisterAsValidator, } from '../identity/index.js';
import { hexToBytes } from '@noble/hashes/utils';
import { TransactionMetadataRegisterAsValidator, TransactionMetadataUnjailValidator, TransactionMetadataUnregisterAsValidator, encodeUTF8ToBytes, identity, } from '../identity/index.js';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal.js';
import { guardTxPermission } from './utils.js';
import { guardTxPermission, stripHexPrefix } from './utils.js';
const buildRegisterAsValidatorMetadata = (params) => {

@@ -108,5 +108,2 @@ const metadata = new TransactionMetadataRegisterAsValidator();

};
function stripHexPrefix(hex) {
return hex.startsWith('0x') ? hex.slice(2) : hex;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1Isc0NBQXNDLEVBQ3RDLGtDQUFrQyxFQUNsQyx3Q0FBd0MsR0FDekMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNakQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUsvQyxNQUFNLGdDQUFnQyxHQUFHLENBQ3ZDLE1BQXdDLEVBQ3hDLEVBQUU7SUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLHNDQUFzQyxFQUFFLENBQUM7SUFDOUQsUUFBUSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLENBQUMsbUNBQW1DO1FBQzFDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQztJQUM3QyxRQUFRLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO0lBQzlELFFBQVEsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUN2QyxjQUFjLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQzNDLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENB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QUFPLEVBQUUsWUFBWTtvQkFDckIsUUFBUSxDQUFDLCtCQUErQixFQUFFLHdCQUF3Qjt3QkFDaEUsRUFBRSx1QkFBdUI7b0JBQzNCLENBQUM7YUFDSjtTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQywwQkFBMEIsRUFBRSxNQUFNLEVBQUU7UUFDN0QsR0FBRyxPQUFPO1FBQ1Ysb0JBQW9CLEVBQUUsbUNBQW1DO0tBQzFELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLFNBQVMsY0FBYyxDQUFDLEdBQVc7SUFDakMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgUmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3QsXG4gIFVuamFpbFZhbGlkYXRvclJlcXVlc3QsXG4gIFVucmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3QsXG4gIFZhbGlkYXRvclR4blJlc3BvbnNlLFxufSBmcm9tICcuLi9iYWNrZW5kLXR5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7XG4gIGVuY29kZVVURjhUb0J5dGVzLFxuICBpZGVudGl0eSxcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVJlZ2lzdGVyQXNWYWxpZGF0b3IsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFVbmphaWxWYWxpZGF0b3IsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFVbnJlZ2lzdGVyQXNWYWxpZGF0b3IsXG59IGZyb20gJy4uL2lkZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB7IGhleFRvQnl0ZXMgfSBmcm9tICdAbm9ibGUvaGFzaGVzL3V0aWxzJztcbmltcG9ydCB7XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsXG4gIFR4UmVxdWVzdE9wdGlvbnMsXG4gIFR5cGVXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQge1xuICBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeCxcbiAgZ2V0VHhXaXRoRmVlTmFub3MsXG4gIGhhbmRsZVNpZ25BbmRTdWJtaXQsXG4gIHN1bVRyYW5zYWN0aW9uRmVlcyxcbn0gZnJvbSAnLi4vaW50ZXJuYWwuanMnO1xuaW1wb3J0IHsgZ3VhcmRUeFBlcm1pc3Npb24gfSBmcm9tICcuL3V0aWxzLmpzJztcblxudHlwZSBSZWdpc3RlckFzVmFsaWRhdG9yUmVxdWVzdFBhcmFtcyA9XG4gIFR5cGVXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0PjtcblxuY29uc3QgYnVpbGRSZWdpc3RlckFzVmFsaWRhdG9yTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogUmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3RQYXJhbXNcbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhUmVnaXN0ZXJBc1ZhbGlkYXRvcigpO1xuICBtZXRhZGF0YS5kb21haW5zID0gcGFyYW1zLkRvbWFpbnMubWFwKChkKSA9PiBlbmNvZGVVVEY4VG9CeXRlcyhkKSk7XG4gIG1ldGFkYXRhLmRlbGVnYXRlZFN0YWtlQ29tbWlzc2lvbkJhc2lzUG9pbnRzID1cbiAgICBwYXJhbXMuRGVsZWdhdGVkU3Rha2VDb21taXNzaW9uQmFzaXNQb2ludHM7XG4gIG1ldGFkYXRhLmRpc2FibGVEZWxlZ2F0ZWRTdGFrZSA9IHBhcmFtcy5EaXNhYmxlRGVsZWdhdGVkU3Rha2U7XG4gIG1ldGFkYXRhLnZvdGluZ1B1YmxpY0tleSA9IGhleFRvQnl0ZXMoc3RyaXBIZXhQcmVmaXgocGFyYW1zLlZvdGluZ1B1YmxpY0tleSkpO1xuICBtZXRhZGF0YS52b3RpbmdBdXRob3JpemF0aW9uID0gaGV4VG9CeXRlcyhcbiAgICBzdHJpcEhleFByZWZpeChwYXJhbXMuVm90aW5nQXV0aG9yaXphdGlvbilcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0UmVnaXN0ZXJBc1ZhbGlkYXRvclRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFJlZ2lzdGVyQXNWYWxpZGF0b3JNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyQXNWYWxpZGF0b3IgPSBhc3luYyAoXG4gIHBhcmFtczogUmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIFZhbGlkYXRvclR4blJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlXG4gID5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkUmVnaXN0ZXJBc1ZhbGlkYXRvck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBUcmFuc2FjdGlvbkNvdW50TGltaXRNYXA6IHtcbiAgICAgICAgUkVHSVNURVJfQVNfVkFMSURBVE9SOlxuICAgICAgICAgIG9wdGlvbnM/LnR4TGltaXRDb3VudCA/P1xuICAgICAgICAgIGlkZW50aXR5LnRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdE9wdGlvbnM/LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcFxuICAgICAgICAgICAgPy5SRUdJU1RFUl9BU19WQUxJREFUT1IgPz9cbiAgICAgICAgICAxLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdmFsaWRhdG9ycy9yZWdpc3RlcicsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFJlZ2lzdGVyQXNWYWxpZGF0b3JUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG50eXBlIFVucmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3RQYXJhbXMgPVxuICBUeXBlV2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxVbnJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0PjtcblxuY29uc3QgYnVpbGRVbnJlZ2lzdGVyQXNWYWxpZGF0b3JNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBVbnJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhVW5yZWdpc3RlckFzVmFsaWRhdG9yKCk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VW5yZWdpc3RlckFzVmFsaWRhdG9yVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogVW5yZWdpc3RlckFzVmFsaWRhdG9yUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVbnJlZ2lzdGVyQXNWYWxpZGF0b3JNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVuUmVnaXN0ZXJBc1ZhbGlkYXRvciA9IGFzeW5jIChcbiAgcGFyYW1zOiBVbnJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxcbiAgICBWYWxpZGF0b3JUeG5SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVucmVnaXN0ZXJBc1ZhbGlkYXRvck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBUcmFuc2FjdGlvbkNvdW50TGltaXRNYXA6IHtcbiAgICAgICAgVU5SRUdJU1RFUl9BU19WQUxJREFUT1I6XG4gICAgICAgICAgb3B0aW9ucz8udHhMaW1pdENvdW50ID8/XG4gICAgICAgICAgaWRlbnRpdHkudHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0T3B0aW9ucz8uVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwXG4gICAgICAgICAgICA/LlVOUkVHSVNURVJfQVNfVkFMSURBVE9SID8/XG4gICAgICAgICAgMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3ZhbGlkYXRvcnMvdW5yZWdpc3RlcicsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFVucmVnaXN0ZXJBc1ZhbGlkYXRvclRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbnR5cGUgVW5qYWlsVmFsaWRhdG9yUmVxdWVzdFBhcmFtcyA9XG4gIFR5cGVXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFVuamFpbFZhbGlkYXRvclJlcXVlc3Q+O1xuXG5jb25zdCBidWlsZFVuamFpbFZhbGlkYXRvck1ldGFkYXRhID0gKHBhcmFtczogVW5qYWlsVmFsaWRhdG9yUmVxdWVzdFBhcmFtcykgPT4ge1xuICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFVbmphaWxWYWxpZGF0b3IoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVbmphaWxWYWxpZGF0b3JUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVbmphaWxWYWxpZGF0b3JSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVuamFpbFZhbGlkYXRvck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdW5KYWlsVmFsaWRhdG9yID0gYXN5bmMgKFxuICBwYXJhbXM6IFVuamFpbFZhbGlkYXRvclJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIFZhbGlkYXRvclR4blJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlXG4gID5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVW5qYWlsVmFsaWRhdG9yTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBVTkpBSUxfVkFMSURBVE9SOlxuICAgICAgICAgIG9wdGlvbnM/LnR4TGltaXRDb3VudCA/P1xuICAgICAgICAgIGlkZW50aXR5LnRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdE9wdGlvbnM/LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcFxuICAgICAgICAgICAgPy5VTlJFR0lTVEVSX0FTX1ZBTElEQVRPUiA/P1xuICAgICAgICAgIDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC92YWxpZGF0b3JzL3VuamFpbCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFVuamFpbFZhbGlkYXRvclRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIHN0cmlwSGV4UHJlZml4KGhleDogc3RyaW5nKSB7XG4gIHJldHVybiBoZXguc3RhcnRzV2l0aCgnMHgnKSA/IGhleC5zbGljZSgyKSA6IGhleDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUWpELE9BQU8sRUFDTCxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHdDQUF3QyxFQUN4QyxpQkFBaUIsRUFDakIsUUFBUSxHQUNULE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBTXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLL0QsTUFBTSxnQ0FBZ0MsR0FBRyxDQUN2QyxNQUF3QyxFQUN4QyxFQUFFO0lBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxzQ0FBc0MsRUFBRSxDQUFDO0lBQzlELFFBQVEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxDQUFDLG1DQUFtQztRQUMxQyxNQUFNLENBQUMsbUNBQW1DLENBQUM7SUFDN0MsUUFBUSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztJQUM5RCxRQUFRLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FDdkMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUMzQyxDQUFDO0lBRUYsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FB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QWdCLEVBQ2QsT0FBTyxFQUFFLFlBQVk7b0JBQ3JCLFFBQVEsQ0FBQywrQkFBK0IsRUFBRSx3QkFBd0I7d0JBQ2hFLEVBQUUsdUJBQXVCO29CQUMzQixDQUFDO2FBQ0o7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sbUJBQW1CLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxFQUFFO1FBQzdELEdBQUcsT0FBTztRQUNWLG9CQUFvQixFQUFFLG1DQUFtQztLQUMxRCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhUb0J5dGVzIH0gZnJvbSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIFJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0LFxuICBVbmphaWxWYWxpZGF0b3JSZXF1ZXN0LFxuICBVbnJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0LFxuICBWYWxpZGF0b3JUeG5SZXNwb25zZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbk1ldGFkYXRhUmVnaXN0ZXJBc1ZhbGlkYXRvcixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVVuamFpbFZhbGlkYXRvcixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVVucmVnaXN0ZXJBc1ZhbGlkYXRvcixcbiAgZW5jb2RlVVRGOFRvQnl0ZXMsXG4gIGlkZW50aXR5LFxufSBmcm9tICcuLi9pZGVudGl0eS9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeCxcbiAgZ2V0VHhXaXRoRmVlTmFub3MsXG4gIGhhbmRsZVNpZ25BbmRTdWJtaXQsXG4gIHN1bVRyYW5zYWN0aW9uRmVlcyxcbn0gZnJvbSAnLi4vaW50ZXJuYWwuanMnO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeCxcbiAgVHhSZXF1ZXN0T3B0aW9ucyxcbiAgVHlwZVdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IGd1YXJkVHhQZXJtaXNzaW9uLCBzdHJpcEhleFByZWZpeCB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG50eXBlIFJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0UGFyYW1zID1cbiAgVHlwZVdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8UmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3Q+O1xuXG5jb25zdCBidWlsZFJlZ2lzdGVyQXNWYWxpZGF0b3JNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBSZWdpc3RlckFzVmFsaWRhdG9yUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFSZWdpc3RlckFzVmFsaWRhdG9yKCk7XG4gIG1ldGFkYXRhLmRvbWFpbnMgPSBwYXJhbXMuRG9tYWlucy5tYXAoKGQpID0+IGVuY29kZVVURjhUb0J5dGVzKGQpKTtcbiAgbWV0YWRhdGEuZGVsZWdhdGVkU3Rha2VDb21taXNzaW9uQmFzaXNQb2ludHMgPVxuICAgIHBhcmFtcy5EZWxlZ2F0ZWRTdGFrZUNvbW1pc3Npb25CYXNpc1BvaW50cztcbiAgbWV0YWRhdGEuZGlzYWJsZURlbGVnYXRlZFN0YWtlID0gcGFyYW1zLkRpc2FibGVEZWxlZ2F0ZWRTdGFrZTtcbiAgbWV0YWRhdGEudm90aW5nUHVibGljS2V5ID0gaGV4VG9CeXRlcyhzdHJpcEhleFByZWZpeChwYXJhbXMuVm90aW5nUHVibGljS2V5KSk7XG4gIG1ldGFkYXRhLnZvdGluZ0F1dGhvcml6YXRpb24gPSBoZXhUb0J5dGVzKFxuICAgIHN0cmlwSGV4UHJlZml4KHBhcmFtcy5Wb3RpbmdBdXRob3JpemF0aW9uKVxuICApO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RSZWdpc3RlckFzVmFsaWRhdG9yVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogUmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkUmVnaXN0ZXJBc1ZhbGlkYXRvck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJBc1ZhbGlkYXRvciA9IGFzeW5jIChcbiAgcGFyYW1zOiBSZWdpc3RlckFzVmFsaWRhdG9yUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgVmFsaWRhdG9yVHhuUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRSZWdpc3RlckFzVmFsaWRhdG9yTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBSRUdJU1RFUl9BU19WQUxJREFUT1I6XG4gICAgICAgICAgb3B0aW9ucz8udHhMaW1pdENvdW50ID8/XG4gICAgICAgICAgaWRlbnRpdHkudHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0T3B0aW9ucz8uVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwXG4gICAgICAgICAgICA/LlJFR0lTVEVSX0FTX1ZBTElEQVRPUiA/P1xuICAgICAgICAgIDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC92YWxpZGF0b3JzL3JlZ2lzdGVyJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0UmVnaXN0ZXJBc1ZhbGlkYXRvclRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbnR5cGUgVW5yZWdpc3RlckFzVmFsaWRhdG9yUmVxdWVzdFBhcmFtcyA9XG4gIFR5cGVXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFVucmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3Q+O1xuXG5jb25zdCBidWlsZFVucmVnaXN0ZXJBc1ZhbGlkYXRvck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFVucmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3RQYXJhbXNcbikgPT4ge1xuICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFVbnJlZ2lzdGVyQXNWYWxpZGF0b3IoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVbnJlZ2lzdGVyQXNWYWxpZGF0b3JUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVbnJlZ2lzdGVyQXNWYWxpZGF0b3JSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVucmVnaXN0ZXJBc1ZhbGlkYXRvck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgdW5SZWdpc3RlckFzVmFsaWRhdG9yID0gYXN5bmMgKFxuICBwYXJhbXM6IFVucmVnaXN0ZXJBc1ZhbGlkYXRvclJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIFZhbGlkYXRvclR4blJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlXG4gID5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVW5yZWdpc3RlckFzVmFsaWRhdG9yTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBVTlJFR0lTVEVSX0FTX1ZBTElEQVRPUjpcbiAgICAgICAgICBvcHRpb25zPy50eExpbWl0Q291bnQgPz9cbiAgICAgICAgICBpZGVudGl0eS50cmFuc2FjdGlvblNwZW5kaW5nTGltaXRPcHRpb25zPy5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXBcbiAgICAgICAgICAgID8uVU5SRUdJU1RFUl9BU19WQUxJREFUT1IgPz9cbiAgICAgICAgICAxLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdmFsaWRhdG9ycy91bnJlZ2lzdGVyJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VW5yZWdpc3RlckFzVmFsaWRhdG9yVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxudHlwZSBVbmphaWxWYWxpZGF0b3JSZXF1ZXN0UGFyYW1zID1cbiAgVHlwZVdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8VW5qYWlsVmFsaWRhdG9yUmVxdWVzdD47XG5cbmNvbnN0IGJ1aWxkVW5qYWlsVmFsaWRhdG9yTWV0YWRhdGEgPSAocGFyYW1zOiBVbmphaWxWYWxpZGF0b3JSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIHJldHVybiBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YVVuamFpbFZhbGlkYXRvcigpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFVuamFpbFZhbGlkYXRvclRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFVuamFpbFZhbGlkYXRvclJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVW5qYWlsVmFsaWRhdG9yTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1bkphaWxWYWxpZGF0b3IgPSBhc3luYyAoXG4gIHBhcmFtczogVW5qYWlsVmFsaWRhdG9yUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgVmFsaWRhdG9yVHhuUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVbmphaWxWYWxpZGF0b3JNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwOiB7XG4gICAgICAgIFVOSkFJTF9WQUxJREFUT1I6XG4gICAgICAgICAgb3B0aW9ucz8udHhMaW1pdENvdW50ID8/XG4gICAgICAgICAgaWRlbnRpdHkudHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0T3B0aW9ucz8uVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwXG4gICAgICAgICAgICA/LlVOUkVHSVNURVJfQVNfVkFMSURBVE9SID8/XG4gICAgICAgICAgMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3ZhbGlkYXRvcnMvdW5qYWlsJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VW5qYWlsVmFsaWRhdG9yVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcbiJdfQ==
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