Socket
Socket
Sign inDemoInstall

@chainlink/evm-gauntlet

Package Overview
Dependencies
230
Maintainers
5
Versions
123
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.0-develop-20240409214435 to 0.0.0-develop-20240430133909

3

dist/core/commands/base/executeCommand.js

@@ -161,2 +161,3 @@ "use strict";

blockAgeLimitSeconds: env.blockAgeLimitSeconds,
timeoutSeconds: env.timeoutSeconds,
}, deps.logger)

@@ -206,2 +207,2 @@ : deps.makeProvider(env.providerUrl);

exports.makeExecuteCommand = makeExecuteCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZUNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jb21tYW5kcy9iYXNlL2V4ZWN1dGVDb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDREQUErRDtBQU0vRCx1Q0FBNEQ7QUFDNUQsMENBQXFEO0FBb0M5QyxNQUFNLGtCQUFrQixHQUFHLENBQ2hDLG1CQUFpRSxFQUNqRSxzQkFBNEQsRUFDNUQseUJBQXdHLEVBQ3hHLEVBQUUsQ0FBQyxDQUNILE1BTUMsRUFDRCxFQUFFLENBQUMsQ0FBQyxJQUE4RSxFQUFFLEVBQUU7O0lBQ3RGLE1BQU0sRUFBRSxHQUFHLElBQUEsdUJBQWEsRUFBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXpFLE1BQU0sT0FBTyxTQVNSLE1BQU0sY0FBZSxTQUFRLDRCQUE4QztZQXFCOUUsWUFBWSxLQUFLLEVBQUUsSUFBSTtnQkFDckIsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkE2RnBCLGtCQUFhLEdBQUcsQ0FBQyxPQUFlLEVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtnQkFFL0UseUJBQW9CLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsR0FBRSxDQUFDLENBQUE7Z0JBRTNDLHdCQUFtQixHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEdBQUUsQ0FBQyxDQUFBO2dCQUUxQyx1QkFBa0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxHQUFFLENBQUMsQ0FBQTtnQkFFekMsbUJBQWMsR0FBRyxLQUFLLEVBQ3BCLFdBQWlHLEVBQ2pHLEtBQVMsRUFDVCxFQUFFO29CQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0s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QyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZHLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtZQUU1QixDQUFDLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsWUFBWTtnQkFDekMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1lBRTNCLENBQUMsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXO2dCQUN2QyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNyRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUE7WUFFMUIsT0FBTyxDQUFDLENBQUE7UUFDVixDQUFDO1dBNEpGLENBQUE7SUFFRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDLENBQUE7QUF4U1ksUUFBQSxrQkFBa0Isc0JBd1M5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3VsdCwgV3JpdGVDb21tYW5kIH0gZnJvbSAnQGNoYWlubGluay9nYXVudGxldC1jb3JlJ1xuaW1wb3J0IHsgQ29tbWFuZEN0b3IgfSBmcm9tICcuJ1xuaW1wb3J0IHsgRGVwZW5kZW5jaWVzLCBCYXNpY0VudiB9IGZyb20gJy4uLy4uL2RlcGVuZGVuY2llcydcbmltcG9ydCB7IElQcm92aWRlciB9IGZyb20gJy4uLy4uL3Byb3ZpZGVyJ1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZXNwb25zZSB9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uLy4uL3dhbGxldCdcbmltcG9ydCB7IG1ha2VDb21tYW5kSWQsIFZhbGlkYXRpb24sIElucHV0IH0gZnJvbSAnLi9jb21tYW5kJ1xuaW1wb3J0IHsgcHJpbnRFeGVjdXRpb25JbnB1dHMgfSBmcm9tICcuLi8uLi8uLi91dGlscydcbmltcG9ydCB7IENvbnRyYWN0TG9hZGVyLCBFeGVjdXRlQ29tbWFuZENvbmZpZywgRXhlY3V0ZUNvbW1hbmRJbnN0YW5jZSB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+IHtcbiAgaWQ6IHN0cmluZ1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZ1xuICB3YWxsZXQ6IElXYWxsZXQ8V2FsbGV0PlxuICBwcm92aWRlcjogSVByb3ZpZGVyPFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24sIFdhbGxldD5cbiAgZmxhZ3M6IGFueVxuICBlbnY6IGFueVxuICBjb250cmFjdDogQ29udHJhY3Rcbn1cblxuZXhwb3J0IHR5cGUgQ29tbWFuZEluZm8gPSB7XG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nXG4gIGFjdGlvbjogc3RyaW5nXG4gIGlucHV0czogUmVjb3JkPHN0cmluZywgYW55PlxufVxuXG50eXBlIE1ha2VNZXNzYWdlPENJLCBDb250cmFjdCwgUHJvdmlkZXIsIE1lc3NhZ2U+ID0gKFxuICBjb250cmFjdDogQ29udHJhY3QsXG4gIHByb3ZpZGVyOiBQcm92aWRlcixcbiAgaW5wdXQ6IENJLFxuICBhY3Rpb246IHN0cmluZyxcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmcsXG4gIGlzRGVwbG95bWVudD86IGJvb2xlYW4sXG4gIG9wdHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSA9PiAob3B0cz86IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFByb21pc2U8TWVzc2FnZVtdPlxuXG50eXBlIEdldEZ1bmN0aW9uSW5wdXRTY2hlbWE8Q0ksIENvbnRyYWN0PiA9IChcbiAgY29udHJhY3Q6IENvbnRyYWN0LFxuICBjb250cmFjdE5hbWU6IHN0cmluZyxcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gIGlucHV0OiBDSSxcbikgPT4gKCkgPT4gQ29tbWFuZEluZm9cblxuZXhwb3J0IGNvbnN0IG1ha2VFeGVjdXRlQ29tbWFuZCA9IDxVSSwgQ0ksIE1lc3NhZ2UsIENvbnRyYWN0LCBQcm92aWRlciwgVHJhbnNhY3Rpb24sIFdhbGxldD4oXG4gIHJlZ2lzdGVyTWFrZU1lc3NhZ2U6IE1ha2VNZXNzYWdlPENJLCBDb250cmFjdCwgUHJvdmlkZXIsIE1lc3NhZ2U+LFxuICBnZXRGdW5jdGlvbklucHV0U2NoZW1hOiBHZXRGdW5jdGlvbklucHV0U2NoZW1hPENJLCBDb250cmFjdD4sXG4gIG1ha2VEeW5hbWljQ29udHJhY3RMb2FkZXI6IChjb250cmFjdExvYWRlcnM6IENvbnRyYWN0TG9hZGVyPENvbnRyYWN0PltdKSA9PiAodXNlcklucHV0PzogVUkpID0+IENvbnRyYWN0LFxuKSA9PiAoXG4gIGNvbmZpZzogRXhlY3V0ZUNvbW1hbmRDb25maWc8XG4gICAgVUksXG4gICAgQ0ksXG4gICAgVHJhbnNhY3Rpb24sXG4gICAgRXhlY3V0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+LFxuICAgIENvbnRyYWN0XG4gID4sXG4pID0+IChkZXBzOiBEZXBlbmRlbmNpZXM8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0LCBCYXNpY0Vudj4pID0+IHtcbiAgY29uc3QgaWQgPSBtYWtlQ29tbWFuZElkKGNvbmZpZy5jYXRlZ29yeSwgY29uZmlnLmFjdGlvbiwgY29uZmlnLnN1ZmZpeGVzKVxuXG4gIGNvbnN0IGNvbW1hbmQ6IENvbW1hbmRDdG9yPEV4ZWN1dGVDb21tYW5kSW5zdGFuY2U8XG4gICAgVUksXG4gICAgQ0ksXG4gICAgUHJvdmlkZXIsXG4gICAgQ29udHJhY3QsXG4gICAgTWVzc2FnZSxcbiAgICBUcmFuc2FjdGlvbixcbiAgICBXYWxsZXQsXG4gICAgRXhlY3V0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+XG4gID4+ID0gY2xhc3MgRXhlY3V0ZUNvbW1hbmQgZXh0ZW5kcyBXcml0ZUNvbW1hbmQ8VHJhbnNhY3Rpb25SZXNwb25zZTxUcmFuc2FjdGlvbj4+IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcblxuICAgIHByb3ZpZGVyOiBJUHJvdmlkZXI8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PlxuICAgIHdhbGxldDogSVdhbGxldDxXYWxsZXQ+XG4gICAgZXhlY3V0aW9uQ29udGV4dDogRXhlY3V0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+XG4gICAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmdcbiAgICBjb250cmFjdEZ1bmN0aW9uOiBzdHJpbmdcbiAgICBhY2NvdW50OiBzdHJpbmdcbiAgICBjb250cmFjdDogQ29udHJhY3RcbiAgICBza2lwU2ltdWxhdGU6IGJvb2xlYW5cblxuICAgIGlucHV0OiBJbnB1dDxVSSwgQ0k+XG5cbiAgICBtYWtlTWVzc2FnZTogKG9wdHM/OiBhbnkpID0+IFByb21pc2U8TWVzc2FnZVtdPlxuICAgIGdldENvbW1hbmRJbmZvOiAoKSA9PiBDb21tYW5kSW5mb1xuXG4gICAgYmVmb3JlRXhlY3V0ZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAgIGFmdGVyRXhlY3V0ZTogKHJlc3BvbnNlOiBSZXN1bHQ8VHJhbnNhY3Rpb25SZXNwb25zZTxUcmFuc2FjdGlvbj4+KSA9PiBQcm9taXNlPGFueT5cbiAgICBhZnRlckV4cG9ydDogKHJlc3BvbnNlOiBSZXN1bHQ8bnVsbD4pID0+IFByb21pc2U8YW55PlxuXG4gICAgY29uc3RydWN0b3IoZmxhZ3MsIGFyZ3MpIHtcbiAgICAgIHN1cGVyKGZsYWdzLCBhcmdzKVxuICAgIH1cblxuICAgIHN0YXRpYyBpZCA9IGlkXG4gICAgc3RhdGljIGNhdGVnb3J5ID0gY29uZmlnLmNhdGVnb3J5XG4gICAgc3RhdGljIGV4YW1wbGVzID0gY29uZmlnLnV4LmV4YW1wbGVzXG5cbiAgICBzdGF0aWMgY3JlYXRlID0gYXN5bmMgKGZsYWdzLCBhcmdzKSA9PiB7XG4gICAgICBjb25zdCBjID0gbmV3IEV4ZWN1dGVDb21tYW5kKGZsYWdzLCBhcmdzKVxuXG4gICAgICBjb25zdCBlbnYgPSBkZXBzLm1ha2VFbnYoZmxhZ3MpXG5cbiAgICAgIGlmICghIWRlcHMubWFrZU11bHRpTm9kZVByb3ZpZGVyICYmIGVudi5tdWx0aU5vZGVFbmFibGVkKSB7XG4gICAgICAgIGRlcHMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFVzaW5nIG11bHRpLW5vZGUgcHJvdmlkZXIgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIGFuZCByZXRyaWVzIGVuYWJsZWQ6IHVybHM9JHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIFtlbnYucHJvdmlkZXJVcmwsIC4uLihlbnYuZmFsbGJhY2tVcmxzIHx8IFtdKV0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgJ1xcdCcsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXBzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBVc2luZyBzaW5nbGUtbm9kZSBwcm92aWRlciB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgYW5kIHJldHJpZXMgZGlzYWJsZWQ6IHVybD0ke2Vudi5wcm92aWRlclVybH1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBjLnByb3ZpZGVyID1cbiAgICAgICAgISFkZXBzLm1ha2VNdWx0aU5vZGVQcm92aWRlciAmJiBlbnYubXVsdGlOb2RlRW5hYmxlZFxuICAgICAgICAgID8gYXdhaXQgZGVwcy5tYWtlTXVsdGlOb2RlUHJvdmlkZXIoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1cmxzOiBbZW52LnByb3ZpZGVyVXJsLCAuLi4oZW52LmZhbGxiYWNrVXJscyB8fCBbXSldLFxuICAgICAgICAgICAgICAgIHByb3ZpZGVyT3B0czoge1xuICAgICAgICAgICAgICAgICAgYmF0Y2hNYXhDb3VudDogZW52Lm1heFJwY0NhbGxzUGVyQmF0Y2gsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbml0aWFsV2FpdFNlY29uZHM6IGVudi5pbml0aWFsV2FpdFNlY29uZHMsXG4gICAgICAgICAgICAgICAgbWF4Um91bmRzOiBlbnYubWF4Um91bmRzLFxuICAgICAgICAgICAgICAgIGJsb2NrQWdlTGltaXRTZWNvbmRzOiBlbnYuYmxvY2tBZ2VMaW1pdFNlY29uZHMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRlcHMubG9nZ2VyLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogZGVwcy5tYWtlUHJvdmlkZXIoZW52LnByb3ZpZGVyVXJsKVxuICAgICAgYy53YWxsZXQgPSBhd2FpdCBkZXBzLm1ha2VXYWxsZXQoZW52LCBmbGFncylcbiAgICAgIGMuY29udHJhY3RBZGRyZXNzID1cbiAgICAgICAgYXJnc1swXSB8fCAoY29uZmlnLmxvYWREZWZhdWx0Q29udHJhY3RBZGRyZXNzID8gY29uZmlnLmxvYWREZWZhdWx0Q29udHJhY3RBZGRyZXNzKGVudikgOiB1bmRlZmluZWQpXG4gICAgICBjLmNvbnRyYWN0ID0gY29uZmlnLmxvYWRDb250cmFjdCA/IGNvbmZpZy5sb2FkQ29udHJhY3QoKSA6IHVuZGVmaW5lZFxuICAgICAgYy5leGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBwcm92aWRlcjogYy5wcm92aWRlcixcbiAgICAgICAgd2FsbGV0OiBjLndhbGxldCxcbiAgICAgICAgaWQ6IG1ha2VDb21tYW5kSWQoY29uZmlnLmNhdGVnb3J5LCBjb25maWcuYWN0aW9uLCBjb25maWcuc3VmZml4ZXMpLFxuICAgICAgICBjb250cmFjdEFkZHJlc3M6IGMuY29udHJhY3RBZGRyZXNzLFxuICAgICAgICBmbGFncyxcbiAgICAgICAgZW52LFxuICAgICAgICBjb250cmFjdDogYy5jb250cmFjdCxcbiAgICAgIH1cbiAgICAgIGMubG9nZ2VyID0gZGVwcy5sb2dnZXJcbiAgICAgIGMuaW5wdXQgPSBhd2FpdCBjLmJ1aWxkQ29tbWFuZElucHV0KGZsYWdzLCBhcmdzLCBlbnYpXG4gICAgICBjLnNraXBTaW11bGF0ZSA9IGVudi5za2lwU2ltdWxhdGUgfHwgZmFsc2VcblxuICAgICAgLy8gaWYgdGhlcmUncyBubyBjb250cmFjdCAoYGxvYWRDb250cmFjdCgpYCkgY29uZmlndXJlZCwgdHJ5IHRvIGdldFxuICAgICAgLy8gYSBjb250cmFjdCBsb2FkZXIgZHluYW1pY2FsbHksIGl0J3MgdXNlZCBmb3IgYWJzdHJhY3QgY29tbWFuZC5cbiAgICAgIGlmICghYy5jb250cmFjdCkge1xuICAgICAgICBjb25zdCBkeW5hbWljQ29udHJhY3RMb2FkZXIgPSBtYWtlRHluYW1pY0NvbnRyYWN0TG9hZGVyKGRlcHMuY29udHJhY3RMaXN0KVxuICAgICAgICBjLmNvbnRyYWN0ID0gZHluYW1pY0NvbnRyYWN0TG9hZGVyKGMuaW5wdXQudXNlcilcbiAgICAgICAgYy5leGVjdXRpb25Db250ZXh0LmNvbnRyYWN0ID0gYy5jb250cmFjdFxuICAgICAgfVxuXG4gICAgICAvLyBGb3IgYWJzdHJhY3QgY29tbWFuZHMsIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGZ1bmN0aW9uIHZhbHVlIG9uIHRoZSB1c2VyIGlucHV0XG4gICAgICBjLmNvbnRyYWN0RnVuY3Rpb24gPSAoYy5pbnB1dC51c2VyIGFzIGFueSkuZnVuY3Rpb24gfHwgY29uZmlnLmludGVybmFsRnVuY3Rpb24gfHwgY29uZmlnLmFjdGlvblxuICAgICAgYy5tYWtlTWVzc2FnZSA9IHJlZ2lzdGVyTWFrZU1lc3NhZ2UoXG4gICAgICAgIGMuY29udHJhY3QsXG4gICAgICAgIGMucHJvdmlkZXIucHJvdmlkZXIsXG4gICAgICAgIGMuaW5wdXQuY29udHJhY3QsXG4gICAgICAgIGMuY29udHJhY3RGdW5jdGlvbixcbiAgICAgICAgYy5jb250cmFjdEFkZHJlc3MsXG4gICAgICAgIGMuY29udHJhY3RGdW5jdGlvbiA9PT0gJ2RlcGxveScsXG4gICAgICAgIGZsYWdzLFxuICAgICAgKVxuICAgICAgYy5nZXRDb21tYW5kSW5mbyA9IGdldEZ1bmN0aW9uSW5wdXRTY2hlbWEoYy5jb250cmFjdCwgdGhpcy5jYXRlZ29yeSwgYy5jb250cmFjdEZ1bmN0aW9uLCBjLmlucHV0LmNvbnRyYWN0KVxuXG4gICAgICBjLmJlZm9yZUV4ZWN1dGUgPSBjb25maWcuaG9va3M/LmJlZm9yZUV4ZWN1dGVcbiAgICAgICAgPyBjb25maWcuaG9va3MuYmVmb3JlRXhlY3V0ZShjLmV4ZWN1dGlvbkNvbnRleHQsIGMuaW5wdXQsIHsgbG9nZ2VyOiBkZXBzLmxvZ2dlciwgcHJvbXB0OiBkZXBzLnByb21wdCB9KVxuICAgICAgICA6IGMuZGVmYXVsdEJlZm9yZUV4ZWN1dGUoKVxuXG4gICAgICBjLmFmdGVyRXhlY3V0ZSA9IGNvbmZpZy5ob29rcz8uYWZ0ZXJFeGVjdXRlXG4gICAgICAgID8gY29uZmlnLmhvb2tzLmFmdGVyRXhlY3V0ZShjLmV4ZWN1dGlvbkNvbnRleHQsIGMuaW5wdXQsIHsgbG9nZ2VyOiBkZXBzLmxvZ2dlciwgcHJvbXB0OiBkZXBzLnByb21wdCB9KVxuICAgICAgICA6IGMuZGVmYXVsdEFmdGVyRXhlY3V0ZSgpXG5cbiAgICAgIGMuYWZ0ZXJFeHBvcnQgPSBjb25maWcuaG9va3M/LmFmdGVyRXhwb3J0XG4gICAgICAgID8gY29uZmlnLmhvb2tzLmFmdGVyRXhwb3J0KGMuZXhlY3V0aW9uQ29udGV4dCwgYy5pbnB1dCwgeyBsb2dnZXI6IGRlcHMubG9nZ2VyLCBwcm9tcHQ6IGRlcHMucHJvbXB0IH0pXG4gICAgICAgIDogYy5kZWZhdWx0QWZ0ZXJFeHBvcnQoKVxuXG4gICAgICByZXR1cm4gY1xuICAgIH1cblxuICAgIGhpZ2hsaWdodFRleHQgPSAobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nID0+IGRlcHMubG9nZ2VyLnN0eWxlKG1lc3NhZ2UsICdibHVlJylcblxuICAgIGRlZmF1bHRCZWZvcmVFeGVjdXRlID0gKCkgPT4gYXN5bmMgKCkgPT4ge31cblxuICAgIGRlZmF1bHRBZnRlckV4ZWN1dGUgPSAoKSA9PiBhc3luYyAoKSA9PiB7fVxuXG4gICAgZGVmYXVsdEFmdGVyRXhwb3J0ID0gKCkgPT4gYXN5bmMgKCkgPT4ge31cblxuICAgIHJ1blZhbGlkYXRpb25zID0gYXN5bmMgKFxuICAgICAgdmFsaWRhdGlvbnM6IFZhbGlkYXRpb248VUksIEV4ZWN1dGlvbkNvbnRleHQ8V2FsbGV0LCBQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uPj5bXSxcbiAgICAgIGlucHV0OiBVSSxcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHZhbGlkYXRpb25zLm1hcCgodmFsaWRhdGlvbikgPT4gdmFsaWRhdGlvbihpbnB1dCwgdGhpcy5leGVjdXRpb25Db250ZXh0KSkpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgYnVpbGRDb21tYW5kSW5wdXQgPSBhc3luYyAoZmxhZ3MsIGFyZ3MsIGVudik6IFByb21pc2U8SW5wdXQ8VUksIENJPj4gPT4ge1xuICAgICAgLy8gSWYgYW4gZXh0ZXJuYWwgaW5wdXQgZ2VuZXJhdG9yIGlzIGRlZmluZWQgaGFzIHByZWZlcmVuY2UuIElmIGl0IGZhaWxzIHRvIGdlbmVyYXRlIHRoZSBpbnB1dCwgZmFsbHMgYmFjayB0byBkZWZhdWx0IG1ldGhvZFxuICAgICAgLy8gV2UgaW5wdXQgYWxsIGZsYWdzIGFuZCBlbnYgaW50byBvdmVycmlkZXMgc28gdGhhdCB0aGUgbWFrZUNvbW1hbmRJbnB1dCBmbiBjYW4gdXNlIHRoZW0gYXMgbmVlZGVkXG4gICAgICBsZXQgdXNlcklucHV0ID1cbiAgICAgICAgZGVwcy5tYWtlQ29tbWFuZElucHV0ICYmXG4gICAgICAgIChhd2FpdCBkZXBzLm1ha2VDb21tYW5kSW5wdXQ8VUk+KGlkLCBmbGFncy5uZXR3b3JrLCB0aGlzLmNvbnRyYWN0QWRkcmVzcywgeyAuLi5mbGFncywgLi4uZW52IH0pKVxuICAgICAgaWYgKCF1c2VySW5wdXQpIHtcbiAgICAgICAgdXNlcklucHV0ID0gYXdhaXQgY29uZmlnLm1ha2VVc2VySW5wdXQoZmxhZ3MsIGFyZ3MsIGVudilcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGlvblxuICAgICAgaWYgKGNvbmZpZy52YWxpZGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuVmFsaWRhdGlvbnMoY29uZmlnLnZhbGlkYXRpb25zLCB1c2VySW5wdXQpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRyYWN0SW5wdXQgPSBhd2FpdCBjb25maWcubWFrZUNvbnRyYWN0SW5wdXQodXNlcklucHV0LCB0aGlzLmV4ZWN1dGlvbkNvbnRleHQsIGRlcHMpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiB1c2VySW5wdXQsXG4gICAgICAgIGNvbnRyYWN0OiBjb250cmFjdElucHV0LFxuICAgICAgfVxuICAgIH1cblxuICAgIGRlcGxveUNvbnRyYWN0ID0gYXN5bmMgKCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXNwb25zZTxUcmFuc2FjdGlvbj4+ID0+IHtcbiAgICAgIGF3YWl0IGRlcHMucHJvbXB0KCdDb250aW51ZT8nKVxuICAgICAgZGVwcy5sb2dnZXIubG9hZGluZyhgU2VuZGluZyB0cmFuc2FjdGlvbi4uLmApXG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5wcm92aWRlci5kZXBsb3lDb250cmFjdCh0aGlzLndhbGxldCwgdGhpcy5jb250cmFjdCwgdGhpcy5pbnB1dC5jb250cmFjdCwgZmFsc2UpXG4gICAgICBkZXBzLmxvZ2dlci5sb2FkaW5nKGBXYWl0aW5nIGZvciB0eCBjb25maXJtYXRpb24gYXQgJHt0eC5oYXNofS4uLmApXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHR4LndhaXQoKVxuICAgICAgaWYgKCFyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgIGRlcHMubG9nZ2VyLmVycm9yKGBDb250cmFjdCB3YXMgbm90IGRlcGxveWVkOiAke3R4LmVycm9yTWVzc2FnZX1gKVxuICAgICAgICByZXR1cm4gdHhcbiAgICAgIH1cbiAgICAgIGRlcHMubG9nZ2VyLnN1Y2Nlc3MoYENvbnRyYWN0IGRlcGxveWVkIG9uICR7dHguaGFzaH0gd2l0aCBhZGRyZXNzICR7dHguYWRkcmVzc31gKVxuICAgICAgcmV0dXJuIHR4XG4gICAgfVxuXG4gICAgZXhlY3V0ZVdpdGhTaWduZXIgPSBhc3luYyAoKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlc3BvbnNlPFRyYW5zYWN0aW9uPj4gPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLm1ha2VNZXNzYWdlKClcbiAgICAgIGF3YWl0IGRlcHMucHJvbXB0KGBDb250aW51ZT9gKVxuICAgICAgZGVwcy5sb2dnZXIubG9hZGluZyhgU2lnbmluZyBhbmQgc2VuZGluZyB0cmFuc2FjdGlvbi4uLmApXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMucHJvdmlkZXIuc2lnbkFuZFNlbmQodGhpcy53YWxsZXQsIG1lc3NhZ2VzLCB0aGlzLmNvbnRyYWN0KVxuICAgICAgZGVwcy5sb2dnZXIubG9hZGluZyhgV2FpdGluZyBmb3IgdHggY29uZmlybWF0aW9uIGF0ICR7dHguaGFzaH0uLi5gKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0eC53YWl0KClcbiAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICBkZXBzLmxvZ2dlci5lcnJvcihgVHggd2FzIG5vdCBzdWNjZXNzZnVsOiAke3R4LmVycm9yTWVzc2FnZX1gKVxuICAgICAgICByZXR1cm4gdHhcbiAgICAgIH1cbiAgICAgIGRlcHMubG9nZ2VyLnN1Y2Nlc3MoYFR4IGV4ZWN1dGVkIGF0ICR7dHguaGFzaH1gKVxuICAgICAgcmV0dXJuIHR4XG4gICAgfVxuXG4gICAgc2ltdWxhdGUgPSBhc3luYyAoc2lnbmVyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiA9PiB7XG4gICAgICBjb25zdCBtc2dzID0gYXdhaXQgdGhpcy5tYWtlTWVzc2FnZSh7IG9taXRHYXNEYXRhOiB0cnVlIH0pXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChtc2dzLm1hcCgobXNnKSA9PiB0aGlzLnByb3ZpZGVyLnNpbXVsYXRlKHNpZ25lciwgbXNnLCB0aGlzLmNvbnRyYWN0KSkpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgZXhlY3V0ZSA9IGFzeW5jICgpOiBQcm9taXNlPFJlc3VsdDxUcmFuc2FjdGlvblJlc3BvbnNlPFRyYW5zYWN0aW9uPj4+ID0+IHtcbiAgICAgIGNvbnN0IGluZm8gPSB0aGlzLmdldENvbW1hbmRJbmZvKClcbiAgICAgIGlmIChjb25maWcuYWN0aW9uICE9PSAnZGVwbG95Jykge1xuICAgICAgICBkZXBzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBBYm91dCB0byBleGVjdXRlICR7aW5mby5jb250cmFjdE5hbWV9KCR7dGhpcy5jb250cmFjdEFkZHJlc3N9KS4ke2luZm8uYWN0aW9ufShcXG4ke3ByaW50RXhlY3V0aW9uSW5wdXRzKFxuICAgICAgICAgICAgaW5mby5pbnB1dHMsXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwcy5sb2dnZXIuaW5mbyhgQWJvdXQgdG8gZGVwbG95IGEgbmV3ICR7dGhpcy5oaWdobGlnaHRUZXh0KGNvbmZpZy5jYXRlZ29yeSl9IGNvbnRyYWN0YClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5iZWZvcmVFeGVjdXRlKClcblxuICAgICAgY29uc3QgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLm1ha2VNZXNzYWdlKClcblxuICAgICAgLy8gSWYgdGhlIHVzZXIgZGVjaWRlcyB0byBleHBvcnQgdGhlIHRyYW5zYWN0aW9uIGRhdGEsIHdlIGNhbiBnZW5lcmF0ZSBhbmQgcmV0dXJuIHRoZVxuICAgICAgLy8gdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gd2l0aG91dCBzaWduaW5nIGFuZCBzZW5kaW5nXG4gICAgICBpZiAodGhpcy5mbGFncy5leHBvcnQpIHtcbiAgICAgICAgZGVwcy5sb2dnZXIuaW5mbygnVGhlIGV4cG9ydCBvcHRpb24gd2FzIGVuYWJsZWQuIFRyYW5zYWN0aW9uIHJlcXVlc3QgaW5mb3JtYXRpb24gcmV0dXJuZWQgaW4gcmVwb3J0JylcbiAgICAgICAgY29uc3QgcmVzdWx0ID0geyByZXNwb25zZXM6IFtdIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IChhd2FpdCB0aGlzLmFmdGVyRXhwb3J0KHJlc3VsdCkpIHx8IHt9XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IHsgLi4ucmVzdWx0LCBkYXRhOiB7IG1lc3NhZ2VzLCAuLi5kYXRhIH0gfVxuICAgICAgICBpZiAoZGVwcy5hZnRlckV4cG9ydEV4dGVybmFsKSBhd2FpdCBkZXBzLmFmdGVyRXhwb3J0RXh0ZXJuYWwoaWQsIHRoaXMuZXhlY3V0aW9uQ29udGV4dC5mbGFncy5uZXR3b3JrLCByZXBvcnQpXG4gICAgICAgIHJldHVybiByZXBvcnRcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZ25lciA9IGF3YWl0IHRoaXMud2FsbGV0LmdldFB1YmxpY0tleSgpXG4gICAgICBkZXBzLmxvZ2dlci5pbmZvKGBPcGVyYXRvciBhZGRyZXNzOiAke3NpZ25lcn1gKVxuXG4gICAgICBkZXBzLmxvZ2dlci5pbmZvKGBDb250cmFjdCBhZGRyZXNzOiAke3RoaXMuY29udHJhY3RBZGRyZXNzfWApXG4gICAgICBkZXBzLmxvZ2dlci5sb2FkaW5nKCdTaW11bGF0aW5nIHRyYW5zYWN0aW9ucy4uLicpXG5cbiAgICAgIGlmICghdGhpcy5za2lwU2ltdWxhdGUpIHtcbiAgICAgICAgY29uc3Qgc2ltdWxhdGlvbiA9IGF3YWl0IHRoaXMuc2ltdWxhdGUoc2lnbmVyKVxuXG4gICAgICAgIGlmICghIXRoaXMuZXhlY3V0aW9uQ29udGV4dC5mbGFncy5zaW11bGF0ZSkge1xuICAgICAgICAgIHRoaXMuZGVwcy5sb2dnZXIuc3VjY2VzcyhgVHJhbnNhY3Rpb24gc3VjY2Vzc2Z1bGx5IHNpbXVsYXRlZGApXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3BvbnNlczogW10sXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIHNpbXVsYXRpb246IHNpbXVsYXRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBkZXBzLnByb21wdCgnQ29udGludWU/JylcbiAgICAgIGRlcHMubG9nZ2VyLmxvYWRpbmcoYFNlbmRpbmcgdHJhbnNhY3Rpb24uLi5gKVxuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMucHJvdmlkZXIuc2lnbkFuZFNlbmQodGhpcy53YWxsZXQsIG1lc3NhZ2VzLCB0aGlzLmNvbnRyYWN0KVxuXG4gICAgICBkZXBzLmxvZ2dlci5sb2FkaW5nKGBXYWl0aW5nIGZvciB0eCBjb25maXJtYXRpb24gYXQgJHt0eC5oYXNofS4uLmApXG5cbiAgICAgIGNvbnN0IGlzRGVwbG95bWVudCA9IHRoaXMuY29udHJhY3RGdW5jdGlvbiA9PT0gJ2RlcGxveSdcbiAgICAgIGNvbnN0IG91dCA9IGF3YWl0IHR4LndhaXQoKVxuICAgICAgaWYgKGlzRGVwbG95bWVudCAmJiBvdXQuc3VjY2Vzcykge1xuICAgICAgICBkZXBzLmxvZ2dlci5zdWNjZXNzKGBDb250cmFjdCBkZXBsb3llZCBvbiAke3R4Lmhhc2h9IHdpdGggYWRkcmVzcyAke3R4LmFkZHJlc3N9YClcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRGVwbG95bWVudCAmJiAhb3V0LnN1Y2Nlc3MpIHtcbiAgICAgICAgLy8gRG9uJ3QgdGhpbmsgdGhpcyBjYXNlIHNob3VsZCBldmVyIG9jY3VyXG4gICAgICAgIC8vIHRoZSBjb21tYW5kIHNob3VsZCBlcnJvciBvdXQgYmVmb3JlIGVudGVyaW5nIHRoaXMgaWYgc3RhdGVtZW50XG4gICAgICAgIGRlcHMubG9nZ2VyLmVycm9yKGBDb250cmFjdCB3YXMgbm90IGRlcGxveWVkOiAke3R4LmVycm9yTWVzc2FnZX1gKVxuICAgICAgfVxuICAgICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgICAgcmVzcG9uc2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHgsXG4gICAgICAgICAgICBjb250cmFjdDogdHguYWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuYWZ0ZXJFeGVjdXRlKHJlc3VsdClcbiAgICAgIGRlcHMubG9nZ2VyLnN1Y2Nlc3MoYEV4ZWN1dGlvbiBmaW5pc2hlZCBhdCB0cmFuc2FjdGlvbjogJHtyZXN1bHQucmVzcG9uc2VzWzBdLnR4Lmhhc2h9YClcblxuICAgICAgY29uc3QgcmVwb3J0ID0gISFkYXRhID8geyAuLi5yZXN1bHQsIGRhdGE6IHsgLi4uZGF0YSB9IH0gOiByZXN1bHRcbiAgICAgIGlmIChkZXBzLmFmdGVyRXhlY3V0ZUV4dGVybmFsKSBhd2FpdCBkZXBzLmFmdGVyRXhlY3V0ZUV4dGVybmFsKGlkLCB0aGlzLmV4ZWN1dGlvbkNvbnRleHQuZmxhZ3MubmV0d29yaywgcmVwb3J0KVxuXG4gICAgICByZXR1cm4gcmVwb3J0XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbW1hbmRcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZUNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jb21tYW5kcy9iYXNlL2V4ZWN1dGVDb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDREQUErRDtBQU0vRCx1Q0FBNEQ7QUFDNUQsMENBQXFEO0FBb0M5QyxNQUFNLGtCQUFrQixHQUFHLENBQ2hDLG1CQUFpRSxFQUNqRSxzQkFBNEQsRUFDNUQseUJBQXdHLEVBQ3hHLEVBQUUsQ0FBQyxDQUNILE1BTUMsRUFDRCxFQUFFLENBQUMsQ0FBQyxJQUE4RSxFQUFFLEVBQUU7O0lBQ3RGLE1BQU0sRUFBRSxHQUFHLElBQUEsdUJBQWEsRUFBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXpFLE1BQU0sT0FBTyxTQVNSLE1BQU0sY0FBZSxTQUFRLDRCQUE4QztZQXFCOUUsWUFBWSxLQUFLLEVBQUUsSUFBSTtnQkFDckIsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkE4RnBCLGtCQUFhLEdBQUcsQ0FBQyxPQUFlLEVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtnQkFFL0UseUJBQW9CLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsR0FBRSxDQUFDLENBQUE7Z0JBRTNDLHdCQUFtQixHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEdBQUUsQ0FBQyxDQUFBO2dCQUUxQyx1QkFBa0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxHQUFFLENBQUMsQ0FBQTtnQkFFekMsbUJBQWMsR0FBRyxLQUFLLEVBQ3BCLFdBQWlHLEVBQ2pHLEtBQVMsRUFDVCxFQUFFO29CQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0s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YSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1lBRTVCLENBQUMsQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxZQUFZO2dCQUN6QyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0RyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUE7WUFFM0IsQ0FBQyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVc7Z0JBQ3ZDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3JHLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtZQUUxQixPQUFPLENBQUMsQ0FBQTtRQUNWLENBQUM7V0E0SkYsQ0FBQTtJQUVELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQXpTWSxRQUFBLGtCQUFrQixzQkF5UzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzdWx0LCBXcml0ZUNvbW1hbmQgfSBmcm9tICdAY2hhaW5saW5rL2dhdW50bGV0LWNvcmUnXG5pbXBvcnQgeyBDb21tYW5kQ3RvciB9IGZyb20gJy4nXG5pbXBvcnQgeyBEZXBlbmRlbmNpZXMsIEJhc2ljRW52IH0gZnJvbSAnLi4vLi4vZGVwZW5kZW5jaWVzJ1xuaW1wb3J0IHsgSVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXInXG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vdHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vLi4vd2FsbGV0J1xuaW1wb3J0IHsgbWFrZUNvbW1hbmRJZCwgVmFsaWRhdGlvbiwgSW5wdXQgfSBmcm9tICcuL2NvbW1hbmQnXG5pbXBvcnQgeyBwcmludEV4ZWN1dGlvbklucHV0cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgQ29udHJhY3RMb2FkZXIsIEV4ZWN1dGVDb21tYW5kQ29uZmlnLCBFeGVjdXRlQ29tbWFuZEluc3RhbmNlIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRpb25Db250ZXh0PFdhbGxldCwgUHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbj4ge1xuICBpZDogc3RyaW5nXG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nXG4gIHdhbGxldDogSVdhbGxldDxXYWxsZXQ+XG4gIHByb3ZpZGVyOiBJUHJvdmlkZXI8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PlxuICBmbGFnczogYW55XG4gIGVudjogYW55XG4gIGNvbnRyYWN0OiBDb250cmFjdFxufVxuXG5leHBvcnQgdHlwZSBDb21tYW5kSW5mbyA9IHtcbiAgY29udHJhY3ROYW1lOiBzdHJpbmdcbiAgYWN0aW9uOiBzdHJpbmdcbiAgaW5wdXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG59XG5cbnR5cGUgTWFrZU1lc3NhZ2U8Q0ksIENvbnRyYWN0LCBQcm92aWRlciwgTWVzc2FnZT4gPSAoXG4gIGNvbnRyYWN0OiBDb250cmFjdCxcbiAgcHJvdmlkZXI6IFByb3ZpZGVyLFxuICBpbnB1dDogQ0ksXG4gIGFjdGlvbjogc3RyaW5nLFxuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZyxcbiAgaXNEZXBsb3ltZW50PzogYm9vbGVhbixcbiAgb3B0cz86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pID0+IChvcHRzPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUHJvbWlzZTxNZXNzYWdlW10+XG5cbnR5cGUgR2V0RnVuY3Rpb25JbnB1dFNjaGVtYTxDSSwgQ29udHJhY3Q+ID0gKFxuICBjb250cmFjdDogQ29udHJhY3QsXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgaW5wdXQ6IENJLFxuKSA9PiAoKSA9PiBDb21tYW5kSW5mb1xuXG5leHBvcnQgY29uc3QgbWFrZUV4ZWN1dGVDb21tYW5kID0gPFVJLCBDSSwgTWVzc2FnZSwgQ29udHJhY3QsIFByb3ZpZGVyLCBUcmFuc2FjdGlvbiwgV2FsbGV0PihcbiAgcmVnaXN0ZXJNYWtlTWVzc2FnZTogTWFrZU1lc3NhZ2U8Q0ksIENvbnRyYWN0LCBQcm92aWRlciwgTWVzc2FnZT4sXG4gIGdldEZ1bmN0aW9uSW5wdXRTY2hlbWE6IEdldEZ1bmN0aW9uSW5wdXRTY2hlbWE8Q0ksIENvbnRyYWN0PixcbiAgbWFrZUR5bmFtaWNDb250cmFjdExvYWRlcjogKGNvbnRyYWN0TG9hZGVyczogQ29udHJhY3RMb2FkZXI8Q29udHJhY3Q+W10pID0+ICh1c2VySW5wdXQ/OiBVSSkgPT4gQ29udHJhY3QsXG4pID0+IChcbiAgY29uZmlnOiBFeGVjdXRlQ29tbWFuZENvbmZpZzxcbiAgICBVSSxcbiAgICBDSSxcbiAgICBUcmFuc2FjdGlvbixcbiAgICBFeGVjdXRpb25Db250ZXh0PFdhbGxldCwgUHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbj4sXG4gICAgQ29udHJhY3RcbiAgPixcbikgPT4gKGRlcHM6IERlcGVuZGVuY2llczxQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQsIEJhc2ljRW52PikgPT4ge1xuICBjb25zdCBpZCA9IG1ha2VDb21tYW5kSWQoY29uZmlnLmNhdGVnb3J5LCBjb25maWcuYWN0aW9uLCBjb25maWcuc3VmZml4ZXMpXG5cbiAgY29uc3QgY29tbWFuZDogQ29tbWFuZEN0b3I8RXhlY3V0ZUNvbW1hbmRJbnN0YW5jZTxcbiAgICBVSSxcbiAgICBDSSxcbiAgICBQcm92aWRlcixcbiAgICBDb250cmFjdCxcbiAgICBNZXNzYWdlLFxuICAgIFRyYW5zYWN0aW9uLFxuICAgIFdhbGxldCxcbiAgICBFeGVjdXRpb25Db250ZXh0PFdhbGxldCwgUHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbj5cbiAgPj4gPSBjbGFzcyBFeGVjdXRlQ29tbWFuZCBleHRlbmRzIFdyaXRlQ29tbWFuZDxUcmFuc2FjdGlvblJlc3BvbnNlPFRyYW5zYWN0aW9uPj4ge1xuICAgIFtrZXk6IHN0cmluZ106IGFueVxuXG4gICAgcHJvdmlkZXI6IElQcm92aWRlcjxQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQ+XG4gICAgd2FsbGV0OiBJV2FsbGV0PFdhbGxldD5cbiAgICBleGVjdXRpb25Db250ZXh0OiBFeGVjdXRpb25Db250ZXh0PFdhbGxldCwgUHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbj5cbiAgICBjb250cmFjdEFkZHJlc3M6IHN0cmluZ1xuICAgIGNvbnRyYWN0RnVuY3Rpb246IHN0cmluZ1xuICAgIGFjY291bnQ6IHN0cmluZ1xuICAgIGNvbnRyYWN0OiBDb250cmFjdFxuICAgIHNraXBTaW11bGF0ZTogYm9vbGVhblxuXG4gICAgaW5wdXQ6IElucHV0PFVJLCBDST5cblxuICAgIG1ha2VNZXNzYWdlOiAob3B0cz86IGFueSkgPT4gUHJvbWlzZTxNZXNzYWdlW10+XG4gICAgZ2V0Q29tbWFuZEluZm86ICgpID0+IENvbW1hbmRJbmZvXG5cbiAgICBiZWZvcmVFeGVjdXRlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gICAgYWZ0ZXJFeGVjdXRlOiAocmVzcG9uc2U6IFJlc3VsdDxUcmFuc2FjdGlvblJlc3BvbnNlPFRyYW5zYWN0aW9uPj4pID0+IFByb21pc2U8YW55PlxuICAgIGFmdGVyRXhwb3J0OiAocmVzcG9uc2U6IFJlc3VsdDxudWxsPikgPT4gUHJvbWlzZTxhbnk+XG5cbiAgICBjb25zdHJ1Y3RvcihmbGFncywgYXJncykge1xuICAgICAgc3VwZXIoZmxhZ3MsIGFyZ3MpXG4gICAgfVxuXG4gICAgc3RhdGljIGlkID0gaWRcbiAgICBzdGF0aWMgY2F0ZWdvcnkgPSBjb25maWcuY2F0ZWdvcnlcbiAgICBzdGF0aWMgZXhhbXBsZXMgPSBjb25maWcudXguZXhhbXBsZXNcblxuICAgIHN0YXRpYyBjcmVhdGUgPSBhc3luYyAoZmxhZ3MsIGFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IGMgPSBuZXcgRXhlY3V0ZUNvbW1hbmQoZmxhZ3MsIGFyZ3MpXG5cbiAgICAgIGNvbnN0IGVudiA9IGRlcHMubWFrZUVudihmbGFncylcblxuICAgICAgaWYgKCEhZGVwcy5tYWtlTXVsdGlOb2RlUHJvdmlkZXIgJiYgZW52Lm11bHRpTm9kZUVuYWJsZWQpIHtcbiAgICAgICAgZGVwcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICBgVXNpbmcgbXVsdGktbm9kZSBwcm92aWRlciB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgYW5kIHJldHJpZXMgZW5hYmxlZDogdXJscz0ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgW2Vudi5wcm92aWRlclVybCwgLi4uKGVudi5mYWxsYmFja1VybHMgfHwgW10pXSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAnXFx0JyxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFVzaW5nIHNpbmdsZS1ub2RlIHByb3ZpZGVyIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiBhbmQgcmV0cmllcyBkaXNhYmxlZDogdXJsPSR7ZW52LnByb3ZpZGVyVXJsfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGMucHJvdmlkZXIgPVxuICAgICAgICAhIWRlcHMubWFrZU11bHRpTm9kZVByb3ZpZGVyICYmIGVudi5tdWx0aU5vZGVFbmFibGVkXG4gICAgICAgICAgPyBhd2FpdCBkZXBzLm1ha2VNdWx0aU5vZGVQcm92aWRlcihcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHVybHM6IFtlbnYucHJvdmlkZXJVcmwsIC4uLihlbnYuZmFsbGJhY2tVcmxzIHx8IFtdKV0sXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJPcHRzOiB7XG4gICAgICAgICAgICAgICAgICBiYXRjaE1heENvdW50OiBlbnYubWF4UnBjQ2FsbHNQZXJCYXRjaCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGluaXRpYWxXYWl0U2Vjb25kczogZW52LmluaXRpYWxXYWl0U2Vjb25kcyxcbiAgICAgICAgICAgICAgICBtYXhSb3VuZHM6IGVudi5tYXhSb3VuZHMsXG4gICAgICAgICAgICAgICAgYmxvY2tBZ2VMaW1pdFNlY29uZHM6IGVudi5ibG9ja0FnZUxpbWl0U2Vjb25kcyxcbiAgICAgICAgICAgICAgICB0aW1lb3V0U2Vjb25kczogZW52LnRpbWVvdXRTZWNvbmRzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkZXBzLmxvZ2dlcixcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGRlcHMubWFrZVByb3ZpZGVyKGVudi5wcm92aWRlclVybClcbiAgICAgIGMud2FsbGV0ID0gYXdhaXQgZGVwcy5tYWtlV2FsbGV0KGVudiwgZmxhZ3MpXG4gICAgICBjLmNvbnRyYWN0QWRkcmVzcyA9XG4gICAgICAgIGFyZ3NbMF0gfHwgKGNvbmZpZy5sb2FkRGVmYXVsdENvbnRyYWN0QWRkcmVzcyA/IGNvbmZpZy5sb2FkRGVmYXVsdENvbnRyYWN0QWRkcmVzcyhlbnYpIDogdW5kZWZpbmVkKVxuICAgICAgYy5jb250cmFjdCA9IGNvbmZpZy5sb2FkQ29udHJhY3QgPyBjb25maWcubG9hZENvbnRyYWN0KCkgOiB1bmRlZmluZWRcbiAgICAgIGMuZXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgcHJvdmlkZXI6IGMucHJvdmlkZXIsXG4gICAgICAgIHdhbGxldDogYy53YWxsZXQsXG4gICAgICAgIGlkOiBtYWtlQ29tbWFuZElkKGNvbmZpZy5jYXRlZ29yeSwgY29uZmlnLmFjdGlvbiwgY29uZmlnLnN1ZmZpeGVzKSxcbiAgICAgICAgY29udHJhY3RBZGRyZXNzOiBjLmNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgZmxhZ3MsXG4gICAgICAgIGVudixcbiAgICAgICAgY29udHJhY3Q6IGMuY29udHJhY3QsXG4gICAgICB9XG4gICAgICBjLmxvZ2dlciA9IGRlcHMubG9nZ2VyXG4gICAgICBjLmlucHV0ID0gYXdhaXQgYy5idWlsZENvbW1hbmRJbnB1dChmbGFncywgYXJncywgZW52KVxuICAgICAgYy5za2lwU2ltdWxhdGUgPSBlbnYuc2tpcFNpbXVsYXRlIHx8IGZhbHNlXG5cbiAgICAgIC8vIGlmIHRoZXJlJ3Mgbm8gY29udHJhY3QgKGBsb2FkQ29udHJhY3QoKWApIGNvbmZpZ3VyZWQsIHRyeSB0byBnZXRcbiAgICAgIC8vIGEgY29udHJhY3QgbG9hZGVyIGR5bmFtaWNhbGx5LCBpdCdzIHVzZWQgZm9yIGFic3RyYWN0IGNvbW1hbmQuXG4gICAgICBpZiAoIWMuY29udHJhY3QpIHtcbiAgICAgICAgY29uc3QgZHluYW1pY0NvbnRyYWN0TG9hZGVyID0gbWFrZUR5bmFtaWNDb250cmFjdExvYWRlcihkZXBzLmNvbnRyYWN0TGlzdClcbiAgICAgICAgYy5jb250cmFjdCA9IGR5bmFtaWNDb250cmFjdExvYWRlcihjLmlucHV0LnVzZXIpXG4gICAgICAgIGMuZXhlY3V0aW9uQ29udGV4dC5jb250cmFjdCA9IGMuY29udHJhY3RcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIGFic3RyYWN0IGNvbW1hbmRzLCB3ZSB3YW50IHRvIGNoZWNrIGZvciBmdW5jdGlvbiB2YWx1ZSBvbiB0aGUgdXNlciBpbnB1dFxuICAgICAgYy5jb250cmFjdEZ1bmN0aW9uID0gKGMuaW5wdXQudXNlciBhcyBhbnkpLmZ1bmN0aW9uIHx8IGNvbmZpZy5pbnRlcm5hbEZ1bmN0aW9uIHx8IGNvbmZpZy5hY3Rpb25cbiAgICAgIGMubWFrZU1lc3NhZ2UgPSByZWdpc3Rlck1ha2VNZXNzYWdlKFxuICAgICAgICBjLmNvbnRyYWN0LFxuICAgICAgICBjLnByb3ZpZGVyLnByb3ZpZGVyLFxuICAgICAgICBjLmlucHV0LmNvbnRyYWN0LFxuICAgICAgICBjLmNvbnRyYWN0RnVuY3Rpb24sXG4gICAgICAgIGMuY29udHJhY3RBZGRyZXNzLFxuICAgICAgICBjLmNvbnRyYWN0RnVuY3Rpb24gPT09ICdkZXBsb3knLFxuICAgICAgICBmbGFncyxcbiAgICAgIClcbiAgICAgIGMuZ2V0Q29tbWFuZEluZm8gPSBnZXRGdW5jdGlvbklucHV0U2NoZW1hKGMuY29udHJhY3QsIHRoaXMuY2F0ZWdvcnksIGMuY29udHJhY3RGdW5jdGlvbiwgYy5pbnB1dC5jb250cmFjdClcblxuICAgICAgYy5iZWZvcmVFeGVjdXRlID0gY29uZmlnLmhvb2tzPy5iZWZvcmVFeGVjdXRlXG4gICAgICAgID8gY29uZmlnLmhvb2tzLmJlZm9yZUV4ZWN1dGUoYy5leGVjdXRpb25Db250ZXh0LCBjLmlucHV0LCB7IGxvZ2dlcjogZGVwcy5sb2dnZXIsIHByb21wdDogZGVwcy5wcm9tcHQgfSlcbiAgICAgICAgOiBjLmRlZmF1bHRCZWZvcmVFeGVjdXRlKClcblxuICAgICAgYy5hZnRlckV4ZWN1dGUgPSBjb25maWcuaG9va3M/LmFmdGVyRXhlY3V0ZVxuICAgICAgICA/IGNvbmZpZy5ob29rcy5hZnRlckV4ZWN1dGUoYy5leGVjdXRpb25Db250ZXh0LCBjLmlucHV0LCB7IGxvZ2dlcjogZGVwcy5sb2dnZXIsIHByb21wdDogZGVwcy5wcm9tcHQgfSlcbiAgICAgICAgOiBjLmRlZmF1bHRBZnRlckV4ZWN1dGUoKVxuXG4gICAgICBjLmFmdGVyRXhwb3J0ID0gY29uZmlnLmhvb2tzPy5hZnRlckV4cG9ydFxuICAgICAgICA/IGNvbmZpZy5ob29rcy5hZnRlckV4cG9ydChjLmV4ZWN1dGlvbkNvbnRleHQsIGMuaW5wdXQsIHsgbG9nZ2VyOiBkZXBzLmxvZ2dlciwgcHJvbXB0OiBkZXBzLnByb21wdCB9KVxuICAgICAgICA6IGMuZGVmYXVsdEFmdGVyRXhwb3J0KClcblxuICAgICAgcmV0dXJuIGNcbiAgICB9XG5cbiAgICBoaWdobGlnaHRUZXh0ID0gKG1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyA9PiBkZXBzLmxvZ2dlci5zdHlsZShtZXNzYWdlLCAnYmx1ZScpXG5cbiAgICBkZWZhdWx0QmVmb3JlRXhlY3V0ZSA9ICgpID0+IGFzeW5jICgpID0+IHt9XG5cbiAgICBkZWZhdWx0QWZ0ZXJFeGVjdXRlID0gKCkgPT4gYXN5bmMgKCkgPT4ge31cblxuICAgIGRlZmF1bHRBZnRlckV4cG9ydCA9ICgpID0+IGFzeW5jICgpID0+IHt9XG5cbiAgICBydW5WYWxpZGF0aW9ucyA9IGFzeW5jIChcbiAgICAgIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uPFVJLCBFeGVjdXRpb25Db250ZXh0PFdhbGxldCwgUHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbj4+W10sXG4gICAgICBpbnB1dDogVUksXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbCh2YWxpZGF0aW9ucy5tYXAoKHZhbGlkYXRpb24pID0+IHZhbGlkYXRpb24oaW5wdXQsIHRoaXMuZXhlY3V0aW9uQ29udGV4dCkpKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIGJ1aWxkQ29tbWFuZElucHV0ID0gYXN5bmMgKGZsYWdzLCBhcmdzLCBlbnYpOiBQcm9taXNlPElucHV0PFVJLCBDST4+ID0+IHtcbiAgICAgIC8vIElmIGFuIGV4dGVybmFsIGlucHV0IGdlbmVyYXRvciBpcyBkZWZpbmVkIGhhcyBwcmVmZXJlbmNlLiBJZiBpdCBmYWlscyB0byBnZW5lcmF0ZSB0aGUgaW5wdXQsIGZhbGxzIGJhY2sgdG8gZGVmYXVsdCBtZXRob2RcbiAgICAgIC8vIFdlIGlucHV0IGFsbCBmbGFncyBhbmQgZW52IGludG8gb3ZlcnJpZGVzIHNvIHRoYXQgdGhlIG1ha2VDb21tYW5kSW5wdXQgZm4gY2FuIHVzZSB0aGVtIGFzIG5lZWRlZFxuICAgICAgbGV0IHVzZXJJbnB1dCA9XG4gICAgICAgIGRlcHMubWFrZUNvbW1hbmRJbnB1dCAmJlxuICAgICAgICAoYXdhaXQgZGVwcy5tYWtlQ29tbWFuZElucHV0PFVJPihpZCwgZmxhZ3MubmV0d29yaywgdGhpcy5jb250cmFjdEFkZHJlc3MsIHsgLi4uZmxhZ3MsIC4uLmVudiB9KSlcbiAgICAgIGlmICghdXNlcklucHV0KSB7XG4gICAgICAgIHVzZXJJbnB1dCA9IGF3YWl0IGNvbmZpZy5tYWtlVXNlcklucHV0KGZsYWdzLCBhcmdzLCBlbnYpXG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRpb25cbiAgICAgIGlmIChjb25maWcudmFsaWRhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1blZhbGlkYXRpb25zKGNvbmZpZy52YWxpZGF0aW9ucywgdXNlcklucHV0KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250cmFjdElucHV0ID0gYXdhaXQgY29uZmlnLm1ha2VDb250cmFjdElucHV0KHVzZXJJbnB1dCwgdGhpcy5leGVjdXRpb25Db250ZXh0LCBkZXBzKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdXNlcjogdXNlcklucHV0LFxuICAgICAgICBjb250cmFjdDogY29udHJhY3RJbnB1dCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZXBsb3lDb250cmFjdCA9IGFzeW5jICgpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVzcG9uc2U8VHJhbnNhY3Rpb24+PiA9PiB7XG4gICAgICBhd2FpdCBkZXBzLnByb21wdCgnQ29udGludWU/JylcbiAgICAgIGRlcHMubG9nZ2VyLmxvYWRpbmcoYFNlbmRpbmcgdHJhbnNhY3Rpb24uLi5gKVxuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMucHJvdmlkZXIuZGVwbG95Q29udHJhY3QodGhpcy53YWxsZXQsIHRoaXMuY29udHJhY3QsIHRoaXMuaW5wdXQuY29udHJhY3QsIGZhbHNlKVxuICAgICAgZGVwcy5sb2dnZXIubG9hZGluZyhgV2FpdGluZyBmb3IgdHggY29uZmlybWF0aW9uIGF0ICR7dHguaGFzaH0uLi5gKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0eC53YWl0KClcbiAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICBkZXBzLmxvZ2dlci5lcnJvcihgQ29udHJhY3Qgd2FzIG5vdCBkZXBsb3llZDogJHt0eC5lcnJvck1lc3NhZ2V9YClcbiAgICAgICAgcmV0dXJuIHR4XG4gICAgICB9XG4gICAgICBkZXBzLmxvZ2dlci5zdWNjZXNzKGBDb250cmFjdCBkZXBsb3llZCBvbiAke3R4Lmhhc2h9IHdpdGggYWRkcmVzcyAke3R4LmFkZHJlc3N9YClcbiAgICAgIHJldHVybiB0eFxuICAgIH1cblxuICAgIGV4ZWN1dGVXaXRoU2lnbmVyID0gYXN5bmMgKCk6IFByb21pc2U8VHJhbnNhY3Rpb25SZXNwb25zZTxUcmFuc2FjdGlvbj4+ID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5tYWtlTWVzc2FnZSgpXG4gICAgICBhd2FpdCBkZXBzLnByb21wdChgQ29udGludWU/YClcbiAgICAgIGRlcHMubG9nZ2VyLmxvYWRpbmcoYFNpZ25pbmcgYW5kIHNlbmRpbmcgdHJhbnNhY3Rpb24uLi5gKVxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0aGlzLnByb3ZpZGVyLnNpZ25BbmRTZW5kKHRoaXMud2FsbGV0LCBtZXNzYWdlcywgdGhpcy5jb250cmFjdClcbiAgICAgIGRlcHMubG9nZ2VyLmxvYWRpbmcoYFdhaXRpbmcgZm9yIHR4IGNvbmZpcm1hdGlvbiBhdCAke3R4Lmhhc2h9Li4uYClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdHgud2FpdCgpXG4gICAgICBpZiAoIXJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgZGVwcy5sb2dnZXIuZXJyb3IoYFR4IHdhcyBub3Qgc3VjY2Vzc2Z1bDogJHt0eC5lcnJvck1lc3NhZ2V9YClcbiAgICAgICAgcmV0dXJuIHR4XG4gICAgICB9XG4gICAgICBkZXBzLmxvZ2dlci5zdWNjZXNzKGBUeCBleGVjdXRlZCBhdCAke3R4Lmhhc2h9YClcbiAgICAgIHJldHVybiB0eFxuICAgIH1cblxuICAgIHNpbXVsYXRlID0gYXN5bmMgKHNpZ25lcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4gPT4ge1xuICAgICAgY29uc3QgbXNncyA9IGF3YWl0IHRoaXMubWFrZU1lc3NhZ2UoeyBvbWl0R2FzRGF0YTogdHJ1ZSB9KVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwobXNncy5tYXAoKG1zZykgPT4gdGhpcy5wcm92aWRlci5zaW11bGF0ZShzaWduZXIsIG1zZywgdGhpcy5jb250cmFjdCkpKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIGV4ZWN1dGUgPSBhc3luYyAoKTogUHJvbWlzZTxSZXN1bHQ8VHJhbnNhY3Rpb25SZXNwb25zZTxUcmFuc2FjdGlvbj4+PiA9PiB7XG4gICAgICBjb25zdCBpbmZvID0gdGhpcy5nZXRDb21tYW5kSW5mbygpXG4gICAgICBpZiAoY29uZmlnLmFjdGlvbiAhPT0gJ2RlcGxveScpIHtcbiAgICAgICAgZGVwcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICBgQWJvdXQgdG8gZXhlY3V0ZSAke2luZm8uY29udHJhY3ROYW1lfSgke3RoaXMuY29udHJhY3RBZGRyZXNzfSkuJHtpbmZvLmFjdGlvbn0oXFxuJHtwcmludEV4ZWN1dGlvbklucHV0cyhcbiAgICAgICAgICAgIGluZm8uaW5wdXRzLFxuICAgICAgICAgICl9KWAsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHMubG9nZ2VyLmluZm8oYEFib3V0IHRvIGRlcGxveSBhIG5ldyAke3RoaXMuaGlnaGxpZ2h0VGV4dChjb25maWcuY2F0ZWdvcnkpfSBjb250cmFjdGApXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMuYmVmb3JlRXhlY3V0ZSgpXG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5tYWtlTWVzc2FnZSgpXG5cbiAgICAgIC8vIElmIHRoZSB1c2VyIGRlY2lkZXMgdG8gZXhwb3J0IHRoZSB0cmFuc2FjdGlvbiBkYXRhLCB3ZSBjYW4gZ2VuZXJhdGUgYW5kIHJldHVybiB0aGVcbiAgICAgIC8vIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIHdpdGhvdXQgc2lnbmluZyBhbmQgc2VuZGluZ1xuICAgICAgaWYgKHRoaXMuZmxhZ3MuZXhwb3J0KSB7XG4gICAgICAgIGRlcHMubG9nZ2VyLmluZm8oJ1RoZSBleHBvcnQgb3B0aW9uIHdhcyBlbmFibGVkLiBUcmFuc2FjdGlvbiByZXF1ZXN0IGluZm9ybWF0aW9uIHJldHVybmVkIGluIHJlcG9ydCcpXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHsgcmVzcG9uc2VzOiBbXSB9XG4gICAgICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgdGhpcy5hZnRlckV4cG9ydChyZXN1bHQpKSB8fCB7fVxuICAgICAgICBjb25zdCByZXBvcnQgPSB7IC4uLnJlc3VsdCwgZGF0YTogeyBtZXNzYWdlcywgLi4uZGF0YSB9IH1cbiAgICAgICAgaWYgKGRlcHMuYWZ0ZXJFeHBvcnRFeHRlcm5hbCkgYXdhaXQgZGVwcy5hZnRlckV4cG9ydEV4dGVybmFsKGlkLCB0aGlzLmV4ZWN1dGlvbkNvbnRleHQuZmxhZ3MubmV0d29yaywgcmVwb3J0KVxuICAgICAgICByZXR1cm4gcmVwb3J0XG4gICAgICB9XG4gICAgICBjb25zdCBzaWduZXIgPSBhd2FpdCB0aGlzLndhbGxldC5nZXRQdWJsaWNLZXkoKVxuICAgICAgZGVwcy5sb2dnZXIuaW5mbyhgT3BlcmF0b3IgYWRkcmVzczogJHtzaWduZXJ9YClcblxuICAgICAgZGVwcy5sb2dnZXIuaW5mbyhgQ29udHJhY3QgYWRkcmVzczogJHt0aGlzLmNvbnRyYWN0QWRkcmVzc31gKVxuICAgICAgZGVwcy5sb2dnZXIubG9hZGluZygnU2ltdWxhdGluZyB0cmFuc2FjdGlvbnMuLi4nKVxuXG4gICAgICBpZiAoIXRoaXMuc2tpcFNpbXVsYXRlKSB7XG4gICAgICAgIGNvbnN0IHNpbXVsYXRpb24gPSBhd2FpdCB0aGlzLnNpbXVsYXRlKHNpZ25lcilcblxuICAgICAgICBpZiAoISF0aGlzLmV4ZWN1dGlvbkNvbnRleHQuZmxhZ3Muc2ltdWxhdGUpIHtcbiAgICAgICAgICB0aGlzLmRlcHMubG9nZ2VyLnN1Y2Nlc3MoYFRyYW5zYWN0aW9uIHN1Y2Nlc3NmdWxseSBzaW11bGF0ZWRgKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNwb25zZXM6IFtdLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBzaW11bGF0aW9uOiBzaW11bGF0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgZGVwcy5wcm9tcHQoJ0NvbnRpbnVlPycpXG4gICAgICBkZXBzLmxvZ2dlci5sb2FkaW5nKGBTZW5kaW5nIHRyYW5zYWN0aW9uLi4uYClcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0aGlzLnByb3ZpZGVyLnNpZ25BbmRTZW5kKHRoaXMud2FsbGV0LCBtZXNzYWdlcywgdGhpcy5jb250cmFjdClcblxuICAgICAgZGVwcy5sb2dnZXIubG9hZGluZyhgV2FpdGluZyBmb3IgdHggY29uZmlybWF0aW9uIGF0ICR7dHguaGFzaH0uLi5gKVxuXG4gICAgICBjb25zdCBpc0RlcGxveW1lbnQgPSB0aGlzLmNvbnRyYWN0RnVuY3Rpb24gPT09ICdkZXBsb3knXG4gICAgICBjb25zdCBvdXQgPSBhd2FpdCB0eC53YWl0KClcbiAgICAgIGlmIChpc0RlcGxveW1lbnQgJiYgb3V0LnN1Y2Nlc3MpIHtcbiAgICAgICAgZGVwcy5sb2dnZXIuc3VjY2VzcyhgQ29udHJhY3QgZGVwbG95ZWQgb24gJHt0eC5oYXNofSB3aXRoIGFkZHJlc3MgJHt0eC5hZGRyZXNzfWApXG4gICAgICB9XG5cbiAgICAgIGlmIChpc0RlcGxveW1lbnQgJiYgIW91dC5zdWNjZXNzKSB7XG4gICAgICAgIC8vIERvbid0IHRoaW5rIHRoaXMgY2FzZSBzaG91bGQgZXZlciBvY2N1clxuICAgICAgICAvLyB0aGUgY29tbWFuZCBzaG91bGQgZXJyb3Igb3V0IGJlZm9yZSBlbnRlcmluZyB0aGlzIGlmIHN0YXRlbWVudFxuICAgICAgICBkZXBzLmxvZ2dlci5lcnJvcihgQ29udHJhY3Qgd2FzIG5vdCBkZXBsb3llZDogJHt0eC5lcnJvck1lc3NhZ2V9YClcbiAgICAgIH1cbiAgICAgIGxldCByZXN1bHQgPSB7XG4gICAgICAgIHJlc3BvbnNlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR4LFxuICAgICAgICAgICAgY29udHJhY3Q6IHR4LmFkZHJlc3MsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFmdGVyRXhlY3V0ZShyZXN1bHQpXG4gICAgICBkZXBzLmxvZ2dlci5zdWNjZXNzKGBFeGVjdXRpb24gZmluaXNoZWQgYXQgdHJhbnNhY3Rpb246ICR7cmVzdWx0LnJlc3BvbnNlc1swXS50eC5oYXNofWApXG5cbiAgICAgIGNvbnN0IHJlcG9ydCA9ICEhZGF0YSA/IHsgLi4ucmVzdWx0LCBkYXRhOiB7IC4uLmRhdGEgfSB9IDogcmVzdWx0XG4gICAgICBpZiAoZGVwcy5hZnRlckV4ZWN1dGVFeHRlcm5hbCkgYXdhaXQgZGVwcy5hZnRlckV4ZWN1dGVFeHRlcm5hbChpZCwgdGhpcy5leGVjdXRpb25Db250ZXh0LmZsYWdzLm5ldHdvcmssIHJlcG9ydClcblxuICAgICAgcmV0dXJuIHJlcG9ydFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb21tYW5kXG59XG4iXX0=

@@ -96,2 +96,3 @@ "use strict";

blockAgeLimitSeconds: env.blockAgeLimitSeconds,
timeoutSeconds: env.timeoutSeconds,
}, deps.logger)

@@ -117,2 +118,2 @@ : deps.makeProvider(env.providerUrl);

exports.makeInspectionCommand = makeInspectionCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zcGVjdGlvbkNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jb21tYW5kcy9iYXNlL2luc3BlY3Rpb25Db21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx3R0FBOEU7QUFJOUUsdUNBQWdFO0FBMEZ6RCxNQUFNLHFCQUFxQixHQUFHLENBQ25DLEtBQWdDLEVBQ2hDLEVBQUUsQ0FBQyxDQUNILE1BQWlILEVBQ2pILEVBQUUsQ0FBQyxDQUFDLElBQThFLEVBQUUsRUFBRTs7SUFDdEYsTUFBTSxFQUFFLEdBQUcsSUFBQSx1QkFBYSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFcEYsTUFBTSxPQUFPLFNBQXFELE1BQU0saUJBQ3RFLFNBQVEsY0FBVztZQUQ2Qzs7Z0JBb0VoRSxtQkFBYyxHQUFHLEtBQUssRUFDcEIsV0FBa0csRUFDbEcsS0FBUyxFQUNULEVBQUU7b0JBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUM1RyxPQUFPLE1BQU0sQ0FBQTtnQkFDZixDQUFDLENBQUE7Z0JBRUQsc0JBQWlCLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUEwRCxFQUFFO29CQUNyRyw0SEFBNEg7b0JBQzVILG1HQUFtRztvQkFDbkcsSUFBSSxTQUFTLEdBQ1gsSUFBSSxDQUFDLGdCQUFnQjt3QkFDcEI7NEJBQ0MsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFLLEVBQUUsRUFBRSxL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TSxDQUFDLFlBQVksRUFBRSxDQUFBO1lBQ2xDLENBQUMsQ0FBQyxpQkFBaUIsR0FBRztnQkFDcEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2dCQUNwQixFQUFFLEVBQUUsSUFBQSx1QkFBYSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUM3RSxlQUFlLEVBQUUsQ0FBQyxDQUFDLGVBQWU7Z0JBQ2xDLEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7YUFDckIsQ0FBQTtZQUVELE9BQU8sQ0FBQyxDQUFBO1FBQ1YsQ0FBQztXQThFRixDQUFBO0lBRUQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQyxDQUFBO0FBMUpZLFFBQUEscUJBQXFCLHlCQTBKakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbW1hbmQgZnJvbSAnQGNoYWlubGluay9nYXVudGxldC1jb3JlL2Rpc3QvY29tbWFuZHMvaW50ZXJuYWwvYmFzZSdcbmltcG9ydCB7IENvbW1hbmRDdG9yLCBJbnB1dCB9IGZyb20gJy4nXG5pbXBvcnQgeyBJbnNwZWN0aW9uRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi4vLi4vZGVwZW5kZW5jaWVzJ1xuaW1wb3J0IHsgSVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXInXG5pbXBvcnQgeyBDb21tYW5kVVgsIG1ha2VDb21tYW5kSWQsIFZhbGlkYXRpb24gfSBmcm9tICcuL2NvbW1hbmQnXG5pbXBvcnQgeyBDb250cmFjdEZhY3RvcnkgfSBmcm9tICdldGhlcnMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zcGVjdGlvbkNvbnRleHQ8V2FsbGV0LCBQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uPiB7XG4gIGlkOiBzdHJpbmdcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmdcbiAgcHJvdmlkZXI6IElQcm92aWRlcjxQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQ+XG4gIGZsYWdzOiBhbnlcbiAgZW52OiBhbnlcbiAgY29udHJhY3Q6IENvbnRyYWN0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zcGVjdFVzZXJJbnB1dDxVSSwgQ29tcGFyZUlucHV0PiB7XG4gIGlucHV0OiBVSVxuICB0b0NvbXBhcmU/OiBDb21wYXJlSW5wdXRcbn1cblxuLy8gVE9ETzogVGVtcG9yYXJ5IGluc3BlY3Rpb24gcmVwb3J0LlxuZXhwb3J0IGludGVyZmFjZSBJbnNwZWN0aW9uUmVwb3J0PFF1ZXJ5UmVzdWx0PiB7XG4gIGRhdGE6IFF1ZXJ5UmVzdWx0XG4gIGNvbnRyYWN0OiBzdHJpbmdcbiAgaW5zcGVjdGlvbjoge1xuICAgIGlkOiBzdHJpbmdcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICByZXN1bHRUeXBlOiAnc3VjY2VzcycgfCAnZmFpbGVkJ1xuICB9W11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnNwZWN0Q29tbWFuZENvbmZpZzxcbiAgVUksXG4gIENJLFxuICBDb21wYXJlSW5wdXQsXG4gIFF1ZXJ5UmVzdWx0LFxuICBQcm92aWRlcixcbiAgQ29udHJhY3QsXG4gIE1lc3NhZ2UsXG4gIFRyYW5zYWN0aW9uLFxuICBXYWxsZXRcbj4ge1xuICB1eDogQ29tbWFuZFVYXG4gIC8vIExpc3Qgb2YgcXVlcnkgZnVuY3Rpb25zIHRvIGNhbGxcbiAgcXVlcmllczogc3RyaW5nW10gfCAoKGlucHV0OiBVSSkgPT4gc3RyaW5nW10pXG4gIG1ha2VVc2VySW5wdXQ/OiAoZmxhZ3M6IGFueSwgYXJnczogc3RyaW5nW10pID0+IFByb21pc2U8SW5zcGVjdFVzZXJJbnB1dDxVSSwgQ29tcGFyZUlucHV0Pj5cbiAgLyoqXG4gICAqIEdpdmVuIHRoZSB1c2VyIGlucHV0LCB0cmFuc2xhdGUgdG8gZXZlcnkgY29udHJhY3QgaW5wdXQgcmVxdWlyZWQgZm9yIGVhY2ggcXVlcnlcbiAgICovXG4gIG1ha2VDb250cmFjdElucHV0PzogKHVzZXJJbnB1dDogVUkpID0+IFByb21pc2U8Q0k+XG4gIC8qKlxuICAgKiBBZnRlciBkb2luZyBldmVyeSBxdWVyeSwgY29udmVydCB0aGUgcmVzdWx0cyBpbnRvIHRoZSB0eXBlIHdlIHdhbnQgKFF1ZXJ5UmVzdWx0KSBhbmQgaWYgdG9Db21wYXJlIGlzIGdpdmVuLCBtYXRjaCByZXN1bHQgaW50byBpdFxuICAgKi9cbiAgbWFrZUNvbXBhcmlzaW9uRGF0YTogKFxuICAgIHByb3ZpZGVyOiBJUHJvdmlkZXI8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PixcbiAgICBjb250ZXh0PzogSW5zcGVjdGlvbkNvbnRleHQ8V2FsbGV0LCBQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uPixcbiAgKSA9PiAoXG4gICAgcmVzdWx0czogYW55W10sXG4gICAgaW5wdXQ6IFVJLFxuICAgIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nLFxuICAgIGNvbnRyYWN0PzogQ29udHJhY3RGYWN0b3J5LFxuICApID0+IFByb21pc2U8e1xuICAgIHRvQ29tcGFyZTogQ29tcGFyZUlucHV0XG4gICAgcmVzdWx0OiBRdWVyeVJlc3VsdFxuICB9PlxuICBpbnNwZWN0PzogKFxuICAgIGV4cGVjdGVkOiBJbnNwZWN0VXNlcklucHV0PFVJLCBDb21wYXJlSW5wdXQ+LFxuICAgIGRhdGE6IHtcbiAgICAgIHRvQ29tcGFyZTogQ29tcGFyZUlucHV0XG4gICAgICByZXN1bHQ6IFF1ZXJ5UmVzdWx0XG4gICAgfSxcbiAgKSA9PiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIHJlc3VsdFR5cGU6ICdzdWNjZXNzJyB8ICdmYWlsZWQnXG4gIH1bXVxuICBsb2FkQ29udHJhY3Q6ICgpID0+IENvbnRyYWN0XG4gIGxvYWREZWZhdWx0Q29udHJhY3RBZGRyZXNzPzogKGVudjogYW55KSA9PiBzdHJpbmdcbiAgdmFsaWRhdGlvbnM/OiBWYWxpZGF0aW9uPFVJLCBJbnNwZWN0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+PltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zcGVjdENvbW1hbmRJbnN0YW5jZTxRdWVyeVJlc3VsdD4ge1xuICBleGVjdXRlOiAoKSA9PiBQcm9taXNlPHsgZGF0YTogSW5zcGVjdGlvblJlcG9ydDxRdWVyeVJlc3VsdD47IHJlc3BvbnNlczogYW55W10gfT5cbn1cblxudHlwZSBGZXRjaDxDb250cmFjdCwgUHJvdmlkZXI+ID0gKFxuICBjb250cmFjdDogQ29udHJhY3QsXG4gIHByb3ZpZGVyOiBQcm92aWRlcixcbiAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmcsXG4gIGZuczogc3RyaW5nW10sXG4gIGlucHV0czogYW55W10sXG4pID0+IGFueVxuXG5leHBvcnQgY29uc3QgbWFrZUluc3BlY3Rpb25Db21tYW5kID0gPFVJLCBDSSwgQ29tcGFyZUlucHV0LCBRdWVyeVJlc3VsdCwgQ29udHJhY3QsIFByb3ZpZGVyPihcbiAgZmV0Y2g6IEZldGNoPENvbnRyYWN0LCBQcm92aWRlcj4sXG4pID0+IDxNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PihcbiAgY29uZmlnOiBJbnNwZWN0Q29tbWFuZENvbmZpZzxVSSwgQ0ksIENvbXBhcmVJbnB1dCwgUXVlcnlSZXN1bHQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24sIFdhbGxldD4sXG4pID0+IChkZXBzOiBJbnNwZWN0aW9uRGVwZW5kZW5jaWVzPFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24sIFdhbGxldD4pID0+IHtcbiAgY29uc3QgaWQgPSBtYWtlQ29tbWFuZElkKGNvbmZpZy51eC5jYXRlZ29yeSwgY29uZmlnLnV4LmZ1bmN0aW9uLCBjb25maWcudXguc3VmZml4ZXMpXG5cbiAgY29uc3QgY29tbWFuZDogQ29tbWFuZEN0b3I8SW5zcGVjdENvbW1hbmRJbnN0YW5jZTxRdWVyeVJlc3VsdD4+ID0gY2xhc3MgSW5zcGVjdGlvbkNvbW1hbmRcbiAgICBleHRlbmRzIEJhc2VDb21tYW5kXG4gICAgaW1wbGVtZW50cyBJbnNwZWN0Q29tbWFuZEluc3RhbmNlPFF1ZXJ5UmVzdWx0PiB7XG4gICAgLy8gUHJvcHNcbiAgICBwcm92aWRlcjogSVByb3ZpZGVyPFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24sIFdhbGxldD5cbiAgICBjb250cmFjdEFkZHJlc3M6IHN0cmluZ1xuXG4gICAgaW5wdXQ6IElucHV0PEluc3BlY3RVc2VySW5wdXQ8VUksIENvbXBhcmVJbnB1dD4sIENJPlxuXG4gICAgY29udHJhY3Q6IENvbnRyYWN0XG5cbiAgICBpbnNwZWN0aW9uQ29udGV4dDogSW5zcGVjdGlvbkNvbnRleHQ8V2FsbGV0LCBQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uPlxuXG4gICAgLy8gVVhcbiAgICBzdGF0aWMgaWQgPSBpZFxuICAgIHN0YXRpYyBjYXRlZ29yeSA9IGNvbmZpZy51eC5jYXRlZ29yeVxuICAgIHN0YXRpYyBleGFtcGxlcyA9IGNvbmZpZy51eC5leGFtcGxlc1xuXG4gICAgc3RhdGljIGNyZWF0ZSA9IGFzeW5jIChmbGFncywgYXJncykgPT4ge1xuICAgICAgY29uc3QgYyA9IG5ldyBJbnNwZWN0aW9uQ29tbWFuZChmbGFncywgYXJncylcblxuICAgICAgY29uc3QgZW52ID0gZGVwcy5tYWtlRW52KGZsYWdzKVxuXG4gICAgICBpZiAoISFkZXBzLm1ha2VNdWx0aU5vZGVQcm92aWRlciAmJiBlbnYubXVsdGlOb2RlRW5hYmxlZCkge1xuICAgICAgICBkZXBzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBVc2luZyBtdWx0aS1ub2RlIHByb3ZpZGVyIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiBhbmQgcmV0cmllcyBlbmFibGVkOiB1cmxzPSR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBbZW52LnByb3ZpZGVyVXJsLCAuLi4oZW52LmZhbGxiYWNrVXJscyB8fCBbXSldLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICdcXHQnLFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICBgVXNpbmcgc2luZ2xlLW5vZGUgcHJvdmlkZXIgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIGFuZCByZXRyaWVzIGRpc2FibGVkOiB1cmw9JHtlbnYucHJvdmlkZXJVcmx9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgYy5wcm92aWRlciA9XG4gICAgICAgICEhZGVwcy5tYWtlTXVsdGlOb2RlUHJvdmlkZXIgJiYgZW52Lm11bHRpTm9kZUVuYWJsZWRcbiAgICAgICAgICA/IGF3YWl0IGRlcHMubWFrZU11bHRpTm9kZVByb3ZpZGVyKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdXJsczogW2Vudi5wcm92aWRlclVybCwgLi4uKGVudi5mYWxsYmFja1VybHMgfHwgW10pXSxcbiAgICAgICAgICAgICAgICBwcm92aWRlck9wdHM6IHtcbiAgICAgICAgICAgICAgICAgIGJhdGNoTWF4Q291bnQ6IGVudi5tYXhScGNDYWxsc1BlckJhdGNoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW5pdGlhbFdhaXRTZWNvbmRzOiBlbnYuaW5pdGlhbFdhaXRTZWNvbmRzLFxuICAgICAgICAgICAgICAgIG1heFJvdW5kczogZW52Lm1heFJvdW5kcyxcbiAgICAgICAgICAgICAgICBibG9ja0FnZUxpbWl0U2Vjb25kczogZW52LmJsb2NrQWdlTGltaXRTZWNvbmRzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkZXBzLmxvZ2dlcixcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGRlcHMubWFrZVByb3ZpZGVyKGVudi5wcm92aWRlclVybClcbiAgICAgIGMuY29udHJhY3RBZGRyZXNzID1cbiAgICAgICAgYXJnc1swXSB8fCAoY29uZmlnLmxvYWREZWZhdWx0Q29udHJhY3RBZGRyZXNzID8gY29uZmlnLmxvYWREZWZhdWx0Q29udHJhY3RBZGRyZXNzKGVudikgOiB1bmRlZmluZWQpXG5cbiAgICAgIGMuaW5wdXQgPSBhd2FpdCBjLmJ1aWxkQ29tbWFuZElucHV0KGZsYWdzLCBhcmdzLCBlbnYpXG4gICAgICBjLmNvbnRyYWN0ID0gY29uZmlnLmxvYWRDb250cmFjdCgpXG4gICAgICBjLmluc3BlY3Rpb25Db250ZXh0ID0ge1xuICAgICAgICBwcm92aWRlcjogYy5wcm92aWRlcixcbiAgICAgICAgaWQ6IG1ha2VDb21tYW5kSWQoY29uZmlnLnV4LmNhdGVnb3J5LCBjb25maWcudXguZnVuY3Rpb24sIGNvbmZpZy51eC5zdWZmaXhlcyksXG4gICAgICAgIGNvbnRyYWN0QWRkcmVzczogYy5jb250cmFjdEFkZHJlc3MsXG4gICAgICAgIGZsYWdzLFxuICAgICAgICBlbnYsXG4gICAgICAgIGNvbnRyYWN0OiBjLmNvbnRyYWN0LFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY1xuICAgIH1cblxuICAgIHJ1blZhbGlkYXRpb25zID0gYXN5bmMgKFxuICAgICAgdmFsaWRhdGlvbnM6IFZhbGlkYXRpb248VUksIEluc3BlY3Rpb25Db250ZXh0PFdhbGxldCwgUHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbj4+W10sXG4gICAgICBpbnB1dDogVUksXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbCh2YWxpZGF0aW9ucy5tYXAoKHZhbGlkYXRpb24pID0+IHZhbGlkYXRpb24oaW5wdXQsIHRoaXMuaW5zcGVjdGlvbkNvbnRleHQpKSlcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICBidWlsZENvbW1hbmRJbnB1dCA9IGFzeW5jIChmbGFncywgYXJncywgZW52KTogUHJvbWlzZTxJbnB1dDxJbnNwZWN0VXNlcklucHV0PFVJLCBDb21wYXJlSW5wdXQ+LCBDST4+ID0+IHtcbiAgICAgIC8vIElmIGFuIGV4dGVybmFsIGlucHV0IGdlbmVyYXRvciBpcyBkZWZpbmVkIGhhcyBwcmVmZXJlbmNlLiBJZiBpdCBmYWlscyB0byBnZW5lcmF0ZSB0aGUgaW5wdXQsIGZhbGxzIGJhY2sgdG8gZGVmYXVsdCBtZXRob2RcbiAgICAgIC8vIFdlIGlucHV0IGFsbCBmbGFncyBhbmQgZW52IGludG8gb3ZlcnJpZGVzIHNvIHRoYXQgdGhlIG1ha2VDb21tYW5kSW5wdXQgZm4gY2FuIHVzZSB0aGVtIGFzIG5lZWRlZFxuICAgICAgbGV0IHVzZXJJbnB1dCA9XG4gICAgICAgIGRlcHMubWFrZUNvbW1hbmRJbnB1dCAmJlxuICAgICAgICAoe1xuICAgICAgICAgIGlucHV0OiBhd2FpdCBkZXBzLm1ha2VDb21tYW5kSW5wdXQ8VUk+KGlkLCBmbGFncy5uZXR3b3JrLCB0aGlzLmNvbnRyYWN0QWRkcmVzcywge1xuICAgICAgICAgICAgLi4uZmxhZ3MsXG4gICAgICAgICAgICAuLi5lbnYsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdG9Db21wYXJlOiBudWxsLFxuICAgICAgICB9IGFzIEluc3BlY3RVc2VySW5wdXQ8VUksIENvbXBhcmVJbnB1dD4pXG5cbiAgICAgIGlmICghdXNlcklucHV0KSB7XG4gICAgICAgIHVzZXJJbnB1dCA9IGF3YWl0IGNvbmZpZy5tYWtlVXNlcklucHV0KGZsYWdzLCBhcmdzKVxuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0aW9uXG4gICAgICBpZiAoY29uZmlnLnZhbGlkYXRpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuVmFsaWRhdGlvbnMoY29uZmlnLnZhbGlkYXRpb25zLCB1c2VySW5wdXQuaW5wdXQpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRyYWN0SW5wdXQgPSBjb25maWcubWFrZUNvbnRyYWN0SW5wdXQgJiYgKGF3YWl0IGNvbmZpZy5tYWtlQ29udHJhY3RJbnB1dCh1c2VySW5wdXQuaW5wdXQpKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiB1c2VySW5wdXQgfHwge1xuICAgICAgICAgIGlucHV0OiBudWxsLFxuICAgICAgICAgIHRvQ29tcGFyZTogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAgY29udHJhY3Q6IGNvbnRyYWN0SW5wdXQgfHwgKFtdIGFzIGFueSksXG4gICAgICB9XG4gICAgfVxuXG4gICAgcnVuUXVlcmllcyA9IGFzeW5jIChmdW5jdGlvbnM6IHN0cmluZ1tdLCBjb250cmFjdElucHV0czogQ0kgfCBDSVtdKTogUHJvbWlzZTxhbnlbXT4gPT4ge1xuICAgICAgY29uc3QgaW5wdXRzID0gQXJyYXkuaXNBcnJheShjb250cmFjdElucHV0cykgPyBjb250cmFjdElucHV0cyA6IFtjb250cmFjdElucHV0c11cbiAgICAgIGNvbnN0IGlucHV0c0ZvckZucyA9IGZ1bmN0aW9ucy5tYXAoKF8sIGkpID0+IGlucHV0c1tpXSB8fCBbXSlcbiAgICAgIGZ1bmN0aW9ucy5tYXAoKGZ1bmMpID0+IGRlcHMubG9nZ2VyLmxvYWRpbmcoYEZldGNoaW5nICR7ZnVuY30gb2YgY29udHJhY3QgJHt0aGlzLmNvbnRyYWN0QWRkcmVzc30uLi5gKSlcbiAgICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIGhhbmRsZSBzYW1lIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IGlucHV0c1xuICAgICAgcmV0dXJuIGF3YWl0IGZldGNoKHRoaXMuY29udHJhY3QsIHRoaXMucHJvdmlkZXIucHJvdmlkZXIsIHRoaXMuY29udHJhY3RBZGRyZXNzLCBmdW5jdGlvbnMsIGlucHV0c0ZvckZucylcbiAgICB9XG5cbiAgICBleGVjdXRlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcXVlcmllcyA9IHR5cGVvZiBjb25maWcucXVlcmllcyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbmZpZy5xdWVyaWVzKHRoaXMuaW5wdXQudXNlci5pbnB1dCkgOiBjb25maWcucXVlcmllc1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMucnVuUXVlcmllcyhxdWVyaWVzLCB0aGlzLmlucHV0LmNvbnRyYWN0KVxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGNvbmZpZy5tYWtlQ29tcGFyaXNpb25EYXRhKHRoaXMucHJvdmlkZXIsIHRoaXMuaW5zcGVjdGlvbkNvbnRleHQpKFxuICAgICAgICByZXN1bHRzLFxuICAgICAgICB0aGlzLmlucHV0LnVzZXIuaW5wdXQsXG4gICAgICAgIHRoaXMuY29udHJhY3RBZGRyZXNzLFxuICAgICAgICAodGhpcy5jb250cmFjdCBhcyB1bmtub3duKSBhcyBDb250cmFjdEZhY3RvcnksXG4gICAgICApXG4gICAgICBjb25zdCBpbnNwZWN0aW9uUmVzdWx0cyA9IGNvbmZpZy5pbnNwZWN0ID8gY29uZmlnLmluc3BlY3QodGhpcy5pbnB1dC51c2VyLCBkYXRhKSA6IFtdXG5cbiAgICAgIGRlcHMubG9nZ2VyLmluZm8oJ0luc3BlY3Rpb24gUmVzdWx0czonKVxuICAgICAgZGVwcy5sb2dnZXIubG9nKGRhdGEucmVzdWx0KVxuICAgICAgLy8gVE9ETzogR2F1bnRsZXQgY29yZSBmb3JjZXMgdXMgdG8gdXNlIFJlc3VsdCB0eXBlIGZvciBldmVyeSBjb21tYW5kLiBVcGRhdGUgdG8gY2hvb3NlIHRoZSByZXN1bHQgaWYgdXNpbmcgQmFzZSBDb21tYW5kXG4gICAgICBjb25zdCByZXBvcnQgPSB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBkYXRhOiBkYXRhLnJlc3VsdCxcbiAgICAgICAgICBjb250cmFjdDogdGhpcy5jb250cmFjdEFkZHJlc3MsXG4gICAgICAgICAgaW5zcGVjdGlvbjogaW5zcGVjdGlvblJlc3VsdHMsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3BvbnNlczogW10sXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXBzLmFmdGVyRXhlY3V0ZUV4dGVybmFsKSBhd2FpdCBkZXBzLmFmdGVyRXhlY3V0ZUV4dGVybmFsKGlkLCB0aGlzLmZsYWdzLm5ldHdvcmssIHJlcG9ydClcblxuICAgICAgcmV0dXJuIHJlcG9ydFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb21tYW5kXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zcGVjdGlvbkNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jb21tYW5kcy9iYXNlL2luc3BlY3Rpb25Db21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSx3R0FBOEU7QUFJOUUsdUNBQWdFO0FBMEZ6RCxNQUFNLHFCQUFxQixHQUFHLENBQ25DLEtBQWdDLEVBQ2hDLEVBQUUsQ0FBQyxDQUNILE1BQWlILEVBQ2pILEVBQUUsQ0FBQyxDQUFDLElBQThFLEVBQUUsRUFBRTs7SUFDdEYsTUFBTSxFQUFFLEdBQUcsSUFBQSx1QkFBYSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFcEYsTUFBTSxPQUFPLFNBQXFELE1BQU0saUJBQ3RFLFNBQVEsY0FBVztZQUQ2Qzs7Z0JBcUVoRSxtQkFBYyxHQUFHLEtBQUssRUFDcEIsV0FBa0csRUFDbEcsS0FBUyxFQUNULEVBQUU7b0JBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUM1RyxPQUFPLE1BQU0sQ0FBQTtnQkFDZixDQUFDLENBQUE7Z0JBRUQsc0JBQWlCLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUEwRCxFQUFFO29CQUNyRyw0SEFBNEg7b0JBQzVILG1HQUFtRztvQkFDbkcsSUFBSSxTQUFTLEdBQ1gsSUFBSSxDQUFDLGdCQUFnQjt3QkFDcEI7NEJBQ0MsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFLLEVBQUUsRUFBRSxL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QUE7WUFDckQsQ0FBQyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7WUFDbEMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHO2dCQUNwQixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7Z0JBQ3BCLEVBQUUsRUFBRSxJQUFBLHVCQUFhLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBQzdFLGVBQWUsRUFBRSxDQUFDLENBQUMsZUFBZTtnQkFDbEMsS0FBSztnQkFDTCxHQUFHO2dCQUNILFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTthQUNyQixDQUFBO1lBRUQsT0FBTyxDQUFDLENBQUE7UUFDVixDQUFDO1dBOEVGLENBQUE7SUFFRCxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDLENBQUE7QUEzSlksUUFBQSxxQkFBcUIseUJBMkpqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlQ29tbWFuZCBmcm9tICdAY2hhaW5saW5rL2dhdW50bGV0LWNvcmUvZGlzdC9jb21tYW5kcy9pbnRlcm5hbC9iYXNlJ1xuaW1wb3J0IHsgQ29tbWFuZEN0b3IsIElucHV0IH0gZnJvbSAnLidcbmltcG9ydCB7IEluc3BlY3Rpb25EZXBlbmRlbmNpZXMgfSBmcm9tICcuLi8uLi9kZXBlbmRlbmNpZXMnXG5pbXBvcnQgeyBJUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcidcbmltcG9ydCB7IENvbW1hbmRVWCwgbWFrZUNvbW1hbmRJZCwgVmFsaWRhdGlvbiB9IGZyb20gJy4vY29tbWFuZCdcbmltcG9ydCB7IENvbnRyYWN0RmFjdG9yeSB9IGZyb20gJ2V0aGVycydcblxuZXhwb3J0IGludGVyZmFjZSBJbnNwZWN0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+IHtcbiAgaWQ6IHN0cmluZ1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZ1xuICBwcm92aWRlcjogSVByb3ZpZGVyPFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24sIFdhbGxldD5cbiAgZmxhZ3M6IGFueVxuICBlbnY6IGFueVxuICBjb250cmFjdDogQ29udHJhY3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnNwZWN0VXNlcklucHV0PFVJLCBDb21wYXJlSW5wdXQ+IHtcbiAgaW5wdXQ6IFVJXG4gIHRvQ29tcGFyZT86IENvbXBhcmVJbnB1dFxufVxuXG4vLyBUT0RPOiBUZW1wb3JhcnkgaW5zcGVjdGlvbiByZXBvcnQuXG5leHBvcnQgaW50ZXJmYWNlIEluc3BlY3Rpb25SZXBvcnQ8UXVlcnlSZXN1bHQ+IHtcbiAgZGF0YTogUXVlcnlSZXN1bHRcbiAgY29udHJhY3Q6IHN0cmluZ1xuICBpbnNwZWN0aW9uOiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIHJlc3VsdFR5cGU6ICdzdWNjZXNzJyB8ICdmYWlsZWQnXG4gIH1bXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3BlY3RDb21tYW5kQ29uZmlnPFxuICBVSSxcbiAgQ0ksXG4gIENvbXBhcmVJbnB1dCxcbiAgUXVlcnlSZXN1bHQsXG4gIFByb3ZpZGVyLFxuICBDb250cmFjdCxcbiAgTWVzc2FnZSxcbiAgVHJhbnNhY3Rpb24sXG4gIFdhbGxldFxuPiB7XG4gIHV4OiBDb21tYW5kVVhcbiAgLy8gTGlzdCBvZiBxdWVyeSBmdW5jdGlvbnMgdG8gY2FsbFxuICBxdWVyaWVzOiBzdHJpbmdbXSB8ICgoaW5wdXQ6IFVJKSA9PiBzdHJpbmdbXSlcbiAgbWFrZVVzZXJJbnB1dD86IChmbGFnczogYW55LCBhcmdzOiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxJbnNwZWN0VXNlcklucHV0PFVJLCBDb21wYXJlSW5wdXQ+PlxuICAvKipcbiAgICogR2l2ZW4gdGhlIHVzZXIgaW5wdXQsIHRyYW5zbGF0ZSB0byBldmVyeSBjb250cmFjdCBpbnB1dCByZXF1aXJlZCBmb3IgZWFjaCBxdWVyeVxuICAgKi9cbiAgbWFrZUNvbnRyYWN0SW5wdXQ/OiAodXNlcklucHV0OiBVSSkgPT4gUHJvbWlzZTxDST5cbiAgLyoqXG4gICAqIEFmdGVyIGRvaW5nIGV2ZXJ5IHF1ZXJ5LCBjb252ZXJ0IHRoZSByZXN1bHRzIGludG8gdGhlIHR5cGUgd2Ugd2FudCAoUXVlcnlSZXN1bHQpIGFuZCBpZiB0b0NvbXBhcmUgaXMgZ2l2ZW4sIG1hdGNoIHJlc3VsdCBpbnRvIGl0XG4gICAqL1xuICBtYWtlQ29tcGFyaXNpb25EYXRhOiAoXG4gICAgcHJvdmlkZXI6IElQcm92aWRlcjxQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQ+LFxuICAgIGNvbnRleHQ/OiBJbnNwZWN0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+LFxuICApID0+IChcbiAgICByZXN1bHRzOiBhbnlbXSxcbiAgICBpbnB1dDogVUksXG4gICAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmcsXG4gICAgY29udHJhY3Q/OiBDb250cmFjdEZhY3RvcnksXG4gICkgPT4gUHJvbWlzZTx7XG4gICAgdG9Db21wYXJlOiBDb21wYXJlSW5wdXRcbiAgICByZXN1bHQ6IFF1ZXJ5UmVzdWx0XG4gIH0+XG4gIGluc3BlY3Q/OiAoXG4gICAgZXhwZWN0ZWQ6IEluc3BlY3RVc2VySW5wdXQ8VUksIENvbXBhcmVJbnB1dD4sXG4gICAgZGF0YToge1xuICAgICAgdG9Db21wYXJlOiBDb21wYXJlSW5wdXRcbiAgICAgIHJlc3VsdDogUXVlcnlSZXN1bHRcbiAgICB9LFxuICApID0+IHtcbiAgICBpZDogc3RyaW5nXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgcmVzdWx0VHlwZTogJ3N1Y2Nlc3MnIHwgJ2ZhaWxlZCdcbiAgfVtdXG4gIGxvYWRDb250cmFjdDogKCkgPT4gQ29udHJhY3RcbiAgbG9hZERlZmF1bHRDb250cmFjdEFkZHJlc3M/OiAoZW52OiBhbnkpID0+IHN0cmluZ1xuICB2YWxpZGF0aW9ucz86IFZhbGlkYXRpb248VUksIEluc3BlY3Rpb25Db250ZXh0PFdhbGxldCwgUHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbj4+W11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnNwZWN0Q29tbWFuZEluc3RhbmNlPFF1ZXJ5UmVzdWx0PiB7XG4gIGV4ZWN1dGU6ICgpID0+IFByb21pc2U8eyBkYXRhOiBJbnNwZWN0aW9uUmVwb3J0PFF1ZXJ5UmVzdWx0PjsgcmVzcG9uc2VzOiBhbnlbXSB9PlxufVxuXG50eXBlIEZldGNoPENvbnRyYWN0LCBQcm92aWRlcj4gPSAoXG4gIGNvbnRyYWN0OiBDb250cmFjdCxcbiAgcHJvdmlkZXI6IFByb3ZpZGVyLFxuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZyxcbiAgZm5zOiBzdHJpbmdbXSxcbiAgaW5wdXRzOiBhbnlbXSxcbikgPT4gYW55XG5cbmV4cG9ydCBjb25zdCBtYWtlSW5zcGVjdGlvbkNvbW1hbmQgPSA8VUksIENJLCBDb21wYXJlSW5wdXQsIFF1ZXJ5UmVzdWx0LCBDb250cmFjdCwgUHJvdmlkZXI+KFxuICBmZXRjaDogRmV0Y2g8Q29udHJhY3QsIFByb3ZpZGVyPixcbikgPT4gPE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQ+KFxuICBjb25maWc6IEluc3BlY3RDb21tYW5kQ29uZmlnPFVJLCBDSSwgQ29tcGFyZUlucHV0LCBRdWVyeVJlc3VsdCwgUHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PixcbikgPT4gKGRlcHM6IEluc3BlY3Rpb25EZXBlbmRlbmNpZXM8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PikgPT4ge1xuICBjb25zdCBpZCA9IG1ha2VDb21tYW5kSWQoY29uZmlnLnV4LmNhdGVnb3J5LCBjb25maWcudXguZnVuY3Rpb24sIGNvbmZpZy51eC5zdWZmaXhlcylcblxuICBjb25zdCBjb21tYW5kOiBDb21tYW5kQ3RvcjxJbnNwZWN0Q29tbWFuZEluc3RhbmNlPFF1ZXJ5UmVzdWx0Pj4gPSBjbGFzcyBJbnNwZWN0aW9uQ29tbWFuZFxuICAgIGV4dGVuZHMgQmFzZUNvbW1hbmRcbiAgICBpbXBsZW1lbnRzIEluc3BlY3RDb21tYW5kSW5zdGFuY2U8UXVlcnlSZXN1bHQ+IHtcbiAgICAvLyBQcm9wc1xuICAgIHByb3ZpZGVyOiBJUHJvdmlkZXI8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PlxuICAgIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nXG5cbiAgICBpbnB1dDogSW5wdXQ8SW5zcGVjdFVzZXJJbnB1dDxVSSwgQ29tcGFyZUlucHV0PiwgQ0k+XG5cbiAgICBjb250cmFjdDogQ29udHJhY3RcblxuICAgIGluc3BlY3Rpb25Db250ZXh0OiBJbnNwZWN0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+XG5cbiAgICAvLyBVWFxuICAgIHN0YXRpYyBpZCA9IGlkXG4gICAgc3RhdGljIGNhdGVnb3J5ID0gY29uZmlnLnV4LmNhdGVnb3J5XG4gICAgc3RhdGljIGV4YW1wbGVzID0gY29uZmlnLnV4LmV4YW1wbGVzXG5cbiAgICBzdGF0aWMgY3JlYXRlID0gYXN5bmMgKGZsYWdzLCBhcmdzKSA9PiB7XG4gICAgICBjb25zdCBjID0gbmV3IEluc3BlY3Rpb25Db21tYW5kKGZsYWdzLCBhcmdzKVxuXG4gICAgICBjb25zdCBlbnYgPSBkZXBzLm1ha2VFbnYoZmxhZ3MpXG5cbiAgICAgIGlmICghIWRlcHMubWFrZU11bHRpTm9kZVByb3ZpZGVyICYmIGVudi5tdWx0aU5vZGVFbmFibGVkKSB7XG4gICAgICAgIGRlcHMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFVzaW5nIG11bHRpLW5vZGUgcHJvdmlkZXIgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIGFuZCByZXRyaWVzIGVuYWJsZWQ6IHVybHM9JHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIFtlbnYucHJvdmlkZXJVcmwsIC4uLihlbnYuZmFsbGJhY2tVcmxzIHx8IFtdKV0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgJ1xcdCcsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXBzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBVc2luZyBzaW5nbGUtbm9kZSBwcm92aWRlciB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgYW5kIHJldHJpZXMgZGlzYWJsZWQ6IHVybD0ke2Vudi5wcm92aWRlclVybH1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBjLnByb3ZpZGVyID1cbiAgICAgICAgISFkZXBzLm1ha2VNdWx0aU5vZGVQcm92aWRlciAmJiBlbnYubXVsdGlOb2RlRW5hYmxlZFxuICAgICAgICAgID8gYXdhaXQgZGVwcy5tYWtlTXVsdGlOb2RlUHJvdmlkZXIoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1cmxzOiBbZW52LnByb3ZpZGVyVXJsLCAuLi4oZW52LmZhbGxiYWNrVXJscyB8fCBbXSldLFxuICAgICAgICAgICAgICAgIHByb3ZpZGVyT3B0czoge1xuICAgICAgICAgICAgICAgICAgYmF0Y2hNYXhDb3VudDogZW52Lm1heFJwY0NhbGxzUGVyQmF0Y2gsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbml0aWFsV2FpdFNlY29uZHM6IGVudi5pbml0aWFsV2FpdFNlY29uZHMsXG4gICAgICAgICAgICAgICAgbWF4Um91bmRzOiBlbnYubWF4Um91bmRzLFxuICAgICAgICAgICAgICAgIGJsb2NrQWdlTGltaXRTZWNvbmRzOiBlbnYuYmxvY2tBZ2VMaW1pdFNlY29uZHMsXG4gICAgICAgICAgICAgICAgdGltZW91dFNlY29uZHM6IGVudi50aW1lb3V0U2Vjb25kcyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZGVwcy5sb2dnZXIsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBkZXBzLm1ha2VQcm92aWRlcihlbnYucHJvdmlkZXJVcmwpXG4gICAgICBjLmNvbnRyYWN0QWRkcmVzcyA9XG4gICAgICAgIGFyZ3NbMF0gfHwgKGNvbmZpZy5sb2FkRGVmYXVsdENvbnRyYWN0QWRkcmVzcyA/IGNvbmZpZy5sb2FkRGVmYXVsdENvbnRyYWN0QWRkcmVzcyhlbnYpIDogdW5kZWZpbmVkKVxuXG4gICAgICBjLmlucHV0ID0gYXdhaXQgYy5idWlsZENvbW1hbmRJbnB1dChmbGFncywgYXJncywgZW52KVxuICAgICAgYy5jb250cmFjdCA9IGNvbmZpZy5sb2FkQ29udHJhY3QoKVxuICAgICAgYy5pbnNwZWN0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgcHJvdmlkZXI6IGMucHJvdmlkZXIsXG4gICAgICAgIGlkOiBtYWtlQ29tbWFuZElkKGNvbmZpZy51eC5jYXRlZ29yeSwgY29uZmlnLnV4LmZ1bmN0aW9uLCBjb25maWcudXguc3VmZml4ZXMpLFxuICAgICAgICBjb250cmFjdEFkZHJlc3M6IGMuY29udHJhY3RBZGRyZXNzLFxuICAgICAgICBmbGFncyxcbiAgICAgICAgZW52LFxuICAgICAgICBjb250cmFjdDogYy5jb250cmFjdCxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNcbiAgICB9XG5cbiAgICBydW5WYWxpZGF0aW9ucyA9IGFzeW5jIChcbiAgICAgIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uPFVJLCBJbnNwZWN0aW9uQ29udGV4dDxXYWxsZXQsIFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24+PltdLFxuICAgICAgaW5wdXQ6IFVJLFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwodmFsaWRhdGlvbnMubWFwKCh2YWxpZGF0aW9uKSA9PiB2YWxpZGF0aW9uKGlucHV0LCB0aGlzLmluc3BlY3Rpb25Db250ZXh0KSkpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgYnVpbGRDb21tYW5kSW5wdXQgPSBhc3luYyAoZmxhZ3MsIGFyZ3MsIGVudik6IFByb21pc2U8SW5wdXQ8SW5zcGVjdFVzZXJJbnB1dDxVSSwgQ29tcGFyZUlucHV0PiwgQ0k+PiA9PiB7XG4gICAgICAvLyBJZiBhbiBleHRlcm5hbCBpbnB1dCBnZW5lcmF0b3IgaXMgZGVmaW5lZCBoYXMgcHJlZmVyZW5jZS4gSWYgaXQgZmFpbHMgdG8gZ2VuZXJhdGUgdGhlIGlucHV0LCBmYWxscyBiYWNrIHRvIGRlZmF1bHQgbWV0aG9kXG4gICAgICAvLyBXZSBpbnB1dCBhbGwgZmxhZ3MgYW5kIGVudiBpbnRvIG92ZXJyaWRlcyBzbyB0aGF0IHRoZSBtYWtlQ29tbWFuZElucHV0IGZuIGNhbiB1c2UgdGhlbSBhcyBuZWVkZWRcbiAgICAgIGxldCB1c2VySW5wdXQgPVxuICAgICAgICBkZXBzLm1ha2VDb21tYW5kSW5wdXQgJiZcbiAgICAgICAgKHtcbiAgICAgICAgICBpbnB1dDogYXdhaXQgZGVwcy5tYWtlQ29tbWFuZElucHV0PFVJPihpZCwgZmxhZ3MubmV0d29yaywgdGhpcy5jb250cmFjdEFkZHJlc3MsIHtcbiAgICAgICAgICAgIC4uLmZsYWdzLFxuICAgICAgICAgICAgLi4uZW52LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRvQ29tcGFyZTogbnVsbCxcbiAgICAgICAgfSBhcyBJbnNwZWN0VXNlcklucHV0PFVJLCBDb21wYXJlSW5wdXQ+KVxuXG4gICAgICBpZiAoIXVzZXJJbnB1dCkge1xuICAgICAgICB1c2VySW5wdXQgPSBhd2FpdCBjb25maWcubWFrZVVzZXJJbnB1dChmbGFncywgYXJncylcbiAgICAgIH1cblxuICAgICAgLy8gVmFsaWRhdGlvblxuICAgICAgaWYgKGNvbmZpZy52YWxpZGF0aW9ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1blZhbGlkYXRpb25zKGNvbmZpZy52YWxpZGF0aW9ucywgdXNlcklucHV0LmlucHV0KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250cmFjdElucHV0ID0gY29uZmlnLm1ha2VDb250cmFjdElucHV0ICYmIChhd2FpdCBjb25maWcubWFrZUNvbnRyYWN0SW5wdXQodXNlcklucHV0LmlucHV0KSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdXNlcjogdXNlcklucHV0IHx8IHtcbiAgICAgICAgICBpbnB1dDogbnVsbCxcbiAgICAgICAgICB0b0NvbXBhcmU6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRyYWN0OiBjb250cmFjdElucHV0IHx8IChbXSBhcyBhbnkpLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJ1blF1ZXJpZXMgPSBhc3luYyAoZnVuY3Rpb25zOiBzdHJpbmdbXSwgY29udHJhY3RJbnB1dHM6IENJIHwgQ0lbXSk6IFByb21pc2U8YW55W10+ID0+IHtcbiAgICAgIGNvbnN0IGlucHV0cyA9IEFycmF5LmlzQXJyYXkoY29udHJhY3RJbnB1dHMpID8gY29udHJhY3RJbnB1dHMgOiBbY29udHJhY3RJbnB1dHNdXG4gICAgICBjb25zdCBpbnB1dHNGb3JGbnMgPSBmdW5jdGlvbnMubWFwKChfLCBpKSA9PiBpbnB1dHNbaV0gfHwgW10pXG4gICAgICBmdW5jdGlvbnMubWFwKChmdW5jKSA9PiBkZXBzLmxvZ2dlci5sb2FkaW5nKGBGZXRjaGluZyAke2Z1bmN9IG9mIGNvbnRyYWN0ICR7dGhpcy5jb250cmFjdEFkZHJlc3N9Li4uYCkpXG4gICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBoYW5kbGUgc2FtZSBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCBpbnB1dHNcbiAgICAgIHJldHVybiBhd2FpdCBmZXRjaCh0aGlzLmNvbnRyYWN0LCB0aGlzLnByb3ZpZGVyLnByb3ZpZGVyLCB0aGlzLmNvbnRyYWN0QWRkcmVzcywgZnVuY3Rpb25zLCBpbnB1dHNGb3JGbnMpXG4gICAgfVxuXG4gICAgZXhlY3V0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJpZXMgPSB0eXBlb2YgY29uZmlnLnF1ZXJpZXMgPT09ICdmdW5jdGlvbicgPyBjb25maWcucXVlcmllcyh0aGlzLmlucHV0LnVzZXIuaW5wdXQpIDogY29uZmlnLnF1ZXJpZXNcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLnJ1blF1ZXJpZXMocXVlcmllcywgdGhpcy5pbnB1dC5jb250cmFjdClcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBjb25maWcubWFrZUNvbXBhcmlzaW9uRGF0YSh0aGlzLnByb3ZpZGVyLCB0aGlzLmluc3BlY3Rpb25Db250ZXh0KShcbiAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgdGhpcy5pbnB1dC51c2VyLmlucHV0LFxuICAgICAgICB0aGlzLmNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgKHRoaXMuY29udHJhY3QgYXMgdW5rbm93bikgYXMgQ29udHJhY3RGYWN0b3J5LFxuICAgICAgKVxuICAgICAgY29uc3QgaW5zcGVjdGlvblJlc3VsdHMgPSBjb25maWcuaW5zcGVjdCA/IGNvbmZpZy5pbnNwZWN0KHRoaXMuaW5wdXQudXNlciwgZGF0YSkgOiBbXVxuXG4gICAgICBkZXBzLmxvZ2dlci5pbmZvKCdJbnNwZWN0aW9uIFJlc3VsdHM6JylcbiAgICAgIGRlcHMubG9nZ2VyLmxvZyhkYXRhLnJlc3VsdClcbiAgICAgIC8vIFRPRE86IEdhdW50bGV0IGNvcmUgZm9yY2VzIHVzIHRvIHVzZSBSZXN1bHQgdHlwZSBmb3IgZXZlcnkgY29tbWFuZC4gVXBkYXRlIHRvIGNob29zZSB0aGUgcmVzdWx0IGlmIHVzaW5nIEJhc2UgQ29tbWFuZFxuICAgICAgY29uc3QgcmVwb3J0ID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZGF0YTogZGF0YS5yZXN1bHQsXG4gICAgICAgICAgY29udHJhY3Q6IHRoaXMuY29udHJhY3RBZGRyZXNzLFxuICAgICAgICAgIGluc3BlY3Rpb246IGluc3BlY3Rpb25SZXN1bHRzLFxuICAgICAgICB9LFxuICAgICAgICByZXNwb25zZXM6IFtdLFxuICAgICAgfVxuXG4gICAgICBpZiAoZGVwcy5hZnRlckV4ZWN1dGVFeHRlcm5hbCkgYXdhaXQgZGVwcy5hZnRlckV4ZWN1dGVFeHRlcm5hbChpZCwgdGhpcy5mbGFncy5uZXR3b3JrLCByZXBvcnQpXG5cbiAgICAgIHJldHVybiByZXBvcnRcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29tbWFuZFxufVxuIl19

@@ -15,2 +15,3 @@ import { Result } from '@chainlink/gauntlet-core';

multiNodeEnabled?: boolean;
timeoutSeconds?: number;
}

@@ -23,2 +24,4 @@ export type MultiNodeProviderConfig<ProviderOpts> = {

blockAgeLimitSeconds?: number;
timeoutSeconds?: number;
skipHealthCheck?: boolean;
};

@@ -25,0 +28,0 @@ export interface Dependencies<Provider, Contract, Message, Transaction, Wallet, Env extends BasicEnv> {

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9kZXBlbmRlbmNpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3VsdCB9IGZyb20gJ0BjaGFpbmxpbmsvZ2F1bnRsZXQtY29yZSdcbmltcG9ydCB7IGxvZ2dlciBhcyBjb3JlTG9nZ2VyLCBwcm9tcHQgfSBmcm9tICdAY2hhaW5saW5rL2dhdW50bGV0LWNvcmUvZGlzdC91dGlscydcbmltcG9ydCB7IElQcm92aWRlciB9IGZyb20gJy4uL3Byb3ZpZGVyJ1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCdcbmltcG9ydCB7IENvbnRyYWN0TG9hZGVyIH0gZnJvbSAnLi4vY29tbWFuZHMvYmFzZS90eXBlcydcblxuLy8gT3RoZXJzIHNob3VsZCBleHRlbmRcbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNFbnYge1xuICBwcm92aWRlclVybDogc3RyaW5nXG4gIGZhbGxiYWNrVXJscz86IHN0cmluZ1tdXG4gIHNraXBTaW11bGF0ZT86IGJvb2xlYW5cbiAgaW5pdGlhbFdhaXRTZWNvbmRzPzogbnVtYmVyXG4gIG1heFJvdW5kcz86IG51bWJlclxuICBtYXhScGNDYWxsc1BlckJhdGNoPzogbnVtYmVyXG4gIGJsb2NrQWdlTGltaXRTZWNvbmRzPzogbnVtYmVyXG4gIG11bHRpTm9kZUVuYWJsZWQ/OiBib29sZWFuXG59XG5cbi8vIENvcmUgY29uZmlndXJhdGlvbiBmb3IgYSBtdWx0aSBub2RlIHByb3ZpZGVyXG5leHBvcnQgdHlwZSBNdWx0aU5vZGVQcm92aWRlckNvbmZpZzxQcm92aWRlck9wdHM+ID0ge1xuICAvKiBUaGUgVVJMIG9mIGVhY2ggbm9kZSB0aGF0IHRoZSBwcm92aWRlciB3aWxsIG1ha2UgUlBDIGNhbGxzIHRvLiAqL1xuICB1cmxzOiBzdHJpbmdbXVxuICAvKiBPcHRpb25zIGRlZmluZWQgYnkgdGhlIHVuZGVybHlpbmcgc2luZ2xlIG5vZGUgcHJvdmlkZXIgdXNlZCBieSB0aGUgbXVsdGkgbm9kZSBwcm92aWRlci4gKi9cbiAgcHJvdmlkZXJPcHRzPzogUHJvdmlkZXJPcHRzXG4gIC8qIFRoZSBpbml0aWFsIHdhaXQgdGltZSB1c2VkIGJ5IGFuIGV4cG9uZW50aWFsIGJhY2tvZmYgZm9ybXVsYTogaW5pdGlhbCAqIDJecm91bmQgKi9cbiAgaW5pdGlhbFdhaXRTZWNvbmRzPzogbnVtYmVyXG4gIC8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgbXVsdGkgbm9kZSBwcm92aWRlciB3aWxsIGF0dGVtcHQgZWFjaCBjb25maWd1cmVkIFVSTCAqL1xuICBtYXhSb3VuZHM/OiBudW1iZXJcbiAgLyogSG93IG9sZCBhbnkgZ2l2ZW4gbm9kZSdzIGxhdGVzdC1rbm93biBibG9jayB0aW1lc3RhbXAgY2FuIGJlICovXG4gIGJsb2NrQWdlTGltaXRTZWNvbmRzPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwZW5kZW5jaWVzPFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24sIFdhbGxldCwgRW52IGV4dGVuZHMgQmFzaWNFbnY+IHtcbiAgbG9nZ2VyOiB0eXBlb2YgY29yZUxvZ2dlclxuICBwcm9tcHQ6IHR5cGVvZiBwcm9tcHRcbiAgbWFrZVByb3ZpZGVyOiAodXJsOiBzdHJpbmcpID0+IElQcm92aWRlcjxQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQ+XG4gIG1ha2VNdWx0aU5vZGVQcm92aWRlcj86IDxQcm92aWRlck9wdHM+KFxuICAgIGNvbmZpZzogTXVsdGlOb2RlUHJvdmlkZXJDb25maWc8UHJvdmlkZXJPcHRzPixcbiAgICBsb2dnZXI6IHR5cGVvZiBjb3JlTG9nZ2VyLFxuICApID0+IFByb21pc2U8SVByb3ZpZGVyPFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24sIFdhbGxldD4+XG4gIG1ha2VXYWxsZXQ6IChlbnY6IEVudiwgZmxhZ3MpID0+IFByb21pc2U8SVdhbGxldDxXYWxsZXQ+IHwgbnVsbD5cbiAgbWFrZUVudjogKGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiBFbnZcbiAgbWFrZUNvbW1hbmRJbnB1dD86IE1ha2VDb21tYW5kSW5wdXRcbiAgYWZ0ZXJFeGVjdXRlRXh0ZXJuYWw/OiBBZnRlckV4dGVybmFsXG4gIGFmdGVyRXhwb3J0RXh0ZXJuYWw/OiBBZnRlckV4dGVybmFsXG4gIGNvbnRyYWN0TGlzdD86IENvbnRyYWN0TG9hZGVyPENvbnRyYWN0PltdXG59XG5cbmV4cG9ydCB0eXBlIEluc3BlY3Rpb25EZXBlbmRlbmNpZXM8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PiA9IE9taXQ8XG4gIERlcGVuZGVuY2llczxQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQsIEJhc2ljRW52PixcbiAgJ21ha2VXYWxsZXQnXG4+XG5cbmV4cG9ydCB0eXBlIEJhc2ljRGVwcyA9IFBpY2s8RGVwZW5kZW5jaWVzPG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGw+LCAnbG9nZ2VyJyB8ICdwcm9tcHQnPlxuXG5leHBvcnQgdHlwZSBNYWtlQ29tbWFuZElucHV0ID0gPFVJPihcbiAgaWQ6IHN0cmluZyxcbiAgbmV0d29ya05hbWU6IHN0cmluZyxcbiAgY29udHJhY3RBZGRyZXNzPzogc3RyaW5nLFxuICBvdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKSA9PiBQcm9taXNlPFVJPlxuXG5leHBvcnQgdHlwZSBBZnRlckV4dGVybmFsID0gPFQ+KGlkOiBzdHJpbmcsIG5ldHdvcmtOYW1lOiBzdHJpbmcsIHJlcG9ydDogUmVzdWx0PFQ+KSA9PiBQcm9taXNlPHZvaWQ+XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9kZXBlbmRlbmNpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3VsdCB9IGZyb20gJ0BjaGFpbmxpbmsvZ2F1bnRsZXQtY29yZSdcbmltcG9ydCB7IGxvZ2dlciBhcyBjb3JlTG9nZ2VyLCBwcm9tcHQgfSBmcm9tICdAY2hhaW5saW5rL2dhdW50bGV0LWNvcmUvZGlzdC91dGlscydcbmltcG9ydCB7IElQcm92aWRlciB9IGZyb20gJy4uL3Byb3ZpZGVyJ1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCdcbmltcG9ydCB7IENvbnRyYWN0TG9hZGVyIH0gZnJvbSAnLi4vY29tbWFuZHMvYmFzZS90eXBlcydcblxuLy8gT3RoZXJzIHNob3VsZCBleHRlbmRcbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNFbnYge1xuICBwcm92aWRlclVybDogc3RyaW5nXG4gIGZhbGxiYWNrVXJscz86IHN0cmluZ1tdXG4gIHNraXBTaW11bGF0ZT86IGJvb2xlYW5cbiAgaW5pdGlhbFdhaXRTZWNvbmRzPzogbnVtYmVyXG4gIG1heFJvdW5kcz86IG51bWJlclxuICBtYXhScGNDYWxsc1BlckJhdGNoPzogbnVtYmVyXG4gIGJsb2NrQWdlTGltaXRTZWNvbmRzPzogbnVtYmVyXG4gIG11bHRpTm9kZUVuYWJsZWQ/OiBib29sZWFuXG4gIHRpbWVvdXRTZWNvbmRzPzogbnVtYmVyXG59XG5cbi8vIENvcmUgY29uZmlndXJhdGlvbiBmb3IgYSBtdWx0aSBub2RlIHByb3ZpZGVyXG5leHBvcnQgdHlwZSBNdWx0aU5vZGVQcm92aWRlckNvbmZpZzxQcm92aWRlck9wdHM+ID0ge1xuICAvKiBUaGUgVVJMIG9mIGVhY2ggbm9kZSB0aGF0IHRoZSBwcm92aWRlciB3aWxsIG1ha2UgUlBDIGNhbGxzIHRvLiAqL1xuICB1cmxzOiBzdHJpbmdbXVxuICAvKiBPcHRpb25zIGRlZmluZWQgYnkgdGhlIHVuZGVybHlpbmcgc2luZ2xlIG5vZGUgcHJvdmlkZXIgdXNlZCBieSB0aGUgbXVsdGkgbm9kZSBwcm92aWRlci4gKi9cbiAgcHJvdmlkZXJPcHRzPzogUHJvdmlkZXJPcHRzXG4gIC8qIFRoZSBpbml0aWFsIHdhaXQgdGltZSB1c2VkIGJ5IGFuIGV4cG9uZW50aWFsIGJhY2tvZmYgZm9ybXVsYTogaW5pdGlhbCAqIDJecm91bmQgKi9cbiAgaW5pdGlhbFdhaXRTZWNvbmRzPzogbnVtYmVyXG4gIC8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgbXVsdGkgbm9kZSBwcm92aWRlciB3aWxsIGF0dGVtcHQgZWFjaCBjb25maWd1cmVkIFVSTCAqL1xuICBtYXhSb3VuZHM/OiBudW1iZXJcbiAgLyogSG93IG9sZCBhbnkgZ2l2ZW4gbm9kZSdzIGxhdGVzdC1rbm93biBibG9jayB0aW1lc3RhbXAgY2FuIGJlICovXG4gIGJsb2NrQWdlTGltaXRTZWNvbmRzPzogbnVtYmVyXG4gIC8qIEhvdyBsb25nIHdlIHdpbGwgd2FpdCBmb3IgYSBzaW5nbGUgcmVxdWVzdCAqL1xuICB0aW1lb3V0U2Vjb25kcz86IG51bWJlclxuICAvKiBQZXJtaXRzIHNraXBwaW5nIHRoZSBoZWFsdGggY2hlY2sgKi9cbiAgc2tpcEhlYWx0aENoZWNrPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcGVuZGVuY2llczxQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQsIEVudiBleHRlbmRzIEJhc2ljRW52PiB7XG4gIGxvZ2dlcjogdHlwZW9mIGNvcmVMb2dnZXJcbiAgcHJvbXB0OiB0eXBlb2YgcHJvbXB0XG4gIG1ha2VQcm92aWRlcjogKHVybDogc3RyaW5nKSA9PiBJUHJvdmlkZXI8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0PlxuICBtYWtlTXVsdGlOb2RlUHJvdmlkZXI/OiA8UHJvdmlkZXJPcHRzPihcbiAgICBjb25maWc6IE11bHRpTm9kZVByb3ZpZGVyQ29uZmlnPFByb3ZpZGVyT3B0cz4sXG4gICAgbG9nZ2VyOiB0eXBlb2YgY29yZUxvZ2dlcixcbiAgKSA9PiBQcm9taXNlPElQcm92aWRlcjxQcm92aWRlciwgQ29udHJhY3QsIE1lc3NhZ2UsIFRyYW5zYWN0aW9uLCBXYWxsZXQ+PlxuICBtYWtlV2FsbGV0OiAoZW52OiBFbnYsIGZsYWdzKSA9PiBQcm9taXNlPElXYWxsZXQ8V2FsbGV0PiB8IG51bGw+XG4gIG1ha2VFbnY6IChmbGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4gRW52XG4gIG1ha2VDb21tYW5kSW5wdXQ/OiBNYWtlQ29tbWFuZElucHV0XG4gIGFmdGVyRXhlY3V0ZUV4dGVybmFsPzogQWZ0ZXJFeHRlcm5hbFxuICBhZnRlckV4cG9ydEV4dGVybmFsPzogQWZ0ZXJFeHRlcm5hbFxuICBjb250cmFjdExpc3Q/OiBDb250cmFjdExvYWRlcjxDb250cmFjdD5bXVxufVxuXG5leHBvcnQgdHlwZSBJbnNwZWN0aW9uRGVwZW5kZW5jaWVzPFByb3ZpZGVyLCBDb250cmFjdCwgTWVzc2FnZSwgVHJhbnNhY3Rpb24sIFdhbGxldD4gPSBPbWl0PFxuICBEZXBlbmRlbmNpZXM8UHJvdmlkZXIsIENvbnRyYWN0LCBNZXNzYWdlLCBUcmFuc2FjdGlvbiwgV2FsbGV0LCBCYXNpY0Vudj4sXG4gICdtYWtlV2FsbGV0J1xuPlxuXG5leHBvcnQgdHlwZSBCYXNpY0RlcHMgPSBQaWNrPERlcGVuZGVuY2llczxudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsPiwgJ2xvZ2dlcicgfCAncHJvbXB0Jz5cblxuZXhwb3J0IHR5cGUgTWFrZUNvbW1hbmRJbnB1dCA9IDxVST4oXG4gIGlkOiBzdHJpbmcsXG4gIG5ldHdvcmtOYW1lOiBzdHJpbmcsXG4gIGNvbnRyYWN0QWRkcmVzcz86IHN0cmluZyxcbiAgb3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbikgPT4gUHJvbWlzZTxVST5cblxuZXhwb3J0IHR5cGUgQWZ0ZXJFeHRlcm5hbCA9IDxUPihpZDogc3RyaW5nLCBuZXR3b3JrTmFtZTogc3RyaW5nLCByZXBvcnQ6IFJlc3VsdDxUPikgPT4gUHJvbWlzZTx2b2lkPlxuIl19

@@ -101,2 +101,4 @@ "use strict";

maxRounds: this.maxRounds,
blockAgeLimitSeconds: this.blockAgeLimitSeconds,
timeoutSeconds: this.timeoutSeconds,
}, deps.logger);

@@ -203,2 +205,3 @@ return Promise.all(batch.map((query) => {

c.blockAgeLimitSeconds = env.blockAgeLimitSeconds;
c.timeoutSeconds = env.timeoutSeconds;
c.env = env;

@@ -215,2 +218,3 @@ if (!deps.makeMultiNodeProvider)

blockAgeLimitSeconds: c.blockAgeLimitSeconds,
timeoutSeconds: c.timeoutSeconds,
}, deps.logger);

@@ -267,2 +271,2 @@ /*

exports.makeEVMBatchInspectionCommand = makeEVMBatchInspectionCommand;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hJbnNwZWN0aW9uQ29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ldm0vY29tbWFuZHMvbmF0aXZlL2JhdGNoSW5zcGVjdGlvbkNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHdHQUE4RTtBQUM5RSx3Q0FBMEQ7QUFFMUQsbUNBQTBEO0FBRzFELDZCQUF1QjtBQUN2QiwwQ0FBaUU7QUFLakUsTUFBTSxNQUFNLEdBQUcsT0FBQztLQUNiLE1BQU0sQ0FBQztJQUNOLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2QsT0FBTyxFQUFFLGdCQUFRO0lBQ2pCLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztDQUNwQixDQUFDO0tBQ0QsS0FBSyxFQUFFLENBQUE7QUFJVixNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTtBQWF2QixNQUFNLDZCQUE2QixHQUFHLENBQUMsUUFBZ0IsRUFBRSxPQUF3QyxFQUFFLEVBQUUsQ0FBQyxDQUMzRyxJQUFxQixFQUNyQixFQUFFOztJQUNGLE1BQU0sRUFBRSxHQUFHLEdBQUcsUUFBUSxnQkFBZ0IsQ0FBQTtJQUV0QyxNQUFNLE9BQU8sU0FBZ0QsTUFBTSxzQkFDakUsU0FBUSxjQUFXO1lBRHdDOztnQkF5QzNELHFHQUFxRztnQkFDN0Ysd0JBQW1CLEdBQUcsS0FBSyxJQUFJLEVBQUU7b0JBQ3ZDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO29CQUNwRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtvQkFFcEQsSUFBSTt3QkFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtxQkFDMUI7b0JBQUMsT0FBTyxDQUFDLEVB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T0FBTyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLGlCQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQ3BFLE9BQU87b0JBQ0wsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFO29CQUNqQixRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRO29CQUM1QixlQUFlLEVBQUUsVUFBVSxDQUFDLE9BQU87b0JBQ25DLFFBQVE7b0JBQ1IsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFO2lCQUN6QyxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFFRixPQUFPLENBQUMsQ0FBQTtRQUNWLENBQUM7V0F5SkYsQ0FBQTtJQUVELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQXJUWSxRQUFBLDZCQUE2QixpQ0FxVHpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21tYW5kIGZyb20gJ0BjaGFpbmxpbmsvZ2F1bnRsZXQtY29yZS9kaXN0L2NvbW1hbmRzL2ludGVybmFsL2Jhc2UnXG5pbXBvcnQgeyBDb21tYW5kQ3RvciwgbWFrZUNvbW1hbmRJZCB9IGZyb20gJy4uLy4uLy4uL2NvcmUnXG5pbXBvcnQgeyBJbnNwZWN0VXNlcklucHV0LCBJbnNwZWN0aW9uUmVwb3J0IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21tYW5kcy9iYXNlL2luc3BlY3Rpb25Db21tYW5kJ1xuaW1wb3J0IHsgQ29udHJhY3QsIENvbnRyYWN0RmFjdG9yeSwgZXRoZXJzIH0gZnJvbSAnZXRoZXJzJ1xuaW1wb3J0IHsgRVZNSW5zcGVjdGlvbkNvbW1hbmRDb25maWcgfSBmcm9tICcuLidcbmltcG9ydCB7IEVWTURlcGVuZGVuY2llcyB9IGZyb20gJy4uLy4uL2RlcGVuZGVuY2llcydcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnXG5pbXBvcnQgeyBjaHVua0FycmF5LCBwYXJzZUFzeW5jLCB6QWRkcmVzcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgRVZNUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcidcblxudHlwZSBFVk1JbnNwZWN0aW9uQ29tbWFuZENvbmZpZ0FueSA9IEVWTUluc3BlY3Rpb25Db21tYW5kQ29uZmlnPGFueSwgYW55LCBhbnksIGFueT5cblxuY29uc3Qgc2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBpZDogei5zdHJpbmcoKSxcbiAgICBhZGRyZXNzOiB6QWRkcmVzcyxcbiAgICBpbnB1dDogei5vYmplY3Qoe30pLFxuICB9KVxuICAuYXJyYXkoKVxuXG50eXBlIElucHV0ID0gei5pbmZlcjx0eXBlb2Ygc2NoZW1hPlxuXG5jb25zdCBERUZBVUxUX0JBVENIX1NJWkUgPSA1MDBcblxuLypcblRoZSBkYXRhIGZpZWxkIG9mIHRoZSBFVk1CYXRjaEluc3BlY3Rpb25SZXBvcnQgaXMganVzdCBhbiBhcnJheSBvZiByZWd1bGFyIGluc3BlY3Rpb24gcmVwb3J0cy5cblRoZSB0b3AgbGV2ZWwgXCJjb250cmFjdFwiIGFuZCBcImluc3BlY3Rpb25cIiBmaWVsZHMgYXJlIG5vdCB1c2VkLiBUaGV5IGFyZSBqdXN0IHByZXNlbnQgdG8gbWVldFxudGhlIGludGVyZmFjZS5cbiovXG5leHBvcnQgaW50ZXJmYWNlIEVWTUJhdGNoSW5zcGVjdGlvblJlcG9ydCBleHRlbmRzIEluc3BlY3Rpb25SZXBvcnQ8SW5zcGVjdGlvblJlcG9ydDxhbnk+W10+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRVZNQmF0Y2hJbnNwZWN0Q29tbWFuZEluc3RhbmNlIHtcbiAgZXhlY3V0ZTogKCkgPT4gUHJvbWlzZTx7IGRhdGE6IEVWTUJhdGNoSW5zcGVjdGlvblJlcG9ydDsgcmVzcG9uc2VzOiBhbnlbXSB9PlxufVxuXG5leHBvcnQgY29uc3QgbWFrZUVWTUJhdGNoSW5zcGVjdGlvbkNvbW1hbmQgPSAoY2F0ZWdvcnk6IHN0cmluZywgY29uZmlnczogRVZNSW5zcGVjdGlvbkNvbW1hbmRDb25maWdBbnlbXSkgPT4gKFxuICBkZXBzOiBFVk1EZXBlbmRlbmNpZXMsXG4pID0+IHtcbiAgY29uc3QgaWQgPSBgJHtjYXRlZ29yeX06aW5zcGVjdDpiYXRjaGBcblxuICBjb25zdCBjb21tYW5kOiBDb21tYW5kQ3RvcjxFVk1CYXRjaEluc3BlY3RDb21tYW5kSW5zdGFuY2U+ID0gY2xhc3MgQmF0Y2hJbnNwZWN0aW9uQ29tbWFuZFxuICAgIGV4dGVuZHMgQmFzZUNvbW1hbmRcbiAgICBpbXBsZW1lbnRzIEVWTUJhdGNoSW5zcGVjdENvbW1hbmRJbnN0YW5jZSB7XG4gICAgLy8gUHJvcHNcbiAgICBiYXRjaFNpemU6IG51bWJlclxuICAgIHByb3ZpZGVyVXJsOiBzdHJpbmdcbiAgICBmYWxsYmFja1VybHM6IHN0cmluZ1tdXG4gICAgaW5pdGlhbFdhaXRTZWNvbmRzPzogbnVtYmVyXG4gICAgbWF4Um91bmRzPzogbnVtYmVyXG4gICAgbWF4UnBjQ2FsbHNQZXJCYXRjaD86IG51bWJlclxuICAgIGJsb2NrQWdlTGltaXRTZWNvbmRzPzogbnVtYmVyXG4gICAgZGVmYXVsdFByb3ZpZGVyOiBFVk1Qcm92aWRlclxuICAgIGNhdGVnb3J5VG9GYWN0b3J5OiB7IFtpZDogc3RyaW5nXTogQ29udHJhY3RGYWN0b3J5IH1cbiAgICBpZFRvQ29uZmlnOiB7IFtpZDogc3RyaW5nXTogRVZNSW5zcGVjdGlvbkNvbW1hbmRDb25maWdBbnkgfVxuICAgIGluc3BlY3Rpb25zOiB7XG4gICAgICBpZDogc3RyaW5nXG4gICAgICBjb250cmFjdEFkZHJlc3M6IHN0cmluZ1xuICAgICAgY29udHJhY3Q6IENvbnRyYWN0XG4gICAgICBpbnB1dDogSW5zcGVjdFVzZXJJbnB1dDxhbnksIGFueT5cbiAgICB9W11cbiAgICBlbnY6IGFueVxuXG4gICAgLy8gVVhcbiAgICBzdGF0aWMgaWQgPSBpZFxuICAgIHN0YXRpYyBjYXRlZ29yeSA9IGNhdGVnb3J5XG4gICAgc3RhdGljIGV4YW1wbGVzID0gW1xuICAgICAgYCR7aWR9IC0tbmV0d29yaz08TkVUV09SSz4gKC0tYmF0Y2hTaXplPTxCQVRDSF9TSVpFPikgJ1tcbiAge1xuICAgIFwiaWRcIjogXCI8Q09NTUFORF9JRF8xXCIsXG4gICAgXCJhZGRyZXNzXCI6IFwiMHguLi5cIixcbiAgICBcImlucHV0XCI6IHsgLi4uIH1cbiAgfSxcbiAge1xuICAgIFwiaWRcIjogXCI8Q09NTUFORF9JRF8yPlwifSxcbiAgICBcImFkZHJlc3NcIjogXCIweC4uLlwiLFxuICAgIFwiaW5wdXRcIjogeyAuLi4gfVxuICB9IFxuICAuLi5cbl0nYCxcbiAgICBdXG5cbiAgICAvLyBUaGlzIGlzIGEgc2ltcGxlIGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgY29uZmlndXJlZCBub2RlIHN1cHBvcnRzIGJhdGNoaW5nIFJQQyBjYWxsc1xuICAgIHByaXZhdGUgbXVzdFN1cHBvcnRCYXRjaGluZyA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmRlZmF1bHRQcm92aWRlci5wcm92aWRlci5nZXROZXR3b3JrKClcbiAgICAgIGNvbnN0IGIgPSB0aGlzLmRlZmF1bHRQcm92aWRlci5wcm92aWRlci5nZXROZXR3b3JrKClcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW2EsIGJdKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRoZSBnaXZlbiBSUEMgVVJMIGlzIHVucmVhY2hhYmxlIG9yIGRvZXMgbm90IHN1cHBvcnQgYmF0Y2hpbmcsIHBsZWFzZSBjaGFuZ2UgaXQ6ICR7dGhpcy5wcm92aWRlclVybH1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZSA9IGFzeW5jIChmbGFncywgYXJncykgPT4ge1xuICAgICAgY29uc3QgYyA9IG5ldyBCYXRjaEluc3BlY3Rpb25Db21tYW5kKGZsYWdzLCBhcmdzKVxuXG4gICAgICBsZXQgaW5zcGVjdERlZnNcbiAgICAgIHRyeSB7XG4gICAgICAgIGluc3BlY3REZWZzID0gSlNPTi5wYXJzZShhcmdzWzBdKSBhcyBJbnB1dFxuICAgICAgICBhd2FpdCBwYXJzZUFzeW5jKHNjaGVtYSkoaW5zcGVjdERlZnMpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnB1dCBhcmd1bWVudCwgcGxlYXNlIGFkaGVyZSB0byB0aGUgZm9sbG93aW5nIGZvcm1hdCBmb3IgYmF0Y2hlZCBpbnNwZWN0aW9uczogXG4nW1xuICB7XG4gICAgXCJpZFwiOiBcIjxDT01NQU5EX0lEPlwiLFxuICAgIFwiaW5wdXRcIjogeyAuLi4gfSxcbiAgICBcImFkZHJlc3NcIjogXCI8Q09OVFJBQ1RfQUREUkVTUz5cIlxuICB9LCBcbiAgLi4uXG5dJ2ApXG4gICAgICB9XG5cbiAgICAgIGMuYmF0Y2hTaXplID0gaXNOYU4oZmxhZ3MuYmF0Y2hTaXplKSA/IERFRkFVTFRfQkFUQ0hfU0laRSA6IGZsYWdzLmJhdGNoU2l6ZVxuXG4gICAgICBjb25zdCBlbnYgPSBkZXBzLm1ha2VFbnYoZmxhZ3MpXG4gICAgICBpZiAoIWVudi5wcm92aWRlclVybCkgdGhyb3cgbmV3IEVycm9yKGBwcm92aWRlclVybCBoYXMgbm90IGJlZW4gY29uZmlndXJlZCBmb3IgQmF0Y2hJbnNwZWN0aW9uQ29tbWFuZGApXG4gICAgICBjLnByb3ZpZGVyVXJsID0gZW52LnByb3ZpZGVyVXJsXG4gICAgICBjLmZhbGxiYWNrVXJscyA9IGVudi5mYWxsYmFja1VybHNcbiAgICAgIGMuaW5pdGlhbFdhaXRTZWNvbmRzID0gZW52LmluaXRpYWxXYWl0U2Vjb25kc1xuICAgICAgYy5tYXhSb3VuZHMgPSBlbnYubWF4Um91bmRzXG4gICAgICBjLm1heFJwY0NhbGxzUGVyQmF0Y2ggPSBlbnYubWF4UnBjQ2FsbHNQZXJCYXRjaFxuICAgICAgYy5ibG9ja0FnZUxpbWl0U2Vjb25kcyA9IGVudi5ibG9ja0FnZUxpbWl0U2Vjb25kc1xuICAgICAgYy5lbnYgPSBlbnZcblxuICAgICAgaWYgKCFkZXBzLm1ha2VNdWx0aU5vZGVQcm92aWRlcikgdGhyb3cgbmV3IEVycm9yKGBtYWtlTXVsdGlOb2RlUHJvdmlkZXIgaXMgcmVxdWlyZWQgZm9yIEJhdGNoSW5zcGVjdGlvbkNvbW1hbmRgKVxuICAgICAgYy5kZWZhdWx0UHJvdmlkZXIgPSBhd2FpdCBkZXBzLm1ha2VNdWx0aU5vZGVQcm92aWRlcihcbiAgICAgICAge1xuICAgICAgICAgIHVybHM6IFtjLnByb3ZpZGVyVXJsLCAuLi4oYy5mYWxsYmFja1VybHMgfHwgW10pXSxcbiAgICAgICAgICBwcm92aWRlck9wdHM6IHtcbiAgICAgICAgICAgIGJhdGNoTWF4Q291bnQ6IGMubWF4UnBjQ2FsbHNQZXJCYXRjaCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluaXRpYWxXYWl0U2Vjb25kczogYy5pbml0aWFsV2FpdFNlY29uZHMsXG4gICAgICAgICAgbWF4Um91bmRzOiBjLm1heFJvdW5kcyxcbiAgICAgICAgICBibG9ja0FnZUxpbWl0U2Vjb25kczogYy5ibG9ja0FnZUxpbWl0U2Vjb25kcyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVwcy5sb2dnZXIsXG4gICAgICApXG5cbiAgICAgIC8qXG4gICAgICBjYXRlZ29yeVRvRmFjdG9yeSBlbmFibGVzIHVzIHRvIGxvYWQgYSBjb250cmFjdCBvbmNlIGFuZCBoYXZlIGFsbFxuICAgICAgY29tbWFuZHMgaW4gdGhlIHNhbWUgY2F0ZWdvcnkgc2hhcmUgdGhlIHNhbWUgcmVmZXJlbmNlLiBXZSBhc3N1bWVcbiAgICAgIHRoYXQgc2FtZSBjYXRlZ29yeSA9IHNhbWUgY29udHJhY3QuXG4gICAgICAqL1xuICAgICAgYy5jYXRlZ29yeVRvRmFjdG9yeSA9IGNvbmZpZ3MucmVkdWNlKChhY2MsIGNvbmZpZykgPT4ge1xuICAgICAgICBpZiAoISFhY2NbY29uZmlnLnV4LmNhdGVnb3J5XSkgcmV0dXJuIGFjY1xuICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtjb25maWcudXguY2F0ZWdvcnldOiBjb25maWcubG9hZENvbnRyYWN0KCkgfVxuICAgICAgfSwge30pXG5cbiAgICAgIC8qXG4gICAgICBpZFRvQ29uZmlnIG1hcHMgYSBjb21tYW5kIElEIHRvIGl0cyBjb25maWcsIHdoaWNoIGNvbnRhaW5zIGFsbCB0aGVcbiAgICAgIGhvb2tzIGFuZCB2YXJpYWJsZXMgKGUuZy4gcXVlcnkgbGlzdCkgcmVxdWlyZWQgdG8gcnVuIGl0XG4gICAgICAqL1xuICAgICAgYy5pZFRvQ29uZmlnID0gY29uZmlncy5yZWR1Y2UoKGFjYywgY29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gbWFrZUNvbW1hbmRJZChjb25maWcudXguY2F0ZWdvcnksIGNvbmZpZy51eC5mdW5jdGlvbilcbiAgICAgICAgaWYgKCEhYWNjW2lkXSkgcmV0dXJuIGFjY1xuICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtpZF06IGNvbmZpZyB9XG4gICAgICB9LCB7fSlcbiAgICAgIGNvbnN0IGFsbElkcyA9IE9iamVjdC5rZXlzKGMuaWRUb0NvbmZpZylcblxuICAgICAgLypcbiAgICAgIFdpdGggdGhlIGhlbHAgb2Ygb3VyIG1hcHMsIHdlIGNhbiBub3cgYnVpbGQgdGhlIGxpc3Qgb2YgaW5zcGVjdGlvbnMuXG4gICAgICBXZSBidW5kbGUgYWxsIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcnVuIGVhY2ggaW5zcGVjdGlvbiBpbnRvIGEgc2luZ2xlIG9iamVjdC5cbiAgICAgICovXG4gICAgICBjLmluc3BlY3Rpb25zID0gaW5zcGVjdERlZnMubWFwKChpbnNwZWN0RGVmLCBpKSA9PiB7XG4gICAgICAgIGlmICghYWxsSWRzLmZpbmQoKGlkKSA9PiBpZCA9PT0gaW5zcGVjdERlZi5pZCkpIHtcbiAgICAgICAgICBjb25zdCB1bnJlY29nbml6ZWQgPSBuZXcgU2V0KFxuICAgICAgICAgICAgaW5zcGVjdERlZnNcbiAgICAgICAgICAgICAgLnNsaWNlKGksIGluc3BlY3REZWZzLmxlbmd0aClcbiAgICAgICAgICAgICAgLmZpbHRlcigoZGVmKSA9PiAhYWxsSWRzLmZpbmQoKGtub3duSWQpID0+IGtub3duSWQgPT09IGRlZi5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKGRlZikgPT4gZGVmLmlkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3VuZCB1bmtub3duIGNvbW1hbmQgSURzOiAke0FycmF5LmZyb20odW5yZWNvZ25pemVkKS5qb2luKCcsJyl9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb25maWcgPSBjLmlkVG9Db25maWdbaW5zcGVjdERlZi5pZF1cbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IGMuY2F0ZWdvcnlUb0ZhY3RvcnlbY29uZmlnLnV4LmNhdGVnb3J5XVxuICAgICAgICBjb25zdCBjb250cmFjdCA9IG5ldyBDb250cmFjdChpbnNwZWN0RGVmLmFkZHJlc3MsIGZhY3RvcnkuaW50ZXJmYWNlKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiBpbnNwZWN0RGVmLmlkLFxuICAgICAgICAgIGNhdGVnb3J5OiBjb25maWcudXguY2F0ZWdvcnksXG4gICAgICAgICAgY29udHJhY3RBZGRyZXNzOiBpbnNwZWN0RGVmLmFkZHJlc3MsXG4gICAgICAgICAgY29udHJhY3QsXG4gICAgICAgICAgaW5wdXQ6IHsgaW5wdXQ6IGluc3BlY3REZWYuaW5wdXQgfHwge30gfSxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgcmV0dXJuIGNcbiAgICB9XG5cbiAgICBleGVjdXRlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5tdXN0U3VwcG9ydEJhdGNoaW5nKClcbiAgICAgIGRlcHMubG9nZ2VyLmRlYnVnKGBUaGUgZ2l2ZW4gUlBDIFVSTCBzdXBwb3J0cyBiYXRjaGluZzogJHt0aGlzLnByb3ZpZGVyVXJsfWApXG5cbiAgICAgIC8qXG4gICAgICBIZXJlLCB3ZSBwdWxsIHRoZSBhY3R1YWwgY29udHJhY3QgZnVuY3Rpb25zIGFuZCBpbnB1dHMgZnJvbSBlYWNoIGluc3BlY3Rpb24uXG4gICAgICBBbnkgaW5mb3JtYXRpb24gd2UgbmVlZCB0byBydW4gY29tbWFuZCBob29rcyBpcyBhc3NlbWJsZWQgaGVyZS4gV2UgcnVuIHZhbGlkYXRpb25zXG4gICAgICBwZXIgaW5zcGVjdGlvbiBoZXJlIGFzIHdlbGwuXG4gICAgICAqL1xuICAgICAgY29uc3QgYWxsSW5zcGVjdGlvbkNtZHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgdGhpcy5pbnNwZWN0aW9ucy5tYXAoYXN5bmMgKGluc3BlY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCB1c2VySW5wdXQgPSBpbnNwZWN0aW9uLmlucHV0LmlucHV0XG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5pZFRvQ29uZmlnW2luc3BlY3Rpb24uaWRdXG4gICAgICAgICAgY29uc3QgY29udHJhY3RJbnB1dHMgPSBhd2FpdCBjb25maWcubWFrZUNvbnRyYWN0SW5wdXQodXNlcklucHV0KVxuICAgICAgICAgIGNvbnN0IGNvbnRyYWN0RmFjdG9yeSA9IHRoaXMuY2F0ZWdvcnlUb0ZhY3RvcnlbY29uZmlnLnV4LmNhdGVnb3J5XVxuICAgICAgICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzcyA9IGluc3BlY3Rpb24uY29udHJhY3RBZGRyZXNzXG4gICAgICAgICAgY29uc3QgaW5zcGVjdGlvbkN0eCA9IHtcbiAgICAgICAgICAgIGlkOiBtYWtlQ29tbWFuZElkKGNvbmZpZy51eC5jYXRlZ29yeSwgY29uZmlnLnV4LmZ1bmN0aW9uKSxcbiAgICAgICAgICAgIGNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICAgIHByb3ZpZGVyOiB0aGlzLmRlZmF1bHRQcm92aWRlcixcbiAgICAgICAgICAgIGZsYWdzOiB0aGlzLmZsYWdzLFxuICAgICAgICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgICAgICAgIGNvbnRyYWN0OiBjb250cmFjdEZhY3RvcnksXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghIWNvbmZpZy52YWxpZGF0aW9ucylcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICBjb25maWcudmFsaWRhdGlvbnMubWFwKGFzeW5jICh2YWxpZGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHZhbGlkYXRpb24odXNlcklucHV0LCBpbnNwZWN0aW9uQ3R4KVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYENvbW1hbmQgJHtpbnNwZWN0aW9uQ3R4LmlkfSB3aXRoIHRhcmdldCBhZGRyZXNzICR7Y29udHJhY3RBZGRyZXNzfSBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgY29udHJhY3Q6IGluc3BlY3Rpb24uY29udHJhY3QsXG4gICAgICAgICAgICBjb250cmFjdEZhY3RvcnksXG4gICAgICAgICAgICBjb250cmFjdEFkZHJlc3MsXG4gICAgICAgICAgICBmbnM6IHR5cGVvZiBjb25maWcucXVlcmllcyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbmZpZy5xdWVyaWVzKHVzZXJJbnB1dCkgOiBjb25maWcucXVlcmllcyxcbiAgICAgICAgICAgIHVzZXJJbnB1dCxcbiAgICAgICAgICAgIGNvbnRyYWN0SW5wdXRzOiBBcnJheS5pc0FycmF5KGNvbnRyYWN0SW5wdXRzKSA/IGNvbnRyYWN0SW5wdXRzIDogW2NvbnRyYWN0SW5wdXRzXSxcbiAgICAgICAgICAgIGluc3BlY3Rpb25DdHgsXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcblxuICAgICAgbGV0IGZuc1dpdGhJbnB1dCA9IGFsbEluc3BlY3Rpb25DbWRzXG4gICAgICAgIC5tYXAoKGNtZCkgPT5cbiAgICAgICAgICBjbWQuZm5zLm1hcCgoZm4sIGkpID0+ICh7XG4gICAgICAgICAgICBjb250cmFjdDogY21kLmNvbnRyYWN0LFxuICAgICAgICAgICAgZm4sXG4gICAgICAgICAgICBpbnB1dDogY21kLmNvbnRyYWN0SW5wdXRzW2ldID8gY21kLmNvbnRyYWN0SW5wdXRzW2ldIDogW10sXG4gICAgICAgICAgfSkpLFxuICAgICAgICApXG4gICAgICAgIC5mbGF0KClcblxuICAgICAgZGVwcy5sb2dnZXIuaW5mbyhgU2VuZGluZyAke3RoaXMuYmF0Y2hTaXplfSBSUEMgY2FsbHMgcGVyIGJhdGNoICh1c2UgLS1iYXRjaFNpemUgdG8gY29uZmlndXJlKWApXG4gICAgICBjb25zdCBiYXRjaGVzID0gY2h1bmtBcnJheShmbnNXaXRoSW5wdXQsIHRoaXMuYmF0Y2hTaXplKVxuXG4gICAgICAvKlxuICAgICAgV2UgbWFrZSBhIG5ldyBwcm92aWRlciBmb3IgZWFjaCBiYXRjaC4gVW5kZXIgdGhlIGhvb2QsIHRoZSBldGhlcnMgYmF0Y2ggcHJvdmlkZXIgYnVpbGRzXG4gICAgICBhIGJhdGNoIHJlcXVlc3QgdW50aWwgdGhlIHByb21pc2VzIGFyZSByZXNvbHZlZCB2aWEgXCJhd2FpdFwiLiBJZiB3ZSB1c2UgYSBzaW5nbGUgcHJvdmlkZXJcbiAgICAgIGZvciBhbGwgYmF0Y2hlcywgcnVubmluZyBcImF3YWl0XCIgd291bGQgY2F1c2UgdGhlIHByb3ZpZGVyIHRvIHRyZWF0IGFsbCBiYXRjaGVzIGFzIGEgc2luZ2xlXG4gICAgICBiYXRjaCwgZXZlbiBpZiBpdCBzZWVtcyBsaWtlIHdlIGFyZSBzZXBhcmF0aW5nIHRoZW0uIFRoaXMgd291bGQgb3ZlcmxvYWQgdGhlIFJQQ3MgYW5kIHRoZXkgXG4gICAgICB3b3VsZCB0aHJvdyBhbiBlcnJvci5cbiAgICAgICovXG4gICAgICBjb25zdCByZXN1bHRzID0gKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICBiYXRjaGVzLm1hcChhc3luYyAoYmF0Y2gpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3ZpZGVyID0gYXdhaXQgZGVwcy5tYWtlTXVsdGlOb2RlUHJvdmlkZXIoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB1cmxzOiBbdGhpcy5wcm92aWRlclVybCwgLi4uKHRoaXMuZmFsbGJhY2tVcmxzIHx8IFtdKV0sXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJPcHRzOiB7XG4gICAgICAgICAgICAgICAgICBiYXRjaE1heENvdW50OiB0aGlzLm1heFJwY0NhbGxzUGVyQmF0Y2gsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbml0aWFsV2FpdFNlY29uZHM6IHRoaXMuaW5pdGlhbFdhaXRTZWNvbmRzLFxuICAgICAgICAgICAgICAgIG1heFJvdW5kczogdGhpcy5tYXhSb3VuZHMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRlcHMubG9nZ2VyLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICBiYXRjaC5tYXAoKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2ggPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgcXVlcnkuY29udHJhY3QuY29ubmVjdChwcm92aWRlci5wcm92aWRlcilbcXVlcnkuZm5dKC4uLnF1ZXJ5LmlucHV0KVxuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXRoZXJzLmlzQ2FsbEV4Y2VwdGlvbihlKSB8fCBldGhlcnMuaXNFcnJvcihlLCAnQkFEX0RBVEEnKSkge1xuICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgSWYgdGhlcmUgaXMgYSBDQUxMX0VYQ0VQVElPTiwgd2UgZG9uJ3Qgd2FudCB0byBhYm9ydCB0aGUgZW50aXJlIGluc3BlY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzLCBjZXJ0YWluIGluc3BlY3Rpb25zIGFyZSB1c2VkIGZvciBtdWx0aXBsZSBjb250cmFjdCB2ZXJzaW9ucywgYW5kIG9uZVxuICAgICAgICAgICAgICAgICAgICAgIG9yIHR3byBjYWxscyBtYXkgbm90IGV4aXN0IGZvciBhIHBhcnRpY3VsYXIgdmVyc2lvbi5cbiAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnISFFUlJPUiEhJ1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaCgpXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICApLmZsYXQoKVxuXG4gICAgICAvKlxuICAgICAgQ3VycmVudGx5LCB3ZSBydW4gbWFrZUNvbXBhcmlzb25EYXRhIGZvciBlYWNoIGluc3BlY3Rpb24gY29tbWFuZC4gU29tZVxuICAgICAgY29tbWFuZHMgbWF5IGRlZmluZSBldmVudCBxdWVyaWVzIG9yIGFkZGl0aW9uYWwgUlBDIGNhbGxzIGhlcmUuXG4gICAgICAqL1xuICAgICAgbGV0IHN0YXJ0ID0gMFxuICAgICAgbGV0IHByb21pc2VzID0gYWxsSW5zcGVjdGlvbkNtZHMubWFwKChjbWQpID0+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IGNtZC5jb25maWcubWFrZUNvbXBhcmlzaW9uRGF0YSh0aGlzLmRlZmF1bHRQcm92aWRlciwgY21kLmluc3BlY3Rpb25DdHgpKFxuICAgICAgICAgIHJlc3VsdHMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgY21kLmZucy5sZW5ndGgpLFxuICAgICAgICAgIGNtZC51c2VySW5wdXQsXG4gICAgICAgICAgY21kLmNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICBjbWQuY29udHJhY3RGYWN0b3J5LFxuICAgICAgICApXG4gICAgICAgIHN0YXJ0ICs9IGNtZC5mbnMubGVuZ3RoXG4gICAgICAgIHJldHVybiBwcm9taXNlXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cbiAgICAgIGNvbnN0IGluc3BlY3Rpb25SZXN1bHRzID0gYWxsSW5zcGVjdGlvbkNtZHMubWFwKChjbWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGNtZC5jb25maWcuaW5zcGVjdCA/IGNtZC5jb25maWcuaW5zcGVjdChjbWQudXNlcklucHV0LCBkYXRhW2ldKSA6IFtdXG4gICAgICB9KVxuXG4gICAgICBkZXBzLmxvZ2dlci5pbmZvKCdJbnNwZWN0aW9uIFJlc3VsdHM6JylcbiAgICAgIGRlcHMubG9nZ2VyLmxvZyhkYXRhKVxuXG4gICAgICBjb25zdCByZXBvcnQgPSB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBkYXRhOiBkYXRhLm1hcCgoZGF0dW0sIGkpID0+ICh7XG4gICAgICAgICAgICBkYXRhOiBkYXR1bSxcbiAgICAgICAgICAgIGNvbnRyYWN0OiBhbGxJbnNwZWN0aW9uQ21kc1tpXS5jb250cmFjdEFkZHJlc3MsXG4gICAgICAgICAgICBpbnNwZWN0aW9uOiBpbnNwZWN0aW9uUmVzdWx0c1tpXSxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgY29udHJhY3Q6ICduL2EnLFxuICAgICAgICAgIGluc3BlY3Rpb246IFtdLFxuICAgICAgICB9LFxuICAgICAgICByZXNwb25zZXM6IFtdLFxuICAgICAgfVxuXG4gICAgICBpZiAoZGVwcy5hZnRlckV4ZWN1dGVFeHRlcm5hbCkgYXdhaXQgZGVwcy5hZnRlckV4ZWN1dGVFeHRlcm5hbChpZCwgdGhpcy5mbGFncy5uZXR3b3JrLCByZXBvcnQpXG5cbiAgICAgIHJldHVybiByZXBvcnRcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29tbWFuZFxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hJbnNwZWN0aW9uQ29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ldm0vY29tbWFuZHMvbmF0aXZlL2JhdGNoSW5zcGVjdGlvbkNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHdHQUE4RTtBQUM5RSx3Q0FBMEQ7QUFFMUQsbUNBQTBEO0FBRzFELDZCQUF1QjtBQUN2QiwwQ0FBaUU7QUFLakUsTUFBTSxNQUFNLEdBQUcsT0FBQztLQUNiLE1BQU0sQ0FBQztJQUNOLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2QsT0FBTyxFQUFFLGdCQUFRO0lBQ2pCLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztDQUNwQixDQUFDO0tBQ0QsS0FBSyxFQUFFLENBQUE7QUFJVixNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTtBQWF2QixNQUFNLDZCQUE2QixHQUFHLENBQUMsUUFBZ0IsRUFBRSxPQUF3QyxFQUFFLEVBQUUsQ0FBQyxDQUMzRyxJQUFxQixFQUNyQixFQUFFOztJQUNGLE1BQU0sRUFBRSxHQUFHLEdBQUcsUUFBUSxnQkFBZ0IsQ0FBQTtJQUV0QyxNQUFNLE9BQU8sU0FBZ0QsTUFBTSxzQkFDakUsU0FBUSxjQUFXO1lBRHdDOztnQkEwQzNELHFHQUFxRztnQkFDN0Ysd0JBQW1CLEdBQUcsS0FBSyxJQUFJLEVBQUU7b0JBQ3ZDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO29CQUNwRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtvQkFFcEQsSUFBSTt3QkFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtxQkFDMUI7b0JBQUMsT0FBTyxDQUFDLEVB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LElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2lCQUNwRjtnQkFDRCxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDMUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksaUJBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDcEUsT0FBTztvQkFDTCxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUU7b0JBQ2pCLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVE7b0JBQzVCLGVBQWUsRUFBRSxVQUFVLENBQUMsT0FBTztvQkFDbkMsUUFBUTtvQkFDUixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7aUJBQ3pDLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUVGLE9BQU8sQ0FBQyxDQUFBO1FBQ1YsQ0FBQztXQTJKRixDQUFBO0lBRUQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQyxDQUFBO0FBMVRZLFFBQUEsNkJBQTZCLGlDQTBUekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbW1hbmQgZnJvbSAnQGNoYWlubGluay9nYXVudGxldC1jb3JlL2Rpc3QvY29tbWFuZHMvaW50ZXJuYWwvYmFzZSdcbmltcG9ydCB7IENvbW1hbmRDdG9yLCBtYWtlQ29tbWFuZElkIH0gZnJvbSAnLi4vLi4vLi4vY29yZSdcbmltcG9ydCB7IEluc3BlY3RVc2VySW5wdXQsIEluc3BlY3Rpb25SZXBvcnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbW1hbmRzL2Jhc2UvaW5zcGVjdGlvbkNvbW1hbmQnXG5pbXBvcnQgeyBDb250cmFjdCwgQ29udHJhY3RGYWN0b3J5LCBldGhlcnMgfSBmcm9tICdldGhlcnMnXG5pbXBvcnQgeyBFVk1JbnNwZWN0aW9uQ29tbWFuZENvbmZpZyB9IGZyb20gJy4uJ1xuaW1wb3J0IHsgRVZNRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi4vLi4vZGVwZW5kZW5jaWVzJ1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCdcbmltcG9ydCB7IGNodW5rQXJyYXksIHBhcnNlQXN5bmMsIHpBZGRyZXNzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBFVk1Qcm92aWRlciB9IGZyb20gJy4uLy4uL3Byb3ZpZGVyJ1xuXG50eXBlIEVWTUluc3BlY3Rpb25Db21tYW5kQ29uZmlnQW55ID0gRVZNSW5zcGVjdGlvbkNvbW1hbmRDb25maWc8YW55LCBhbnksIGFueSwgYW55PlxuXG5jb25zdCBzY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGlkOiB6LnN0cmluZygpLFxuICAgIGFkZHJlc3M6IHpBZGRyZXNzLFxuICAgIGlucHV0OiB6Lm9iamVjdCh7fSksXG4gIH0pXG4gIC5hcnJheSgpXG5cbnR5cGUgSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBzY2hlbWE+XG5cbmNvbnN0IERFRkFVTFRfQkFUQ0hfU0laRSA9IDUwMFxuXG4vKlxuVGhlIGRhdGEgZmllbGQgb2YgdGhlIEVWTUJhdGNoSW5zcGVjdGlvblJlcG9ydCBpcyBqdXN0IGFuIGFycmF5IG9mIHJlZ3VsYXIgaW5zcGVjdGlvbiByZXBvcnRzLlxuVGhlIHRvcCBsZXZlbCBcImNvbnRyYWN0XCIgYW5kIFwiaW5zcGVjdGlvblwiIGZpZWxkcyBhcmUgbm90IHVzZWQuIFRoZXkgYXJlIGp1c3QgcHJlc2VudCB0byBtZWV0XG50aGUgaW50ZXJmYWNlLlxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgRVZNQmF0Y2hJbnNwZWN0aW9uUmVwb3J0IGV4dGVuZHMgSW5zcGVjdGlvblJlcG9ydDxJbnNwZWN0aW9uUmVwb3J0PGFueT5bXT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBFVk1CYXRjaEluc3BlY3RDb21tYW5kSW5zdGFuY2Uge1xuICBleGVjdXRlOiAoKSA9PiBQcm9taXNlPHsgZGF0YTogRVZNQmF0Y2hJbnNwZWN0aW9uUmVwb3J0OyByZXNwb25zZXM6IGFueVtdIH0+XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlRVZNQmF0Y2hJbnNwZWN0aW9uQ29tbWFuZCA9IChjYXRlZ29yeTogc3RyaW5nLCBjb25maWdzOiBFVk1JbnNwZWN0aW9uQ29tbWFuZENvbmZpZ0FueVtdKSA9PiAoXG4gIGRlcHM6IEVWTURlcGVuZGVuY2llcyxcbikgPT4ge1xuICBjb25zdCBpZCA9IGAke2NhdGVnb3J5fTppbnNwZWN0OmJhdGNoYFxuXG4gIGNvbnN0IGNvbW1hbmQ6IENvbW1hbmRDdG9yPEVWTUJhdGNoSW5zcGVjdENvbW1hbmRJbnN0YW5jZT4gPSBjbGFzcyBCYXRjaEluc3BlY3Rpb25Db21tYW5kXG4gICAgZXh0ZW5kcyBCYXNlQ29tbWFuZFxuICAgIGltcGxlbWVudHMgRVZNQmF0Y2hJbnNwZWN0Q29tbWFuZEluc3RhbmNlIHtcbiAgICAvLyBQcm9wc1xuICAgIGJhdGNoU2l6ZTogbnVtYmVyXG4gICAgcHJvdmlkZXJVcmw6IHN0cmluZ1xuICAgIGZhbGxiYWNrVXJsczogc3RyaW5nW11cbiAgICBpbml0aWFsV2FpdFNlY29uZHM/OiBudW1iZXJcbiAgICBtYXhSb3VuZHM/OiBudW1iZXJcbiAgICBtYXhScGNDYWxsc1BlckJhdGNoPzogbnVtYmVyXG4gICAgYmxvY2tBZ2VMaW1pdFNlY29uZHM/OiBudW1iZXJcbiAgICB0aW1lb3V0U2Vjb25kcz86IG51bWJlclxuICAgIGRlZmF1bHRQcm92aWRlcjogRVZNUHJvdmlkZXJcbiAgICBjYXRlZ29yeVRvRmFjdG9yeTogeyBbaWQ6IHN0cmluZ106IENvbnRyYWN0RmFjdG9yeSB9XG4gICAgaWRUb0NvbmZpZzogeyBbaWQ6IHN0cmluZ106IEVWTUluc3BlY3Rpb25Db21tYW5kQ29uZmlnQW55IH1cbiAgICBpbnNwZWN0aW9uczoge1xuICAgICAgaWQ6IHN0cmluZ1xuICAgICAgY29udHJhY3RBZGRyZXNzOiBzdHJpbmdcbiAgICAgIGNvbnRyYWN0OiBDb250cmFjdFxuICAgICAgaW5wdXQ6IEluc3BlY3RVc2VySW5wdXQ8YW55LCBhbnk+XG4gICAgfVtdXG4gICAgZW52OiBhbnlcblxuICAgIC8vIFVYXG4gICAgc3RhdGljIGlkID0gaWRcbiAgICBzdGF0aWMgY2F0ZWdvcnkgPSBjYXRlZ29yeVxuICAgIHN0YXRpYyBleGFtcGxlcyA9IFtcbiAgICAgIGAke2lkfSAtLW5ldHdvcms9PE5FVFdPUks+ICgtLWJhdGNoU2l6ZT08QkFUQ0hfU0laRT4pICdbXG4gIHtcbiAgICBcImlkXCI6IFwiPENPTU1BTkRfSURfMVwiLFxuICAgIFwiYWRkcmVzc1wiOiBcIjB4Li4uXCIsXG4gICAgXCJpbnB1dFwiOiB7IC4uLiB9XG4gIH0sXG4gIHtcbiAgICBcImlkXCI6IFwiPENPTU1BTkRfSURfMj5cIn0sXG4gICAgXCJhZGRyZXNzXCI6IFwiMHguLi5cIixcbiAgICBcImlucHV0XCI6IHsgLi4uIH1cbiAgfSBcbiAgLi4uXG5dJ2AsXG4gICAgXVxuXG4gICAgLy8gVGhpcyBpcyBhIHNpbXBsZSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIGNvbmZpZ3VyZWQgbm9kZSBzdXBwb3J0cyBiYXRjaGluZyBSUEMgY2FsbHNcbiAgICBwcml2YXRlIG11c3RTdXBwb3J0QmF0Y2hpbmcgPSBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhID0gdGhpcy5kZWZhdWx0UHJvdmlkZXIucHJvdmlkZXIuZ2V0TmV0d29yaygpXG4gICAgICBjb25zdCBiID0gdGhpcy5kZWZhdWx0UHJvdmlkZXIucHJvdmlkZXIuZ2V0TmV0d29yaygpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFthLCBiXSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUaGUgZ2l2ZW4gUlBDIFVSTCBpcyB1bnJlYWNoYWJsZSBvciBkb2VzIG5vdCBzdXBwb3J0IGJhdGNoaW5nLCBwbGVhc2UgY2hhbmdlIGl0OiAke3RoaXMucHJvdmlkZXJVcmx9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBjcmVhdGUgPSBhc3luYyAoZmxhZ3MsIGFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IGMgPSBuZXcgQmF0Y2hJbnNwZWN0aW9uQ29tbWFuZChmbGFncywgYXJncylcblxuICAgICAgbGV0IGluc3BlY3REZWZzXG4gICAgICB0cnkge1xuICAgICAgICBpbnNwZWN0RGVmcyA9IEpTT04ucGFyc2UoYXJnc1swXSkgYXMgSW5wdXRcbiAgICAgICAgYXdhaXQgcGFyc2VBc3luYyhzY2hlbWEpKGluc3BlY3REZWZzKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5wdXQgYXJndW1lbnQsIHBsZWFzZSBhZGhlcmUgdG8gdGhlIGZvbGxvd2luZyBmb3JtYXQgZm9yIGJhdGNoZWQgaW5zcGVjdGlvbnM6IFxuJ1tcbiAge1xuICAgIFwiaWRcIjogXCI8Q09NTUFORF9JRD5cIixcbiAgICBcImlucHV0XCI6IHsgLi4uIH0sXG4gICAgXCJhZGRyZXNzXCI6IFwiPENPTlRSQUNUX0FERFJFU1M+XCJcbiAgfSwgXG4gIC4uLlxuXSdgKVxuICAgICAgfVxuXG4gICAgICBjLmJhdGNoU2l6ZSA9IGlzTmFOKGZsYWdzLmJhdGNoU2l6ZSkgPyBERUZBVUxUX0JBVENIX1NJWkUgOiBmbGFncy5iYXRjaFNpemVcblxuICAgICAgY29uc3QgZW52ID0gZGVwcy5tYWtlRW52KGZsYWdzKVxuICAgICAgaWYgKCFlbnYucHJvdmlkZXJVcmwpIHRocm93IG5ldyBFcnJvcihgcHJvdmlkZXJVcmwgaGFzIG5vdCBiZWVuIGNvbmZpZ3VyZWQgZm9yIEJhdGNoSW5zcGVjdGlvbkNvbW1hbmRgKVxuICAgICAgYy5wcm92aWRlclVybCA9IGVudi5wcm92aWRlclVybFxuICAgICAgYy5mYWxsYmFja1VybHMgPSBlbnYuZmFsbGJhY2tVcmxzXG4gICAgICBjLmluaXRpYWxXYWl0U2Vjb25kcyA9IGVudi5pbml0aWFsV2FpdFNlY29uZHNcbiAgICAgIGMubWF4Um91bmRzID0gZW52Lm1heFJvdW5kc1xuICAgICAgYy5tYXhScGNDYWxsc1BlckJhdGNoID0gZW52Lm1heFJwY0NhbGxzUGVyQmF0Y2hcbiAgICAgIGMuYmxvY2tBZ2VMaW1pdFNlY29uZHMgPSBlbnYuYmxvY2tBZ2VMaW1pdFNlY29uZHNcbiAgICAgIGMudGltZW91dFNlY29uZHMgPSBlbnYudGltZW91dFNlY29uZHNcbiAgICAgIGMuZW52ID0gZW52XG5cbiAgICAgIGlmICghZGVwcy5tYWtlTXVsdGlOb2RlUHJvdmlkZXIpIHRocm93IG5ldyBFcnJvcihgbWFrZU11bHRpTm9kZVByb3ZpZGVyIGlzIHJlcXVpcmVkIGZvciBCYXRjaEluc3BlY3Rpb25Db21tYW5kYClcbiAgICAgIGMuZGVmYXVsdFByb3ZpZGVyID0gYXdhaXQgZGVwcy5tYWtlTXVsdGlOb2RlUHJvdmlkZXIoXG4gICAgICAgIHtcbiAgICAgICAgICB1cmxzOiBbYy5wcm92aWRlclVybCwgLi4uKGMuZmFsbGJhY2tVcmxzIHx8IFtdKV0sXG4gICAgICAgICAgcHJvdmlkZXJPcHRzOiB7XG4gICAgICAgICAgICBiYXRjaE1heENvdW50OiBjLm1heFJwY0NhbGxzUGVyQmF0Y2gsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbml0aWFsV2FpdFNlY29uZHM6IGMuaW5pdGlhbFdhaXRTZWNvbmRzLFxuICAgICAgICAgIG1heFJvdW5kczogYy5tYXhSb3VuZHMsXG4gICAgICAgICAgYmxvY2tBZ2VMaW1pdFNlY29uZHM6IGMuYmxvY2tBZ2VMaW1pdFNlY29uZHMsXG4gICAgICAgICAgdGltZW91dFNlY29uZHM6IGMudGltZW91dFNlY29uZHMsXG4gICAgICAgIH0sXG4gICAgICAgIGRlcHMubG9nZ2VyLFxuICAgICAgKVxuXG4gICAgICAvKlxuICAgICAgY2F0ZWdvcnlUb0ZhY3RvcnkgZW5hYmxlcyB1cyB0byBsb2FkIGEgY29udHJhY3Qgb25jZSBhbmQgaGF2ZSBhbGxcbiAgICAgIGNvbW1hbmRzIGluIHRoZSBzYW1lIGNhdGVnb3J5IHNoYXJlIHRoZSBzYW1lIHJlZmVyZW5jZS4gV2UgYXNzdW1lXG4gICAgICB0aGF0IHNhbWUgY2F0ZWdvcnkgPSBzYW1lIGNvbnRyYWN0LlxuICAgICAgKi9cbiAgICAgIGMuY2F0ZWdvcnlUb0ZhY3RvcnkgPSBjb25maWdzLnJlZHVjZSgoYWNjLCBjb25maWcpID0+IHtcbiAgICAgICAgaWYgKCEhYWNjW2NvbmZpZy51eC5jYXRlZ29yeV0pIHJldHVybiBhY2NcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbY29uZmlnLnV4LmNhdGVnb3J5XTogY29uZmlnLmxvYWRDb250cmFjdCgpIH1cbiAgICAgIH0sIHt9KVxuXG4gICAgICAvKlxuICAgICAgaWRUb0NvbmZpZyBtYXBzIGEgY29tbWFuZCBJRCB0byBpdHMgY29uZmlnLCB3aGljaCBjb250YWlucyBhbGwgdGhlXG4gICAgICBob29rcyBhbmQgdmFyaWFibGVzIChlLmcuIHF1ZXJ5IGxpc3QpIHJlcXVpcmVkIHRvIHJ1biBpdFxuICAgICAgKi9cbiAgICAgIGMuaWRUb0NvbmZpZyA9IGNvbmZpZ3MucmVkdWNlKChhY2MsIGNvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IG1ha2VDb21tYW5kSWQoY29uZmlnLnV4LmNhdGVnb3J5LCBjb25maWcudXguZnVuY3Rpb24pXG4gICAgICAgIGlmICghIWFjY1tpZF0pIHJldHVybiBhY2NcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbaWRdOiBjb25maWcgfVxuICAgICAgfSwge30pXG4gICAgICBjb25zdCBhbGxJZHMgPSBPYmplY3Qua2V5cyhjLmlkVG9Db25maWcpXG5cbiAgICAgIC8qXG4gICAgICBXaXRoIHRoZSBoZWxwIG9mIG91ciBtYXBzLCB3ZSBjYW4gbm93IGJ1aWxkIHRoZSBsaXN0IG9mIGluc3BlY3Rpb25zLlxuICAgICAgV2UgYnVuZGxlIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJ1biBlYWNoIGluc3BlY3Rpb24gaW50byBhIHNpbmdsZSBvYmplY3QuXG4gICAgICAqL1xuICAgICAgYy5pbnNwZWN0aW9ucyA9IGluc3BlY3REZWZzLm1hcCgoaW5zcGVjdERlZiwgaSkgPT4ge1xuICAgICAgICBpZiAoIWFsbElkcy5maW5kKChpZCkgPT4gaWQgPT09IGluc3BlY3REZWYuaWQpKSB7XG4gICAgICAgICAgY29uc3QgdW5yZWNvZ25pemVkID0gbmV3IFNldChcbiAgICAgICAgICAgIGluc3BlY3REZWZzXG4gICAgICAgICAgICAgIC5zbGljZShpLCBpbnNwZWN0RGVmcy5sZW5ndGgpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gIWFsbElkcy5maW5kKChrbm93bklkKSA9PiBrbm93bklkID09PSBkZWYuaWQpKVxuICAgICAgICAgICAgICAubWFwKChkZWYpID0+IGRlZi5pZCksXG4gICAgICAgICAgKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRm91bmQgdW5rbm93biBjb21tYW5kIElEczogJHtBcnJheS5mcm9tKHVucmVjb2duaXplZCkuam9pbignLCcpfWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29uZmlnID0gYy5pZFRvQ29uZmlnW2luc3BlY3REZWYuaWRdXG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSBjLmNhdGVnb3J5VG9GYWN0b3J5W2NvbmZpZy51eC5jYXRlZ29yeV1cbiAgICAgICAgY29uc3QgY29udHJhY3QgPSBuZXcgQ29udHJhY3QoaW5zcGVjdERlZi5hZGRyZXNzLCBmYWN0b3J5LmludGVyZmFjZSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogaW5zcGVjdERlZi5pZCxcbiAgICAgICAgICBjYXRlZ29yeTogY29uZmlnLnV4LmNhdGVnb3J5LFxuICAgICAgICAgIGNvbnRyYWN0QWRkcmVzczogaW5zcGVjdERlZi5hZGRyZXNzLFxuICAgICAgICAgIGNvbnRyYWN0LFxuICAgICAgICAgIGlucHV0OiB7IGlucHV0OiBpbnNwZWN0RGVmLmlucHV0IHx8IHt9IH0sXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBjXG4gICAgfVxuXG4gICAgZXhlY3V0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMubXVzdFN1cHBvcnRCYXRjaGluZygpXG4gICAgICBkZXBzLmxvZ2dlci5kZWJ1ZyhgVGhlIGdpdmVuIFJQQyBVUkwgc3VwcG9ydHMgYmF0Y2hpbmc6ICR7dGhpcy5wcm92aWRlclVybH1gKVxuXG4gICAgICAvKlxuICAgICAgSGVyZSwgd2UgcHVsbCB0aGUgYWN0dWFsIGNvbnRyYWN0IGZ1bmN0aW9ucyBhbmQgaW5wdXRzIGZyb20gZWFjaCBpbnNwZWN0aW9uLlxuICAgICAgQW55IGluZm9ybWF0aW9uIHdlIG5lZWQgdG8gcnVuIGNvbW1hbmQgaG9va3MgaXMgYXNzZW1ibGVkIGhlcmUuIFdlIHJ1biB2YWxpZGF0aW9uc1xuICAgICAgcGVyIGluc3BlY3Rpb24gaGVyZSBhcyB3ZWxsLlxuICAgICAgKi9cbiAgICAgIGNvbnN0IGFsbEluc3BlY3Rpb25DbWRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHRoaXMuaW5zcGVjdGlvbnMubWFwKGFzeW5jIChpbnNwZWN0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXNlcklucHV0ID0gaW5zcGVjdGlvbi5pbnB1dC5pbnB1dFxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuaWRUb0NvbmZpZ1tpbnNwZWN0aW9uLmlkXVxuICAgICAgICAgIGNvbnN0IGNvbnRyYWN0SW5wdXRzID0gYXdhaXQgY29uZmlnLm1ha2VDb250cmFjdElucHV0KHVzZXJJbnB1dClcbiAgICAgICAgICBjb25zdCBjb250cmFjdEZhY3RvcnkgPSB0aGlzLmNhdGVnb3J5VG9GYWN0b3J5W2NvbmZpZy51eC5jYXRlZ29yeV1cbiAgICAgICAgICBjb25zdCBjb250cmFjdEFkZHJlc3MgPSBpbnNwZWN0aW9uLmNvbnRyYWN0QWRkcmVzc1xuICAgICAgICAgIGNvbnN0IGluc3BlY3Rpb25DdHggPSB7XG4gICAgICAgICAgICBpZDogbWFrZUNvbW1hbmRJZChjb25maWcudXguY2F0ZWdvcnksIGNvbmZpZy51eC5mdW5jdGlvbiksXG4gICAgICAgICAgICBjb250cmFjdEFkZHJlc3MsXG4gICAgICAgICAgICBwcm92aWRlcjogdGhpcy5kZWZhdWx0UHJvdmlkZXIsXG4gICAgICAgICAgICBmbGFnczogdGhpcy5mbGFncyxcbiAgICAgICAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICAgICAgICBjb250cmFjdDogY29udHJhY3RGYWN0b3J5LFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoISFjb25maWcudmFsaWRhdGlvbnMpXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRpb25zLm1hcChhc3luYyAodmFsaWRhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBhd2FpdCB2YWxpZGF0aW9uKHVzZXJJbnB1dCwgaW5zcGVjdGlvbkN0eClcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBDb21tYW5kICR7aW5zcGVjdGlvbkN0eC5pZH0gd2l0aCB0YXJnZXQgYWRkcmVzcyAke2NvbnRyYWN0QWRkcmVzc30gZmFpbGVkIHdpdGggZXJyb3I6ICR7ZX1gLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIGNvbnRyYWN0OiBpbnNwZWN0aW9uLmNvbnRyYWN0LFxuICAgICAgICAgICAgY29udHJhY3RGYWN0b3J5LFxuICAgICAgICAgICAgY29udHJhY3RBZGRyZXNzLFxuICAgICAgICAgICAgZm5zOiB0eXBlb2YgY29uZmlnLnF1ZXJpZXMgPT09ICdmdW5jdGlvbicgPyBjb25maWcucXVlcmllcyh1c2VySW5wdXQpIDogY29uZmlnLnF1ZXJpZXMsXG4gICAgICAgICAgICB1c2VySW5wdXQsXG4gICAgICAgICAgICBjb250cmFjdElucHV0czogQXJyYXkuaXNBcnJheShjb250cmFjdElucHV0cykgPyBjb250cmFjdElucHV0cyA6IFtjb250cmFjdElucHV0c10sXG4gICAgICAgICAgICBpbnNwZWN0aW9uQ3R4LFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG5cbiAgICAgIGxldCBmbnNXaXRoSW5wdXQgPSBhbGxJbnNwZWN0aW9uQ21kc1xuICAgICAgICAubWFwKChjbWQpID0+XG4gICAgICAgICAgY21kLmZucy5tYXAoKGZuLCBpKSA9PiAoe1xuICAgICAgICAgICAgY29udHJhY3Q6IGNtZC5jb250cmFjdCxcbiAgICAgICAgICAgIGZuLFxuICAgICAgICAgICAgaW5wdXQ6IGNtZC5jb250cmFjdElucHV0c1tpXSA/IGNtZC5jb250cmFjdElucHV0c1tpXSA6IFtdLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgKVxuICAgICAgICAuZmxhdCgpXG5cbiAgICAgIGRlcHMubG9nZ2VyLmluZm8oYFNlbmRpbmcgJHt0aGlzLmJhdGNoU2l6ZX0gUlBDIGNhbGxzIHBlciBiYXRjaCAodXNlIC0tYmF0Y2hTaXplIHRvIGNvbmZpZ3VyZSlgKVxuICAgICAgY29uc3QgYmF0Y2hlcyA9IGNodW5rQXJyYXkoZm5zV2l0aElucHV0LCB0aGlzLmJhdGNoU2l6ZSlcblxuICAgICAgLypcbiAgICAgIFdlIG1ha2UgYSBuZXcgcHJvdmlkZXIgZm9yIGVhY2ggYmF0Y2guIFVuZGVyIHRoZSBob29kLCB0aGUgZXRoZXJzIGJhdGNoIHByb3ZpZGVyIGJ1aWxkc1xuICAgICAgYSBiYXRjaCByZXF1ZXN0IHVudGlsIHRoZSBwcm9taXNlcyBhcmUgcmVzb2x2ZWQgdmlhIFwiYXdhaXRcIi4gSWYgd2UgdXNlIGEgc2luZ2xlIHByb3ZpZGVyXG4gICAgICBmb3IgYWxsIGJhdGNoZXMsIHJ1bm5pbmcgXCJhd2FpdFwiIHdvdWxkIGNhdXNlIHRoZSBwcm92aWRlciB0byB0cmVhdCBhbGwgYmF0Y2hlcyBhcyBhIHNpbmdsZVxuICAgICAgYmF0Y2gsIGV2ZW4gaWYgaXQgc2VlbXMgbGlrZSB3ZSBhcmUgc2VwYXJhdGluZyB0aGVtLiBUaGlzIHdvdWxkIG92ZXJsb2FkIHRoZSBSUENzIGFuZCB0aGV5IFxuICAgICAgd291bGQgdGhyb3cgYW4gZXJyb3IuXG4gICAgICAqL1xuICAgICAgY29uc3QgcmVzdWx0cyA9IChcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgYmF0Y2hlcy5tYXAoYXN5bmMgKGJhdGNoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm92aWRlciA9IGF3YWl0IGRlcHMubWFrZU11bHRpTm9kZVByb3ZpZGVyKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdXJsczogW3RoaXMucHJvdmlkZXJVcmwsIC4uLih0aGlzLmZhbGxiYWNrVXJscyB8fCBbXSldLFxuICAgICAgICAgICAgICAgIHByb3ZpZGVyT3B0czoge1xuICAgICAgICAgICAgICAgICAgYmF0Y2hNYXhDb3VudDogdGhpcy5tYXhScGNDYWxsc1BlckJhdGNoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW5pdGlhbFdhaXRTZWNvbmRzOiB0aGlzLmluaXRpYWxXYWl0U2Vjb25kcyxcbiAgICAgICAgICAgICAgICBtYXhSb3VuZHM6IHRoaXMubWF4Um91bmRzLFxuICAgICAgICAgICAgICAgIGJsb2NrQWdlTGltaXRTZWNvbmRzOiB0aGlzLmJsb2NrQWdlTGltaXRTZWNvbmRzLFxuICAgICAgICAgICAgICAgIHRpbWVvdXRTZWNvbmRzOiB0aGlzLnRpbWVvdXRTZWNvbmRzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkZXBzLmxvZ2dlcixcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgYmF0Y2gubWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZldGNoID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHF1ZXJ5LmNvbnRyYWN0LmNvbm5lY3QocHJvdmlkZXIucHJvdmlkZXIpW3F1ZXJ5LmZuXSguLi5xdWVyeS5pbnB1dClcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV0aGVycy5pc0NhbGxFeGNlcHRpb24oZSkgfHwgZXRoZXJzLmlzRXJyb3IoZSwgJ0JBRF9EQVRBJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgIElmIHRoZXJlIGlzIGEgQ0FMTF9FWENFUFRJT04sIHdlIGRvbid0IHdhbnQgdG8gYWJvcnQgdGhlIGVudGlyZSBpbnNwZWN0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcywgY2VydGFpbiBpbnNwZWN0aW9ucyBhcmUgdXNlZCBmb3IgbXVsdGlwbGUgY29udHJhY3QgdmVyc2lvbnMsIGFuZCBvbmVcbiAgICAgICAgICAgICAgICAgICAgICBvciB0d28gY2FsbHMgbWF5IG5vdCBleGlzdCBmb3IgYSBwYXJ0aWN1bGFyIHZlcnNpb24uXG4gICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyEhRVJST1IhISdcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2goKVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgKS5mbGF0KClcblxuICAgICAgLypcbiAgICAgIEN1cnJlbnRseSwgd2UgcnVuIG1ha2VDb21wYXJpc29uRGF0YSBmb3IgZWFjaCBpbnNwZWN0aW9uIGNvbW1hbmQuIFNvbWVcbiAgICAgIGNvbW1hbmRzIG1heSBkZWZpbmUgZXZlbnQgcXVlcmllcyBvciBhZGRpdGlvbmFsIFJQQyBjYWxscyBoZXJlLlxuICAgICAgKi9cbiAgICAgIGxldCBzdGFydCA9IDBcbiAgICAgIGxldCBwcm9taXNlcyA9IGFsbEluc3BlY3Rpb25DbWRzLm1hcCgoY21kKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBjbWQuY29uZmlnLm1ha2VDb21wYXJpc2lvbkRhdGEodGhpcy5kZWZhdWx0UHJvdmlkZXIsIGNtZC5pbnNwZWN0aW9uQ3R4KShcbiAgICAgICAgICByZXN1bHRzLnNsaWNlKHN0YXJ0LCBzdGFydCArIGNtZC5mbnMubGVuZ3RoKSxcbiAgICAgICAgICBjbWQudXNlcklucHV0LFxuICAgICAgICAgIGNtZC5jb250cmFjdEFkZHJlc3MsXG4gICAgICAgICAgY21kLmNvbnRyYWN0RmFjdG9yeSxcbiAgICAgICAgKVxuICAgICAgICBzdGFydCArPSBjbWQuZm5zLmxlbmd0aFxuICAgICAgICByZXR1cm4gcHJvbWlzZVxuICAgICAgfSlcblxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuXG4gICAgICBjb25zdCBpbnNwZWN0aW9uUmVzdWx0cyA9IGFsbEluc3BlY3Rpb25DbWRzLm1hcCgoY21kLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBjbWQuY29uZmlnLmluc3BlY3QgPyBjbWQuY29uZmlnLmluc3BlY3QoY21kLnVzZXJJbnB1dCwgZGF0YVtpXSkgOiBbXVxuICAgICAgfSlcblxuICAgICAgZGVwcy5sb2dnZXIuaW5mbygnSW5zcGVjdGlvbiBSZXN1bHRzOicpXG4gICAgICBkZXBzLmxvZ2dlci5sb2coZGF0YSlcblxuICAgICAgY29uc3QgcmVwb3J0ID0ge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZGF0YTogZGF0YS5tYXAoKGRhdHVtLCBpKSA9PiAoe1xuICAgICAgICAgICAgZGF0YTogZGF0dW0sXG4gICAgICAgICAgICBjb250cmFjdDogYWxsSW5zcGVjdGlvbkNtZHNbaV0uY29udHJhY3RBZGRyZXNzLFxuICAgICAgICAgICAgaW5zcGVjdGlvbjogaW5zcGVjdGlvblJlc3VsdHNbaV0sXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIGNvbnRyYWN0OiAnbi9hJyxcbiAgICAgICAgICBpbnNwZWN0aW9uOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzcG9uc2VzOiBbXSxcbiAgICAgIH1cblxuICAgICAgaWYgKGRlcHMuYWZ0ZXJFeGVjdXRlRXh0ZXJuYWwpIGF3YWl0IGRlcHMuYWZ0ZXJFeGVjdXRlRXh0ZXJuYWwoaWQsIHRoaXMuZmxhZ3MubmV0d29yaywgcmVwb3J0KVxuXG4gICAgICByZXR1cm4gcmVwb3J0XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbW1hbmRcbn1cbiJdfQ==

@@ -18,2 +18,3 @@ import { ContractFactory, AbstractSigner as EthersWallet, Provider as EthersProvider, TransactionResponse, TransactionRequest } from 'ethers';

multiNodeEnabled?: boolean;
timeoutSeconds?: number;
safeMasterCopy?: string;

@@ -20,0 +21,0 @@ safeProxyFactory?: string;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXZtL2RlcGVuZGVuY2llcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udHJhY3RGYWN0b3J5LFxuICBBYnN0cmFjdFNpZ25lciBhcyBFdGhlcnNXYWxsZXQsXG4gIFByb3ZpZGVyIGFzIEV0aGVyc1Byb3ZpZGVyLFxuICBUcmFuc2FjdGlvblJlc3BvbnNlLFxuICBUcmFuc2FjdGlvblJlcXVlc3QsXG59IGZyb20gJ2V0aGVycydcbmltcG9ydCB7IERlcGVuZGVuY2llcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVwZW5kZW5jaWVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudiBleHRlbmRzIE5ldHdvcmtFbnYge1xuICBwaz86IHN0cmluZ1xuICB3aXRoTGVkZ2VyPzogc3RyaW5nXG4gIC8vIFNvbWUgY29tbWFuZHMgbWF5IG5lZWQgYWNjZXNzIHRvIG11bHRpcGxlIG5ldHdvcmsgZW52aXJvbm1lbnRzXG4gIG5ldHdvcmtzPzoge1xuICAgIFtuZXR3b3JrOiBzdHJpbmddOiBOZXR3b3JrRW52XG4gIH1cbn1cblxudHlwZSBOZXR3b3JrRW52ID0ge1xuICBwcm92aWRlclVybDogc3RyaW5nXG4gIGZhbGxiYWNrVXJscz86IHN0cmluZ1tdXG4gIGluaXRpYWxXYWl0U2Vjb25kcz86IG51bWJlclxuICBtYXhSb3VuZHM/OiBudW1iZXJcbiAgbWF4UnBjQ2FsbHNQZXJCYXRjaD86IG51bWJlclxuICBibG9ja0FnZUxpbWl0U2Vjb25kcz86IG51bWJlclxuICBtdWx0aU5vZGVFbmFibGVkPzogYm9vbGVhblxuXG4gIC8vIE5PVEU6IGV2bS1nYXVudGxldCBzaG91bGQgbm90IG5lZWQgYmUgYXdhcmUgb2YgdGhlIHNhZmUgZW52IHZhcnNcbiAgLy8gQmUgY2FyZWZ1bCB3aGVuIGFkZGluZyBuZXcgZW52IHZhcnMgaGVyZVxuICBzYWZlTWFzdGVyQ29weT86IHN0cmluZ1xuICBzYWZlUHJveHlGYWN0b3J5Pzogc3RyaW5nXG4gIHNhZmVNdWx0aXNlbmQ/OiBzdHJpbmdcbiAgc2FmZUV4ZWN1dG9yPzogc3RyaW5nXG4gIHNhZmVBZGRyZXNzPzogc3RyaW5nXG4gIGdhc1ByaWNlPzogc3RyaW5nIC8vIGluIFdlaVxuICBnYXNMaW1pdD86IHN0cmluZyAvLyBpbiBnYXMgdW5pdHNcblxuICAvKlxuICBQYXJhbWV0ZXJzIHRoYXQgY29uZmlndXJlIGV2ZW50IHF1ZXJpZXMuXG4gIGJsb2NrUmFuZ2VQZXJFdmVudFF1ZXJ5IGlzIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIHNlYXJjaCBpbiBhIHNpbmdsZSByZXF1ZXN0LlxuICBldmVudFF1ZXJpZXNQZXJCYXRjaCBpcyB0aGUgbnVtYmVyIG9mIHF1ZXJpZXMgdGhhdCBjYW4gYmUgcnVuIGNvbmN1cnJlbnRseS5cbiAgKi9cbiAgYmxvY2tSYW5nZVBlckV2ZW50UXVlcnk/OiBzdHJpbmdcbiAgZXZlbnRRdWVyaWVzUGVyQmF0Y2g/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRVZNRGVwZW5kZW5jaWVzID0gRGVwZW5kZW5jaWVzPFxuICBFdGhlcnNQcm92aWRlcixcbiAgQ29udHJhY3RGYWN0b3J5LFxuICBUcmFuc2FjdGlvblJlcXVlc3QsXG4gIFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIEV0aGVyc1dhbGxldCxcbiAgRW52XG4+XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXZtL2RlcGVuZGVuY2llcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udHJhY3RGYWN0b3J5LFxuICBBYnN0cmFjdFNpZ25lciBhcyBFdGhlcnNXYWxsZXQsXG4gIFByb3ZpZGVyIGFzIEV0aGVyc1Byb3ZpZGVyLFxuICBUcmFuc2FjdGlvblJlc3BvbnNlLFxuICBUcmFuc2FjdGlvblJlcXVlc3QsXG59IGZyb20gJ2V0aGVycydcbmltcG9ydCB7IERlcGVuZGVuY2llcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVwZW5kZW5jaWVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudiBleHRlbmRzIE5ldHdvcmtFbnYge1xuICBwaz86IHN0cmluZ1xuICB3aXRoTGVkZ2VyPzogc3RyaW5nXG4gIC8vIFNvbWUgY29tbWFuZHMgbWF5IG5lZWQgYWNjZXNzIHRvIG11bHRpcGxlIG5ldHdvcmsgZW52aXJvbm1lbnRzXG4gIG5ldHdvcmtzPzoge1xuICAgIFtuZXR3b3JrOiBzdHJpbmddOiBOZXR3b3JrRW52XG4gIH1cbn1cblxudHlwZSBOZXR3b3JrRW52ID0ge1xuICBwcm92aWRlclVybDogc3RyaW5nXG4gIGZhbGxiYWNrVXJscz86IHN0cmluZ1tdXG4gIGluaXRpYWxXYWl0U2Vjb25kcz86IG51bWJlclxuICBtYXhSb3VuZHM/OiBudW1iZXJcbiAgbWF4UnBjQ2FsbHNQZXJCYXRjaD86IG51bWJlclxuICBibG9ja0FnZUxpbWl0U2Vjb25kcz86IG51bWJlclxuICBtdWx0aU5vZGVFbmFibGVkPzogYm9vbGVhblxuICB0aW1lb3V0U2Vjb25kcz86IG51bWJlclxuXG4gIC8vIE5PVEU6IGV2bS1nYXVudGxldCBzaG91bGQgbm90IG5lZWQgYmUgYXdhcmUgb2YgdGhlIHNhZmUgZW52IHZhcnNcbiAgLy8gQmUgY2FyZWZ1bCB3aGVuIGFkZGluZyBuZXcgZW52IHZhcnMgaGVyZVxuICBzYWZlTWFzdGVyQ29weT86IHN0cmluZ1xuICBzYWZlUHJveHlGYWN0b3J5Pzogc3RyaW5nXG4gIHNhZmVNdWx0aXNlbmQ/OiBzdHJpbmdcbiAgc2FmZUV4ZWN1dG9yPzogc3RyaW5nXG4gIHNhZmVBZGRyZXNzPzogc3RyaW5nXG4gIGdhc1ByaWNlPzogc3RyaW5nIC8vIGluIFdlaVxuICBnYXNMaW1pdD86IHN0cmluZyAvLyBpbiBnYXMgdW5pdHNcblxuICAvKlxuICBQYXJhbWV0ZXJzIHRoYXQgY29uZmlndXJlIGV2ZW50IHF1ZXJpZXMuXG4gIGJsb2NrUmFuZ2VQZXJFdmVudFF1ZXJ5IGlzIHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIHNlYXJjaCBpbiBhIHNpbmdsZSByZXF1ZXN0LlxuICBldmVudFF1ZXJpZXNQZXJCYXRjaCBpcyB0aGUgbnVtYmVyIG9mIHF1ZXJpZXMgdGhhdCBjYW4gYmUgcnVuIGNvbmN1cnJlbnRseS5cbiAgKi9cbiAgYmxvY2tSYW5nZVBlckV2ZW50UXVlcnk/OiBzdHJpbmdcbiAgZXZlbnRRdWVyaWVzUGVyQmF0Y2g/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRVZNRGVwZW5kZW5jaWVzID0gRGVwZW5kZW5jaWVzPFxuICBFdGhlcnNQcm92aWRlcixcbiAgQ29udHJhY3RGYWN0b3J5LFxuICBUcmFuc2FjdGlvblJlcXVlc3QsXG4gIFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIEV0aGVyc1dhbGxldCxcbiAgRW52XG4+XG4iXX0=

@@ -31,4 +31,4 @@ import { IProvider, MultiNodeProviderConfig } from '../../core';

private constructor();
static create: (config: MultiNodeProviderConfig<JsonRpcApiProviderOptions>, logger: typeof coreLogger, testingMode?: boolean) => Promise<MultiNodeProvider>;
static create: (config: MultiNodeProviderConfig<JsonRpcApiProviderOptions>, logger: typeof coreLogger) => Promise<MultiNodeProvider>;
}
//# sourceMappingURL=index.d.ts.map

@@ -139,6 +139,6 @@ "use strict";

_a = MultiNodeProvider;
MultiNodeProvider.create = async (config, logger, testingMode = false) => {
const provider = await multiNodeProvider_1.MultiNodeJsonRpcProvider.create(config, logger, testingMode);
MultiNodeProvider.create = async (config, logger) => {
const provider = await multiNodeProvider_1.MultiNodeJsonRpcProvider.create(config, logger);
return new MultiNodeProvider(provider);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXZtL3Byb3ZpZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxtQ0FTZTtBQUdmLDJEQUE4RDtBQUs5RCxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQXFCLEVBQUUsT0FBZ0IsRUFBa0IsRUFBRTtJQUMvRSxNQUFNLFdBQVcsR0FBbUI7UUFDbEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1FBQ25CLE9BQU8sRUFBRSxPQUFPLElBQUksUUFBUSxDQUFDLEVBQUU7UUFDL0IsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2YsSUFBSTtnQkFDRixNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDckMsTUFBTSxPQUFPLEdBQUcsT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtnQkFDdkQsV0FBVyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFBO2dCQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtvQkFDeEIsV0FBVyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFBO2lCQUM5QztnQkFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQTthQUM1RDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLFdBQVcsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFBO2dCQUMvQixNQUFNLENBQUMsQ0FBQTthQUNSO1FBQ0gsQ0FBQztRQUNELEVBQUUsRUFBRSxRQUFRO1FBQ1osTUFBTSxFQUFFLFNBQVM7S0FDbEIsQ0FBQTtJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQUVELE1B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YSxpQkFBa0IsU0FBUSxRQUFRO0lBRzdDLFlBQW9CLFFBQWtDO1FBQ3BELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqQixDQUFDOztBQUxILDhDQWdCQzs7QUFUUSx3QkFBTSxHQUFHLEtBQUssRUFDbkIsTUFBMEQsRUFDMUQsTUFBeUIsRUFDekIsV0FBVyxHQUFHLEtBQUssRUFDbkIsRUFBRTtJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sNENBQXdCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFFbkYsT0FBTyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ3hDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQcm92aWRlciwgTXVsdGlOb2RlUHJvdmlkZXJDb25maWcgfSBmcm9tICcuLi8uLi9jb3JlJ1xuaW1wb3J0IHtcbiAgUHJvdmlkZXIgYXMgRXRoZXJzUHJvdmlkZXIsXG4gIFRyYW5zYWN0aW9uUmVzcG9uc2UgYXMgVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uUmVxdWVzdCxcbiAgQWJzdHJhY3RTaWduZXIgYXMgRXRoZXJzV2FsbGV0LFxuICBKc29uUnBjUHJvdmlkZXIsXG4gIENvbnRyYWN0RmFjdG9yeSxcbiAgRXJyb3JEZXNjcmlwdGlvbixcbiAgSnNvblJwY0FwaVByb3ZpZGVyT3B0aW9ucyxcbn0gZnJvbSAnZXRoZXJzJ1xuaW1wb3J0IHsgRVZNVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbidcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi8uLi9jb3JlL3dhbGxldCdcbmltcG9ydCB7IE11bHRpTm9kZUpzb25ScGNQcm92aWRlciB9IGZyb20gJy4vbXVsdGlOb2RlUHJvdmlkZXInXG5pbXBvcnQgeyBsb2dnZXIgYXMgY29yZUxvZ2dlciB9IGZyb20gJ0BjaGFpbmxpbmsvZ2F1bnRsZXQtY29yZS9kaXN0L3V0aWxzJ1xuXG5leHBvcnQgdHlwZSBFVk1Qcm92aWRlciA9IElQcm92aWRlcjxFdGhlcnNQcm92aWRlciwgQ29udHJhY3RGYWN0b3J5LCBUcmFuc2FjdGlvblJlcXVlc3QsIFRyYW5zYWN0aW9uLCBFdGhlcnNXYWxsZXQ+XG5cbmNvbnN0IHdyYXBSZXNwb25zZSA9IChyZXNwb25zZTogVHJhbnNhY3Rpb24sIGFkZHJlc3M/OiBzdHJpbmcpOiBFVk1UcmFuc2FjdGlvbiA9PiB7XG4gIGNvbnN0IGV2bVJlc3BvbnNlOiBFVk1UcmFuc2FjdGlvbiA9IHtcbiAgICBoYXNoOiByZXNwb25zZS5oYXNoLFxuICAgIGFkZHJlc3M6IGFkZHJlc3MgfHwgcmVzcG9uc2UudG8sXG4gICAgd2FpdDogYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVjZWlwdCA9IGF3YWl0IHJlc3BvbnNlLndhaXQoKVxuICAgICAgICBjb25zdCBzdWNjZXNzID0gcmVjZWlwdCA9PSBudWxsIHx8IHJlY2VpcHQuc3RhdHVzID09PSAxXG4gICAgICAgIGV2bVJlc3BvbnNlLnN0YXR1cyA9IHN1Y2Nlc3MgPyAnQUNDRVBURUQnIDogJ1JFSkVDVEVEJ1xuICAgICAgICBpZiAoIWV2bVJlc3BvbnNlLmFkZHJlc3MpIHtcbiAgICAgICAgICBldm1SZXNwb25zZS5hZGRyZXNzID0gcmVjZWlwdC5jb250cmFjdEFkZHJlc3NcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiByZWNlaXB0ID09IG51bGwgfHwgcmVjZWlwdC5zdGF0dXMgPT09IDEgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBldm1SZXNwb25zZS5zdGF0dXMgPSAnUkVKRUNURUQnXG4gICAgICAgIHRocm93IGVcbiAgICAgIH1cbiAgICB9LFxuICAgIHR4OiByZXNwb25zZSxcbiAgICBzdGF0dXM6ICdQRU5ESU5HJyxcbiAgfVxuICByZXR1cm4gZXZtUmVzcG9uc2Vcbn1cblxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyIGltcGxlbWVudHMgRVZNUHJvdmlkZXIge1xuICBwcm92aWRlcjogRXRoZXJzUHJvdmlkZXJcblxuICBjb25zdHJ1Y3Rvcihwcm92aWRlcjogRXRoZXJzUHJvdmlkZXIpIHtcbiAgICB0aGlzLnByb3ZpZGVyID0gcHJvdmlkZXJcbiAgfVxuXG4gIHNlbmQgPSBhc3luYyAoc2lnbmVkVHgpID0+IHtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMucHJvdmlkZXIuc2VuZFRyYW5zYWN0aW9uKHNpZ25lZFR4KVxuICAgIHJldHVybiB3cmFwUmVzcG9uc2UodHgpXG4gIH1cblxuICBkZXBsb3lDb250cmFjdCA9IGFzeW5jICh3YWxsZXQ6IElXYWxsZXQ8RXRoZXJzV2FsbGV0PiwgY29udHJhY3RGYWN0b3J5OiBDb250cmFjdEZhY3RvcnksIGlucHV0OiBhbnkpID0+IHtcbiAgICBjb25zdCB0eFJlcSA9IGF3YWl0IGNvbnRyYWN0RmFjdG9yeS5nZXREZXBsb3lUcmFuc2FjdGlvbiguLi5pbnB1dClcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zaWduQW5kU2VuZCh3YWxsZXQsIFt0eFJlcV0sIGNvbnRyYWN0RmFjdG9yeSlcbiAgfVxuXG4gIHNpZ24gPSBhc3luYyAod2FsbGV0OiBJV2FsbGV0PEV0aGVyc1dhbGxldD4sIGNhbGxzOiBUcmFuc2FjdGlvblJlcXVlc3RbXSwgY29udHJhY3Q6IENvbnRyYWN0RmFjdG9yeSkgPT4ge1xuICAgIGlmIChjYWxscy5sZW5ndGggPiAxKSB0aHJvdyBuZXcgRXJyb3IoJ0VWTSBkb2VzIG5vdCBzdXBwb3J0IG5hdGl2ZSBiYXRjaGluZycpXG4gICAgY29uc3QgY29ubmVjdGVkV2FsbGV0ID0gYXdhaXQgd2FsbGV0LndhbGxldC5jb25uZWN0KHRoaXMucHJvdmlkZXIpXG4gICAgdHJ5IHtcbiAgICAgIC8vIGRlbGV0ZSBnYXMgcHJpY2UgZmllbGRzIGJlY2F1c2UgdGhleSBhcmVuJ3QgbmVlZGVkIGZvciBzaWduaW5nXG4gICAgICBkZWxldGUgY2FsbHNbMF0ubWF4UHJpb3JpdHlGZWVQZXJHYXNcbiAgICAgIGRlbGV0ZSBjYWxsc1swXS5tYXhGZWVQZXJHYXNcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBjb25uZWN0ZWRXYWxsZXQuc2lnblRyYW5zYWN0aW9uKGNhbGxzWzBdKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHg6IHR4LFxuICAgICAgICBtZXNzYWdlOiBjYWxsc1swXSxcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGRlY29kZWRFcnJvciA9IHRoaXMucGFyc2VDb250cmFjdEVycm9yKGNvbnRyYWN0LCBlcnI/LmluZm8/LmVycm9yKVxuICAgICAgaWYgKGRlY29kZWRFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBzaWduIGFuZCBzZW5kLCB0cmFuc2FjdGlvbiByZXZlcnRlZCB3aXRoIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGVjb2RlZEVycm9yKX1gKVxuICAgICAgfVxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG5cbiAgc2lnbkFuZFNlbmQgPSBhc3luYyAod2FsbGV0OiBJV2FsbGV0PEV0aGVyc1dhbGxldD4sIGNhbGxzOiBUcmFuc2FjdGlvblJlcXVlc3RbXSwgY29udHJhY3Q6IENvbnRyYWN0RmFjdG9yeSkgPT4ge1xuICAgIGlmIChjYWxscy5sZW5ndGggPiAxKSB0aHJvdyBuZXcgRXJyb3IoJ0VWTSBkb2VzIG5vdCBzdXBwb3J0IG5hdGl2ZSBiYXRjaGluZycpXG4gICAgY29uc3QgY29ubmVjdGVkV2FsbGV0ID0gYXdhaXQgd2FsbGV0LndhbGxldC5jb25uZWN0KHRoaXMucHJvdmlkZXIpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgY29ubmVjdGVkV2FsbGV0LnNlbmRUcmFuc2FjdGlvbihjYWxsc1swXSlcbiAgICAgIHJldHVybiB3cmFwUmVzcG9uc2UodHgsIGNhbGxzWzBdLnRvPy50b1N0cmluZygpKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZGVjb2RlZEVycm9yID0gdGhpcy5wYXJzZUNvbnRyYWN0RXJyb3IoY29udHJhY3QsIGVycj8uaW5mbz8uZXJyb3IpXG4gICAgICBpZiAoZGVjb2RlZEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHNpZ24gYW5kIHNlbmQsIHRyYW5zYWN0aW9uIHJldmVydGVkIHdpdGggZGF0YTogJHtKU09OLnN0cmluZ2lmeShkZWNvZGVkRXJyb3IpfWApXG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cblxuICBzaW11bGF0ZSA9IGFzeW5jIChcbiAgICBzaWduZXI6IHN0cmluZyxcbiAgICBjYWxsOiBUcmFuc2FjdGlvblJlcXVlc3QsXG4gICAgY29udHJhY3Q6IENvbnRyYWN0RmFjdG9yeSxcbiAgICBvcHRzPzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZ2FzVXNlZCA9IGF3YWl0IHRoaXMucHJvdmlkZXIuZXN0aW1hdGVHYXMoe1xuICAgICAgICB0bzogY2FsbC50byxcbiAgICAgICAgZnJvbTogc2lnbmVyLFxuICAgICAgICBkYXRhOiBjYWxsLmRhdGEsXG4gICAgICAgIHZhbHVlOiBCaWdJbnQoY2FsbC52YWx1ZSksXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGdhc1VzZWQudG9TdHJpbmcoKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZGVjb2RlZEVycm9yID0gdGhpcy5wYXJzZUNvbnRyYWN0RXJyb3IoY29udHJhY3QsIGVycj8uaW5mbz8uZXJyb3IpXG4gICAgICBpZiAoZGVjb2RlZEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVHJhbnNhY3Rpb24gc2ltdWxhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogJHtkZWNvZGVkRXJyb3IubmFtZX0gd2l0aCBzaWduYXR1cmUgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGRlY29kZWRFcnJvci5zaWdoYXNoLFxuICAgICAgICAgICl9IGFuZCBtZXNzYWdlIFxcXCIke2RlY29kZWRFcnJvci5tZXNzYWdlfVxcXCIgYW5kIHJlYXNvbj1cXFwiJHtkZWNvZGVkRXJyb3IucmVhc29ufVxcXCJgLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cblxuICBwYXJzZUNvbnRyYWN0RXJyb3IgPSAoXG4gICAgY29udHJhY3Q6IENvbnRyYWN0RmFjdG9yeSxcbiAgICBlcnJvcjogYW55LFxuICApOiB7IG5hbWU6IHN0cmluZzsgc2lnaGFzaDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHJlYXNvbjogc3RyaW5nIH0gPT4ge1xuICAgIGlmICghZXJyb3IpIHJldHVyblxuXG4gICAgbGV0IHBhcnNlZEVyclJlc3VsdDogRXJyb3JEZXNjcmlwdGlvblxuICAgIHRyeSB7XG4gICAgICBpZiAoISFlcnJvcj8uZGF0YT8ucmVzdWx0KSB7XG4gICAgICAgIC8vIE1haW5seSBmb3IgdGVzdHMsIGFzIEdhbmFjaGUgc3RpbGwgcmV0dXJucyBkYXRhIGluIHRoaXMgZmllbGRcbiAgICAgICAgcGFyc2VkRXJyUmVzdWx0ID0gY29udHJhY3QuaW50ZXJmYWNlLnBhcnNlRXJyb3IoZXJyb3IuZGF0YS5yZXN1bHQpXG4gICAgICB9IGVsc2UgaWYgKCEhZXJyb3I/LmRhdGEpIHtcbiAgICAgICAgcGFyc2VkRXJyUmVzdWx0ID0gY29udHJhY3QuaW50ZXJmYWNlLnBhcnNlRXJyb3IoZXJyb3IuZGF0YSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSByZXZlcnQgZGF0YTogJHtlLm1lc3NhZ2V9YClcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUgPz8gJ0Vycm9yIG5vdCBpZGVudGlmaWVkJyxcbiAgICAgIHNpZ2hhc2g6IHBhcnNlZEVyclJlc3VsdD8uZnJhZ21lbnQ/LnNlbGVjdG9yID8/ICdTZWxlY3RvciBub3QgaWRlbnRpZmllZCcsXG4gICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlID8/ICdNZXNzYWdlIG5vdCBpZGVudGlmaWVkJyxcbiAgICAgIHJlYXNvbjogZXJyb3IuZGF0YT8ucmVhc29uID8/ICdSZWFzb24gbm90IGlkZW50aWZpZWQnLFxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWFrZVByb3ZpZGVyID0gKGJhc2VVcmw6IHN0cmluZykgPT4ge1xuICByZXR1cm4gbmV3IFByb3ZpZGVyKG5ldyBKc29uUnBjUHJvdmlkZXIoYmFzZVVybCkpXG59XG5cbmV4cG9ydCBjb25zdCBtYWtlTXVsdGlOb2RlUHJvdmlkZXIgPSBhc3luYyAoXG4gIGNvbmZpZzogTXVsdGlOb2RlUHJvdmlkZXJDb25maWc8SnNvblJwY0FwaVByb3ZpZGVyT3B0aW9ucz4sXG4gIGxvZ2dlcjogdHlwZW9mIGNvcmVMb2dnZXIsXG4pID0+IHtcbiAgcmV0dXJuIGF3YWl0IE11bHRpTm9kZVByb3ZpZGVyLmNyZWF0ZShjb25maWcsIGxvZ2dlcilcbn1cblxuZXhwb3J0IGNsYXNzIE11bHRpTm9kZVByb3ZpZGVyIGV4dGVuZHMgUHJvdmlkZXIge1xuICBwcm92aWRlcjogTXVsdGlOb2RlSnNvblJwY1Byb3ZpZGVyXG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcm92aWRlcjogTXVsdGlOb2RlSnNvblJwY1Byb3ZpZGVyKSB7XG4gICAgc3VwZXIocHJvdmlkZXIpXG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gYXN5bmMgKFxuICAgIGNvbmZpZzogTXVsdGlOb2RlUHJvdmlkZXJDb25maWc8SnNvblJwY0FwaVByb3ZpZGVyT3B0aW9ucz4sXG4gICAgbG9nZ2VyOiB0eXBlb2YgY29yZUxvZ2dlcixcbiAgICB0ZXN0aW5nTW9kZSA9IGZhbHNlLFxuICApID0+IHtcbiAgICBjb25zdCBwcm92aWRlciA9IGF3YWl0IE11bHRpTm9kZUpzb25ScGNQcm92aWRlci5jcmVhdGUoY29uZmlnLCBsb2dnZXIsIHRlc3RpbmdNb2RlKVxuXG4gICAgcmV0dXJuIG5ldyBNdWx0aU5vZGVQcm92aWRlcihwcm92aWRlcilcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXZtL3Byb3ZpZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxtQ0FTZTtBQUdmLDJEQUE4RDtBQUs5RCxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQXFCLEVBQUUsT0FBZ0IsRUFBa0IsRUFBRTtJQUMvRSxNQUFNLFdBQVcsR0FBbUI7UUFDbEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1FBQ25CLE9BQU8sRUFBRSxPQUFPLElBQUksUUFBUSxDQUFDLEVBQUU7UUFDL0IsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ2YsSUFBSTtnQkFDRixNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtnQkFDckMsTUFBTSxPQUFPLEdBQUcsT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtnQkFDdkQsV0FBVyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFBO2dCQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtvQkFDeEIsV0FBVyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFBO2lCQUM5QztnQkFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQTthQUM1RDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLFdBQVcsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFBO2dCQUMvQixNQUFNLENBQUMsQ0FBQTthQUNSO1FBQ0gsQ0FBQztRQUNELEVBQUUsRUFBRSxRQUFRO1FBQ1osTUFBTSxFQUFFLFNBQVM7S0FDbEIsQ0FBQTtJQUNELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQUVELE1B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YSxpQkFBa0IsU0FBUSxRQUFRO0lBRzdDLFlBQW9CLFFBQWtDO1FBQ3BELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqQixDQUFDOztBQUxILDhDQVlDOztBQUxRLHdCQUFNLEdBQUcsS0FBSyxFQUFFLE1BQTBELEVBQUUsTUFBeUIsRUFBRSxFQUFFO0lBQzlHLE1BQU0sUUFBUSxHQUFHLE1BQU0sNENBQXdCLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUV0RSxPQUFPLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDeEMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVByb3ZpZGVyLCBNdWx0aU5vZGVQcm92aWRlckNvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUnXG5pbXBvcnQge1xuICBQcm92aWRlciBhcyBFdGhlcnNQcm92aWRlcixcbiAgVHJhbnNhY3Rpb25SZXNwb25zZSBhcyBUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25SZXF1ZXN0LFxuICBBYnN0cmFjdFNpZ25lciBhcyBFdGhlcnNXYWxsZXQsXG4gIEpzb25ScGNQcm92aWRlcixcbiAgQ29udHJhY3RGYWN0b3J5LFxuICBFcnJvckRlc2NyaXB0aW9uLFxuICBKc29uUnBjQXBpUHJvdmlkZXJPcHRpb25zLFxufSBmcm9tICdldGhlcnMnXG5pbXBvcnQgeyBFVk1UcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uLy4uL2NvcmUvd2FsbGV0J1xuaW1wb3J0IHsgTXVsdGlOb2RlSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSAnLi9tdWx0aU5vZGVQcm92aWRlcidcbmltcG9ydCB7IGxvZ2dlciBhcyBjb3JlTG9nZ2VyIH0gZnJvbSAnQGNoYWlubGluay9nYXVudGxldC1jb3JlL2Rpc3QvdXRpbHMnXG5cbmV4cG9ydCB0eXBlIEVWTVByb3ZpZGVyID0gSVByb3ZpZGVyPEV0aGVyc1Byb3ZpZGVyLCBDb250cmFjdEZhY3RvcnksIFRyYW5zYWN0aW9uUmVxdWVzdCwgVHJhbnNhY3Rpb24sIEV0aGVyc1dhbGxldD5cblxuY29uc3Qgd3JhcFJlc3BvbnNlID0gKHJlc3BvbnNlOiBUcmFuc2FjdGlvbiwgYWRkcmVzcz86IHN0cmluZyk6IEVWTVRyYW5zYWN0aW9uID0+IHtcbiAgY29uc3QgZXZtUmVzcG9uc2U6IEVWTVRyYW5zYWN0aW9uID0ge1xuICAgIGhhc2g6IHJlc3BvbnNlLmhhc2gsXG4gICAgYWRkcmVzczogYWRkcmVzcyB8fCByZXNwb25zZS50byxcbiAgICB3YWl0OiBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWNlaXB0ID0gYXdhaXQgcmVzcG9uc2Uud2FpdCgpXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSByZWNlaXB0ID09IG51bGwgfHwgcmVjZWlwdC5zdGF0dXMgPT09IDFcbiAgICAgICAgZXZtUmVzcG9uc2Uuc3RhdHVzID0gc3VjY2VzcyA/ICdBQ0NFUFRFRCcgOiAnUkVKRUNURUQnXG4gICAgICAgIGlmICghZXZtUmVzcG9uc2UuYWRkcmVzcykge1xuICAgICAgICAgIGV2bVJlc3BvbnNlLmFkZHJlc3MgPSByZWNlaXB0LmNvbnRyYWN0QWRkcmVzc1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHJlY2VpcHQgPT0gbnVsbCB8fCByZWNlaXB0LnN0YXR1cyA9PT0gMSB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGV2bVJlc3BvbnNlLnN0YXR1cyA9ICdSRUpFQ1RFRCdcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgIH0sXG4gICAgdHg6IHJlc3BvbnNlLFxuICAgIHN0YXR1czogJ1BFTkRJTkcnLFxuICB9XG4gIHJldHVybiBldm1SZXNwb25zZVxufVxuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXIgaW1wbGVtZW50cyBFVk1Qcm92aWRlciB7XG4gIHByb3ZpZGVyOiBFdGhlcnNQcm92aWRlclxuXG4gIGNvbnN0cnVjdG9yKHByb3ZpZGVyOiBFdGhlcnNQcm92aWRlcikge1xuICAgIHRoaXMucHJvdmlkZXIgPSBwcm92aWRlclxuICB9XG5cbiAgc2VuZCA9IGFzeW5jIChzaWduZWRUeCkgPT4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5wcm92aWRlci5zZW5kVHJhbnNhY3Rpb24oc2lnbmVkVHgpXG4gICAgcmV0dXJuIHdyYXBSZXNwb25zZSh0eClcbiAgfVxuXG4gIGRlcGxveUNvbnRyYWN0ID0gYXN5bmMgKHdhbGxldDogSVdhbGxldDxFdGhlcnNXYWxsZXQ+LCBjb250cmFjdEZhY3Rvcnk6IENvbnRyYWN0RmFjdG9yeSwgaW5wdXQ6IGFueSkgPT4ge1xuICAgIGNvbnN0IHR4UmVxID0gYXdhaXQgY29udHJhY3RGYWN0b3J5LmdldERlcGxveVRyYW5zYWN0aW9uKC4uLmlucHV0KVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNpZ25BbmRTZW5kKHdhbGxldCwgW3R4UmVxXSwgY29udHJhY3RGYWN0b3J5KVxuICB9XG5cbiAgc2lnbiA9IGFzeW5jICh3YWxsZXQ6IElXYWxsZXQ8RXRoZXJzV2FsbGV0PiwgY2FsbHM6IFRyYW5zYWN0aW9uUmVxdWVzdFtdLCBjb250cmFjdDogQ29udHJhY3RGYWN0b3J5KSA9PiB7XG4gICAgaWYgKGNhbGxzLmxlbmd0aCA+IDEpIHRocm93IG5ldyBFcnJvcignRVZNIGRvZXMgbm90IHN1cHBvcnQgbmF0aXZlIGJhdGNoaW5nJylcbiAgICBjb25zdCBjb25uZWN0ZWRXYWxsZXQgPSBhd2FpdCB3YWxsZXQud2FsbGV0LmNvbm5lY3QodGhpcy5wcm92aWRlcilcbiAgICB0cnkge1xuICAgICAgLy8gZGVsZXRlIGdhcyBwcmljZSBmaWVsZHMgYmVjYXVzZSB0aGV5IGFyZW4ndCBuZWVkZWQgZm9yIHNpZ25pbmdcbiAgICAgIGRlbGV0ZSBjYWxsc1swXS5tYXhQcmlvcml0eUZlZVBlckdhc1xuICAgICAgZGVsZXRlIGNhbGxzWzBdLm1heEZlZVBlckdhc1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGNvbm5lY3RlZFdhbGxldC5zaWduVHJhbnNhY3Rpb24oY2FsbHNbMF0pXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eDogdHgsXG4gICAgICAgIG1lc3NhZ2U6IGNhbGxzWzBdLFxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZGVjb2RlZEVycm9yID0gdGhpcy5wYXJzZUNvbnRyYWN0RXJyb3IoY29udHJhY3QsIGVycj8uaW5mbz8uZXJyb3IpXG4gICAgICBpZiAoZGVjb2RlZEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHNpZ24gYW5kIHNlbmQsIHRyYW5zYWN0aW9uIHJldmVydGVkIHdpdGggZGF0YTogJHtKU09OLnN0cmluZ2lmeShkZWNvZGVkRXJyb3IpfWApXG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cblxuICBzaWduQW5kU2VuZCA9IGFzeW5jICh3YWxsZXQ6IElXYWxsZXQ8RXRoZXJzV2FsbGV0PiwgY2FsbHM6IFRyYW5zYWN0aW9uUmVxdWVzdFtdLCBjb250cmFjdDogQ29udHJhY3RGYWN0b3J5KSA9PiB7XG4gICAgaWYgKGNhbGxzLmxlbmd0aCA+IDEpIHRocm93IG5ldyBFcnJvcignRVZNIGRvZXMgbm90IHN1cHBvcnQgbmF0aXZlIGJhdGNoaW5nJylcbiAgICBjb25zdCBjb25uZWN0ZWRXYWxsZXQgPSBhd2FpdCB3YWxsZXQud2FsbGV0LmNvbm5lY3QodGhpcy5wcm92aWRlcilcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBjb25uZWN0ZWRXYWxsZXQuc2VuZFRyYW5zYWN0aW9uKGNhbGxzWzBdKVxuICAgICAgcmV0dXJuIHdyYXBSZXNwb25zZSh0eCwgY2FsbHNbMF0udG8/LnRvU3RyaW5nKCkpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBkZWNvZGVkRXJyb3IgPSB0aGlzLnBhcnNlQ29udHJhY3RFcnJvcihjb250cmFjdCwgZXJyPy5pbmZvPy5lcnJvcilcbiAgICAgIGlmIChkZWNvZGVkRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2lnbiBhbmQgc2VuZCwgdHJhbnNhY3Rpb24gcmV2ZXJ0ZWQgd2l0aCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRlY29kZWRFcnJvcil9YClcbiAgICAgIH1cbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxuXG4gIHNpbXVsYXRlID0gYXN5bmMgKFxuICAgIHNpZ25lcjogc3RyaW5nLFxuICAgIGNhbGw6IFRyYW5zYWN0aW9uUmVxdWVzdCxcbiAgICBjb250cmFjdDogQ29udHJhY3RGYWN0b3J5LFxuICAgIG9wdHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBnYXNVc2VkID0gYXdhaXQgdGhpcy5wcm92aWRlci5lc3RpbWF0ZUdhcyh7XG4gICAgICAgIHRvOiBjYWxsLnRvLFxuICAgICAgICBmcm9tOiBzaWduZXIsXG4gICAgICAgIGRhdGE6IGNhbGwuZGF0YSxcbiAgICAgICAgdmFsdWU6IEJpZ0ludChjYWxsLnZhbHVlKSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4gZ2FzVXNlZC50b1N0cmluZygpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBkZWNvZGVkRXJyb3IgPSB0aGlzLnBhcnNlQ29udHJhY3RFcnJvcihjb250cmFjdCwgZXJyPy5pbmZvPy5lcnJvcilcbiAgICAgIGlmIChkZWNvZGVkRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUcmFuc2FjdGlvbiBzaW11bGF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiAke2RlY29kZWRFcnJvci5uYW1lfSB3aXRoIHNpZ25hdHVyZSAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgZGVjb2RlZEVycm9yLnNpZ2hhc2gsXG4gICAgICAgICAgKX0gYW5kIG1lc3NhZ2UgXFxcIiR7ZGVjb2RlZEVycm9yLm1lc3NhZ2V9XFxcIiBhbmQgcmVhc29uPVxcXCIke2RlY29kZWRFcnJvci5yZWFzb259XFxcImAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxuXG4gIHBhcnNlQ29udHJhY3RFcnJvciA9IChcbiAgICBjb250cmFjdDogQ29udHJhY3RGYWN0b3J5LFxuICAgIGVycm9yOiBhbnksXG4gICk6IHsgbmFtZTogc3RyaW5nOyBzaWdoYXNoOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZzsgcmVhc29uOiBzdHJpbmcgfSA9PiB7XG4gICAgaWYgKCFlcnJvcikgcmV0dXJuXG5cbiAgICBsZXQgcGFyc2VkRXJyUmVzdWx0OiBFcnJvckRlc2NyaXB0aW9uXG4gICAgdHJ5IHtcbiAgICAgIGlmICghIWVycm9yPy5kYXRhPy5yZXN1bHQpIHtcbiAgICAgICAgLy8gTWFpbmx5IGZvciB0ZXN0cywgYXMgR2FuYWNoZSBzdGlsbCByZXR1cm5zIGRhdGEgaW4gdGhpcyBmaWVsZFxuICAgICAgICBwYXJzZWRFcnJSZXN1bHQgPSBjb250cmFjdC5pbnRlcmZhY2UucGFyc2VFcnJvcihlcnJvci5kYXRhLnJlc3VsdClcbiAgICAgIH0gZWxzZSBpZiAoISFlcnJvcj8uZGF0YSkge1xuICAgICAgICBwYXJzZWRFcnJSZXN1bHQgPSBjb250cmFjdC5pbnRlcmZhY2UucGFyc2VFcnJvcihlcnJvci5kYXRhKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJldmVydCBkYXRhOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZXJyb3IubmFtZSA/PyAnRXJyb3Igbm90IGlkZW50aWZpZWQnLFxuICAgICAgc2lnaGFzaDogcGFyc2VkRXJyUmVzdWx0Py5mcmFnbWVudD8uc2VsZWN0b3IgPz8gJ1NlbGVjdG9yIG5vdCBpZGVudGlmaWVkJyxcbiAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgPz8gJ01lc3NhZ2Ugbm90IGlkZW50aWZpZWQnLFxuICAgICAgcmVhc29uOiBlcnJvci5kYXRhPy5yZWFzb24gPz8gJ1JlYXNvbiBub3QgaWRlbnRpZmllZCcsXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlUHJvdmlkZXIgPSAoYmFzZVVybDogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBuZXcgUHJvdmlkZXIobmV3IEpzb25ScGNQcm92aWRlcihiYXNlVXJsKSlcbn1cblxuZXhwb3J0IGNvbnN0IG1ha2VNdWx0aU5vZGVQcm92aWRlciA9IGFzeW5jIChcbiAgY29uZmlnOiBNdWx0aU5vZGVQcm92aWRlckNvbmZpZzxKc29uUnBjQXBpUHJvdmlkZXJPcHRpb25zPixcbiAgbG9nZ2VyOiB0eXBlb2YgY29yZUxvZ2dlcixcbikgPT4ge1xuICByZXR1cm4gYXdhaXQgTXVsdGlOb2RlUHJvdmlkZXIuY3JlYXRlKGNvbmZpZywgbG9nZ2VyKVxufVxuXG5leHBvcnQgY2xhc3MgTXVsdGlOb2RlUHJvdmlkZXIgZXh0ZW5kcyBQcm92aWRlciB7XG4gIHByb3ZpZGVyOiBNdWx0aU5vZGVKc29uUnBjUHJvdmlkZXJcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByb3ZpZGVyOiBNdWx0aU5vZGVKc29uUnBjUHJvdmlkZXIpIHtcbiAgICBzdXBlcihwcm92aWRlcilcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSBhc3luYyAoY29uZmlnOiBNdWx0aU5vZGVQcm92aWRlckNvbmZpZzxKc29uUnBjQXBpUHJvdmlkZXJPcHRpb25zPiwgbG9nZ2VyOiB0eXBlb2YgY29yZUxvZ2dlcikgPT4ge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gYXdhaXQgTXVsdGlOb2RlSnNvblJwY1Byb3ZpZGVyLmNyZWF0ZShjb25maWcsIGxvZ2dlcilcblxuICAgIHJldHVybiBuZXcgTXVsdGlOb2RlUHJvdmlkZXIocHJvdmlkZXIpXG4gIH1cbn1cbiJdfQ==

@@ -1,22 +0,19 @@

import { JsonRpcApiProviderOptions, JsonRpcProvider, Network, FeeData, AddressLike, BlockTag, BigNumberish, TransactionRequest, TransactionResponse, Block, TransactionReceipt, Filter, FilterByBlockHash, Log, AbstractProvider } from 'ethers';
import { JsonRpcApiProviderOptions, Network, FeeData, AddressLike, BlockTag, BigNumberish, TransactionRequest, TransactionResponse, Block, TransactionReceipt, Filter, FilterByBlockHash, Log, AbstractProvider } from 'ethers';
import { logger as coreLogger } from '@chainlink/gauntlet-core/dist/utils';
import { MultiNodeProviderConfig } from '../../core';
type ProviderAndUrl = {
provider: JsonRpcProvider;
url: string;
};
type JsonRpcBatchCall = {
method: string;
params: any[];
}[];
type StrictJsonRpcApiProviderOptions = {
batchStallTime: number;
batchMaxCount: number;
} & JsonRpcApiProviderOptions;
export declare class MultiNodeJsonRpcProvider extends AbstractProvider {
readonly providers: ProviderAndUrl[];
readonly urls: string[];
readonly providerOpts: StrictJsonRpcApiProviderOptions;
readonly initialWaitSeconds: number;
readonly maxRounds: number;
readonly blockAgeLimitSeconds: number;
readonly timeoutSeconds: number;
readonly skipHealthCheck: boolean;
private readonly logger;
private readonly startingRound;
private readonly startingProvider;
private readonly batchStallTimeMs;
private readonly batchMaxCount;
private readonly initialWaitSeconds;
private readonly maxRounds;
private readonly testingMode;
private readonly labelColor;

@@ -27,16 +24,15 @@ private readonly valueColor;

private pendingCalls;
private requestCounts;
private payloads;
constructor(network: Network, providers: ProviderAndUrl[], logger: typeof coreLogger, batchStallTimeMs: number, batchMaxCount: number, initialWaitSeconds: number, maxRounds: number, testingMode: boolean);
getRequestCounts(): number[];
getNewPayloads(): JsonRpcBatchCall[][];
private logRpc;
private readonly healthStatuses;
private constructor();
static create(config: MultiNodeProviderConfig<JsonRpcApiProviderOptions>, logger: typeof coreLogger): Promise<MultiNodeJsonRpcProvider>;
destroy(): void;
private endOfRoundReached;
private completedMaxRounds;
static create(config: MultiNodeProviderConfig<JsonRpcApiProviderOptions>, logger: typeof coreLogger, testingMode?: boolean): Promise<MultiNodeJsonRpcProvider>;
private isUnretryableEthersError;
private validateNetwork;
private logRpc;
private runCall;
private startNewAttempt;
private runWithBackoffAndFailover;
private executeBatchWithDelay;
private executeBatch;
private addCallToBatch;

@@ -43,0 +39,0 @@ private startBatchCountdown;

{
"name": "@chainlink/evm-gauntlet",
"version": "0.0.0-develop-20240409214435",
"version": "0.0.0-develop-20240430133909",
"description": "Gauntlet EVM",

@@ -33,4 +33,4 @@ "keywords": [

"devDependencies": {
"@chainlink/evm-gauntlet-token": "0.0.0-develop-20240409214435"
"@chainlink/evm-gauntlet-token": "*"
}
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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

SocketSocket SOC 2 Logo

Product

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc