@bitgo/abstract-substrate 1.1.6 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -171,6 +171,16 @@ class Utils {
171
171
  isTransferAll(arg) {
172
172
  return arg.dest?.id !== undefined && arg.keepAlive !== undefined;
173
173
  }
174
+ isAddStake(arg) {
175
+ return (arg.amountStaked !== undefined &&
176
+ arg.hotkey !== undefined &&
177
+ arg.netuid !== undefined);
178
+ }
179
+ isRemoveStake(arg) {
180
+ return (arg.amountUnstaked !== undefined &&
181
+ arg.hotkey !== undefined &&
182
+ arg.netuid !== undefined);
183
+ }
174
184
  /**
175
185
  * extracts and returns the signature in hex format given a raw signed transaction
176
186
  *
@@ -214,4 +224,4 @@ class Utils {
214
224
  exports.Utils = Utils;
215
225
  const utils = new Utils();
216
226
  exports.default = utils;
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUFxRjtBQUVyRiwrQ0FBMEU7QUFDMUUsMERBQTJEO0FBRTNELHNFQUEyRTtBQUMzRSx5Q0FBcUU7QUFDckUsdURBQXNFO0FBR3RFLHNFQUEwRDtBQUMxRCxnREFBd0I7QUFDeEIsMERBQStCO0FBQy9CLDBEQUE2QjtBQUM3Qix3QkFBNEI7QUFHNUIsTUFBYSxLQUFLO0lBQ2hCLGtCQUFrQjtJQUNsQixjQUFjLENBQUMsT0FBZTtRQUM1QixJQUFJLENBQUM7WUFDSCxJQUFBLHVCQUFhLEVBQUMsSUFBQSxZQUFLLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsZUFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLHVCQUFhLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixjQUFjLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUEsWUFBSyxFQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBQSxlQUFRLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDakMsT0FBTyxVQUFVLENBQUMsTUFBTSxLQUFLLG1CQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBRWpCLHVDQUF1QztRQUN2QyxpRUFBaUU7UUFDakUsSUFBSSxJQUFBLG1CQUFRLEVBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxZQUFZLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QyxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxJQUFBLGtDQUF1QixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsU0FBaUI7UUFDaEMsTUFBTSxZQUFZLEdBQUcsSUFBQSxlQUFRLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGVBQWUsQ0FBQyxhQUFxQixFQUFFLFNBQWlCLEVBQUUsT0FBZTtRQUN2RSxNQUFNLFNBQVMsR0FBRyxJQUFBLHVCQUFhLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsTUFBTSxZQUFZLEdBQUcsSUFBQSxlQUFRLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFFekMsT0FBTyxJQUFBLDZCQUFlLEVBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBQSxZQUFLLEVBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLG1CQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzNCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxJQUFnQjtRQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxJQUFBLG1CQUFVLEVBQUMsRUFBRSxFQUFFLElBQUEsMEJBQVksRUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RixPQUFPLElBQUksVUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILGNBQWMsQ0FDWixJQUFpQixFQUNqQixjQUFzQixFQUN0QixXQUFnQyxFQUNoQyxPQUEyRDtRQUUzRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMxQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsUUFBUTthQUMzQixVQUFVLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFFO1lBQzlDLE9BQU8sRUFBRSw2QkFBaUI7U0FDM0IsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLGtDQUFrQztRQUNsQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCwwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQTBCLEVBQUUsUUFBUTtRQUNyRixPQUFPLDhCQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUU7WUFDaEQsV0FBVztZQUNYLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsc0JBQXNCLENBQUMsT0FBZSxFQUFFLFVBQWtCO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksVUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBQSx1QkFBYSxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pILE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsc0JBQXNCLENBQUMsT0FBZSxFQUFFLFVBQW1CO1FBQ3pELE9BQU8sSUFBQSx1QkFBYSxFQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLDhCQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFnRDtRQUMvRCxPQUFRLE9BQWlDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXFCO1FBQzlCLE9BQVEsR0FBb0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLFNBQVMsSUFBSyxHQUFvQixDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7SUFDbkcsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFxQjtRQUNqQyxPQUFRLEdBQXVCLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxTQUFTLElBQUssR0FBdUIsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO0lBQzdHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHlCQUF5QixDQUFDLEtBQWEsRUFBRSxPQUFtQztRQUMxRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRTtZQUN6RCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUNILElBQUksU0FBUyxHQUFHLElBQUEsZUFBUSxFQUFDLFVBQVUsQ0FBQyxTQUFTLENBQVcsQ0FBQztRQUV6RCxnRkFBZ0Y7UUFDaEYsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCwrQkFBK0IsQ0FBQyxPQUFlLEVBQUUsVUFBbUI7UUFDbEUsT0FBTyxJQUFJLFVBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUEsdUJBQWEsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxRQUFnQjtRQUN4QixPQUFPLFFBQVEsS0FBSyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUF3QjtRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBL05ELHNCQStOQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVV0aWxzLCBpc0Jhc2U1OCwgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksIFNlZWQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1R5cGUgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBkZWNvZGVBZGRyZXNzLCBlbmNvZGVBZGRyZXNzLCBLZXlyaW5nIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcnO1xuaW1wb3J0IHsgZGVjb2RlUGFpciB9IGZyb20gJ0Bwb2xrYWRvdC9rZXlyaW5nL3BhaXIvZGVjb2RlJztcbmltcG9ydCB7IEtleXJpbmdQYWlyIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcvdHlwZXMnO1xuaW1wb3J0IHsgRVhUUklOU0lDX1ZFUlNJT04gfSBmcm9tICdAcG9sa2Fkb3QvdHlwZXMvZXh0cmluc2ljL3Y0L0V4dHJpbnNpYyc7XG5pbXBvcnQgeyBoZXhUb1U4YSwgaXNIZXgsIHU4YVRvSGV4LCB1OGFUb1U4YSB9IGZyb20gJ0Bwb2xrYWRvdC91dGlsJztcbmltcG9ydCB7IGJhc2U2NERlY29kZSwgc2lnbmF0dXJlVmVyaWZ5IH0gZnJvbSAnQHBvbGthZG90L3V0aWwtY3J5cHRvJztcbmltcG9ydCB7IFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IERlY29kZWRTaWduZWRUeCwgRGVjb2RlZFNpZ25pbmdQYXlsb2FkLCBUeXBlUmVnaXN0cnkgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlL2xpYi90eXBlcyc7XG5pbXBvcnQgeyBjb25zdHJ1Y3QgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1wb2xrYWRvdCc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcbmltcG9ydCBiYXNlMzIgZnJvbSAnaGktYmFzZTMyJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBIZXhTdHJpbmcsIE1hdGVyaWFsLCBUcmFuc2ZlckFsbEFyZ3MsIFRyYW5zZmVyQXJncywgVHhNZXRob2QgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBlbmNvZGVBZGRyZXNzKGlzSGV4KGFkZHJlc3MpID8gaGV4VG9VOGEoYWRkcmVzcykgOiBkZWNvZGVBZGRyZXNzKGFkZHJlc3MpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0hleChoYXNoLCAyNTYpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRQcnYgPSBoZXhUb1U4YShrZXkpO1xuICAgICAgcmV0dXJuIGRlY29kZWRQcnYubGVuZ3RoID09PSBuYWNsLnNpZ24uc2VjcmV0S2V5TGVuZ3RoIC8gMjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgcHViS2V5ID0ga2V5O1xuXG4gICAgLy8gY29udmVydCBiYXNlNTggcHViIGtleSB0byBoZXggZm9ybWF0XG4gICAgLy8gdHNzIGNvbW1vbiBwdWIgaXMgaW4gYmFzZTU4IGZvcm1hdCBhbmQgZGVjb2RlcyB0byBsZW5ndGggb2YgMzJcbiAgICBpZiAoaXNCYXNlNTgocHViS2V5LCAzMikpIHtcbiAgICAgIGNvbnN0IGJhc2U1OERlY29kZSA9IGJzNTguZGVjb2RlKHB1YktleSk7XG4gICAgICBwdWJLZXkgPSBiYXNlNThEZWNvZGUudG9TdHJpbmcoJ2hleCcpO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWJLZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBzaWduYXR1cmVVOGEgPSB1OGFUb1U4YShzaWduYXR1cmUpO1xuICAgIHJldHVybiBbNjQsIDY1LCA2Nl0uaW5jbHVkZXMoc2lnbmF0dXJlVThhLmxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhlIHNpZ25hdHVyZSBvbiBhIGdpdmVuIG1lc3NhZ2VcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25lZE1lc3NhZ2UgdGhlIHNpZ25lZCBtZXNzYWdlIGZvciB0aGUgc2lnbmF0dXJlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgdGhlIHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIGFkZHJlc3Mgb2YgdGhlIHNpZ25lclxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gd2hldGhlciB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkIG9yIG5vdFxuICAgKi9cbiAgdmVyaWZ5U2lnbmF0dXJlKHNpZ25lZE1lc3NhZ2U6IHN0cmluZywgc2lnbmF0dXJlOiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGRlY29kZUFkZHJlc3MoYWRkcmVzcyk7XG4gICAgY29uc3QgaGV4UHVibGljS2V5ID0gdThhVG9IZXgocHVibGljS2V5KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVWZXJpZnkoc2lnbmVkTWVzc2FnZSwgc2lnbmF0dXJlLCBoZXhQdWJsaWNLZXkpLmlzVmFsaWQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzSGV4KHR4SWQsIDI1Nik7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlU2VlZCBkZWNvZGVzIGEgc3Vic3RyYXRlIHNlZWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWQuXG4gICAqIEByZXR1cm5zIHtTZWVkfSAtIHRoZSBvYmplY3QgU2VlZFxuICAgKi9cbiAgZGVjb2RlU2VlZChzZWVkOiBzdHJpbmcpOiBTZWVkIHtcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTMyLmRlY29kZS5hc0J5dGVzKHNlZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzZWVkOiBCdWZmZXIuZnJvbShkZWNvZGVkKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIGtleVBhaXJGcm9tU2VlZCBnZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggc2VjcmV0S2V5IGFuZCBwdWJsaWNLZXkgdXNpbmcgdGhlIHN1YnN0cmF0ZSBzZGtcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIEtleVBhaXJcbiAgICovXG4gIGtleVBhaXJGcm9tU2VlZChzZWVkOiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5cmluZyA9IG5ldyBLZXlyaW5nKHsgdHlwZTogJ2VkMjU1MTknIH0pO1xuICAgIGNvbnN0IGtleXJpbmdQYWlyID0ga2V5cmluZy5hZGRGcm9tU2VlZChzZWVkKTtcbiAgICBjb25zdCBwYWlySnNvbiA9IGtleXJpbmdQYWlyLnRvSnNvbigpO1xuICAgIGNvbnN0IGRlY29kZWRLZXlQYWlyID0gZGVjb2RlUGFpcignJywgYmFzZTY0RGVjb2RlKHBhaXJKc29uLmVuY29kZWQpLCBwYWlySnNvbi5lbmNvZGluZy50eXBlKTtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwcnY6IEJ1ZmZlci5mcm9tKGRlY29kZWRLZXlQYWlyLnNlY3JldEtleSkudG9TdHJpbmcoJ2hleCcpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25pbmcgZnVuY3Rpb24uIEltcGxlbWVudCB0aGlzIG9uIHRoZSBPRkZMSU5FIHNpZ25pbmcgZGV2aWNlLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleXJpbmdQYWlyfSBwYWlyIC0gVGhlIHNpZ25pbmcgcGFpci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25pbmdQYXlsb2FkIC0gUGF5bG9hZCB0byBzaWduLlxuICAgKiBAcGFyYW0ge1Vuc2lnbmVkVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uIC0gcmF3IHRyYW5zYWN0aW9uIHRvIHNpZ25cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHBhcmFtIHtIZXhTdHJpbmd9IG9wdGlvbnMubWV0YWRhdGFScGMgLSBtZXRhZGF0YSB0aGF0IGlzIG5lZWRlZCBmb3Igc3Vic3RyYXRlIHRvIHNpZ25cbiAgICogQHBhcmFtIHtUeXBlUmVnaXN0cnl9IG9wdGlvbnMucmVnaXN0cnkgLSBtZXRhZGF0YSB0aGF0IGlzIG5lZWRlZCBmb3Igc3Vic3RyYXRlIHRvIHNpZ25cbiAgICovXG4gIGNyZWF0ZVNpZ25lZFR4KFxuICAgIHBhaXI6IEtleXJpbmdQYWlyLFxuICAgIHNpZ25pbmdQYXlsb2FkOiBzdHJpbmcsXG4gICAgdHJhbnNhY3Rpb246IFVuc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgb3B0aW9uczogeyBtZXRhZGF0YVJwYzogSGV4U3RyaW5nOyByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5IH1cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5LCBtZXRhZGF0YVJwYyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gcmVnaXN0cnlcbiAgICAgIC5jcmVhdGVUeXBlKCdFeHRyaW5zaWNQYXlsb2FkJywgc2lnbmluZ1BheWxvYWQsIHtcbiAgICAgICAgdmVyc2lvbjogRVhUUklOU0lDX1ZFUlNJT04sXG4gICAgICB9KVxuICAgICAgLnNpZ24ocGFpcik7XG5cbiAgICAvLyBTZXJpYWxpemUgYSBzaWduZWQgdHJhbnNhY3Rpb24uXG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIHNpZ25hdHVyZSwgbWV0YWRhdGFScGMsIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIFRyYW5zYWN0aW9uIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIFNpZ25hdHVyZSBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0gbWV0YWRhdGFScGMgTmV0d29yayBtZXRhZGF0YVxuICAgKiBAcGFyYW0gcmVnaXN0cnkgVHJhbnNhY3Rpb24gcmVnaXN0cnlcbiAgICogQHJldHVybnMgc3RyaW5nIFNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBzaWduYXR1cmUsIG1ldGFkYXRhUnBjOiBgMHgke3N0cmluZ31gLCByZWdpc3RyeSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdC5zaWduZWRUeCh0cmFuc2FjdGlvbiwgc2lnbmF0dXJlLCB7XG4gICAgICBtZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIHN1YnN0cmF0ZSBhZGRyZXNzIGZyb20gdGhlIGdpdmVuIGZvcm1hdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3NzNThGb3JtYXRdXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBkZWNvZGVTdWJzdHJhdGVBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgc3M1OEZvcm1hdDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXlwYWlyID0gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3MoYWRkcmVzcywgdW5kZWZpbmVkLCBzczU4Rm9ybWF0KSkudG9TdHJpbmcoJ2hleCcpIH0pO1xuICAgIHJldHVybiBrZXlwYWlyLmdldEFkZHJlc3Moc3M1OEZvcm1hdCk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUgc3Vic3RyYXRlIGFkZHJlc3MgZnJvbSB0aGUgZ2l2ZW4gZm9ybWF0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc3M1OEZvcm1hdF1cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGVuY29kZVN1YnN0cmF0ZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBzczU4Rm9ybWF0PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5jb2RlQWRkcmVzcyhhZGRyZXNzLCBzczU4Rm9ybWF0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHR4SGFzaCBvZiBhIHNpZ25lZCB0eEhleFxuICAgKlxuICAgKiBAcGFyYW0gdHhIZXggc2lnbmVkIHRyYW5zYWN0aW9uIGhleFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0VHhIYXNoKHR4SGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb25zdHJ1Y3QudHhIYXNoKHR4SGV4KTtcbiAgfVxuXG4gIGlzU2lnbmluZ1BheWxvYWQocGF5bG9hZDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4KTogcGF5bG9hZCBpcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQge1xuICAgIHJldHVybiAocGF5bG9hZCBhcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQpLmJsb2NrSGFzaCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNUcmFuc2Zlcihhcmc6IFR4TWV0aG9kWydhcmdzJ10pOiBhcmcgaXMgVHJhbnNmZXJBcmdzIHtcbiAgICByZXR1cm4gKGFyZyBhcyBUcmFuc2ZlckFyZ3MpLmRlc3Q/LmlkICE9PSB1bmRlZmluZWQgJiYgKGFyZyBhcyBUcmFuc2ZlckFyZ3MpLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBpc1RyYW5zZmVyQWxsKGFyZzogVHhNZXRob2RbJ2FyZ3MnXSk6IGFyZyBpcyBUcmFuc2ZlckFsbEFyZ3Mge1xuICAgIHJldHVybiAoYXJnIGFzIFRyYW5zZmVyQWxsQXJncykuZGVzdD8uaWQgIT09IHVuZGVmaW5lZCAmJiAoYXJnIGFzIFRyYW5zZmVyQWxsQXJncykua2VlcEFsaXZlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogZXh0cmFjdHMgYW5kIHJldHVybnMgdGhlIHNpZ25hdHVyZSBpbiBoZXggZm9ybWF0IGdpdmVuIGEgcmF3IHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHggc2lnbmVkIHJhdyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyByZWdpc3RyeSBzdWJzdHJhdGUgcmVnaXN0cnkgdXNlZCB0byByZXRyaWV2ZSB0aGUgc2lnbmF0dXJlXG4gICAqL1xuICByZWNvdmVyU2lnbmF0dXJlRnJvbVJhd1R4KHJhd1R4OiBzdHJpbmcsIG9wdGlvbnM6IHsgcmVnaXN0cnk6IFR5cGVSZWdpc3RyeSB9KTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5IH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IG1ldGhvZENhbGwgPSByZWdpc3RyeS5jcmVhdGVUeXBlKCdFeHRyaW5zaWMnLCByYXdUeCwge1xuICAgICAgaXNTaWduZWQ6IHRydWUsXG4gICAgfSk7XG4gICAgbGV0IHNpZ25hdHVyZSA9IHU4YVRvSGV4KG1ldGhvZENhbGwuc2lnbmF0dXJlKSBhcyBzdHJpbmc7XG5cbiAgICAvLyByZW1vdmUgMHggZnJvbSB0aGUgc2lnbmF0dXJlIHNpbmNlIHRoaXMgaXMgaG93IGl0J3MgcmV0dXJuZWQgZnJvbSBUU1Mgc2lnbmluZ1xuICAgIGlmIChzaWduYXR1cmUuc3RhcnRzV2l0aCgnMHgnKSkge1xuICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlLnN1YnN0cigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRoZSBkb3QgYWRkcmVzcyBmcm9tIHRoZSBnaXZlbiBmb3JtYXRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3NcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzczU4Rm9ybWF0XVxuICAgKiBAcmV0dXJucyB7S2V5UGFpcn1cbiAgICovXG4gIGRlY29kZVN1YnN0cmF0ZUFkZHJlc3NUb0tleVBhaXIoYWRkcmVzczogc3RyaW5nLCBzczU4Rm9ybWF0PzogbnVtYmVyKTogS2V5UGFpciB7XG4gICAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGFkZHJlc3MsIHVuZGVmaW5lZCwgc3M1OEZvcm1hdCkpLnRvU3RyaW5nKCdoZXgnKSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gaW5wdXQgaXMgYSBoZXggc3RyaW5nIHdpdGggd2l0aCAwIHZhbHVlXG4gICAqIHVzZWQgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIHRyYW5zYWN0aW9uIGlzIGltbW9ydGFsIG9yIG1vcnRhbFxuICAgKiBAcGFyYW0gaGV4VmFsdWVcbiAgICovXG4gIGlzWmVyb0hleChoZXhWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGhleFZhbHVlID09PSAnMHgwMCc7XG4gIH1cblxuICBnZXRNYXRlcmlhbChuZXR3b3JrVHlwZTogTmV0d29ya1R5cGUpOiBNYXRlcmlhbCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhDQUFxRjtBQUVyRiwrQ0FBMEU7QUFDMUUsMERBQTJEO0FBRTNELHNFQUEyRTtBQUMzRSx5Q0FBcUU7QUFDckUsdURBQXNFO0FBR3RFLHNFQUEwRDtBQUMxRCxnREFBd0I7QUFDeEIsMERBQStCO0FBQy9CLDBEQUE2QjtBQUM3Qix3QkFBNEI7QUFHNUIsTUFBYSxLQUFLO0lBQ2hCLGtCQUFrQjtJQUNsQixjQUFjLENBQUMsT0FBZTtRQUM1QixJQUFJLENBQUM7WUFDSCxJQUFBLHVCQUFhLEVBQUMsSUFBQSxZQUFLLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsZUFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLHVCQUFhLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixjQUFjLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUEsWUFBSyxFQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBQSxlQUFRLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDakMsT0FBTyxVQUFVLENBQUMsTUFBTSxLQUFLLG1CQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFD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QUMsSUFBQSx1QkFBYSxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLE9BQU8sUUFBUSxLQUFLLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLFdBQXdCO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUEvT0Qsc0JBK09DO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVXRpbHMsIGlzQmFzZTU4LCBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleSwgU2VlZCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBOZXR3b3JrVHlwZSB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IGRlY29kZUFkZHJlc3MsIGVuY29kZUFkZHJlc3MsIEtleXJpbmcgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZyc7XG5pbXBvcnQgeyBkZWNvZGVQYWlyIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcvcGFpci9kZWNvZGUnO1xuaW1wb3J0IHsgS2V5cmluZ1BhaXIgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZy90eXBlcyc7XG5pbXBvcnQgeyBFWFRSSU5TSUNfVkVSU0lPTiB9IGZyb20gJ0Bwb2xrYWRvdC90eXBlcy9leHRyaW5zaWMvdjQvRXh0cmluc2ljJztcbmltcG9ydCB7IGhleFRvVThhLCBpc0hleCwgdThhVG9IZXgsIHU4YVRvVThhIH0gZnJvbSAnQHBvbGthZG90L3V0aWwnO1xuaW1wb3J0IHsgYmFzZTY0RGVjb2RlLCBzaWduYXR1cmVWZXJpZnkgfSBmcm9tICdAcG9sa2Fkb3QvdXRpbC1jcnlwdG8nO1xuaW1wb3J0IHsgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgRGVjb2RlZFNpZ25lZFR4LCBEZWNvZGVkU2lnbmluZ1BheWxvYWQsIFR5cGVSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUvbGliL3R5cGVzJztcbmltcG9ydCB7IGNvbnN0cnVjdCB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IGJhc2UzMiBmcm9tICdoaS1iYXNlMzInO1xuaW1wb3J0IG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IEhleFN0cmluZywgTWF0ZXJpYWwsIFRyYW5zZmVyQWxsQXJncywgVHJhbnNmZXJBcmdzLCBUeE1ldGhvZCwgQWRkU3Rha2VBcmdzLCBSZW1vdmVTdGFrZUFyZ3MgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBlbmNvZGVBZGRyZXNzKGlzSGV4KGFkZHJlc3MpID8gaGV4VG9VOGEoYWRkcmVzcykgOiBkZWNvZGVBZGRyZXNzKGFkZHJlc3MpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0hleChoYXNoLCAyNTYpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRQcnYgPSBoZXhUb1U4YShrZXkpO1xuICAgICAgcmV0dXJuIGRlY29kZWRQcnYubGVuZ3RoID09PSBuYWNsLnNpZ24uc2VjcmV0S2V5TGVuZ3RoIC8gMjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgcHViS2V5ID0ga2V5O1xuXG4gICAgLy8gY29udmVydCBiYXNlNTggcHViIGtleSB0byBoZXggZm9ybWF0XG4gICAgLy8gdHNzIGNvbW1vbiBwdWIgaXMgaW4gYmFzZTU4IGZvcm1hdCBhbmQgZGVjb2RlcyB0byBsZW5ndGggb2YgMzJcbiAgICBpZiAoaXNCYXNlNTgocHViS2V5LCAzMikpIHtcbiAgICAgIGNvbnN0IGJhc2U1OERlY29kZSA9IGJzNTguZGVjb2RlKHB1YktleSk7XG4gICAgICBwdWJLZXkgPSBiYXNlNThEZWNvZGUudG9TdHJpbmcoJ2hleCcpO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShwdWJLZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBzaWduYXR1cmVVOGEgPSB1OGFUb1U4YShzaWduYXR1cmUpO1xuICAgIHJldHVybiBbNjQsIDY1LCA2Nl0uaW5jbHVkZXMoc2lnbmF0dXJlVThhLmxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhlIHNpZ25hdHVyZSBvbiBhIGdpdmVuIG1lc3NhZ2VcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25lZE1lc3NhZ2UgdGhlIHNpZ25lZCBtZXNzYWdlIGZvciB0aGUgc2lnbmF0dXJlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgdGhlIHNpZ25hdHVyZSB0byB2ZXJpZnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgdGhlIGFkZHJlc3Mgb2YgdGhlIHNpZ25lclxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gd2hldGhlciB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkIG9yIG5vdFxuICAgKi9cbiAgdmVyaWZ5U2lnbmF0dXJlKHNpZ25lZE1lc3NhZ2U6IHN0cmluZywgc2lnbmF0dXJlOiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGRlY29kZUFkZHJlc3MoYWRkcmVzcyk7XG4gICAgY29uc3QgaGV4UHVibGljS2V5ID0gdThhVG9IZXgocHVibGljS2V5KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVWZXJpZnkoc2lnbmVkTWVzc2FnZSwgc2lnbmF0dXJlLCBoZXhQdWJsaWNLZXkpLmlzVmFsaWQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzSGV4KHR4SWQsIDI1Nik7XG4gIH1cblxuICAvKipcbiAgICogZGVjb2RlU2VlZCBkZWNvZGVzIGEgc3Vic3RyYXRlIHNlZWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlZWQgLSB0aGUgc2VlZCB0byBiZSB2YWxpZGF0ZWQuXG4gICAqIEByZXR1cm5zIHtTZWVkfSAtIHRoZSBvYmplY3QgU2VlZFxuICAgKi9cbiAgZGVjb2RlU2VlZChzZWVkOiBzdHJpbmcpOiBTZWVkIHtcbiAgICBjb25zdCBkZWNvZGVkID0gYmFzZTMyLmRlY29kZS5hc0J5dGVzKHNlZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzZWVkOiBCdWZmZXIuZnJvbShkZWNvZGVkKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIGtleVBhaXJGcm9tU2VlZCBnZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggc2VjcmV0S2V5IGFuZCBwdWJsaWNLZXkgdXNpbmcgdGhlIHN1YnN0cmF0ZSBzZGtcbiAgICogQHBhcmFtIHNlZWQgMzIgYnl0ZXMgbG9uZyBzZWVkXG4gICAqIEByZXR1cm5zIEtleVBhaXJcbiAgICovXG4gIGtleVBhaXJGcm9tU2VlZChzZWVkOiBVaW50OEFycmF5KTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5cmluZyA9IG5ldyBLZXlyaW5nKHsgdHlwZTogJ2VkMjU1MTknIH0pO1xuICAgIGNvbnN0IGtleXJpbmdQYWlyID0ga2V5cmluZy5hZGRGcm9tU2VlZChzZWVkKTtcbiAgICBjb25zdCBwYWlySnNvbiA9IGtleXJpbmdQYWlyLnRvSnNvbigpO1xuICAgIGNvbnN0IGRlY29kZWRLZXlQYWlyID0gZGVjb2RlUGFpcignJywgYmFzZTY0RGVjb2RlKHBhaXJKc29uLmVuY29kZWQpLCBwYWlySnNvbi5lbmNvZGluZy50eXBlKTtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwcnY6IEJ1ZmZlci5mcm9tKGRlY29kZWRLZXlQYWlyLnNlY3JldEtleSkudG9TdHJpbmcoJ2hleCcpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25pbmcgZnVuY3Rpb24uIEltcGxlbWVudCB0aGlzIG9uIHRoZSBPRkZMSU5FIHNpZ25pbmcgZGV2aWNlLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleXJpbmdQYWlyfSBwYWlyIC0gVGhlIHNpZ25pbmcgcGFpci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25pbmdQYXlsb2FkIC0gUGF5bG9hZCB0byBzaWduLlxuICAgKiBAcGFyYW0ge1Vuc2lnbmVkVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uIC0gcmF3IHRyYW5zYWN0aW9uIHRvIHNpZ25cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHBhcmFtIHtIZXhTdHJpbmd9IG9wdGlvbnMubWV0YWRhdGFScGMgLSBtZXRhZGF0YSB0aGF0IGlzIG5lZWRlZCBmb3Igc3Vic3RyYXRlIHRvIHNpZ25cbiAgICogQHBhcmFtIHtUeXBlUmVnaXN0cnl9IG9wdGlvbnMucmVnaXN0cnkgLSBtZXRhZGF0YSB0aGF0IGlzIG5lZWRlZCBmb3Igc3Vic3RyYXRlIHRvIHNpZ25cbiAgICovXG4gIGNyZWF0ZVNpZ25lZFR4KFxuICAgIHBhaXI6IEtleXJpbmdQYWlyLFxuICAgIHNpZ25pbmdQYXlsb2FkOiBzdHJpbmcsXG4gICAgdHJhbnNhY3Rpb246IFVuc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgb3B0aW9uczogeyBtZXRhZGF0YVJwYzogSGV4U3RyaW5nOyByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5IH1cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5LCBtZXRhZGF0YVJwYyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gcmVnaXN0cnlcbiAgICAgIC5jcmVhdGVUeXBlKCdFeHRyaW5zaWNQYXlsb2FkJywgc2lnbmluZ1BheWxvYWQsIHtcbiAgICAgICAgdmVyc2lvbjogRVhUUklOU0lDX1ZFUlNJT04sXG4gICAgICB9KVxuICAgICAgLnNpZ24ocGFpcik7XG5cbiAgICAvLyBTZXJpYWxpemUgYSBzaWduZWQgdHJhbnNhY3Rpb24uXG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIHNpZ25hdHVyZSwgbWV0YWRhdGFScGMsIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIFRyYW5zYWN0aW9uIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIFNpZ25hdHVyZSBvZiB0aGUgbWVzc2FnZVxuICAgKiBAcGFyYW0gbWV0YWRhdGFScGMgTmV0d29yayBtZXRhZGF0YVxuICAgKiBAcGFyYW0gcmVnaXN0cnkgVHJhbnNhY3Rpb24gcmVnaXN0cnlcbiAgICogQHJldHVybnMgc3RyaW5nIFNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBzaWduYXR1cmUsIG1ldGFkYXRhUnBjOiBgMHgke3N0cmluZ31gLCByZWdpc3RyeSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdC5zaWduZWRUeCh0cmFuc2FjdGlvbiwgc2lnbmF0dXJlLCB7XG4gICAgICBtZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIHN1YnN0cmF0ZSBhZGRyZXNzIGZyb20gdGhlIGdpdmVuIGZvcm1hdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3NzNThGb3JtYXRdXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBkZWNvZGVTdWJzdHJhdGVBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgc3M1OEZvcm1hdDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXlwYWlyID0gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3MoYWRkcmVzcywgdW5kZWZpbmVkLCBzczU4Rm9ybWF0KSkudG9TdHJpbmcoJ2hleCcpIH0pO1xuICAgIHJldHVybiBrZXlwYWlyLmdldEFkZHJlc3Moc3M1OEZvcm1hdCk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUgc3Vic3RyYXRlIGFkZHJlc3MgZnJvbSB0aGUgZ2l2ZW4gZm9ybWF0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc3M1OEZvcm1hdF1cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGVuY29kZVN1YnN0cmF0ZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBzczU4Rm9ybWF0PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZW5jb2RlQWRkcmVzcyhhZGRyZXNzLCBzczU4Rm9ybWF0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIHR4SGFzaCBvZiBhIHNpZ25lZCB0eEhleFxuICAgKlxuICAgKiBAcGFyYW0gdHhIZXggc2lnbmVkIHRyYW5zYWN0aW9uIGhleFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0VHhIYXNoKHR4SGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb25zdHJ1Y3QudHhIYXNoKHR4SGV4KTtcbiAgfVxuXG4gIGlzU2lnbmluZ1BheWxvYWQocGF5bG9hZDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4KTogcGF5bG9hZCBpcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQge1xuICAgIHJldHVybiAocGF5bG9hZCBhcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQpLmJsb2NrSGFzaCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNUcmFuc2Zlcihhcmc6IFR4TWV0aG9kWydhcmdzJ10pOiBhcmcgaXMgVHJhbnNmZXJBcmdzIHtcbiAgICByZXR1cm4gKGFyZyBhcyBUcmFuc2ZlckFyZ3MpLmRlc3Q/LmlkICE9PSB1bmRlZmluZWQgJiYgKGFyZyBhcyBUcmFuc2ZlckFyZ3MpLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBpc1RyYW5zZmVyQWxsKGFyZzogVHhNZXRob2RbJ2FyZ3MnXSk6IGFyZyBpcyBUcmFuc2ZlckFsbEFyZ3Mge1xuICAgIHJldHVybiAoYXJnIGFzIFRyYW5zZmVyQWxsQXJncykuZGVzdD8uaWQgIT09IHVuZGVmaW5lZCAmJiAoYXJnIGFzIFRyYW5zZmVyQWxsQXJncykua2VlcEFsaXZlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBpc0FkZFN0YWtlKGFyZzogVHhNZXRob2RbJ2FyZ3MnXSk6IGFyZyBpcyBBZGRTdGFrZUFyZ3Mge1xuICAgIHJldHVybiAoXG4gICAgICAoYXJnIGFzIEFkZFN0YWtlQXJncykuYW1vdW50U3Rha2VkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIChhcmcgYXMgQWRkU3Rha2VBcmdzKS5ob3RrZXkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgKGFyZyBhcyBBZGRTdGFrZUFyZ3MpLm5ldHVpZCAhPT0gdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIGlzUmVtb3ZlU3Rha2UoYXJnOiBUeE1ldGhvZFsnYXJncyddKTogYXJnIGlzIFJlbW92ZVN0YWtlQXJncyB7XG4gICAgcmV0dXJuIChcbiAgICAgIChhcmcgYXMgUmVtb3ZlU3Rha2VBcmdzKS5hbW91bnRVbnN0YWtlZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoYXJnIGFzIFJlbW92ZVN0YWtlQXJncykuaG90a2V5ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIChhcmcgYXMgUmVtb3ZlU3Rha2VBcmdzKS5uZXR1aWQgIT09IHVuZGVmaW5lZFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZXh0cmFjdHMgYW5kIHJldHVybnMgdGhlIHNpZ25hdHVyZSBpbiBoZXggZm9ybWF0IGdpdmVuIGEgcmF3IHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHggc2lnbmVkIHJhdyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyByZWdpc3RyeSBzdWJzdHJhdGUgcmVnaXN0cnkgdXNlZCB0byByZXRyaWV2ZSB0aGUgc2lnbmF0dXJlXG4gICAqL1xuICByZWNvdmVyU2lnbmF0dXJlRnJvbVJhd1R4KHJhd1R4OiBzdHJpbmcsIG9wdGlvbnM6IHsgcmVnaXN0cnk6IFR5cGVSZWdpc3RyeSB9KTogc3RyaW5nIHtcbiAgICBjb25zdCB7IHJlZ2lzdHJ5IH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IG1ldGhvZENhbGwgPSByZWdpc3RyeS5jcmVhdGVUeXBlKCdFeHRyaW5zaWMnLCByYXdUeCwge1xuICAgICAgaXNTaWduZWQ6IHRydWUsXG4gICAgfSk7XG4gICAgbGV0IHNpZ25hdHVyZSA9IHU4YVRvSGV4KG1ldGhvZENhbGwuc2lnbmF0dXJlKSBhcyBzdHJpbmc7XG5cbiAgICAvLyByZW1vdmUgMHggZnJvbSB0aGUgc2lnbmF0dXJlIHNpbmNlIHRoaXMgaXMgaG93IGl0J3MgcmV0dXJuZWQgZnJvbSBUU1Mgc2lnbmluZ1xuICAgIGlmIChzaWduYXR1cmUuc3RhcnRzV2l0aCgnMHgnKSkge1xuICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlLnN1YnN0cigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRoZSBkb3QgYWRkcmVzcyBmcm9tIHRoZSBnaXZlbiBmb3JtYXRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3NcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzczU4Rm9ybWF0XVxuICAgKiBAcmV0dXJucyB7S2V5UGFpcn1cbiAgICovXG4gIGRlY29kZVN1YnN0cmF0ZUFkZHJlc3NUb0tleVBhaXIoYWRkcmVzczogc3RyaW5nLCBzczU4Rm9ybWF0PzogbnVtYmVyKTogS2V5UGFpciB7XG4gICAgcmV0dXJuIG5ldyBLZXlQYWlyKHsgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGFkZHJlc3MsIHVuZGVmaW5lZCwgc3M1OEZvcm1hdCkpLnRvU3RyaW5nKCdoZXgnKSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gaW5wdXQgaXMgYSBoZXggc3RyaW5nIHdpdGggd2l0aCAwIHZhbHVlXG4gICAqIHVzZWQgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIHRyYW5zYWN0aW9uIGlzIGltbW9ydGFsIG9yIG1vcnRhbFxuICAgKiBAcGFyYW0gaGV4VmFsdWVcbiAgICovXG4gIGlzWmVyb0hleChoZXhWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGhleFZhbHVlID09PSAnMHgwMCc7XG4gIH1cblxuICBnZXRNYXRlcmlhbChuZXR3b3JrVHlwZTogTmV0d29ya1R5cGUpOiBNYXRlcmlhbCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19