@bitgo-beta/unspents 0.13.2-beta.289 → 0.13.2-beta.290

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.
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -91,4 +95,4 @@ if (require.main === module) {
91
95
  .then(() => console.log('wrote to', outfile))
92
96
  .catch((e) => console.error(e));
93
97
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdGFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmluL2dlbmVyYXRlX3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFDbEMsOERBQWdEO0FBRWhELGdDQUFvQztBQUVwQyxNQUFNLE9BQU8sR0FBRztJQUNkLGFBQWE7SUFDYixhQUFhO0lBQ2IsWUFBWTtJQUNaLDRCQUE0QjtJQUM1QixtQ0FBbUM7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLGdCQUFVLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFJMUYsU0FBUyxtQkFBbUIsQ0FBQyxPQUFpQixFQUFFLElBQWdCO0lBQzlELE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEcsQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQ2hDLE9BQWlCLEVBQ2pCLENBQTZDLEVBQzdDLE1BR0M7O0lBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFL0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUNoQixPQUFPO2dCQUNMLEdBQUcseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDdkMsYUFBYSxFQUFFLGtEQUFrRDtvQkFDakUsZ0JBQWdCLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO2lCQUN6QyxDQUFDO2dCQUNGLEdBQUcseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDdkMsYUFBYSxFQUFFLG1DQUFtQztvQkFDbEQsZ0JBQWdCLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO2lCQUN6QyxDQUFDO2FBQ0gsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLEtBQUssWUFBWSxFQUFFO1lBQ3RCLE9BQU87Z0JBQ0wsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUseUNBQXlDO29CQUN4RCxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7aUJBQ3pDLENBQUM7Z0JBQ0YsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUsdUJBQXVCO29CQUN0QyxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUU7aUJBQ2pELENBQUM7YUFDSCxDQUFDO1NBQ0g7S0FDRjtJQUVELE1BQU0sVUFBVSxHQUFHLGdCQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZ0JBQWdCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzRixNQUFNLEdBQUcsR0FBUTtRQUNmLENBQUM7UUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQixNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxhQUFhLG1DQUFJLEtBQUs7UUFDOUIsVUFBVSxDQUFDLFFBQVEsRUFBRTtRQUNyQixDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQzFDLENBQUM7SUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNyRSxPQUFPLG1CQUFtQixDQUN4QixPQUFPLEVBQ1AsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2xFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxnQkFBZ0I7SUFDdkIsT0FBTztRQUNMLGVBQWU7UUFDZiw2RkFBNkY7UUFDN0YsMEZBQTBGO1FBQzFGLEVBQUU7UUFDRixjQUFjLEVBQUU7S0FDakIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtJQUMzQixNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQztJQUN0QyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM1QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBEaW1lbnNpb25zIH0gZnJvbSAnLi4vc3JjJztcblxuY29uc3QgaGVhZGVycyA9IFtcbiAgJ1NjcmlwdCBUeXBlJyxcbiAgJ0NoYWluIENvZGVzJyxcbiAgJ1NwZW5kIFR5cGUnLFxuICAnSW5wdXQgU2l6ZSAoVmlydHVhbCBCeXRlcyknLFxuICAnUmVsYXRpdmUgU2l6ZSAocDJ0ck11c2lnMiA9IDEuMDApJyxcbl07XG5cbmNvbnN0IHJlbGF0aXZlQ29zdFJlZiA9IERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUoJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKS5nZXRJbnB1dHNWU2l6ZSgpO1xuXG50eXBlIFJvdyA9IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZ107XG5cbmZ1bmN0aW9uIGZvcm1hdE1hcmtkb3duVGFibGUoaGVhZGVyczogc3RyaW5nW10sIHJvd3M6IHN0cmluZ1tdW10pOiBzdHJpbmcge1xuICByZXR1cm4gW2hlYWRlcnMsIGhlYWRlcnMubWFwKCgpID0+ICctLS0nKSwgLi4ucm93c10ubWFwKChyb3cpID0+IGB8ICR7cm93LmpvaW4oJyB8ICcpfSB8YCkuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoXG4gIGhlYWRlcnM6IHN0cmluZ1tdLFxuICB0OiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjMsXG4gIHBhcmFtcz86IHtcbiAgICBzcGVuZFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXIgfTtcbiAgfVxuKTogUm93W10ge1xuICBjb25zdCBjaGFpbkNvZGUgPSB1dHhvbGliLmJpdGdvLnRvQ2hhaW5QYWlyKHQpO1xuXG4gIGlmICghcGFyYW1zKSB7XG4gICAgaWYgKHQgPT09ICdwMnRyJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCB0LCB7XG4gICAgICAgICAgc3BlbmRUeXBlTmFtZTogJ1NjcmlwdCBQYXRoLCBMZXZlbCAyIChCYWNrdXAvVXNlciwgQmFja3VwL0JpdEdvKScsXG4gICAgICAgICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw6IDIgfSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLmdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoaGVhZGVycywgdCwge1xuICAgICAgICAgIHNwZW5kVHlwZU5hbWU6ICdTY3JpcHQgUGF0aCwgTGV2ZWwgMSAoVXNlci9CaXRHbyknLFxuICAgICAgICAgIHNjcmlwdFR5cGVQYXJhbXM6IHsgc2NyaXB0UGF0aExldmVsOiAxIH0sXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAodCA9PT0gJ3AydHJNdXNpZzInKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5nZW5lcmF0ZVJvd3NGb3JTY3JpcHRUeXBlKGhlYWRlcnMsIHQsIHtcbiAgICAgICAgICBzcGVuZFR5cGVOYW1lOiAnU2NyaXB0IFBhdGggKEJhY2t1cC9Vc2VyLCBCYWNrdXAvQml0R28pJyxcbiAgICAgICAgICBzY3JpcHRUeXBlUGFyYW1zOiB7IHNjcmlwdFBhdGhMZXZlbDogMSB9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCB0LCB7XG4gICAgICAgICAgc3BlbmRUeXBlTmFtZTogJ0tleSBQYXRoIChVc2VyL0JpdEdvKScsXG4gICAgICAgICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw6IHVuZGVmaW5lZCB9LFxuICAgICAgICB9KSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW5wdXRWU2l6ZSA9IERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUodCwgcGFyYW1zPy5zY3JpcHRUeXBlUGFyYW1zKS5nZXRJbnB1dHNWU2l6ZSgpO1xuICBjb25zdCByb3c6IFJvdyA9IFtcbiAgICB0LFxuICAgIGNoYWluQ29kZS5qb2luKGAvYCksXG4gICAgcGFyYW1zPy5zcGVuZFR5cGVOYW1lID8/ICdhbGwnLFxuICAgIGlucHV0VlNpemUudG9TdHJpbmcoKSxcbiAgICAoaW5wdXRWU2l6ZSAvIHJlbGF0aXZlQ29zdFJlZikudG9GaXhlZCgyKSxcbiAgXTtcbiAgcmV0dXJuIFtyb3ddO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVRhYmxlcygpIHtcbiAgY29uc3Qgc2NyaXB0VHlwZXMgPSBbLi4udXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLnNjcmlwdFR5cGVzMk9mM107XG4gIHJldHVybiBmb3JtYXRNYXJrZG93blRhYmxlKFxuICAgIGhlYWRlcnMsXG4gICAgc2NyaXB0VHlwZXMuZmxhdE1hcCgocykgPT4gZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCBzKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVEb2N1bWVudCgpIHtcbiAgcmV0dXJuIFtcbiAgICAnIyBJbnB1dCBDb3N0cycsXG4gICAgJ1RoaXMgZG9jdW1lbnQgY29udGFpbnMgdGhlIHdvcnN0LWNhc2UgaW5wdXQgY29zdHMgZm9yIHZhcmlvdXMgc2NyaXB0IHR5cGVzIGFuZCBzcGVuZCB0eXBlcy4nLFxuICAgICdUaGUgaW5wdXQgY29zdHMgYXJlIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIGBEaW1lbnNpb25zYCBjbGFzcyBmcm9tIGBAYml0Z28tYmV0YS91bnNwZW50c2AuJyxcbiAgICAnJyxcbiAgICBnZW5lcmF0ZVRhYmxlcygpLFxuICBdLmpvaW4oJ1xcbicpO1xufVxuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgY29uc3Qgb3V0ZmlsZSA9ICdkb2NzL2lucHV0LWNvc3RzLm1kJztcbiAgZnMud3JpdGVGaWxlKG91dGZpbGUsIGdlbmVyYXRlRG9jdW1lbnQoKSlcbiAgICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnd3JvdGUgdG8nLCBvdXRmaWxlKSlcbiAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoZSkpO1xufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdGFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmluL2dlbmVyYXRlX3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQWtDO0FBQ2xDLDhEQUFnRDtBQUVoRCxnQ0FBb0M7QUFFcEMsTUFBTSxPQUFPLEdBQUc7SUFDZCxhQUFhO0lBQ2IsYUFBYTtJQUNiLFlBQVk7SUFDWiw0QkFBNEI7SUFDNUIsbUNBQW1DO0NBQ3BDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxnQkFBVSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBSTFGLFNBQVMsbUJBQW1CLENBQUMsT0FBaUIsRUFBRSxJQUFnQjtJQUM5RCxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hHLENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUNoQyxPQUFpQixFQUNqQixDQUE2QyxFQUM3QyxNQUdDOztJQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRS9DLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxJQUFJLENBQUMsS0FBSyxNQUFNLEVBQUU7WUFDaEIsT0FBTztnQkFDTCxHQUFHLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7b0JBQ3ZDLGFBQWEsRUFBRSxrREFBa0Q7b0JBQ2pFLGdCQUFnQixFQUFFLEVBQUUsZUFBZSxFQUFFLENBQUMsRUFBRTtpQkFDekMsQ0FBQztnQkFDRixHQUFHLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7b0JBQ3ZDLGFBQWEsRUFBRSxtQ0FBbUM7b0JBQ2xELGdCQUFnQixFQUFFLEVBQUUsZUFBZSxFQUFFLENBQUMsRUFBRTtpQkFDekMsQ0FBQzthQUNILENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxLQUFLLFlBQVksRUFBRTtZQUN0QixPQUFPO2dCQUNMLEdBQUcseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDdkMsYUFBYSxFQUFFLHlDQUF5QztvQkFDeEQsZ0JBQWdCLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO2lCQUN6QyxDQUFDO2dCQUNGLEdBQUcseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDdkMsYUFBYSxFQUFFLHVCQUF1QjtvQkFDdEMsZ0JBQWdCLEVBQUUsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFO2lCQUNqRCxDQUFDO2FBQ0gsQ0FBQztTQUNIO0tBQ0Y7SUFFRCxNQUFNLFVBQVUsR0FBRyxnQkFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGdCQUFnQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0YsTUFBTSxHQUFHLEdBQVE7UUFDZixDQUFDO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsYUFBYSxtQ0FBSSxLQUFLO1FBQzlCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7UUFDckIsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztLQUMxQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsY0FBYztJQUNyQixNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDckUsT0FBTyxtQkFBbUIsQ0FDeEIsT0FBTyxFQUNQLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNsRSxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU87UUFDTCxlQUFlO1FBQ2YsNkZBQTZGO1FBQzdGLDBGQUEwRjtRQUMxRixFQUFFO1FBQ0YsY0FBYyxFQUFFO0tBQ2pCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7SUFDM0IsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQUM7SUFDdEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztTQUN0QyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDNUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgRGltZW5zaW9ucyB9IGZyb20gJy4uL3NyYyc7XG5cbmNvbnN0IGhlYWRlcnMgPSBbXG4gICdTY3JpcHQgVHlwZScsXG4gICdDaGFpbiBDb2RlcycsXG4gICdTcGVuZCBUeXBlJyxcbiAgJ0lucHV0IFNpemUgKFZpcnR1YWwgQnl0ZXMpJyxcbiAgJ1JlbGF0aXZlIFNpemUgKHAydHJNdXNpZzIgPSAxLjAwKScsXG5dO1xuXG5jb25zdCByZWxhdGl2ZUNvc3RSZWYgPSBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKCd0YXByb290S2V5UGF0aFNwZW5kJykuZ2V0SW5wdXRzVlNpemUoKTtcblxudHlwZSBSb3cgPSBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmddO1xuXG5mdW5jdGlvbiBmb3JtYXRNYXJrZG93blRhYmxlKGhlYWRlcnM6IHN0cmluZ1tdLCByb3dzOiBzdHJpbmdbXVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIFtoZWFkZXJzLCBoZWFkZXJzLm1hcCgoKSA9PiAnLS0tJyksIC4uLnJvd3NdLm1hcCgocm93KSA9PiBgfCAke3Jvdy5qb2luKCcgfCAnKX0gfGApLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVJvd3NGb3JTY3JpcHRUeXBlKFxuICBoZWFkZXJzOiBzdHJpbmdbXSxcbiAgdDogdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzLFxuICBwYXJhbXM/OiB7XG4gICAgc3BlbmRUeXBlTmFtZTogc3RyaW5nO1xuICAgIHNjcmlwdFR5cGVQYXJhbXM6IHsgc2NyaXB0UGF0aExldmVsPzogbnVtYmVyIH07XG4gIH1cbik6IFJvd1tdIHtcbiAgY29uc3QgY2hhaW5Db2RlID0gdXR4b2xpYi5iaXRnby50b0NoYWluUGFpcih0KTtcblxuICBpZiAoIXBhcmFtcykge1xuICAgIGlmICh0ID09PSAncDJ0cicpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoaGVhZGVycywgdCwge1xuICAgICAgICAgIHNwZW5kVHlwZU5hbWU6ICdTY3JpcHQgUGF0aCwgTGV2ZWwgMiAoQmFja3VwL1VzZXIsIEJhY2t1cC9CaXRHbyknLFxuICAgICAgICAgIHNjcmlwdFR5cGVQYXJhbXM6IHsgc2NyaXB0UGF0aExldmVsOiAyIH0sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi5nZW5lcmF0ZVJvd3NGb3JTY3JpcHRUeXBlKGhlYWRlcnMsIHQsIHtcbiAgICAgICAgICBzcGVuZFR5cGVOYW1lOiAnU2NyaXB0IFBhdGgsIExldmVsIDEgKFVzZXIvQml0R28pJyxcbiAgICAgICAgICBzY3JpcHRUeXBlUGFyYW1zOiB7IHNjcmlwdFBhdGhMZXZlbDogMSB9LFxuICAgICAgICB9KSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgaWYgKHQgPT09ICdwMnRyTXVzaWcyJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCB0LCB7XG4gICAgICAgICAgc3BlbmRUeXBlTmFtZTogJ1NjcmlwdCBQYXRoIChCYWNrdXAvVXNlciwgQmFja3VwL0JpdEdvKScsXG4gICAgICAgICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw6IDEgfSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLmdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoaGVhZGVycywgdCwge1xuICAgICAgICAgIHNwZW5kVHlwZU5hbWU6ICdLZXkgUGF0aCAoVXNlci9CaXRHbyknLFxuICAgICAgICAgIHNjcmlwdFR5cGVQYXJhbXM6IHsgc2NyaXB0UGF0aExldmVsOiB1bmRlZmluZWQgfSxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGlucHV0VlNpemUgPSBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKHQsIHBhcmFtcz8uc2NyaXB0VHlwZVBhcmFtcykuZ2V0SW5wdXRzVlNpemUoKTtcbiAgY29uc3Qgcm93OiBSb3cgPSBbXG4gICAgdCxcbiAgICBjaGFpbkNvZGUuam9pbihgL2ApLFxuICAgIHBhcmFtcz8uc3BlbmRUeXBlTmFtZSA/PyAnYWxsJyxcbiAgICBpbnB1dFZTaXplLnRvU3RyaW5nKCksXG4gICAgKGlucHV0VlNpemUgLyByZWxhdGl2ZUNvc3RSZWYpLnRvRml4ZWQoMiksXG4gIF07XG4gIHJldHVybiBbcm93XTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVUYWJsZXMoKSB7XG4gIGNvbnN0IHNjcmlwdFR5cGVzID0gWy4uLnV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5zY3JpcHRUeXBlczJPZjNdO1xuICByZXR1cm4gZm9ybWF0TWFya2Rvd25UYWJsZShcbiAgICBoZWFkZXJzLFxuICAgIHNjcmlwdFR5cGVzLmZsYXRNYXAoKHMpID0+IGdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoaGVhZGVycywgcykpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRG9jdW1lbnQoKSB7XG4gIHJldHVybiBbXG4gICAgJyMgSW5wdXQgQ29zdHMnLFxuICAgICdUaGlzIGRvY3VtZW50IGNvbnRhaW5zIHRoZSB3b3JzdC1jYXNlIGlucHV0IGNvc3RzIGZvciB2YXJpb3VzIHNjcmlwdCB0eXBlcyBhbmQgc3BlbmQgdHlwZXMuJyxcbiAgICAnVGhlIGlucHV0IGNvc3RzIGFyZSBjYWxjdWxhdGVkIHVzaW5nIHRoZSBgRGltZW5zaW9uc2AgY2xhc3MgZnJvbSBgQGJpdGdvLWJldGEvdW5zcGVudHNgLicsXG4gICAgJycsXG4gICAgZ2VuZXJhdGVUYWJsZXMoKSxcbiAgXS5qb2luKCdcXG4nKTtcbn1cblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IG91dGZpbGUgPSAnZG9jcy9pbnB1dC1jb3N0cy5tZCc7XG4gIGZzLndyaXRlRmlsZShvdXRmaWxlLCBnZW5lcmF0ZURvY3VtZW50KCkpXG4gICAgLnRoZW4oKCkgPT4gY29uc29sZS5sb2coJ3dyb3RlIHRvJywgb3V0ZmlsZSkpXG4gICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKGUpKTtcbn1cbiJdfQ==
@@ -34,6 +34,7 @@ export declare class CodesByType extends CodeGroup {
34
34
  p2tr: ChainCode;
35
35
  constructor(p: Purpose);
36
36
  }
37
+ /** @deprecated - use utxolib.bitgo */
37
38
  declare const _default: Readonly<{
38
39
  ChainType: tcomb.Irreducible<unknown>;
39
40
  /** @deprecated - use utxolib.bitgo */
@@ -75,6 +76,5 @@ declare const _default: Readonly<{
75
76
  /** @deprecated - use utxolib.bitgo */
76
77
  typeForCode: (c: number) => UnspentType;
77
78
  }>;
78
- /** @deprecated - use utxolib.bitgo */
79
79
  export default _default;
80
80
  //# sourceMappingURL=codes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/codes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,oBAAY,SAAS,GAAG,MAAM,CAAC;AAE/B,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,IAAI,EAAE,SAAS;CAG5B;AAED,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAID,oBAAY,OAAO;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AA0BD,eAAO,MAAM,SAAS,4BAAoD,CAAC;AAmB3E,eAAO,MAAM,OAAO,MAAO,SAAS,KAAG,OAA8C,CAAC;AAStF,qBAAa,SAAS;IACb,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC5B,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC;IAIhC,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;CAMrC;AAED,qBAAa,cAAe,SAAQ,SAAS;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;gBAEf,CAAC,EAAE,WAAW;CAa3B;AAED,qBAAa,WAAY,SAAQ,SAAS;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;gBAEX,CAAC,EAAE,OAAO;CAevB;;;IAgBC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;;AAxCxC,sCAAsC;AACtC,wBAyCG"}
1
+ {"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/codes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,oBAAY,SAAS,GAAG,MAAM,CAAC;AAE/B,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,IAAI,EAAE,SAAS;CAG5B;AAED,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAID,oBAAY,OAAO;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AA0BD,eAAO,MAAM,SAAS,4BAAoD,CAAC;AAmB3E,eAAO,MAAM,OAAO,MAAO,SAAS,KAAG,OAA8C,CAAC;AAStF,qBAAa,SAAS;IACb,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC5B,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC;IAIhC,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;CAMrC;AAED,qBAAa,cAAe,SAAQ,SAAS;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;gBAEf,CAAC,EAAE,WAAW;CAa3B;AAED,qBAAa,WAAY,SAAQ,SAAS;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;gBAEX,CAAC,EAAE,OAAO;CAevB;AAYD,sCAAsC;;;IAIpC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;;AAvCxC,wBAyCG"}
package/dist/src/codes.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -53,7 +57,7 @@ const codeList = Object.freeze([
53
57
  [21, UnspentType.p2wsh, Purpose.internal],
54
58
  [31, UnspentType.p2tr, Purpose.internal],
55
59
  ].map(([id, type, purpose]) => Object.freeze({ id, type, purpose })));
56
- exports.ChainType = tcomb.irreducible('ChainType', (n) => exports.isValid(n));
60
+ exports.ChainType = tcomb.irreducible('ChainType', (n) => (0, exports.isValid)(n));
57
61
  const forType = (u) => {
58
62
  // Do tcomb type checking in js projects that use this lib
59
63
  if (!UnspentTypeTcomb.is(u)) {
@@ -81,7 +85,7 @@ class CodeGroup {
81
85
  this.values = Object.freeze([...values]);
82
86
  }
83
87
  has(code) {
84
- if (!exports.isValid(code)) {
88
+ if (!(0, exports.isValid)(code)) {
85
89
  throw new ErrorInvalidCode(code);
86
90
  }
87
91
  return this.values.includes(code);
@@ -165,4 +169,4 @@ exports.default = Object.freeze({
165
169
  /** @deprecated - use utxolib.bitgo */
166
170
  typeForCode,
167
171
  });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUkvQixNQUFhLGdCQUFpQixTQUFRLEtBQUs7SUFDekMsWUFBWSxJQUFlO1FBQ3pCLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFKRCw0Q0FJQztBQUVELElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNyQiw4QkFBZSxDQUFBO0lBQ2YsNEJBQWEsQ0FBQTtJQUNiLHNDQUF1QixDQUFBO0lBQ3ZCLGdDQUFpQixDQUFBO0lBQ2pCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQVBXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBT3RCO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFFbEUsSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLGdDQUFxQixDQUFBO0lBQ3JCLGdDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFHbEI7QUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFRMUQsTUFBTSxRQUFRLEdBQW1DLE1BQU0sQ0FBQyxNQUFNLENBRTFEO0lBQ0UsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUM3QyxDQUFD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SUFDdEMsV0FBVztDQUNaLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHRjb21iIGZyb20gJ3Rjb21iJztcblxuZXhwb3J0IHR5cGUgQ2hhaW5Db2RlID0gbnVtYmVyO1xuXG5leHBvcnQgY2xhc3MgRXJyb3JJbnZhbGlkQ29kZSBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoY29kZTogQ2hhaW5Db2RlKSB7XG4gICAgc3VwZXIoYGludmFsaWQgY29kZSAke2NvZGV9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGVudW0gVW5zcGVudFR5cGUge1xuICBwMnBraCA9ICdwMnBraCcsXG4gIHAyc2ggPSAncDJzaCcsXG4gIHAyc2hQMndzaCA9ICdwMnNoUDJ3c2gnLFxuICBwMndwa2ggPSAncDJ3cGtoJyxcbiAgcDJ3c2ggPSAncDJ3c2gnLFxuICBwMnRyID0gJ3AydHInLFxufVxuXG5jb25zdCBVbnNwZW50VHlwZVRjb21iID0gdGNvbWIuZW51bXMub2YoT2JqZWN0LmtleXMoVW5zcGVudFR5cGUpKTtcblxuZXhwb3J0IGVudW0gUHVycG9zZSB7XG4gIGludGVybmFsID0gJ2ludGVybmFsJyxcbiAgZXh0ZXJuYWwgPSAnZXh0ZXJuYWwnLFxufVxuXG5jb25zdCBQdXJwb3NlVGNvbWIgPSB0Y29tYi5lbnVtcy5vZihPYmplY3Qua2V5cyhQdXJwb3NlKSk7XG5cbmludGVyZmFjZSBJQ29kZSB7XG4gIGlkOiBDaGFpbkNvZGU7XG4gIHR5cGU6IFVuc3BlbnRUeXBlO1xuICBwdXJwb3NlOiBQdXJwb3NlO1xufVxuXG5jb25zdCBjb2RlTGlzdDogUmVhZG9ubHlBcnJheTxSZWFkb25seTxJQ29kZT4+ID0gT2JqZWN0LmZyZWV6ZShcbiAgKFxuICAgIFtcbiAgICAgIFswLCBVbnNwZW50VHlwZS5wMnNoLCBQdXJwb3NlLmV4dGVybmFsXSxcbiAgICAgIFsxMCwgVW5zcGVudFR5cGUucDJzaFAyd3NoLCBQdXJwb3NlLmV4dGVybmFsXSxcbiAgICAgIFsyMCwgVW5zcGVudFR5cGUucDJ3c2gsIFB1cnBvc2UuZXh0ZXJuYWxdLFxuICAgICAgWzMwLCBVbnNwZW50VHlwZS5wMnRyLCBQdXJwb3NlLmV4dGVybmFsXSxcblxuICAgICAgWzEsIFVuc3BlbnRUeXBlLnAyc2gsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgICAgWzExLCBVbnNwZW50VHlwZS5wMnNoUDJ3c2gsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgICAgWzIxLCBVbnNwZW50VHlwZS5wMndzaCwgUHVycG9zZS5pbnRlcm5hbF0sXG4gICAgICBbMzEsIFVuc3BlbnRUeXBlLnAydHIsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgIF0gYXMgQXJyYXk8W0NoYWluQ29kZSwgVW5zcGVudFR5cGUsIFB1cnBvc2VdPlxuICApLm1hcCgoW2lkLCB0eXBlLCBwdXJwb3NlXSkgPT4gT2JqZWN0LmZyZWV6ZSh7IGlkLCB0eXBlLCBwdXJwb3NlIH0pKVxuKTtcblxuZXhwb3J0IGNvbnN0IENoYWluVHlwZSA9IHRjb21iLmlycmVkdWNpYmxlKCdDaGFpblR5cGUnLCAobikgPT4gaXNWYWxpZChuKSk7XG5cbmNvbnN0IGZvclR5cGUgPSAodTogVW5zcGVudFR5cGUpOiBDb2Rlc0J5UHVycG9zZSA9PiB7XG4gIC8vIERvIHRjb21iIHR5cGUgY2hlY2tpbmcgaW4ganMgcHJvamVjdHMgdGhhdCB1c2UgdGhpcyBsaWJcbiAgaWYgKCFVbnNwZW50VHlwZVRjb21iLmlzKHUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHVuc3BlbnQgdHlwZTogJHt1fWApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBDb2Rlc0J5UHVycG9zZSh1KTtcbn07XG5cbmNvbnN0IHR5cGVGb3JDb2RlID0gKGM6IENoYWluQ29kZSk6IFVuc3BlbnRUeXBlID0+IHtcbiAgY29uc3QgY29kZSA9IGNvZGVMaXN0LmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IGMpO1xuICBpZiAoIWNvZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JJbnZhbGlkQ29kZShjKTtcbiAgfVxuICByZXR1cm4gY29kZS50eXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSAoYzogQ2hhaW5Db2RlKTogYm9vbGVhbiA9PiBjb2RlTGlzdC5zb21lKCh7IGlkIH0pID0+IGlkID09PSBjKTtcblxuY29uc3QgdGhyb3dJZlVuZGVmaW5lZCA9IDxUPih2OiBUIHwgdW5kZWZpbmVkKTogVCA9PiB7XG4gIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIHZhbHVlIHRvIGJlIGRlZmluZWRgKTtcbiAgfVxuICByZXR1cm4gdjtcbn07XG5cbmV4cG9ydCBjbGFzcyBDb2RlR3JvdXAge1xuICBwdWJsaWMgdmFsdWVzOiBSZWFkb25seUFycmF5PENoYWluQ29kZT47XG4gIGNvbnN0cnVjdG9yKHZhbHVlczogSXRlcmFibGU8Q2hhaW5Db2RlPikge1xuICAgIHRoaXMudmFsdWVzID0gT2JqZWN0LmZyZWV6ZShbLi4udmFsdWVzXSk7XG4gIH1cblxuICBwdWJsaWMgaGFzKGNvZGU6IENoYWluQ29kZSk6IGJvb2xlYW4ge1xuICAgIGlmICghaXNWYWxpZChjb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9ySW52YWxpZENvZGUoY29kZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlcy5pbmNsdWRlcyhjb2RlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29kZXNCeVB1cnBvc2UgZXh0ZW5kcyBDb2RlR3JvdXAge1xuICBwdWJsaWMgaW50ZXJuYWw6IENoYWluQ29kZTtcbiAgcHVibGljIGV4dGVybmFsOiBDaGFpbkNvZGU7XG5cbiAgY29uc3RydWN0b3IodDogVW5zcGVudFR5cGUpIHtcbiAgICBjb25zdCBjb2RlTWFwOiBNYXA8UHVycG9zZSwgQ2hhaW5Db2RlPiA9IG5ldyBNYXAoXG4gICAgICBjb2RlTGlzdC5maWx0ZXIoKHsgdHlwZSB9KSA9PiB0eXBlID09PSB0KS5tYXAoKHsgcHVycG9zZSwgaWQgfSk6IFtQdXJwb3NlLCBDaGFpbkNvZGVdID0+IFtwdXJwb3NlLCBpZF0pXG4gICAgKTtcbiAgICBpZiAoY29kZU1hcC5zaXplICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvZGVzIGZvciB0eXBlICR7dH1gKTtcbiAgICB9XG5cbiAgICBzdXBlcihjb2RlTWFwLnZhbHVlcygpKTtcblxuICAgIHRoaXMuaW50ZXJuYWwgPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFB1cnBvc2UuaW50ZXJuYWwpKTtcbiAgICB0aGlzLmV4dGVybmFsID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChQdXJwb3NlLmV4dGVybmFsKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvZGVzQnlUeXBlIGV4dGVuZHMgQ29kZUdyb3VwIHtcbiAgcHVibGljIHAyc2g6IENoYWluQ29kZTtcbiAgcHVibGljIHAyc2hQMndzaDogQ2hhaW5Db2RlO1xuICBwdWJsaWMgcDJ3c2g6IENoYWluQ29kZTtcbiAgcHVibGljIHAydHI6IENoYWluQ29kZTtcblxuICBjb25zdHJ1Y3RvcihwOiBQdXJwb3NlKSB7XG4gICAgY29uc3QgY29kZU1hcDogTWFwPFVuc3BlbnRUeXBlLCBDaGFpbkNvZGU+ID0gbmV3IE1hcChcbiAgICAgIGNvZGVMaXN0LmZpbHRlcigoeyBwdXJwb3NlIH0pID0+IHB1cnBvc2UgPT09IHApLm1hcCgoeyB0eXBlLCBpZCB9KTogW1Vuc3BlbnRUeXBlLCBDaGFpbkNvZGVdID0+IFt0eXBlLCBpZF0pXG4gICAgKTtcbiAgICBpZiAoY29kZU1hcC5zaXplICE9PSA0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvZGVzYCk7XG4gICAgfVxuXG4gICAgc3VwZXIoY29kZU1hcC52YWx1ZXMoKSk7XG5cbiAgICB0aGlzLnAyc2ggPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAyc2gpKTtcbiAgICB0aGlzLnAyc2hQMndzaCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoVW5zcGVudFR5cGUucDJzaFAyd3NoKSk7XG4gICAgdGhpcy5wMndzaCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoVW5zcGVudFR5cGUucDJ3c2gpKTtcbiAgICB0aGlzLnAydHIgPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAydHIpKTtcbiAgfVxufVxuXG5jb25zdCBib3VuZEhhcyA9IChpbnN0YW5jZTogQ29kZUdyb3VwKSA9PiBpbnN0YW5jZS5oYXMuYmluZChpbnN0YW5jZSk7XG5cbmNvbnN0IHAyc2ggPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnNoKSk7XG5jb25zdCBwMnNoUDJ3c2ggPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnNoUDJ3c2gpKTtcbmNvbnN0IHAyd3NoID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJ3c2gpKTtcbmNvbnN0IHAydHIgPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnRyKSk7XG5jb25zdCBleHRlcm5hbCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlUeXBlKFB1cnBvc2UuZXh0ZXJuYWwpKTtcbmNvbnN0IGludGVybmFsID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVR5cGUoUHVycG9zZS5pbnRlcm5hbCkpO1xuY29uc3QgYWxsID0gT2JqZWN0LmZyZWV6ZShjb2RlTGlzdC5tYXAoKHsgaWQgfSkgPT4gaWQpKTtcblxuLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5mcmVlemUoe1xuICAvKiBAZGVwcmVjYXRlZDogdXNlIENoYWluQ29kZVRjb21iICovXG4gIENoYWluVHlwZSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgQ2hhaW5Db2RlVGNvbWI6IENoYWluVHlwZSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgUHVycG9zZVRjb21iLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBVbnNwZW50VHlwZVRjb21iLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnNoLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnNoUDJ3c2gsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHAyd3NoLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnRyLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBleHRlcm5hbCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaW50ZXJuYWwsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGFsbCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnNoOiBib3VuZEhhcyhwMnNoKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnNoUDJ3c2g6IGJvdW5kSGFzKHAyc2hQMndzaCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJ3c2g6IGJvdW5kSGFzKHAyd3NoKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnRyOiBib3VuZEhhcyhwMnRyKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNFeHRlcm5hbDogYm91bmRIYXMoZXh0ZXJuYWwpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc0ludGVybmFsOiBib3VuZEhhcyhpbnRlcm5hbCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzVmFsaWQsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGZvclR5cGUsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHR5cGVGb3JDb2RlLFxufSk7XG4iXX0=
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFJL0IsTUFBYSxnQkFBaUIsU0FBUSxLQUFLO0lBQ3pDLFlBQVksSUFBZTtRQUN6QixLQUFLLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBSkQsNENBSUM7QUFFRCxJQUFZLFdBT1g7QUFQRCxXQUFZLFdBQVc7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7SUFDYixzQ0FBdUIsQ0FBQTtJQUN2QixnQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBZSxDQUFBO0lBQ2YsNEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFQVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQU90QjtBQUVELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBRWxFLElBQVksT0FHWDtBQUhELFdBQVksT0FBTztJQUNqQixnQ0FBcUIsQ0FBQTtJQUNyQixnQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsT0FBTyxHQUFQLGVBQU8sS0FBUCxlQUFPLFFBR2xCO0FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBUTFELE1BQU0sUUFBUSxHQUFtQyxNQUFNLENBQUMsTUFBTSxDQUUxRDtJQUNFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDN0Ms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TztJQUNQLHNDQUFzQztJQUN0QyxXQUFXO0NBQ1osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdGNvbWIgZnJvbSAndGNvbWInO1xuXG5leHBvcnQgdHlwZSBDaGFpbkNvZGUgPSBudW1iZXI7XG5cbmV4cG9ydCBjbGFzcyBFcnJvckludmFsaWRDb2RlIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihjb2RlOiBDaGFpbkNvZGUpIHtcbiAgICBzdXBlcihgaW52YWxpZCBjb2RlICR7Y29kZX1gKTtcbiAgfVxufVxuXG5leHBvcnQgZW51bSBVbnNwZW50VHlwZSB7XG4gIHAycGtoID0gJ3AycGtoJyxcbiAgcDJzaCA9ICdwMnNoJyxcbiAgcDJzaFAyd3NoID0gJ3Ayc2hQMndzaCcsXG4gIHAyd3BraCA9ICdwMndwa2gnLFxuICBwMndzaCA9ICdwMndzaCcsXG4gIHAydHIgPSAncDJ0cicsXG59XG5cbmNvbnN0IFVuc3BlbnRUeXBlVGNvbWIgPSB0Y29tYi5lbnVtcy5vZihPYmplY3Qua2V5cyhVbnNwZW50VHlwZSkpO1xuXG5leHBvcnQgZW51bSBQdXJwb3NlIHtcbiAgaW50ZXJuYWwgPSAnaW50ZXJuYWwnLFxuICBleHRlcm5hbCA9ICdleHRlcm5hbCcsXG59XG5cbmNvbnN0IFB1cnBvc2VUY29tYiA9IHRjb21iLmVudW1zLm9mKE9iamVjdC5rZXlzKFB1cnBvc2UpKTtcblxuaW50ZXJmYWNlIElDb2RlIHtcbiAgaWQ6IENoYWluQ29kZTtcbiAgdHlwZTogVW5zcGVudFR5cGU7XG4gIHB1cnBvc2U6IFB1cnBvc2U7XG59XG5cbmNvbnN0IGNvZGVMaXN0OiBSZWFkb25seUFycmF5PFJlYWRvbmx5PElDb2RlPj4gPSBPYmplY3QuZnJlZXplKFxuICAoXG4gICAgW1xuICAgICAgWzAsIFVuc3BlbnRUeXBlLnAyc2gsIFB1cnBvc2UuZXh0ZXJuYWxdLFxuICAgICAgWzEwLCBVbnNwZW50VHlwZS5wMnNoUDJ3c2gsIFB1cnBvc2UuZXh0ZXJuYWxdLFxuICAgICAgWzIwLCBVbnNwZW50VHlwZS5wMndzaCwgUHVycG9zZS5leHRlcm5hbF0sXG4gICAgICBbMzAsIFVuc3BlbnRUeXBlLnAydHIsIFB1cnBvc2UuZXh0ZXJuYWxdLFxuXG4gICAgICBbMSwgVW5zcGVudFR5cGUucDJzaCwgUHVycG9zZS5pbnRlcm5hbF0sXG4gICAgICBbMTEsIFVuc3BlbnRUeXBlLnAyc2hQMndzaCwgUHVycG9zZS5pbnRlcm5hbF0sXG4gICAgICBbMjEsIFVuc3BlbnRUeXBlLnAyd3NoLCBQdXJwb3NlLmludGVybmFsXSxcbiAgICAgIFszMSwgVW5zcGVudFR5cGUucDJ0ciwgUHVycG9zZS5pbnRlcm5hbF0sXG4gICAgXSBhcyBBcnJheTxbQ2hhaW5Db2RlLCBVbnNwZW50VHlwZSwgUHVycG9zZV0+XG4gICkubWFwKChbaWQsIHR5cGUsIHB1cnBvc2VdKSA9PiBPYmplY3QuZnJlZXplKHsgaWQsIHR5cGUsIHB1cnBvc2UgfSkpXG4pO1xuXG5leHBvcnQgY29uc3QgQ2hhaW5UeXBlID0gdGNvbWIuaXJyZWR1Y2libGUoJ0NoYWluVHlwZScsIChuKSA9PiBpc1ZhbGlkKG4pKTtcblxuY29uc3QgZm9yVHlwZSA9ICh1OiBVbnNwZW50VHlwZSk6IENvZGVzQnlQdXJwb3NlID0+IHtcbiAgLy8gRG8gdGNvbWIgdHlwZSBjaGVja2luZyBpbiBqcyBwcm9qZWN0cyB0aGF0IHVzZSB0aGlzIGxpYlxuICBpZiAoIVVuc3BlbnRUeXBlVGNvbWIuaXModSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdW5zcGVudCB0eXBlOiAke3V9YCk7XG4gIH1cblxuICByZXR1cm4gbmV3IENvZGVzQnlQdXJwb3NlKHUpO1xufTtcblxuY29uc3QgdHlwZUZvckNvZGUgPSAoYzogQ2hhaW5Db2RlKTogVW5zcGVudFR5cGUgPT4ge1xuICBjb25zdCBjb2RlID0gY29kZUxpc3QuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gYyk7XG4gIGlmICghY29kZSkge1xuICAgIHRocm93IG5ldyBFcnJvckludmFsaWRDb2RlKGMpO1xuICB9XG4gIHJldHVybiBjb2RlLnR5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZCA9IChjOiBDaGFpbkNvZGUpOiBib29sZWFuID0+IGNvZGVMaXN0LnNvbWUoKHsgaWQgfSkgPT4gaWQgPT09IGMpO1xuXG5jb25zdCB0aHJvd0lmVW5kZWZpbmVkID0gPFQ+KHY6IFQgfCB1bmRlZmluZWQpOiBUID0+IHtcbiAgaWYgKHYgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgdmFsdWUgdG8gYmUgZGVmaW5lZGApO1xuICB9XG4gIHJldHVybiB2O1xufTtcblxuZXhwb3J0IGNsYXNzIENvZGVHcm91cCB7XG4gIHB1YmxpYyB2YWx1ZXM6IFJlYWRvbmx5QXJyYXk8Q2hhaW5Db2RlPjtcbiAgY29uc3RydWN0b3IodmFsdWVzOiBJdGVyYWJsZTxDaGFpbkNvZGU+KSB7XG4gICAgdGhpcy52YWx1ZXMgPSBPYmplY3QuZnJlZXplKFsuLi52YWx1ZXNdKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXMoY29kZTogQ2hhaW5Db2RlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1ZhbGlkKGNvZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3JJbnZhbGlkQ29kZShjb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmluY2x1ZGVzKGNvZGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2Rlc0J5UHVycG9zZSBleHRlbmRzIENvZGVHcm91cCB7XG4gIHB1YmxpYyBpbnRlcm5hbDogQ2hhaW5Db2RlO1xuICBwdWJsaWMgZXh0ZXJuYWw6IENoYWluQ29kZTtcblxuICBjb25zdHJ1Y3Rvcih0OiBVbnNwZW50VHlwZSkge1xuICAgIGNvbnN0IGNvZGVNYXA6IE1hcDxQdXJwb3NlLCBDaGFpbkNvZGU+ID0gbmV3IE1hcChcbiAgICAgIGNvZGVMaXN0LmZpbHRlcigoeyB0eXBlIH0pID0+IHR5cGUgPT09IHQpLm1hcCgoeyBwdXJwb3NlLCBpZCB9KTogW1B1cnBvc2UsIENoYWluQ29kZV0gPT4gW3B1cnBvc2UsIGlkXSlcbiAgICApO1xuICAgIGlmIChjb2RlTWFwLnNpemUgIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBudW1iZXIgb2YgY29kZXMgZm9yIHR5cGUgJHt0fWApO1xuICAgIH1cblxuICAgIHN1cGVyKGNvZGVNYXAudmFsdWVzKCkpO1xuXG4gICAgdGhpcy5pbnRlcm5hbCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoUHVycG9zZS5pbnRlcm5hbCkpO1xuICAgIHRoaXMuZXh0ZXJuYWwgPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFB1cnBvc2UuZXh0ZXJuYWwpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29kZXNCeVR5cGUgZXh0ZW5kcyBDb2RlR3JvdXAge1xuICBwdWJsaWMgcDJzaDogQ2hhaW5Db2RlO1xuICBwdWJsaWMgcDJzaFAyd3NoOiBDaGFpbkNvZGU7XG4gIHB1YmxpYyBwMndzaDogQ2hhaW5Db2RlO1xuICBwdWJsaWMgcDJ0cjogQ2hhaW5Db2RlO1xuXG4gIGNvbnN0cnVjdG9yKHA6IFB1cnBvc2UpIHtcbiAgICBjb25zdCBjb2RlTWFwOiBNYXA8VW5zcGVudFR5cGUsIENoYWluQ29kZT4gPSBuZXcgTWFwKFxuICAgICAgY29kZUxpc3QuZmlsdGVyKCh7IHB1cnBvc2UgfSkgPT4gcHVycG9zZSA9PT0gcCkubWFwKCh7IHR5cGUsIGlkIH0pOiBbVW5zcGVudFR5cGUsIENoYWluQ29kZV0gPT4gW3R5cGUsIGlkXSlcbiAgICApO1xuICAgIGlmIChjb2RlTWFwLnNpemUgIT09IDQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBudW1iZXIgb2YgY29kZXNgKTtcbiAgICB9XG5cbiAgICBzdXBlcihjb2RlTWFwLnZhbHVlcygpKTtcblxuICAgIHRoaXMucDJzaCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoVW5zcGVudFR5cGUucDJzaCkpO1xuICAgIHRoaXMucDJzaFAyd3NoID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChVbnNwZW50VHlwZS5wMnNoUDJ3c2gpKTtcbiAgICB0aGlzLnAyd3NoID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChVbnNwZW50VHlwZS5wMndzaCkpO1xuICAgIHRoaXMucDJ0ciA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoVW5zcGVudFR5cGUucDJ0cikpO1xuICB9XG59XG5cbmNvbnN0IGJvdW5kSGFzID0gKGluc3RhbmNlOiBDb2RlR3JvdXApID0+IGluc3RhbmNlLmhhcy5iaW5kKGluc3RhbmNlKTtcblxuY29uc3QgcDJzaCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlQdXJwb3NlKFVuc3BlbnRUeXBlLnAyc2gpKTtcbmNvbnN0IHAyc2hQMndzaCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlQdXJwb3NlKFVuc3BlbnRUeXBlLnAyc2hQMndzaCkpO1xuY29uc3QgcDJ3c2ggPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMndzaCkpO1xuY29uc3QgcDJ0ciA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlQdXJwb3NlKFVuc3BlbnRUeXBlLnAydHIpKTtcbmNvbnN0IGV4dGVybmFsID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVR5cGUoUHVycG9zZS5leHRlcm5hbCkpO1xuY29uc3QgaW50ZXJuYWwgPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5VHlwZShQdXJwb3NlLmludGVybmFsKSk7XG5jb25zdCBhbGwgPSBPYmplY3QuZnJlZXplKGNvZGVMaXN0Lm1hcCgoeyBpZCB9KSA9PiBpZCkpO1xuXG4vKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmZyZWV6ZSh7XG4gIC8qIEBkZXByZWNhdGVkOiB1c2UgQ2hhaW5Db2RlVGNvbWIgKi9cbiAgQ2hhaW5UeXBlLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBDaGFpbkNvZGVUY29tYjogQ2hhaW5UeXBlLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBQdXJwb3NlVGNvbWIsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIFVuc3BlbnRUeXBlVGNvbWIsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHAyc2gsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHAyc2hQMndzaCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgcDJ3c2gsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHAydHIsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGV4dGVybmFsLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpbnRlcm5hbCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgYWxsLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc1Ayc2g6IGJvdW5kSGFzKHAyc2gpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc1Ayc2hQMndzaDogYm91bmRIYXMocDJzaFAyd3NoKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMndzaDogYm91bmRIYXMocDJ3c2gpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc1AydHI6IGJvdW5kSGFzKHAydHIpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc0V4dGVybmFsOiBib3VuZEhhcyhleHRlcm5hbCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzSW50ZXJuYWw6IGJvdW5kSGFzKGludGVybmFsKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNWYWxpZCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgZm9yVHlwZSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgdHlwZUZvckNvZGUsXG59KTtcbiJdfQ==
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -172,7 +176,7 @@ class Dimensions {
172
176
  if (!types_1.PositiveInteger.is(scriptLength)) {
173
177
  throw new TypeError(`expected positive integer for scriptLength, got ${scriptLength}`);
174
178
  }
175
- return scriptLength + scriptSizes_1.compactSize(scriptLength) + virtualSizes_1.VirtualSizes.txOutputAmountSize;
179
+ return scriptLength + (0, scriptSizes_1.compactSize)(scriptLength) + virtualSizes_1.VirtualSizes.txOutputAmountSize;
176
180
  }
177
181
  /**
178
182
  * @return
@@ -485,4 +489,4 @@ Dimensions.ASSUME_P2TR_KEYPATH = Dimensions.SingleInput.p2trKeypath;
485
489
  Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL1 = Dimensions.SingleInput.p2trScriptPathLevel1;
486
490
  Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL2 = Dimensions.SingleInput.p2trScriptPathLevel2;
487
491
  Dimensions.ASSUME_P2SH_P2PK_INPUT = Dimensions.SingleInput.p2shP2pk;
488
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBZ0Q7QUFDaEQsbURBQTZDO0FBQzdDLE1BQU0sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxnQkFBSyxDQUFDO0FBR2xELCtDQUE0QztBQUM1QyxtQ0FBMEM7QUFFMUMsaURBQThDO0FBQ3JDLDZGQURBLDJCQUFZLE9BQ0E7QUFFckI7O0dBRUc7QUFDSCxTQUFTLGFBQWEsQ0FDcEIsQ0FBc0IsRUFDdEIsQ0FBZ0Y7SUFFaEYsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEcsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQWEsZ0JBQWdCO0lBVTNCLFlBQVksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEtBQXVCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQzNFLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQzdCLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7YUFDcEU7U0FDRjtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxD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L3V0eG8tbGliJztcbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuY29uc3QgeyBpc0NoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gPSBiaXRnbztcbnR5cGUgQ2hhaW5Db2RlID0gYml0Z28uQ2hhaW5Db2RlO1xuXG5pbXBvcnQgeyBjb21wYWN0U2l6ZSB9IGZyb20gJy4vc2NyaXB0U2l6ZXMnO1xuaW1wb3J0IHsgUG9zaXRpdmVJbnRlZ2VyIH0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7IFZpcnR1YWxTaXplcyB9IGZyb20gJy4vdmlydHVhbFNpemVzJztcbmV4cG9ydCB7IFZpcnR1YWxTaXplcyB9O1xuXG4vKipcbiAqIEFwcGx5IGBmYCB0byBhbGwgcHJvcGVydGllcyBvZiBgZGBcbiAqL1xuZnVuY3Rpb24gbWFwRGltZW5zaW9ucyhcbiAgZDogUGFydGlhbDxEaW1lbnNpb25zPixcbiAgZjogPFQgZXh0ZW5kcyBrZXlvZiBEaW1lbnNpb25zPihrZXk6IFQsIHY6IERpbWVuc2lvbnNbVF0gfCB1bmRlZmluZWQpID0+IHVua25vd25cbik6IERpbWVuc2lvbnMge1xuICByZXR1cm4gbmV3IERpbWVuc2lvbnMoXG4gICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGQpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCBmKGtleSBhcyBrZXlvZiBEaW1lbnNpb25zLCB2YWx1ZSldKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBBZ2dyZWdhdGUgY291bnQgYW5kIHNpemUgb2YgdHJhbnNhY3Rpb24gb3V0cHV0c1xuICovXG5leHBvcnQgY2xhc3MgT3V0cHV0RGltZW5zaW9ucyB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygb3V0cHV0c1xuICAgKi9cbiAgY291bnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEFnZ3JlZ2F0ZSB2U2l6ZVxuICAgKi9cbiAgc2l6ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgY291bnQgPSAwLCBzaXplID0gMCB9OiBPdXRwdXREaW1lbnNpb25zID0geyBjb3VudDogMCwgc2l6ZTogMCB9KSB7XG4gICAgaWYgKGNvdW50ID09PSAwIHx8IHNpemUgPT09IDApIHtcbiAgICAgIGlmIChjb3VudCAhPT0gMCB8fCBzaXplICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY291bnQgYW5kIHNpemUgbXVzdCBib3RoIGJlIHplcm8gaWYgb25lIGlzIHplcm9gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQ7XG4gICAgdGhpcy5zaXplID0gc2l6ZTtcblxuICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEZyb21JbnB1dFBhcmFtcyB7XG4gIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBpbnB1dCB0eXBlIGlzIGFtYmlndW91cywgd2UgbXVzdCBwcm92aWRlIGEgaGludCBhYm91dCBzcGVuZCBzY3JpcHQgdHlwZS5cbiAgYXNzdW1lVW5zaWduZWQ/OiBEaW1lbnNpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZyb21VbnNwZW50UGFyYW1zIHtcbiAgcDJ0cjoge1xuICAgIHNjcmlwdFBhdGhMZXZlbD86IG51bWJlcjtcbiAgfTtcbiAgcDJ0ck11c2lnMjoge1xuICAgIHNjcmlwdFBhdGhMZXZlbD86IG51bWJlcjtcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFVuc3BlbnRQYXJhbXM6IEZyb21VbnNwZW50UGFyYW1zID0ge1xuICBwMnRyOiB7XG4gICAgLy8gRGVmYXVsdCB0byByZWNvdmVyeSBzY3JpcHQgcGF0aHMsIHRvIG1ha2UgaXQgZWFzaWVyIGZvciByZWNvdmVyeSBjYXNlIGNhbGxlcnMgKFdSVyBldGMpLlxuICAgIC8vIFdQIGNhbiBleHBsaWNpdGx5IHBhc3Mgc2NyaXB0UGF0aExldmVsOiAxIHRvIHVzZSBoYXBweSBwYXRoLlxuICAgIHNjcmlwdFBhdGhMZXZlbDogMixcbiAgfSxcbiAgcDJ0ck11c2lnMjoge1xuICAgIC8vIERlZmF1bHQgdG8gc2NyaXB0IHBhdGggc3BlbmQsIHRvIG1ha2UgaXQgZWFzaWVyIGZvciByZWNvdmVyeSBjYXNlIGNhbGxlcnMgKFdSVyBldGMpLlxuICAgIC8vIFdQIGNhbiBleHBsaWNpdGx5IHBhc3Mgc2NyaXB0UGF0aExldmVsOiB1bmRlZmluZWQgdG8gdXNlIGtleSBwYXRoLlxuICAgIHNjcmlwdFBhdGhMZXZlbDogMSxcbiAgfSxcbn07XG5cbi8qKlxuICogRGltZW5zaW9ucyBvZiBhIEJpdEdvIHdhbGxldCB0cmFuc2FjdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25zIHtcbiAgLyoqIElucHV0IGNvdW50cyBmb3IgQml0R28gd2FsbGV0IG11bHRpLXNpZ25hdHVyZSBpbnB1dHMgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5QMnNoSW5wdXRzOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgblAyc2hQMndzaElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMndzaElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyS2V5cGF0aElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogbnVtYmVyID0gMDtcblxuICAvKiBJbnB1dCBjb3VudCBmb3Igc2luZ2xlLXNpZ25hdHVyZSBpbnB1dHMgKFJlcGxheSBQcm90ZWN0aW9uIGlucHV0cykgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5QMnNoUDJwa0lucHV0czogbnVtYmVyID0gMDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3V0cHV0czogT3V0cHV0RGltZW5zaW9ucyA9IG5ldyBPdXRwdXREaW1lbnNpb25zKCk7XG5cbiAgY29uc3RydWN0b3IoZDogUGFydGlhbDxEaW1lbnNpb25zPiA9IHt9KSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB0aGlzLnNldFByb3BlcnR5KGtleSwgdmFsdWUpKTtcblxuICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb3BlcnR5KGs6IHN0cmluZywgdjogdW5rbm93bik6IHZvaWQge1xuICAgIHN3aXRjaCAoaykge1xuICAgICAgY2FzZSAnblAyc2hJbnB1dHMnOlxuICAgICAgY2FzZSAnblAyc2hQMndzaElucHV0cyc6XG4gICAgICBjYXNlICduUDJ3c2hJbnB1dHMnOlxuICAgICAgY2FzZSAnblAydHJLZXlwYXRoSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyc6XG4gICAgICBjYXNlICduUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMnOlxuICAgICAgY2FzZSAnblAyc2hQMnBrSW5wdXRzJzpcbiAgICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvcGVydHkgJHtrfSBtdXN0IGJlIG51bWJlcmApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIodikgfHwgdiA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByb3BlcnR5ICR7a30gbXVzdCBiZSB6ZXJvIG9yIHBvc2l0aXZlIGludGVnZXJgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ291dHB1dHMnOlxuICAgICAgICBpZiAoISh2IGluc3RhbmNlb2YgT3V0cHV0RGltZW5zaW9ucykpIHtcbiAgICAgICAgICB2ID0gbmV3IE91dHB1dERpbWVuc2lvbnModiBhcyBPdXRwdXREaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBwcm9wZXJ0eSAke2t9YCk7XG4gICAgfVxuXG4gICAgKHRoaXMgYXMgYW55KVtrXSA9IHY7XG4gIH1cblxuICBzdGF0aWMgcmVhZG9ubHkgWkVSTyA9IE9iamVjdC5mcmVlemUobmV3IERpbWVuc2lvbnMoKSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBaRVJPXG4gICAqIEByZXR1cm4gRGltZW5zaW9ucyBmb3IgYW4gZW1wdHkgdHJhbnNhY3Rpb25cbiAgICovXG4gIHN0YXRpYyB6ZXJvKCk6IFJlYWRvbmx5PERpbWVuc2lvbnM+IHtcbiAgICByZXR1cm4gdGhpcy5aRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzaXplXG4gICAqIEByZXR1cm4gRGltZW5zaW9ucyBmb3IgYSBzaW5nbGUgb3V0cHV0IHdpdGggZ2l2ZW4gc2l6ZVxuICAgKi9cbiAgc3RhdGljIHNpbmdsZU91dHB1dChzaXplOiBudW1iZXIpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5zdW0oeyBvdXRwdXRzOiB7IGNvdW50OiAxLCBzaXplIH0gfSk7XG4gIH1cblxuICBzdGF0aWMgcmVhZG9ubHkgU2luZ2xlT3V0cHV0ID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgcDJzaDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJzaE91dHB1dFNpemUpLFxuICAgIHAyc2hQMndzaDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJzaFAyd3NoT3V0cHV0U2l6ZSksXG4gICAgcDJ3c2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAyd3NoT3V0cHV0U2l6ZSksXG4gICAgcDJ0cjogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJ0ck91dHB1dFNpemUpLFxuXG4gICAgcDJwa2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAycGtoT3V0cHV0U2l6ZSksXG4gICAgcDJ3cGtoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMndwa2hPdXRwdXRTaXplKSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gTnVtYmVyIG9mIHRvdGFsIGlucHV0cyAocDJzaCArIHAyc2hQMndzaCArIHAyd3NoICsgcDJ0cilcbiAgICovXG4gIGdldCBuSW5wdXRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMublAyc2hJbnB1dHMgK1xuICAgICAgdGhpcy5uUDJzaFAyd3NoSW5wdXRzICtcbiAgICAgIHRoaXMublAyd3NoSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJLZXlwYXRoSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzICtcbiAgICAgIHRoaXMublAyc2hQMnBrSW5wdXRzXG4gICAgKTtcbiAgfVxuXG4gIHNldCBuSW5wdXRzKF86IG51bWJlcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVhZC1vbmx5IHByb3BlcnR5IG5JbnB1dHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIE51bWJlciBvZiB0b3RhbCBvdXRwdXRzXG4gICAqL1xuICBnZXQgbk91dHB1dHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzLmNvdW50O1xuICB9XG5cbiAgc2V0IG5PdXRwdXRzKF86IG51bWJlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgcmVhZC1vbmx5IHByb3BlcnR5IG5PdXRwdXRzYCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGFyZ3MgLSBEaW1lbnNpb25zIChjYW4gYmUgcGFydGlhbGx5IGRlZmluZWQpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiBhcmd1bWVudHNcbiAgICovXG4gIHN0YXRpYyBzdW0oLi4uYXJnczogUGFydGlhbDxEaW1lbnNpb25zPltdKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIGFyZ3MucmVkdWNlKChhOiBEaW1lbnNpb25zLCBiOiBQYXJ0aWFsPERpbWVuc2lvbnM+KSA9PiBhLnBsdXMoYiksIG5ldyBEaW1lbnNpb25zKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAqL1xuICBzdGF0aWMgZ2V0T3V0cHV0U2NyaXB0TGVuZ3RoRm9yQ2hhaW4oY2hhaW46IENoYWluQ29kZSk6IG51bWJlciB7XG4gICAgc3dpdGNoIChzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pKSB7XG4gICAgICBjYXNlICdwMndzaCc6XG4gICAgICBjYXNlICdwMnRyJzpcbiAgICAgIGNhc2UgJ3AydHJNdXNpZzInOlxuICAgICAgICByZXR1cm4gMzQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMjM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzY3JpcHRMZW5ndGhcbiAgICogQHJldHVybiB7TnVtYmVyfSB2U2l6ZSBvZiBhbiBvdXRwdXQgd2l0aCBzY3JpcHQgbGVuZ3RoXG4gICAqL1xuICBzdGF0aWMgZ2V0VlNpemVGb3JPdXRwdXRXaXRoU2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIVBvc2l0aXZlSW50ZWdlci5pcyhzY3JpcHRMZW5ndGgpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBleHBlY3RlZCBwb3NpdGl2ZSBpbnRlZ2VyIGZvciBzY3JpcHRMZW5ndGgsIGdvdCAke3NjcmlwdExlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjcmlwdExlbmd0aCArIGNvbXBhY3RTaXplKHNjcmlwdExlbmd0aCkgKyBWaXJ0dWFsU2l6ZXMudHhPdXRwdXRBbW91bnRTaXplO1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IFNpbmdsZUlucHV0ID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgcDJzaDogRGltZW5zaW9ucy5zdW0oeyBuUDJzaElucHV0czogMSB9KSxcbiAgICBwMnNoUDJ3c2g6IERpbWVuc2lvbnMuc3VtKHsgblAyc2hQMndzaElucHV0czogMSB9KSxcbiAgICBwMndzaDogRGltZW5zaW9ucy5zdW0oeyBuUDJ3c2hJbnB1dHM6IDEgfSksXG4gICAgcDJ0cktleXBhdGg6IERpbWVuc2lvbnMuc3VtKHsgblAydHJLZXlwYXRoSW5wdXRzOiAxIH0pLFxuICAgIHAydHJTY3JpcHRQYXRoTGV2ZWwxOiBEaW1lbnNpb25zLnN1bSh7IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogMSB9KSxcbiAgICBwMnRyU2NyaXB0UGF0aExldmVsMjogRGltZW5zaW9ucy5zdW0oeyBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHM6IDEgfSksXG4gICAgcDJzaFAycGs6IERpbWVuc2lvbnMuc3VtKHsgblAyc2hQMnBrSW5wdXRzOiAxIH0pLFxuICB9KTtcblxuICAvKipcbiAgICogQHJldHVyblxuICAgKi9cbiAgc3RhdGljIGZyb21TY3JpcHRUeXBlKFxuICAgIHNjcmlwdFR5cGU6IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mMyB8ICdwMnBraCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXI7XG4gICAgfSA9IHt9XG4gICk6IERpbWVuc2lvbnMge1xuICAgIHN3aXRjaCAoc2NyaXB0VHlwZSkge1xuICAgICAgY2FzZSAncDJzaCc6XG4gICAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgY2FzZSAncDJ3c2gnOlxuICAgICAgY2FzZSAncDJzaFAycGsnOlxuICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dFtzY3JpcHRUeXBlXTtcbiAgICAgIGNhc2UgJ3AydHInOlxuICAgICAgY2FzZSAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCc6XG4gICAgICAgIHN3aXRjaCAocGFyYW1zLnNjcmlwdFBhdGhMZXZlbCkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwxO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwyO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0IHBhdGggbGV2ZWxgKTtcbiAgICAgICAgfVxuICAgICAgY2FzZSAncDJ0ck11c2lnMic6XG4gICAgICAgIHN3aXRjaCAocGFyYW1zLnNjcmlwdFBhdGhMZXZlbCkge1xuICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0cktleXBhdGg7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDE7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBzY3JpcHQgcGF0aCBsZXZlbGApO1xuICAgICAgICB9XG4gICAgICBjYXNlICd0YXByb290S2V5UGF0aFNwZW5kJzpcbiAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0cktleXBhdGg7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0VHlwZSAke3NjcmlwdFR5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlNIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnNoO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyU0hfUDJXU0ggPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyc2hQMndzaDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMldTSCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ3c2g7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJUUl9LRVlQQVRIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyS2V5cGF0aDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlRSX1NDUklQVFBBVEhfTEVWRUwxID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMTtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlRSX1NDUklQVFBBVEhfTEVWRUwyID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMjtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlNIX1AyUEtfSU5QVVQgPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyc2hQMnBrO1xuXG4gIHByaXZhdGUgc3RhdGljIGdldEFzc3VtZWREaW1lbnNpb24ocGFyYW1zOiBGcm9tSW5wdXRQYXJhbXMgPSB7fSwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHsgYXNzdW1lVW5zaWduZWQgfSA9IHBhcmFtcztcbiAgICBpZiAoIWFzc3VtZVVuc2lnbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGlsbGVnYWwgaW5wdXQgJHtpbmRleH06IGVtcHR5IHNjcmlwdCBhbmQgYXNzdW1lVW5zaWduZWQgbm90IHNldGApO1xuICAgIH1cbiAgICByZXR1cm4gYXNzdW1lVW5zaWduZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGlucHV0IC0gdGhlIHRyYW5zYWN0aW9uIGlucHV0IHRvIGNvdW50XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogICAgICAgIFtwYXJhbS5hc3N1bWVVbnNpZ25lZF0gLSBkZWZhdWx0IHR5cGUgZm9yIHVuc2lnbmVkIGlucHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbUlucHV0KGlucHV0OiB1dHhvbGliLlR4SW5wdXQsIHBhcmFtczogRnJvbUlucHV0UGFyYW1zID0ge30pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoaW5wdXQuc2NyaXB0Py5sZW5ndGggfHwgaW5wdXQud2l0bmVzcz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB1dHhvbGliLmJpdGdvLnBhcnNlU2lnbmF0dXJlU2NyaXB0KGlucHV0KTtcbiAgICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKHBhcnNlZC5zY3JpcHRUeXBlLCBwYXJzZWQgYXMgeyBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZ2V0QXNzdW1lZERpbWVuc2lvbihwYXJhbXMsIGlucHV0LmluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRGltZW5zaW9ucyBmcm9tIHBzYnQgaW5wdXRcbiAgICogQHBhcmFtIGlucHV0IC0gcHNidCBpbnB1dFxuICAgKi9cbiAgc3RhdGljIGZyb21Qc2J0SW5wdXQoaW5wdXQ6IGJpdGdvLlBzYnRJbnB1dFR5cGUpOiBEaW1lbnNpb25zIHtcbiAgICBjb25zdCBwYXJzZWQgPSBiaXRnby5wYXJzZVBzYnRJbnB1dChpbnB1dCk7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUocGFyc2VkLnNjcmlwdFR5cGUsIHBhcnNlZCBhcyB7IHNjcmlwdFBhdGhMZXZlbD86IG51bWJlciB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaW5wdXRzIC0gQXJyYXkgb2YgaW5wdXRzXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBAc2VlIERpbWVuc2lvbnMuZnJvbUlucHV0KClcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIGlucHV0IChAc2VlIERpbWVuc2lvbnMuZnJvbUlucHV0KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbUlucHV0cyhpbnB1dHM6IHV0eG9saWIuVHhJbnB1dFtdLCBwYXJhbXM/OiBGcm9tSW5wdXRQYXJhbXMpOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW5wdXRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLmlucHV0cy5tYXAoKGkpID0+IERpbWVuc2lvbnMuZnJvbUlucHV0KGksIHBhcmFtcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRGltZW5zaW9ucyBmcm9tIG11bHRpcGxlIHBzYnQgaW5wdXRzXG4gICAqIEBwYXJhbSBpbnB1dHMgcHNidCBpbnB1dCBhcnJheVxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgdGhlIGRpbWVuc2lvbnMgZm9yIGVhY2ggaW5wdXQgKEBzZWUgRGltZW5zaW9ucy5mcm9tUHNidElucHV0KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbVBzYnRJbnB1dHMoaW5wdXRzOiBiaXRnby5Qc2J0SW5wdXRUeXBlW10pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW5wdXRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLmlucHV0cy5tYXAoKGlucHV0LCBfKSA9PiBEaW1lbnNpb25zLmZyb21Qc2J0SW5wdXQoaW5wdXQpKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHNjcmlwdExlbmd0aCB7bnVtYmVyfSAtIHNpemUgb2YgdGhlIG91dHB1dCBzY3JpcHQgaW4gYnl0ZXNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gLSBEaW1lbnNpb25zIG9mIHRoZSBvdXRwdXRcbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0U2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aDogbnVtYmVyKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKHtcbiAgICAgIG91dHB1dHM6IHtcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIHNpemU6IERpbWVuc2lvbnMuZ2V0VlNpemVGb3JPdXRwdXRXaXRoU2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aCksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvdXRwdXQgLSBhIHR4IG91dHB1dFxuICAgKiBAcmV0dXJuIERpbWVuc2lvbnMgLSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZ2l2ZW4gb3V0cHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbU91dHB1dCh7IHNjcmlwdCB9OiB7IHNjcmlwdDogQnVmZmVyIH0pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIXNjcmlwdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBvdXRwdXQgc2NyaXB0IHRvIGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc2NyaXB0KSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhwZWN0ZWQgc2NyaXB0IHRvIGJlIGJ1ZmZlciwgZ290ICcgKyB0eXBlb2Ygc2NyaXB0KTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbU91dHB1dFNjcmlwdExlbmd0aChzY3JpcHQubGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb3V0cHV0cyAtIEFycmF5IG9mIG91dHB1dHNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIG91dHB1dCAoQHNlZSBEaW1lbnNpb25zLmZyb21PdXRwdXQoKSlcbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0cyhvdXRwdXRzOiB7IHNjcmlwdDogQnVmZmVyIH1bXSk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShvdXRwdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgb3V0cHV0cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi5vdXRwdXRzLm1hcChEaW1lbnNpb25zLmZyb21PdXRwdXQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkaW1lbnNpb25zIG9mIGFuIG91dHB1dCB0aGF0IHdpbGwgYmUgY3JlYXRlZCBvbiBhIHNwZWNpZmljIGNoYWluLlxuICAgKiBDdXJyZW50bHksIHRoaXMgc2ltcGx5IGFkZHMgYSBkZWZhdWx0IG91dHB1dC5cbiAgICpcbiAgICogQHBhcmFtIGNoYWluIC0gQ2hhaW4gY29kZSBhcyBkZWZpbmVkIGJ5IHV0eG9saWIuYml0Z29cbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gLSBEaW1lbnNpb25zIGZvciBhIHNpbmdsZSBvdXRwdXQgb24gdGhlIGdpdmVuIGNoYWluLlxuICAgKi9cbiAgc3RhdGljIGZyb21PdXRwdXRPbkNoYWluKGNoYWluOiBDaGFpbkNvZGUpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tT3V0cHV0U2NyaXB0TGVuZ3RoKERpbWVuc2lvbnMuZ2V0T3V0cHV0U2NyaXB0TGVuZ3RoRm9yQ2hhaW4oY2hhaW4pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gZGltZW5zaW9ucyBvZiBhbiB1bnNwZW50IGFjY29yZGluZyB0byBgY2hhaW5gIHBhcmFtZXRlclxuICAgKiBAcGFyYW0gY2hhaW4gLSBDaGFpbiBjb2RlIGFzIGRlZmluZWQgYnkgdXR4by5jaGFpblxuICAgKiBAcGFyYW0gcGFyYW1zIC0gSGludCBmb3IgdW5zcGVudHMgd2l0aCB2YXJpYWJsZSBpbnB1dCBzaXplcyAocDJ0ciwgcDJ0ck11c2lnMilcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gb2YgdGhlIHVuc3BlbnRcbiAgICogQHRocm93cyBpZiB0aGUgY2hhaW4gY29kZSBpcyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkXG4gICAqL1xuICBzdGF0aWMgZnJvbVVuc3BlbnQoeyBjaGFpbiB9OiB7IGNoYWluOiBudW1iZXIgfSwgcGFyYW1zOiBGcm9tVW5zcGVudFBhcmFtcyA9IGRlZmF1bHRVbnNwZW50UGFyYW1zKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFpc0NoYWluQ29kZShjaGFpbikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgY2hhaW4gY29kZScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUoXG4gICAgICBzY3JpcHRUeXBlLFxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gcGFyYW1zLnAydHIgOiBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicgPyBwYXJhbXMucDJ0ck11c2lnMiA6IHt9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdW5zcGVudHNcbiAgICogQHBhcmFtIHBhcmFtcyAtIEhpbnQgZm9yIHVuc3BlbnRzIHdpdGggdmFyaWFibGUgaW5wdXQgc2l6ZXMgKHAydHIsIHAydHJNdXNpZzIpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiB0aGUgZGltZW5zaW9ucyBmb3IgZWFjaCB1bnNwZW50IChAc2VlIERpbWVuc2lvbnMuZnJvbVVuc3BlbnQoKSlcbiAgICovXG4gIHN0YXRpYyBmcm9tVW5zcGVudHModW5zcGVudHM6IHsgY2hhaW46IENoYWluQ29kZSB9W10sIHBhcmFtczogRnJvbVVuc3BlbnRQYXJhbXMgPSBkZWZhdWx0VW5zcGVudFBhcmFtcyk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh1bnNwZW50cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHVuc3BlbnRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0aGUgaW5kaXZpZHVhbCB1bnNwZW50cyBpbnRvIGRpbWVuc2lvbnMgYW5kIHN1bSB0aGVtIHVwXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLnVuc3BlbnRzLm1hcCgodSkgPT4gRGltZW5zaW9ucy5mcm9tVW5zcGVudCh1LCBwYXJhbXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIC0gYml0Y29pbi1saWtlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBbcGFyYW0uYXNzdW1lVW5zaWduZWRdIC0gZGVmYXVsdCB0eXBlIGZvciB1bnNpZ25lZCBpbnB1dHNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb24oXG4gICAge1xuICAgICAgaW5zLFxuICAgICAgb3V0cyxcbiAgICB9OiB7XG4gICAgICBpbnM6IHV0eG9saWIuVHhJbnB1dFtdO1xuICAgICAgb3V0czogdXR4b2xpYi5UeE91dHB1dFtdO1xuICAgIH0sXG4gICAgcGFyYW1zPzogRnJvbUlucHV0UGFyYW1zXG4gICk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21JbnB1dHMoaW5zLCBwYXJhbXMpLnBsdXMoRGltZW5zaW9ucy5mcm9tT3V0cHV0cyhvdXRzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIERpbWVuc2lvbnMgZnJvbSBwc2J0IGlucHV0cyBhbmQgb3V0cHV0c1xuICAgKiBAcGFyYW0gcHNidFxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfVxuICAgKi9cbiAgc3RhdGljIGZyb21Qc2J0KHBzYnQ6IGJpdGdvLlV0eG9Qc2J0KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVBzYnRJbnB1dHMocHNidC5kYXRhLmlucHV0cykucGx1cyhEaW1lbnNpb25zLmZyb21PdXRwdXRzKHBzYnQuZ2V0VW5zaWduZWRUeCgpLm91dHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZGltZW5zaW9ucyAoY2FuIGJlIHBhcnRpYWxseSBkZWZpbmVkKVxuICAgKiBAcmV0dXJuIG5ldyBkaW1lbnNpb25zIHdpdGggYXJndW1lbnQgYWRkZWRcbiAgICovXG4gIHBsdXMoZGltZW5zaW9uczogUGFydGlhbDxEaW1lbnNpb25zPik6IERpbWVuc2lvbnMge1xuICAgIGlmICh0eXBlb2YgZGltZW5zaW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGV4cGVjdGVkIGFyZ3VtZW50IHRvIGJlIG9iamVjdGApO1xuICAgIH1cblxuICAgIGlmICghKGRpbWVuc2lvbnMgaW5zdGFuY2VvZiBEaW1lbnNpb25zKSkge1xuICAgICAgZGltZW5zaW9ucyA9IG5ldyBEaW1lbnNpb25zKGRpbWVuc2lvbnMpO1xuICAgIH1cblxuICAgIC8vIENhdGNoIGluc3RhbmNlcyB3aGVyZSB3ZSB0cnkgdG8gaW5pdGlhbGl6ZSBEaW1lbnNpb25zIGZyb20gcGFydGlhbCBkYXRhIHVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVyc1xuICAgIC8vIHVzaW5nIG9ubHkgXCJuT3V0cHV0c1wiLlxuICAgIGlmICgnbk91dHB1dHMnIGluIGRpbWVuc2lvbnMpIHtcbiAgICAgIGlmICghKCdvdXRwdXRzJyBpbiBkaW1lbnNpb25zKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgcGFydGlhbCBhZGRpdGlvbjogYXJndW1lbnQgaGFzIGtleSBcIm5PdXRwdXRzXCIgYnV0IG5vIFwib3V0cHV0c1wiJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgb3V0cHV0cywgbk91dHB1dHMgfSA9IGRpbWVuc2lvbnMgYXMgRGltZW5zaW9ucztcblxuICAgICAgaWYgKG91dHB1dHMuY291bnQgIT09IG5PdXRwdXRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZGVwcmVjYXRlZCBwYXJ0aWFsIGFkZGl0aW9uOiBpbmNvbnNpc3RlbnQgdmFsdWVzIGZvciBcIm5PdXRwdXRzXCIgYW5kIFwib3V0cHV0cy5jb3VudFwiJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcERpbWVuc2lvbnModGhpcywgKGtleSwgdikgPT4ge1xuICAgICAgY29uc3QgdyA9IGRpbWVuc2lvbnNba2V5XSA/PyBEaW1lbnNpb25zLlpFUk9ba2V5XTtcbiAgICAgIGlmIChrZXkgPT09ICdvdXRwdXRzJykge1xuICAgICAgICBjb25zdCB2T3V0cHV0cyA9IHYgYXMgT3V0cHV0RGltZW5zaW9ucztcbiAgICAgICAgY29uc3Qgd091dHB1dHMgPSB3IGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIHJldHVybiBuZXcgT3V0cHV0RGltZW5zaW9ucyh7XG4gICAgICAgICAgY291bnQ6IHZPdXRwdXRzLmNvdW50ICsgd091dHB1dHMuY291bnQsXG4gICAgICAgICAgc2l6ZTogdk91dHB1dHMuc2l6ZSArIHdPdXRwdXRzLnNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuICh2IGFzIG51bWJlcikgKyAodyBhcyBudW1iZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE11bHRpcGx5IGRpbWVuc2lvbnMgYnkgYSBnaXZlbiBmYWN0b3JcbiAgICogQHBhcmFtIGZhY3RvciAtIFBvc2l0aXZlIGludGVnZXJcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHRpbWVzKGZhY3RvcjogbnVtYmVyKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFQb3NpdGl2ZUludGVnZXIuaXMoZmFjdG9yKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0ZWQgZmFjdG9yIHRvIGJlIHBvc2l0aXZlIGludGVnZXJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwRGltZW5zaW9ucyh0aGlzLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gJ291dHB1dHMnKSB7XG4gICAgICAgIGNvbnN0IHZPdXRwdXRzID0gdmFsdWUgYXMgT3V0cHV0RGltZW5zaW9ucztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb3VudDogdk91dHB1dHMuY291bnQgKiBmYWN0b3IsXG4gICAgICAgICAgc2l6ZTogdk91dHB1dHMuc2l6ZSAqIGZhY3RvcixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAodmFsdWUgYXMgbnVtYmVyKSAqIGZhY3RvcjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIE51bWJlciBvZiB0b3RhbCBpbnB1dHMgKHAyc2gsIHAyc2hQMndzaCBhbmQgcDJ3c2gpXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgZGltZW5zaW9uLm5JbnB1dHNgIGluc3RlYWRcbiAgICovXG4gIGdldE5JbnB1dHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uSW5wdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmZiBkaW1lbnNpb25zIGhhdmUgb25lIG9yIG1vcmUgKHAyc2gpcDJ3c2ggaW5wdXRzXG4gICAqL1xuICBpc1NlZ3dpdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5uUDJ3c2hJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnNoUDJ3c2hJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnRyS2V5cGF0aElucHV0cyArXG4gICAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMgPlxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSBvdmVyaGVhZCB2c2l6ZSwgYmFzZWQgb24gcmVzdWx0IGlzU2Vnd2l0KCkuXG4gICAqL1xuICBnZXRPdmVyaGVhZFZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWd3aXQoKSA/IFZpcnR1YWxTaXplcy50eFNlZ092ZXJoZWFkVlNpemUgOiBWaXJ0dWFsU2l6ZXMudHhPdmVyaGVhZFNpemU7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge251bWJlcn0gdnNpemUgb2YgaW5wdXRzLCB3aXRob3V0IHRyYW5zYWN0aW9uIG92ZXJoZWFkXG4gICAqL1xuICBnZXRJbnB1dHNWU2l6ZSgpOiBudW1iZXIge1xuICAgIGNvbnN0IHtcbiAgICAgIHR4UDJzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJzaFAyd3NoSW5wdXRTaXplLFxuICAgICAgdHhQMndzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJ0cktleXBhdGhJbnB1dFNpemUsXG4gICAgICB0eFAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRTaXplLFxuICAgICAgdHhQMnRyU2NyaXB0UGF0aExldmVsMklucHV0U2l6ZSxcbiAgICAgIHR4UDJzaFAycGtJbnB1dFNpemUsXG4gICAgfSA9IFZpcnR1YWxTaXplcztcblxuICAgIGNvbnN0IHtcbiAgICAgIG5QMnNoSW5wdXRzLFxuICAgICAgblAyc2hQMndzaElucHV0cyxcbiAgICAgIG5QMndzaElucHV0cyxcbiAgICAgIG5QMnRyS2V5cGF0aElucHV0cyxcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyxcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyxcbiAgICAgIG5QMnNoUDJwa0lucHV0cyxcbiAgICB9ID0gdGhpcztcblxuICAgIGNvbnN0IHNpemUgPVxuICAgICAgblAyc2hJbnB1dHMgKiB0eFAyc2hJbnB1dFNpemUgK1xuICAgICAgblAyc2hQMndzaElucHV0cyAqIHR4UDJzaFAyd3NoSW5wdXRTaXplICtcbiAgICAgIG5QMndzaElucHV0cyAqIHR4UDJ3c2hJbnB1dFNpemUgK1xuICAgICAgblAydHJLZXlwYXRoSW5wdXRzICogdHhQMnRyS2V5cGF0aElucHV0U2l6ZSArXG4gICAgICBuUDJzaFAycGtJbnB1dHMgKiB0eFAyc2hQMnBrSW5wdXRTaXplICtcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyAqIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dFNpemUgK1xuICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzICogdHhQMnRyU2NyaXB0UGF0aExldmVsMklucHV0U2l6ZTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc2l6ZWApO1xuICAgIH1cblxuICAgIHJldHVybiBzaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IHJldHVybiB2c2l6ZSBvZiBvdXRwdXRzLCB3aXRob3V0IG92ZXJoZWFkXG4gICAqL1xuICBnZXRPdXRwdXRzVlNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzLnNpemU7XG4gIH1cblxuICAvKipcbiAgICogRXN0aW1hdGVzIHRoZSB2aXJ0dWFsIHNpemUgKDEvNCB3ZWlnaHQpIG9mIGEgc2lnbmVkIHRyYW5zYWN0aW9uIGFzIHN1bSBvZlxuICAgKiBvdmVyaGVhZCB2c2l6ZSwgaW5wdXQgdnNpemUgYW5kIG91dHB1dCB2c2l6ZS5cbiAgICogQHJldHVybnMge051bWJlcn0gVGhlIGVzdGltYXRlZCB2c2l6ZSBvZiB0aGUgdHJhbnNhY3Rpb24gZGltZW5zaW9ucy5cbiAgICovXG4gIGdldFZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3ZlcmhlYWRWU2l6ZSgpICsgdGhpcy5nZXRJbnB1dHNWU2l6ZSgpICsgdGhpcy5nZXRPdXRwdXRzVlNpemUoKTtcbiAgfVxufVxuIl19
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQWdEO0FBQ2hELG1EQUE2QztBQUM3QyxNQUFNLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsZ0JBQUssQ0FBQztBQUdsRCwrQ0FBNEM7QUFDNUMsbUNBQTBDO0FBRTFDLGlEQUE4QztBQUNyQyw2RkFEQSwyQkFBWSxPQUNBO0FBRXJCOztHQUVHO0FBQ0gsU0FBUyxhQUFhLENBQ3BCLENBQXNCLEVBQ3RCLENBQWdGO0lBRWhGLE9BQU8sSUFBSSxVQUFVLENBQ25CLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3RHLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGdCQUFnQjtJQVUzQixZQUFZLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUF1QixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUMzRSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtZQUM3QixJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO2FBQ3BFO1NBQ0Y7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElB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aXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuY29uc3QgeyBpc0NoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gPSBiaXRnbztcbnR5cGUgQ2hhaW5Db2RlID0gYml0Z28uQ2hhaW5Db2RlO1xuXG5pbXBvcnQgeyBjb21wYWN0U2l6ZSB9IGZyb20gJy4vc2NyaXB0U2l6ZXMnO1xuaW1wb3J0IHsgUG9zaXRpdmVJbnRlZ2VyIH0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7IFZpcnR1YWxTaXplcyB9IGZyb20gJy4vdmlydHVhbFNpemVzJztcbmV4cG9ydCB7IFZpcnR1YWxTaXplcyB9O1xuXG4vKipcbiAqIEFwcGx5IGBmYCB0byBhbGwgcHJvcGVydGllcyBvZiBgZGBcbiAqL1xuZnVuY3Rpb24gbWFwRGltZW5zaW9ucyhcbiAgZDogUGFydGlhbDxEaW1lbnNpb25zPixcbiAgZjogPFQgZXh0ZW5kcyBrZXlvZiBEaW1lbnNpb25zPihrZXk6IFQsIHY6IERpbWVuc2lvbnNbVF0gfCB1bmRlZmluZWQpID0+IHVua25vd25cbik6IERpbWVuc2lvbnMge1xuICByZXR1cm4gbmV3IERpbWVuc2lvbnMoXG4gICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGQpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCBmKGtleSBhcyBrZXlvZiBEaW1lbnNpb25zLCB2YWx1ZSldKSlcbiAgKTtcbn1cblxuLyoqXG4gKiBBZ2dyZWdhdGUgY291bnQgYW5kIHNpemUgb2YgdHJhbnNhY3Rpb24gb3V0cHV0c1xuICovXG5leHBvcnQgY2xhc3MgT3V0cHV0RGltZW5zaW9ucyB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygb3V0cHV0c1xuICAgKi9cbiAgY291bnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEFnZ3JlZ2F0ZSB2U2l6ZVxuICAgKi9cbiAgc2l6ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHsgY291bnQgPSAwLCBzaXplID0gMCB9OiBPdXRwdXREaW1lbnNpb25zID0geyBjb3VudDogMCwgc2l6ZTogMCB9KSB7XG4gICAgaWYgKGNvdW50ID09PSAwIHx8IHNpemUgPT09IDApIHtcbiAgICAgIGlmIChjb3VudCAhPT0gMCB8fCBzaXplICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY291bnQgYW5kIHNpemUgbXVzdCBib3RoIGJlIHplcm8gaWYgb25lIGlzIHplcm9gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQ7XG4gICAgdGhpcy5zaXplID0gc2l6ZTtcblxuICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEZyb21JbnB1dFBhcmFtcyB7XG4gIC8vIEluIGNhc2VzIHdoZXJlIHRoZSBpbnB1dCB0eXBlIGlzIGFtYmlndW91cywgd2UgbXVzdCBwcm92aWRlIGEgaGludCBhYm91dCBzcGVuZCBzY3JpcHQgdHlwZS5cbiAgYXNzdW1lVW5zaWduZWQ/OiBEaW1lbnNpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZyb21VbnNwZW50UGFyYW1zIHtcbiAgcDJ0cjoge1xuICAgIHNjcmlwdFBhdGhMZXZlbD86IG51bWJlcjtcbiAgfTtcbiAgcDJ0ck11c2lnMjoge1xuICAgIHNjcmlwdFBhdGhMZXZlbD86IG51bWJlcjtcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFVuc3BlbnRQYXJhbXM6IEZyb21VbnNwZW50UGFyYW1zID0ge1xuICBwMnRyOiB7XG4gICAgLy8gRGVmYXVsdCB0byByZWNvdmVyeSBzY3JpcHQgcGF0aHMsIHRvIG1ha2UgaXQgZWFzaWVyIGZvciByZWNvdmVyeSBjYXNlIGNhbGxlcnMgKFdSVyBldGMpLlxuICAgIC8vIFdQIGNhbiBleHBsaWNpdGx5IHBhc3Mgc2NyaXB0UGF0aExldmVsOiAxIHRvIHVzZSBoYXBweSBwYXRoLlxuICAgIHNjcmlwdFBhdGhMZXZlbDogMixcbiAgfSxcbiAgcDJ0ck11c2lnMjoge1xuICAgIC8vIERlZmF1bHQgdG8gc2NyaXB0IHBhdGggc3BlbmQsIHRvIG1ha2UgaXQgZWFzaWVyIGZvciByZWNvdmVyeSBjYXNlIGNhbGxlcnMgKFdSVyBldGMpLlxuICAgIC8vIFdQIGNhbiBleHBsaWNpdGx5IHBhc3Mgc2NyaXB0UGF0aExldmVsOiB1bmRlZmluZWQgdG8gdXNlIGtleSBwYXRoLlxuICAgIHNjcmlwdFBhdGhMZXZlbDogMSxcbiAgfSxcbn07XG5cbi8qKlxuICogRGltZW5zaW9ucyBvZiBhIEJpdEdvIHdhbGxldCB0cmFuc2FjdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25zIHtcbiAgLyoqIElucHV0IGNvdW50cyBmb3IgQml0R28gd2FsbGV0IG11bHRpLXNpZ25hdHVyZSBpbnB1dHMgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5QMnNoSW5wdXRzOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgcmVhZG9ubHkgblAyc2hQMndzaElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMndzaElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyS2V5cGF0aElucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogbnVtYmVyID0gMDtcbiAgcHVibGljIHJlYWRvbmx5IG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0czogbnVtYmVyID0gMDtcblxuICAvKiBJbnB1dCBjb3VudCBmb3Igc2luZ2xlLXNpZ25hdHVyZSBpbnB1dHMgKFJlcGxheSBQcm90ZWN0aW9uIGlucHV0cykgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5QMnNoUDJwa0lucHV0czogbnVtYmVyID0gMDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3V0cHV0czogT3V0cHV0RGltZW5zaW9ucyA9IG5ldyBPdXRwdXREaW1lbnNpb25zKCk7XG5cbiAgY29uc3RydWN0b3IoZDogUGFydGlhbDxEaW1lbnNpb25zPiA9IHt9KSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB0aGlzLnNldFByb3BlcnR5KGtleSwgdmFsdWUpKTtcblxuICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb3BlcnR5KGs6IHN0cmluZywgdjogdW5rbm93bik6IHZvaWQge1xuICAgIHN3aXRjaCAoaykge1xuICAgICAgY2FzZSAnblAyc2hJbnB1dHMnOlxuICAgICAgY2FzZSAnblAyc2hQMndzaElucHV0cyc6XG4gICAgICBjYXNlICduUDJ3c2hJbnB1dHMnOlxuICAgICAgY2FzZSAnblAydHJLZXlwYXRoSW5wdXRzJzpcbiAgICAgIGNhc2UgJ25QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyc6XG4gICAgICBjYXNlICduUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMnOlxuICAgICAgY2FzZSAnblAyc2hQMnBrSW5wdXRzJzpcbiAgICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvcGVydHkgJHtrfSBtdXN0IGJlIG51bWJlcmApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIodikgfHwgdiA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHByb3BlcnR5ICR7a30gbXVzdCBiZSB6ZXJvIG9yIHBvc2l0aXZlIGludGVnZXJgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ291dHB1dHMnOlxuICAgICAgICBpZiAoISh2IGluc3RhbmNlb2YgT3V0cHV0RGltZW5zaW9ucykpIHtcbiAgICAgICAgICB2ID0gbmV3IE91dHB1dERpbWVuc2lvbnModiBhcyBPdXRwdXREaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBwcm9wZXJ0eSAke2t9YCk7XG4gICAgfVxuXG4gICAgKHRoaXMgYXMgYW55KVtrXSA9IHY7XG4gIH1cblxuICBzdGF0aWMgcmVhZG9ubHkgWkVSTyA9IE9iamVjdC5mcmVlemUobmV3IERpbWVuc2lvbnMoKSk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBaRVJPXG4gICAqIEByZXR1cm4gRGltZW5zaW9ucyBmb3IgYW4gZW1wdHkgdHJhbnNhY3Rpb25cbiAgICovXG4gIHN0YXRpYyB6ZXJvKCk6IFJlYWRvbmx5PERpbWVuc2lvbnM+IHtcbiAgICByZXR1cm4gdGhpcy5aRVJPO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzaXplXG4gICAqIEByZXR1cm4gRGltZW5zaW9ucyBmb3IgYSBzaW5nbGUgb3V0cHV0IHdpdGggZ2l2ZW4gc2l6ZVxuICAgKi9cbiAgc3RhdGljIHNpbmdsZU91dHB1dChzaXplOiBudW1iZXIpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5zdW0oeyBvdXRwdXRzOiB7IGNvdW50OiAxLCBzaXplIH0gfSk7XG4gIH1cblxuICBzdGF0aWMgcmVhZG9ubHkgU2luZ2xlT3V0cHV0ID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgcDJzaDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJzaE91dHB1dFNpemUpLFxuICAgIHAyc2hQMndzaDogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJzaFAyd3NoT3V0cHV0U2l6ZSksXG4gICAgcDJ3c2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAyd3NoT3V0cHV0U2l6ZSksXG4gICAgcDJ0cjogRGltZW5zaW9ucy5zaW5nbGVPdXRwdXQoVmlydHVhbFNpemVzLnR4UDJ0ck91dHB1dFNpemUpLFxuXG4gICAgcDJwa2g6IERpbWVuc2lvbnMuc2luZ2xlT3V0cHV0KFZpcnR1YWxTaXplcy50eFAycGtoT3V0cHV0U2l6ZSksXG4gICAgcDJ3cGtoOiBEaW1lbnNpb25zLnNpbmdsZU91dHB1dChWaXJ0dWFsU2l6ZXMudHhQMndwa2hPdXRwdXRTaXplKSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gTnVtYmVyIG9mIHRvdGFsIGlucHV0cyAocDJzaCArIHAyc2hQMndzaCArIHAyd3NoICsgcDJ0cilcbiAgICovXG4gIGdldCBuSW5wdXRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMublAyc2hJbnB1dHMgK1xuICAgICAgdGhpcy5uUDJzaFAyd3NoSW5wdXRzICtcbiAgICAgIHRoaXMublAyd3NoSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJLZXlwYXRoSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzICtcbiAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzICtcbiAgICAgIHRoaXMublAyc2hQMnBrSW5wdXRzXG4gICAgKTtcbiAgfVxuXG4gIHNldCBuSW5wdXRzKF86IG51bWJlcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVhZC1vbmx5IHByb3BlcnR5IG5JbnB1dHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIE51bWJlciBvZiB0b3RhbCBvdXRwdXRzXG4gICAqL1xuICBnZXQgbk91dHB1dHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzLmNvdW50O1xuICB9XG5cbiAgc2V0IG5PdXRwdXRzKF86IG51bWJlcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgcmVhZC1vbmx5IHByb3BlcnR5IG5PdXRwdXRzYCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGFyZ3MgLSBEaW1lbnNpb25zIChjYW4gYmUgcGFydGlhbGx5IGRlZmluZWQpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiBhcmd1bWVudHNcbiAgICovXG4gIHN0YXRpYyBzdW0oLi4uYXJnczogUGFydGlhbDxEaW1lbnNpb25zPltdKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIGFyZ3MucmVkdWNlKChhOiBEaW1lbnNpb25zLCBiOiBQYXJ0aWFsPERpbWVuc2lvbnM+KSA9PiBhLnBsdXMoYiksIG5ldyBEaW1lbnNpb25zKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAqL1xuICBzdGF0aWMgZ2V0T3V0cHV0U2NyaXB0TGVuZ3RoRm9yQ2hhaW4oY2hhaW46IENoYWluQ29kZSk6IG51bWJlciB7XG4gICAgc3dpdGNoIChzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pKSB7XG4gICAgICBjYXNlICdwMndzaCc6XG4gICAgICBjYXNlICdwMnRyJzpcbiAgICAgIGNhc2UgJ3AydHJNdXNpZzInOlxuICAgICAgICByZXR1cm4gMzQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gMjM7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzY3JpcHRMZW5ndGhcbiAgICogQHJldHVybiB7TnVtYmVyfSB2U2l6ZSBvZiBhbiBvdXRwdXQgd2l0aCBzY3JpcHQgbGVuZ3RoXG4gICAqL1xuICBzdGF0aWMgZ2V0VlNpemVGb3JPdXRwdXRXaXRoU2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIVBvc2l0aXZlSW50ZWdlci5pcyhzY3JpcHRMZW5ndGgpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBleHBlY3RlZCBwb3NpdGl2ZSBpbnRlZ2VyIGZvciBzY3JpcHRMZW5ndGgsIGdvdCAke3NjcmlwdExlbmd0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjcmlwdExlbmd0aCArIGNvbXBhY3RTaXplKHNjcmlwdExlbmd0aCkgKyBWaXJ0dWFsU2l6ZXMudHhPdXRwdXRBbW91bnRTaXplO1xuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IFNpbmdsZUlucHV0ID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgcDJzaDogRGltZW5zaW9ucy5zdW0oeyBuUDJzaElucHV0czogMSB9KSxcbiAgICBwMnNoUDJ3c2g6IERpbWVuc2lvbnMuc3VtKHsgblAyc2hQMndzaElucHV0czogMSB9KSxcbiAgICBwMndzaDogRGltZW5zaW9ucy5zdW0oeyBuUDJ3c2hJbnB1dHM6IDEgfSksXG4gICAgcDJ0cktleXBhdGg6IERpbWVuc2lvbnMuc3VtKHsgblAydHJLZXlwYXRoSW5wdXRzOiAxIH0pLFxuICAgIHAydHJTY3JpcHRQYXRoTGV2ZWwxOiBEaW1lbnNpb25zLnN1bSh7IG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0czogMSB9KSxcbiAgICBwMnRyU2NyaXB0UGF0aExldmVsMjogRGltZW5zaW9ucy5zdW0oeyBuUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHM6IDEgfSksXG4gICAgcDJzaFAycGs6IERpbWVuc2lvbnMuc3VtKHsgblAyc2hQMnBrSW5wdXRzOiAxIH0pLFxuICB9KTtcblxuICAvKipcbiAgICogQHJldHVyblxuICAgKi9cbiAgc3RhdGljIGZyb21TY3JpcHRUeXBlKFxuICAgIHNjcmlwdFR5cGU6IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlIHwgdXR4b2xpYi5iaXRnby5QYXJzZWRTY3JpcHRUeXBlMk9mMyB8ICdwMnBraCcsXG4gICAgcGFyYW1zOiB7XG4gICAgICBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXI7XG4gICAgfSA9IHt9XG4gICk6IERpbWVuc2lvbnMge1xuICAgIHN3aXRjaCAoc2NyaXB0VHlwZSkge1xuICAgICAgY2FzZSAncDJzaCc6XG4gICAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgY2FzZSAncDJ3c2gnOlxuICAgICAgY2FzZSAncDJzaFAycGsnOlxuICAgICAgICByZXR1cm4gRGltZW5zaW9ucy5TaW5nbGVJbnB1dFtzY3JpcHRUeXBlXTtcbiAgICAgIGNhc2UgJ3AydHInOlxuICAgICAgY2FzZSAndGFwcm9vdFNjcmlwdFBhdGhTcGVuZCc6XG4gICAgICAgIHN3aXRjaCAocGFyYW1zLnNjcmlwdFBhdGhMZXZlbCkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwxO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAydHJTY3JpcHRQYXRoTGV2ZWwyO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0IHBhdGggbGV2ZWxgKTtcbiAgICAgICAgfVxuICAgICAgY2FzZSAncDJ0ck11c2lnMic6XG4gICAgICAgIHN3aXRjaCAocGFyYW1zLnNjcmlwdFBhdGhMZXZlbCkge1xuICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0cktleXBhdGg7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0clNjcmlwdFBhdGhMZXZlbDE7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBzY3JpcHQgcGF0aCBsZXZlbGApO1xuICAgICAgICB9XG4gICAgICBjYXNlICd0YXByb290S2V5UGF0aFNwZW5kJzpcbiAgICAgICAgcmV0dXJuIERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ0cktleXBhdGg7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0VHlwZSAke3NjcmlwdFR5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlNIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnNoO1xuICBzdGF0aWMgcmVhZG9ubHkgQVNTVU1FX1AyU0hfUDJXU0ggPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyc2hQMndzaDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMldTSCA9IERpbWVuc2lvbnMuU2luZ2xlSW5wdXQucDJ3c2g7XG4gIHN0YXRpYyByZWFkb25seSBBU1NVTUVfUDJUUl9LRVlQQVRIID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyS2V5cGF0aDtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlRSX1NDUklQVFBBVEhfTEVWRUwxID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMTtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlRSX1NDUklQVFBBVEhfTEVWRUwyID0gRGltZW5zaW9ucy5TaW5nbGVJbnB1dC5wMnRyU2NyaXB0UGF0aExldmVsMjtcbiAgc3RhdGljIHJlYWRvbmx5IEFTU1VNRV9QMlNIX1AyUEtfSU5QVVQgPSBEaW1lbnNpb25zLlNpbmdsZUlucHV0LnAyc2hQMnBrO1xuXG4gIHByaXZhdGUgc3RhdGljIGdldEFzc3VtZWREaW1lbnNpb24ocGFyYW1zOiBGcm9tSW5wdXRQYXJhbXMgPSB7fSwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHsgYXNzdW1lVW5zaWduZWQgfSA9IHBhcmFtcztcbiAgICBpZiAoIWFzc3VtZVVuc2lnbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGlsbGVnYWwgaW5wdXQgJHtpbmRleH06IGVtcHR5IHNjcmlwdCBhbmQgYXNzdW1lVW5zaWduZWQgbm90IHNldGApO1xuICAgIH1cbiAgICByZXR1cm4gYXNzdW1lVW5zaWduZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGlucHV0IC0gdGhlIHRyYW5zYWN0aW9uIGlucHV0IHRvIGNvdW50XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogICAgICAgIFtwYXJhbS5hc3N1bWVVbnNpZ25lZF0gLSBkZWZhdWx0IHR5cGUgZm9yIHVuc2lnbmVkIGlucHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbUlucHV0KGlucHV0OiB1dHhvbGliLlR4SW5wdXQsIHBhcmFtczogRnJvbUlucHV0UGFyYW1zID0ge30pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoaW5wdXQuc2NyaXB0Py5sZW5ndGggfHwgaW5wdXQud2l0bmVzcz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB1dHhvbGliLmJpdGdvLnBhcnNlU2lnbmF0dXJlU2NyaXB0KGlucHV0KTtcbiAgICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21TY3JpcHRUeXBlKHBhcnNlZC5zY3JpcHRUeXBlLCBwYXJzZWQgYXMgeyBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZ2V0QXNzdW1lZERpbWVuc2lvbihwYXJhbXMsIGlucHV0LmluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRGltZW5zaW9ucyBmcm9tIHBzYnQgaW5wdXRcbiAgICogQHBhcmFtIGlucHV0IC0gcHNidCBpbnB1dFxuICAgKi9cbiAgc3RhdGljIGZyb21Qc2J0SW5wdXQoaW5wdXQ6IGJpdGdvLlBzYnRJbnB1dFR5cGUpOiBEaW1lbnNpb25zIHtcbiAgICBjb25zdCBwYXJzZWQgPSBiaXRnby5wYXJzZVBzYnRJbnB1dChpbnB1dCk7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUocGFyc2VkLnNjcmlwdFR5cGUsIHBhcnNlZCBhcyB7IHNjcmlwdFBhdGhMZXZlbD86IG51bWJlciB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaW5wdXRzIC0gQXJyYXkgb2YgaW5wdXRzXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBAc2VlIERpbWVuc2lvbnMuZnJvbUlucHV0KClcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIGlucHV0IChAc2VlIERpbWVuc2lvbnMuZnJvbUlucHV0KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbUlucHV0cyhpbnB1dHM6IHV0eG9saWIuVHhJbnB1dFtdLCBwYXJhbXM/OiBGcm9tSW5wdXRQYXJhbXMpOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW5wdXRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLmlucHV0cy5tYXAoKGkpID0+IERpbWVuc2lvbnMuZnJvbUlucHV0KGksIHBhcmFtcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRGltZW5zaW9ucyBmcm9tIG11bHRpcGxlIHBzYnQgaW5wdXRzXG4gICAqIEBwYXJhbSBpbnB1dHMgcHNidCBpbnB1dCBhcnJheVxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfSBzdW0gb2YgdGhlIGRpbWVuc2lvbnMgZm9yIGVhY2ggaW5wdXQgKEBzZWUgRGltZW5zaW9ucy5mcm9tUHNidElucHV0KCkpXG4gICAqL1xuICBzdGF0aWMgZnJvbVBzYnRJbnB1dHMoaW5wdXRzOiBiaXRnby5Qc2J0SW5wdXRUeXBlW10pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW5wdXRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLmlucHV0cy5tYXAoKGlucHV0LCBfKSA9PiBEaW1lbnNpb25zLmZyb21Qc2J0SW5wdXQoaW5wdXQpKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHNjcmlwdExlbmd0aCB7bnVtYmVyfSAtIHNpemUgb2YgdGhlIG91dHB1dCBzY3JpcHQgaW4gYnl0ZXNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gLSBEaW1lbnNpb25zIG9mIHRoZSBvdXRwdXRcbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0U2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aDogbnVtYmVyKTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKHtcbiAgICAgIG91dHB1dHM6IHtcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIHNpemU6IERpbWVuc2lvbnMuZ2V0VlNpemVGb3JPdXRwdXRXaXRoU2NyaXB0TGVuZ3RoKHNjcmlwdExlbmd0aCksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvdXRwdXQgLSBhIHR4IG91dHB1dFxuICAgKiBAcmV0dXJuIERpbWVuc2lvbnMgLSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgZ2l2ZW4gb3V0cHV0XG4gICAqL1xuICBzdGF0aWMgZnJvbU91dHB1dCh7IHNjcmlwdCB9OiB7IHNjcmlwdDogQnVmZmVyIH0pOiBEaW1lbnNpb25zIHtcbiAgICBpZiAoIXNjcmlwdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBvdXRwdXQgc2NyaXB0IHRvIGJlIGRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc2NyaXB0KSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhwZWN0ZWQgc2NyaXB0IHRvIGJlIGJ1ZmZlciwgZ290ICcgKyB0eXBlb2Ygc2NyaXB0KTtcbiAgICB9XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbU91dHB1dFNjcmlwdExlbmd0aChzY3JpcHQubGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb3V0cHV0cyAtIEFycmF5IG9mIG91dHB1dHNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gc3VtIG9mIHRoZSBkaW1lbnNpb25zIGZvciBlYWNoIG91dHB1dCAoQHNlZSBEaW1lbnNpb25zLmZyb21PdXRwdXQoKSlcbiAgICovXG4gIHN0YXRpYyBmcm9tT3V0cHV0cyhvdXRwdXRzOiB7IHNjcmlwdDogQnVmZmVyIH1bXSk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShvdXRwdXRzKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgb3V0cHV0cyBtdXN0IGJlIGFycmF5YCk7XG4gICAgfVxuICAgIHJldHVybiBEaW1lbnNpb25zLnN1bSguLi5vdXRwdXRzLm1hcChEaW1lbnNpb25zLmZyb21PdXRwdXQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBkaW1lbnNpb25zIG9mIGFuIG91dHB1dCB0aGF0IHdpbGwgYmUgY3JlYXRlZCBvbiBhIHNwZWNpZmljIGNoYWluLlxuICAgKiBDdXJyZW50bHksIHRoaXMgc2ltcGx5IGFkZHMgYSBkZWZhdWx0IG91dHB1dC5cbiAgICpcbiAgICogQHBhcmFtIGNoYWluIC0gQ2hhaW4gY29kZSBhcyBkZWZpbmVkIGJ5IHV0eG9saWIuYml0Z29cbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gLSBEaW1lbnNpb25zIGZvciBhIHNpbmdsZSBvdXRwdXQgb24gdGhlIGdpdmVuIGNoYWluLlxuICAgKi9cbiAgc3RhdGljIGZyb21PdXRwdXRPbkNoYWluKGNoYWluOiBDaGFpbkNvZGUpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tT3V0cHV0U2NyaXB0TGVuZ3RoKERpbWVuc2lvbnMuZ2V0T3V0cHV0U2NyaXB0TGVuZ3RoRm9yQ2hhaW4oY2hhaW4pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gZGltZW5zaW9ucyBvZiBhbiB1bnNwZW50IGFjY29yZGluZyB0byBgY2hhaW5gIHBhcmFtZXRlclxuICAgKiBAcGFyYW0gY2hhaW4gLSBDaGFpbiBjb2RlIGFzIGRlZmluZWQgYnkgdXR4by5jaGFpblxuICAgKiBAcGFyYW0gcGFyYW1zIC0gSGludCBmb3IgdW5zcGVudHMgd2l0aCB2YXJpYWJsZSBpbnB1dCBzaXplcyAocDJ0ciwgcDJ0ck11c2lnMilcbiAgICogQHJldHVybiB7RGltZW5zaW9uc30gb2YgdGhlIHVuc3BlbnRcbiAgICogQHRocm93cyBpZiB0aGUgY2hhaW4gY29kZSBpcyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkXG4gICAqL1xuICBzdGF0aWMgZnJvbVVuc3BlbnQoeyBjaGFpbiB9OiB7IGNoYWluOiBudW1iZXIgfSwgcGFyYW1zOiBGcm9tVW5zcGVudFBhcmFtcyA9IGRlZmF1bHRVbnNwZW50UGFyYW1zKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFpc0NoYWluQ29kZShjaGFpbikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgY2hhaW4gY29kZScpO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUoXG4gICAgICBzY3JpcHRUeXBlLFxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gcGFyYW1zLnAydHIgOiBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicgPyBwYXJhbXMucDJ0ck11c2lnMiA6IHt9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdW5zcGVudHNcbiAgICogQHBhcmFtIHBhcmFtcyAtIEhpbnQgZm9yIHVuc3BlbnRzIHdpdGggdmFyaWFibGUgaW5wdXQgc2l6ZXMgKHAydHIsIHAydHJNdXNpZzIpXG4gICAqIEByZXR1cm4ge0RpbWVuc2lvbnN9IHN1bSBvZiB0aGUgZGltZW5zaW9ucyBmb3IgZWFjaCB1bnNwZW50IChAc2VlIERpbWVuc2lvbnMuZnJvbVVuc3BlbnQoKSlcbiAgICovXG4gIHN0YXRpYyBmcm9tVW5zcGVudHModW5zcGVudHM6IHsgY2hhaW46IENoYWluQ29kZSB9W10sIHBhcmFtczogRnJvbVVuc3BlbnRQYXJhbXMgPSBkZWZhdWx0VW5zcGVudFBhcmFtcyk6IERpbWVuc2lvbnMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh1bnNwZW50cykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHVuc3BlbnRzIG11c3QgYmUgYXJyYXlgKTtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0aGUgaW5kaXZpZHVhbCB1bnNwZW50cyBpbnRvIGRpbWVuc2lvbnMgYW5kIHN1bSB0aGVtIHVwXG4gICAgcmV0dXJuIERpbWVuc2lvbnMuc3VtKC4uLnVuc3BlbnRzLm1hcCgodSkgPT4gRGltZW5zaW9ucy5mcm9tVW5zcGVudCh1LCBwYXJhbXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIC0gYml0Y29pbi1saWtlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBbcGFyYW0uYXNzdW1lVW5zaWduZWRdIC0gZGVmYXVsdCB0eXBlIGZvciB1bnNpZ25lZCBpbnB1dHNcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHN0YXRpYyBmcm9tVHJhbnNhY3Rpb24oXG4gICAge1xuICAgICAgaW5zLFxuICAgICAgb3V0cyxcbiAgICB9OiB7XG4gICAgICBpbnM6IHV0eG9saWIuVHhJbnB1dFtdO1xuICAgICAgb3V0czogdXR4b2xpYi5UeE91dHB1dFtdO1xuICAgIH0sXG4gICAgcGFyYW1zPzogRnJvbUlucHV0UGFyYW1zXG4gICk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb21JbnB1dHMoaW5zLCBwYXJhbXMpLnBsdXMoRGltZW5zaW9ucy5mcm9tT3V0cHV0cyhvdXRzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIERpbWVuc2lvbnMgZnJvbSBwc2J0IGlucHV0cyBhbmQgb3V0cHV0c1xuICAgKiBAcGFyYW0gcHNidFxuICAgKiBAcmV0dXJuIHtEaW1lbnNpb25zfVxuICAgKi9cbiAgc3RhdGljIGZyb21Qc2J0KHBzYnQ6IGJpdGdvLlV0eG9Qc2J0KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIERpbWVuc2lvbnMuZnJvbVBzYnRJbnB1dHMocHNidC5kYXRhLmlucHV0cykucGx1cyhEaW1lbnNpb25zLmZyb21PdXRwdXRzKHBzYnQuZ2V0VW5zaWduZWRUeCgpLm91dHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZGltZW5zaW9ucyAoY2FuIGJlIHBhcnRpYWxseSBkZWZpbmVkKVxuICAgKiBAcmV0dXJuIG5ldyBkaW1lbnNpb25zIHdpdGggYXJndW1lbnQgYWRkZWRcbiAgICovXG4gIHBsdXMoZGltZW5zaW9uczogUGFydGlhbDxEaW1lbnNpb25zPik6IERpbWVuc2lvbnMge1xuICAgIGlmICh0eXBlb2YgZGltZW5zaW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGV4cGVjdGVkIGFyZ3VtZW50IHRvIGJlIG9iamVjdGApO1xuICAgIH1cblxuICAgIGlmICghKGRpbWVuc2lvbnMgaW5zdGFuY2VvZiBEaW1lbnNpb25zKSkge1xuICAgICAgZGltZW5zaW9ucyA9IG5ldyBEaW1lbnNpb25zKGRpbWVuc2lvbnMpO1xuICAgIH1cblxuICAgIC8vIENhdGNoIGluc3RhbmNlcyB3aGVyZSB3ZSB0cnkgdG8gaW5pdGlhbGl6ZSBEaW1lbnNpb25zIGZyb20gcGFydGlhbCBkYXRhIHVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVyc1xuICAgIC8vIHVzaW5nIG9ubHkgXCJuT3V0cHV0c1wiLlxuICAgIGlmICgnbk91dHB1dHMnIGluIGRpbWVuc2lvbnMpIHtcbiAgICAgIGlmICghKCdvdXRwdXRzJyBpbiBkaW1lbnNpb25zKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgcGFydGlhbCBhZGRpdGlvbjogYXJndW1lbnQgaGFzIGtleSBcIm5PdXRwdXRzXCIgYnV0IG5vIFwib3V0cHV0c1wiJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgb3V0cHV0cywgbk91dHB1dHMgfSA9IGRpbWVuc2lvbnMgYXMgRGltZW5zaW9ucztcblxuICAgICAgaWYgKG91dHB1dHMuY291bnQgIT09IG5PdXRwdXRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZGVwcmVjYXRlZCBwYXJ0aWFsIGFkZGl0aW9uOiBpbmNvbnNpc3RlbnQgdmFsdWVzIGZvciBcIm5PdXRwdXRzXCIgYW5kIFwib3V0cHV0cy5jb3VudFwiJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcERpbWVuc2lvbnModGhpcywgKGtleSwgdikgPT4ge1xuICAgICAgY29uc3QgdyA9IGRpbWVuc2lvbnNba2V5XSA/PyBEaW1lbnNpb25zLlpFUk9ba2V5XTtcbiAgICAgIGlmIChrZXkgPT09ICdvdXRwdXRzJykge1xuICAgICAgICBjb25zdCB2T3V0cHV0cyA9IHYgYXMgT3V0cHV0RGltZW5zaW9ucztcbiAgICAgICAgY29uc3Qgd091dHB1dHMgPSB3IGFzIE91dHB1dERpbWVuc2lvbnM7XG4gICAgICAgIHJldHVybiBuZXcgT3V0cHV0RGltZW5zaW9ucyh7XG4gICAgICAgICAgY291bnQ6IHZPdXRwdXRzLmNvdW50ICsgd091dHB1dHMuY291bnQsXG4gICAgICAgICAgc2l6ZTogdk91dHB1dHMuc2l6ZSArIHdPdXRwdXRzLnNpemUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuICh2IGFzIG51bWJlcikgKyAodyBhcyBudW1iZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE11bHRpcGx5IGRpbWVuc2lvbnMgYnkgYSBnaXZlbiBmYWN0b3JcbiAgICogQHBhcmFtIGZhY3RvciAtIFBvc2l0aXZlIGludGVnZXJcbiAgICogQHJldHVybiB7RGltZW5zaW9uc31cbiAgICovXG4gIHRpbWVzKGZhY3RvcjogbnVtYmVyKTogRGltZW5zaW9ucyB7XG4gICAgaWYgKCFQb3NpdGl2ZUludGVnZXIuaXMoZmFjdG9yKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgZXhwZWN0ZWQgZmFjdG9yIHRvIGJlIHBvc2l0aXZlIGludGVnZXJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwRGltZW5zaW9ucyh0aGlzLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gJ291dHB1dHMnKSB7XG4gICAgICAgIGNvbnN0IHZPdXRwdXRzID0gdmFsdWUgYXMgT3V0cHV0RGltZW5zaW9ucztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb3VudDogdk91dHB1dHMuY291bnQgKiBmYWN0b3IsXG4gICAgICAgICAgc2l6ZTogdk91dHB1dHMuc2l6ZSAqIGZhY3RvcixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAodmFsdWUgYXMgbnVtYmVyKSAqIGZhY3RvcjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIE51bWJlciBvZiB0b3RhbCBpbnB1dHMgKHAyc2gsIHAyc2hQMndzaCBhbmQgcDJ3c2gpXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgZGltZW5zaW9uLm5JbnB1dHNgIGluc3RlYWRcbiAgICovXG4gIGdldE5JbnB1dHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5uSW5wdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmZiBkaW1lbnNpb25zIGhhdmUgb25lIG9yIG1vcmUgKHAyc2gpcDJ3c2ggaW5wdXRzXG4gICAqL1xuICBpc1NlZ3dpdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5uUDJ3c2hJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnNoUDJ3c2hJbnB1dHMgK1xuICAgICAgICB0aGlzLm5QMnRyS2V5cGF0aElucHV0cyArXG4gICAgICAgIHRoaXMublAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRzICtcbiAgICAgICAgdGhpcy5uUDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dHMgPlxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSBvdmVyaGVhZCB2c2l6ZSwgYmFzZWQgb24gcmVzdWx0IGlzU2Vnd2l0KCkuXG4gICAqL1xuICBnZXRPdmVyaGVhZFZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWd3aXQoKSA/IFZpcnR1YWxTaXplcy50eFNlZ092ZXJoZWFkVlNpemUgOiBWaXJ0dWFsU2l6ZXMudHhPdmVyaGVhZFNpemU7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge251bWJlcn0gdnNpemUgb2YgaW5wdXRzLCB3aXRob3V0IHRyYW5zYWN0aW9uIG92ZXJoZWFkXG4gICAqL1xuICBnZXRJbnB1dHNWU2l6ZSgpOiBudW1iZXIge1xuICAgIGNvbnN0IHtcbiAgICAgIHR4UDJzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJzaFAyd3NoSW5wdXRTaXplLFxuICAgICAgdHhQMndzaElucHV0U2l6ZSxcbiAgICAgIHR4UDJ0cktleXBhdGhJbnB1dFNpemUsXG4gICAgICB0eFAydHJTY3JpcHRQYXRoTGV2ZWwxSW5wdXRTaXplLFxuICAgICAgdHhQMnRyU2NyaXB0UGF0aExldmVsMklucHV0U2l6ZSxcbiAgICAgIHR4UDJzaFAycGtJbnB1dFNpemUsXG4gICAgfSA9IFZpcnR1YWxTaXplcztcblxuICAgIGNvbnN0IHtcbiAgICAgIG5QMnNoSW5wdXRzLFxuICAgICAgblAyc2hQMndzaElucHV0cyxcbiAgICAgIG5QMndzaElucHV0cyxcbiAgICAgIG5QMnRyS2V5cGF0aElucHV0cyxcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyxcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMklucHV0cyxcbiAgICAgIG5QMnNoUDJwa0lucHV0cyxcbiAgICB9ID0gdGhpcztcblxuICAgIGNvbnN0IHNpemUgPVxuICAgICAgblAyc2hJbnB1dHMgKiB0eFAyc2hJbnB1dFNpemUgK1xuICAgICAgblAyc2hQMndzaElucHV0cyAqIHR4UDJzaFAyd3NoSW5wdXRTaXplICtcbiAgICAgIG5QMndzaElucHV0cyAqIHR4UDJ3c2hJbnB1dFNpemUgK1xuICAgICAgblAydHJLZXlwYXRoSW5wdXRzICogdHhQMnRyS2V5cGF0aElucHV0U2l6ZSArXG4gICAgICBuUDJzaFAycGtJbnB1dHMgKiB0eFAyc2hQMnBrSW5wdXRTaXplICtcbiAgICAgIG5QMnRyU2NyaXB0UGF0aExldmVsMUlucHV0cyAqIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dFNpemUgK1xuICAgICAgblAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRzICogdHhQMnRyU2NyaXB0UGF0aExldmVsMklucHV0U2l6ZTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNpemUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc2l6ZWApO1xuICAgIH1cblxuICAgIHJldHVybiBzaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IHJldHVybiB2c2l6ZSBvZiBvdXRwdXRzLCB3aXRob3V0IG92ZXJoZWFkXG4gICAqL1xuICBnZXRPdXRwdXRzVlNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzLnNpemU7XG4gIH1cblxuICAvKipcbiAgICogRXN0aW1hdGVzIHRoZSB2aXJ0dWFsIHNpemUgKDEvNCB3ZWlnaHQpIG9mIGEgc2lnbmVkIHRyYW5zYWN0aW9uIGFzIHN1bSBvZlxuICAgKiBvdmVyaGVhZCB2c2l6ZSwgaW5wdXQgdnNpemUgYW5kIG91dHB1dCB2c2l6ZS5cbiAgICogQHJldHVybnMge051bWJlcn0gVGhlIGVzdGltYXRlZCB2c2l6ZSBvZiB0aGUgdHJhbnNhY3Rpb24gZGltZW5zaW9ucy5cbiAgICovXG4gIGdldFZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3ZlcmhlYWRWU2l6ZSgpICsgdGhpcy5nZXRJbnB1dHNWU2l6ZSgpICsgdGhpcy5nZXRPdXRwdXRzVlNpemUoKTtcbiAgfVxufVxuIl19
package/dist/src/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -27,4 +31,4 @@ const codes_1 = __importStar(require("./codes")), CodesTypes = codes_1;
27
31
  exports.Codes = codes_1.default;
28
32
  exports.CodesTypes = CodesTypes;
29
33
  __exportStar(require("./dimensions"), exports);
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVFQUE2QztBQUczQyxnQkFISyxlQUFLLENBR0w7QUFFTCxnQ0FBVTtBQUdaLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb2RlcywgKiBhcyBDb2Rlc1R5cGVzIGZyb20gJy4vY29kZXMnO1xuZXhwb3J0IHtcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgQ29kZXMsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIENvZGVzVHlwZXMsXG59O1xuXG5leHBvcnQgKiBmcm9tICcuL2RpbWVuc2lvbnMnO1xuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1RUFBNkM7QUFHM0MsZ0JBSEssZUFBSyxDQUdMO0FBRUwsZ0NBQVU7QUFHWiwrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29kZXMsICogYXMgQ29kZXNUeXBlcyBmcm9tICcuL2NvZGVzJztcbmV4cG9ydCB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIENvZGVzLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBDb2Rlc1R5cGVzLFxufTtcblxuZXhwb3J0ICogZnJvbSAnLi9kaW1lbnNpb25zJztcbiJdfQ==
package/dist/src/types.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -22,4 +26,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
22
26
  exports.PositiveInteger = void 0;
23
27
  const t = __importStar(require("tcomb"));
24
28
  exports.PositiveInteger = t.refinement(t.Integer, (n) => n >= 0, 'PositiveInteger');
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUEyQjtBQUVkLFFBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICd0Y29tYic7XG5cbmV4cG9ydCBjb25zdCBQb3NpdGl2ZUludGVnZXIgPSB0LnJlZmluZW1lbnQodC5JbnRlZ2VyLCAobikgPT4gbiA+PSAwLCAnUG9zaXRpdmVJbnRlZ2VyJyk7XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBMkI7QUFFZCxRQUFBLGVBQWUsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAndGNvbWInO1xuXG5leHBvcnQgY29uc3QgUG9zaXRpdmVJbnRlZ2VyID0gdC5yZWZpbmVtZW50KHQuSW50ZWdlciwgKG4pID0+IG4gPj0gMCwgJ1Bvc2l0aXZlSW50ZWdlcicpO1xuIl19
@@ -1,8 +1,8 @@
1
1
  export declare const VirtualSizes: Readonly<{
2
2
  /** @deprecated */
3
- txP2pkhInputSizeCompressedKey: number;
3
+ txP2pkhInputSizeCompressedKey: 148;
4
4
  /** @deprecated */
5
- txP2pkhInputSizeUncompressedKey: number;
5
+ txP2pkhInputSizeUncompressedKey: 180;
6
6
  txP2shInputSize: number;
7
7
  txP2shP2wshInputSize: number;
8
8
  txP2wshInputSize: number;
@@ -10,16 +10,16 @@ export declare const VirtualSizes: Readonly<{
10
10
  txP2shP2pkInputSize: number;
11
11
  txP2trScriptPathLevel1InputSize: number;
12
12
  txP2trScriptPathLevel2InputSize: number;
13
- txOutputAmountSize: number;
14
- txP2shOutputSize: number;
15
- txP2shP2wshOutputSize: number;
16
- txP2wshOutputSize: number;
17
- txP2trOutputSize: number;
18
- txP2pkhOutputSize: number;
19
- txP2wpkhOutputSize: number;
13
+ txOutputAmountSize: 8;
14
+ txP2shOutputSize: 32;
15
+ txP2shP2wshOutputSize: 32;
16
+ txP2wshOutputSize: 43;
17
+ txP2trOutputSize: 43;
18
+ txP2pkhOutputSize: 34;
19
+ txP2wpkhOutputSize: 31;
20
20
  /** @deprecated - use txP2pkhOutputSize instead */
21
- txOutputSize: number;
22
- txOverheadSize: number;
23
- txSegOverheadVSize: number;
21
+ txOutputSize: 34;
22
+ txOverheadSize: 10;
23
+ txSegOverheadVSize: 11;
24
24
  }>;
25
25
  //# sourceMappingURL=virtualSizes.d.ts.map
@@ -57,7 +57,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
57
57
  exports.VirtualSizes = void 0;
58
58
  const inputWeights_1 = require("./inputWeights");
59
59
  function getVirtualInputSizeFromComponents(components) {
60
- return Math.ceil(inputWeights_1.getInputComponentsWeight(components) / 4);
60
+ return Math.ceil((0, inputWeights_1.getInputComponentsWeight)(components) / 4);
61
61
  }
62
62
  // Constants for signed TX input and output vsizes.
63
63
  // See https://bitcoincore.org/en/segwit_wallet_dev/#transaction-serialization for full description
@@ -111,4 +111,4 @@ exports.VirtualSizes = Object.freeze({
111
111
  // Thus, the vsize is only increased by one.
112
112
  txSegOverheadVSize: 11,
113
113
  });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbFNpemVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZpcnR1YWxTaXplcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURFOzs7QUFFRixpREFVd0I7QUFFeEIsU0FBUyxpQ0FBaUMsQ0FBQyxVQUEyQjtJQUNwRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsdUNBQXdCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELG1EQUFtRDtBQUNuRCxtR0FBbUc7QUFDbkcsMkNBQTJDO0FBQzlCLFFBQUEsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDeEMscURBQXFEO0lBRXJELGdEQUFnRDtJQUNoRCxrQkFBa0I7SUFDbEIsNkJBQTZCLEVBQUUsR0FBRztJQUNsQyxrQkFBa0I7SUFDbEIsK0JBQStCLEVBQUUsR0FBRztJQUVwQyxjQUFjO0lBQ2QsZUFBZSxFQUFFLGlDQUFpQyxDQUFDLGtDQUFtQixDQUFDO0lBQ3ZFLG9CQUFvQixFQUFFLGlDQUFpQyxDQUFDLHVDQUF3QixDQUFDO0lBQ2pGLGdCQUFnQixFQUFFLGlDQUFpQyxDQUFDLG1DQUFvQixDQUFDO0lBQ3pFLHNCQUFzQixFQUFFLGlDQUFpQyxDQUFDLDBDQUEyQixDQUFDO0lBQ3RGLG1CQUFtQixFQUFFLGlDQUFpQyxDQUFDLHNDQUF1QixDQUFDO0lBQy9FLCtCQUErQixFQUFFLGlDQUFpQyxDQUFDLG1EQUFvQyxDQUFDO0lBQ3hHLCtCQUErQixFQUFFLGlDQUFpQyxDQUFDLG1EQUFvQyxDQUFDO0lBRXhHLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUVGLDRCQUE0QjtJQUM1QixFQUFFO0lBQ0YsbUVBQW1FO0lBQ25FLEVBQUU7SUFDRixnR0FBZ0c7SUFDaEcsRUFBRTtJQUNGLHNCQUFzQjtJQUN0QixFQUFFO0lBRUYsK0JBQStCO0lBQy9CLGtCQUFrQixFQUFFLENBQUM7SUFFckIsK0ZBQStGO0lBQy9GLGdCQUFnQixFQUFFLEVBQUU7SUFDcEIscUJBQXFCLEVBQUUsRUFBRTtJQUN6QixzR0FBc0c7SUFDdEcsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixzQ0FBc0M7SUFDdEMsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQiwrRkFBK0Y7SUFDL0YsaUJBQWlCLEVBQUUsRUFBRTtJQUNyQixzR0FBc0c7SUFDdEcsa0JBQWtCLEVBQUUsRUFBRTtJQUV0QixrREFBa0Q7SUFDbEQsWUFBWSxFQUFFLEVBQUU7SUFFaEIsRUFBRTtJQUNGLDRCQUE0QjtJQUM1QixFQUFFO0lBRUYsY0FBYyxFQUFFLEVBQUU7SUFDbEIsd0VBQXdFO0lBQ3hFLDRDQUE0QztJQUM1QyxrQkFBa0IsRUFBRSxFQUFFO0NBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5UaGlzIGlzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciBjYWxjdWxhdGluZyB3ZWlnaHRzIGFuZCB2U2l6ZXMgZnJvbSBiaXRjb2luanMtbGliIDMuMy4yLlxuaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjMuMy4yL3NyYy90cmFuc2FjdGlvbi5qcyNMMTk0LUwyMTlcblxuYGBgXG4gIGZ1bmN0aW9uIGVuY29kaW5nTGVuZ3RoIChudW1iZXIpIHtcbiAgICBjaGVja1VJbnQ1MyhudW1iZXIpXG5cbiAgICByZXR1cm4gKFxuICAgICAgbnVtYmVyIDwgMHhmZCA/IDFcbiAgICA6IG51bWJlciA8PSAweGZmZmYgPyAzXG4gICAgOiBudW1iZXIgPD0gMHhmZmZmZmZmZiA/IDVcbiAgICA6IDlcbiAgICApXG4gIH1cblxuICBmdW5jdGlvbiB2YXJTbGljZVNpemUgKHNvbWVTY3JpcHQpIHtcbiAgICB2YXIgbGVuZ3RoID0gc29tZVNjcmlwdC5sZW5ndGhcblxuICAgIHJldHVybiBlbmNvZGluZ0xlbmd0aChsZW5ndGgpICsgbGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiB2ZWN0b3JTaXplIChzb21lVmVjdG9yKSB7XG4gICAgdmFyIGxlbmd0aCA9IHNvbWVWZWN0b3IubGVuZ3RoXG5cbiAgICByZXR1cm4gdmFydWludC5lbmNvZGluZ0xlbmd0aChsZW5ndGgpICsgc29tZVZlY3Rvci5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgd2l0bmVzcykge1xuICAgICAgcmV0dXJuIHN1bSArIHZhclNsaWNlU2l6ZSh3aXRuZXNzKVxuICAgIH0sIDApXG4gIH1cblxuICBUcmFuc2FjdGlvbi5wcm90b3R5cGUuX19ieXRlTGVuZ3RoID0gZnVuY3Rpb24gKF9fYWxsb3dXaXRuZXNzKSB7XG4gICAgdmFyIGhhc1dpdG5lc3NlcyA9IF9fYWxsb3dXaXRuZXNzICYmIHRoaXMuaGFzV2l0bmVzc2VzKClcblxuICAgIHJldHVybiAoXG4gICAgICAoaGFzV2l0bmVzc2VzID8gMTAgOiA4KSArXG4gICAgICB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMuaW5zLmxlbmd0aCkgK1xuICAgICAgdmFydWludC5lbmNvZGluZ0xlbmd0aCh0aGlzLm91dHMubGVuZ3RoKSArXG4gICAgICB0aGlzLmlucy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgaW5wdXQpIHsgcmV0dXJuIHN1bSArIDQwICsgdmFyU2xpY2VTaXplKGlucHV0LnNjcmlwdCkgfSwgMCkgK1xuICAgICAgdGhpcy5vdXRzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBvdXRwdXQpIHsgcmV0dXJuIHN1bSArIDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCkgfSwgMCkgK1xuICAgICAgKGhhc1dpdG5lc3NlcyA/IHRoaXMuaW5zLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBpbnB1dCkgeyByZXR1cm4gc3VtICsgdmVjdG9yU2l6ZShpbnB1dC53aXRuZXNzKSB9LCAwKSA6IDApXG4gICAgKVxuICB9XG5cbiAgVHJhbnNhY3Rpb24ucHJvdG90eXBlLndlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYmFzZSA9IHRoaXMuX19ieXRlTGVuZ3RoKGZhbHNlKVxuICAgIHZhciB0b3RhbCA9IHRoaXMuX19ieXRlTGVuZ3RoKHRydWUpXG4gICAgcmV0dXJuIGJhc2UgKiAzICsgdG90YWxcbiAgfVxuXG4gIFRyYW5zYWN0aW9uLnByb3RvdHlwZS52aXJ0dWFsU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMud2VpZ2h0KCkgLyA0KVxuICB9XG5gYGBcbiovXG5cbmltcG9ydCB7XG4gIGdldElucHV0Q29tcG9uZW50c1dlaWdodCxcbiAgSW5wdXRDb21wb25lbnRzLFxuICBpbnB1dENvbXBvbmVudHNQMnNoLFxuICBpbnB1dENvbXBvbmVudHNQMnNoUDJwayxcbiAgaW5wdXRDb21wb25lbnRzUDJzaFAyd3NoLFxuICBpbnB1dENvbXBvbmVudHNQMnRyS2V5U3BlbmQsXG4gIGlucHV0Q29tcG9uZW50c1AydHJTY3JpcHRTcGVuZExldmVsMSxcbiAgaW5wdXRDb21wb25lbnRzUDJ0clNjcmlwdFNwZW5kTGV2ZWwyLFxuICBpbnB1dENvbXBvbmVudHNQMndzaCxcbn0gZnJvbSAnLi9pbnB1dFdlaWdodHMnO1xuXG5mdW5jdGlvbiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoY29tcG9uZW50czogSW5wdXRDb21wb25lbnRzKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGguY2VpbChnZXRJbnB1dENvbXBvbmVudHNXZWlnaHQoY29tcG9uZW50cykgLyA0KTtcbn1cblxuLy8gQ29uc3RhbnRzIGZvciBzaWduZWQgVFggaW5wdXQgYW5kIG91dHB1dCB2c2l6ZXMuXG4vLyBTZWUgaHR0cHM6Ly9iaXRjb2luY29yZS5vcmcvZW4vc2Vnd2l0X3dhbGxldF9kZXYvI3RyYW5zYWN0aW9uLXNlcmlhbGl6YXRpb24gZm9yIGZ1bGwgZGVzY3JpcHRpb25cbi8vIEZJWE1FKEJHLTkyMzMpOiB1c2Ugd2VpZ2h0IHVuaXRzIGluc3RlYWRcbmV4cG9ydCBjb25zdCBWaXJ0dWFsU2l6ZXMgPSBPYmplY3QuZnJlZXplKHtcbiAgLy8gRklYTUUoQkctNzg3Myk6IGFkZCBzdXBwb3J0IGZvciBzaWduYXR1cmUgZ3JpbmRpbmdcblxuICAvLyBTaXplIG9mIGEgUDJQS0ggaW5wdXQgd2l0aCAodW4pY29tcHJlc3NlZCBrZXlcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIHR4UDJwa2hJbnB1dFNpemVDb21wcmVzc2VkS2V5OiAxNDgsXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICB0eFAycGtoSW5wdXRTaXplVW5jb21wcmVzc2VkS2V5OiAxODAsXG5cbiAgLy8gSW5wdXQgc2l6ZXNcbiAgdHhQMnNoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJzaCksXG4gIHR4UDJzaFAyd3NoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJzaFAyd3NoKSxcbiAgdHhQMndzaElucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1Ayd3NoKSxcbiAgdHhQMnRyS2V5cGF0aElucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1AydHJLZXlTcGVuZCksXG4gIHR4UDJzaFAycGtJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnNoUDJwayksXG4gIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDFJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDEpLFxuICB0eFAydHJTY3JpcHRQYXRoTGV2ZWwySW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJ0clNjcmlwdFNwZW5kTGV2ZWwyKSxcblxuICAvL1xuICAvLyBPdXRwdXQgc2l6ZXNcbiAgLy9cblxuICAvLyBUaGUgc2l6ZSBpcyBjYWxjdWxhdGVkIGFzXG4gIC8vXG4gIC8vICAgIHNjcmlwdExlbmd0aCArIGNvbXBhY3RTaXplKHNjcmlwdExlbmd0aCkgKyB0eE91dHB1dEFtb3VudFNpemVcbiAgLy9cbiAgLy8gU2luY2UgY29tcGFjdFNpemUoc2NyaXB0TGVuZ3RoKSBpcyAxIGZvciBhbGwgc2NyaXB0cyBjb25zaWRlcmVkIGhlcmUsIHdlIGNhbiBzaW1wbGlmeSB0aGlzIHRvXG4gIC8vXG4gIC8vICAgIHNjcmlwdExlbmd0aCArIDlcbiAgLy9cblxuICAvLyBTaXplIG9mIHNpbmdsZSBvdXRwdXQgYW1vdW50XG4gIHR4T3V0cHV0QW1vdW50U2l6ZTogOCxcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92NC4wLjIvc3JjL3RlbXBsYXRlcy9zY3JpcHRoYXNoL291dHB1dC5qcyNMOVxuICB0eFAyc2hPdXRwdXRTaXplOiAzMixcbiAgdHhQMnNoUDJ3c2hPdXRwdXRTaXplOiAzMixcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjQuMC4yL3NyYy90ZW1wbGF0ZXMvd2l0bmVzc3NjcmlwdGhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJ3c2hPdXRwdXRTaXplOiA0MyxcbiAgLy8gT1BfMSBPUF9QVVNIMzIgPHNjaG5vcnJfcHVibGljX2tleT5cbiAgdHhQMnRyT3V0cHV0U2l6ZTogNDMsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYml0Y29pbmpzLWxpYi9ibG9iL3Y0LjAuMi9zcmMvdGVtcGxhdGVzL3B1YmtleWhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJwa2hPdXRwdXRTaXplOiAzNCxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjQuMC4yL3NyYy90ZW1wbGF0ZXMvd2l0bmVzc3B1YmtleWhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJ3cGtoT3V0cHV0U2l6ZTogMzEsXG5cbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHR4UDJwa2hPdXRwdXRTaXplIGluc3RlYWQgKi9cbiAgdHhPdXRwdXRTaXplOiAzNCxcblxuICAvL1xuICAvLyBHZW5lcmFsIHR4IHNpemUgY29uc3RhbnRzXG4gIC8vXG5cbiAgdHhPdmVyaGVhZFNpemU6IDEwLFxuICAvLyBTZWd3aXQgYWRkcyBvbmUgYnl0ZSBlYWNoIGZvciBtYXJrZXIgYW5kIGZsYWcgdG8gdGhlIHdpdG5lc3Mgc2VjdGlvbi5cbiAgLy8gVGh1cywgdGhlIHZzaXplIGlzIG9ubHkgaW5jcmVhc2VkIGJ5IG9uZS5cbiAgdHhTZWdPdmVyaGVhZFZTaXplOiAxMSxcbn0pO1xuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbFNpemVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZpcnR1YWxTaXplcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBcURFOzs7QUFFRixpREFVd0I7QUFFeEIsU0FBUyxpQ0FBaUMsQ0FBQyxVQUEyQjtJQUNwRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSx1Q0FBd0IsRUFBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsbURBQW1EO0FBQ25ELG1HQUFtRztBQUNuRywyQ0FBMkM7QUFDOUIsUUFBQSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxxREFBcUQ7SUFFckQsZ0RBQWdEO0lBQ2hELGtCQUFrQjtJQUNsQiw2QkFBNkIsRUFBRSxHQUFHO0lBQ2xDLGtCQUFrQjtJQUNsQiwrQkFBK0IsRUFBRSxHQUFHO0lBRXBDLGNBQWM7SUFDZCxlQUFlLEVBQUUsaUNBQWlDLENBQUMsa0NBQW1CLENBQUM7SUFDdkUsb0JBQW9CLEVBQUUsaUNBQWlDLENBQUMsdUNBQXdCLENBQUM7SUFDakYsZ0JBQWdCLEVBQUUsaUNBQWlDLENBQUMsbUNBQW9CLENBQUM7SUFDekUsc0JBQXNCLEVBQUUsaUNBQWlDLENBQUMsMENBQTJCLENBQUM7SUFDdEYsbUJBQW1CLEVBQUUsaUNBQWlDLENBQUMsc0NBQXVCLENBQUM7SUFDL0UsK0JBQStCLEVBQUUsaUNBQWlDLENBQUMsbURBQW9DLENBQUM7SUFDeEcsK0JBQStCLEVBQUUsaUNBQWlDLENBQUMsbURBQW9DLENBQUM7SUFFeEcsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBRUYsNEJBQTRCO0lBQzVCLEVBQUU7SUFDRixtRUFBbUU7SUFDbkUsRUFBRTtJQUNGLGdHQUFnRztJQUNoRyxFQUFFO0lBQ0Ysc0JBQXNCO0lBQ3RCLEVBQUU7SUFFRiwrQkFBK0I7SUFDL0Isa0JBQWtCLEVBQUUsQ0FBQztJQUVyQiwrRkFBK0Y7SUFDL0YsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHNHQUFzRztJQUN0RyxpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLHNDQUFzQztJQUN0QyxnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLCtGQUErRjtJQUMvRixpQkFBaUIsRUFBRSxFQUFFO0lBQ3JCLHNHQUFzRztJQUN0RyxrQkFBa0IsRUFBRSxFQUFFO0lBRXRCLGtEQUFrRDtJQUNsRCxZQUFZLEVBQUUsRUFBRTtJQUVoQixFQUFFO0lBQ0YsNEJBQTRCO0lBQzVCLEVBQUU7SUFFRixjQUFjLEVBQUUsRUFBRTtJQUNsQix3RUFBd0U7SUFDeEUsNENBQTRDO0lBQzVDLGtCQUFrQixFQUFFLEVBQUU7Q0FDdkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcblRoaXMgaXMgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gZm9yIGNhbGN1bGF0aW5nIHdlaWdodHMgYW5kIHZTaXplcyBmcm9tIGJpdGNvaW5qcy1saWIgMy4zLjIuXG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92My4zLjIvc3JjL3RyYW5zYWN0aW9uLmpzI0wxOTQtTDIxOVxuXG5gYGBcbiAgZnVuY3Rpb24gZW5jb2RpbmdMZW5ndGggKG51bWJlcikge1xuICAgIGNoZWNrVUludDUzKG51bWJlcilcblxuICAgIHJldHVybiAoXG4gICAgICBudW1iZXIgPCAweGZkID8gMVxuICAgIDogbnVtYmVyIDw9IDB4ZmZmZiA/IDNcbiAgICA6IG51bWJlciA8PSAweGZmZmZmZmZmID8gNVxuICAgIDogOVxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhclNsaWNlU2l6ZSAoc29tZVNjcmlwdCkge1xuICAgIHZhciBsZW5ndGggPSBzb21lU2NyaXB0Lmxlbmd0aFxuXG4gICAgcmV0dXJuIGVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBsZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIHZlY3RvclNpemUgKHNvbWVWZWN0b3IpIHtcbiAgICB2YXIgbGVuZ3RoID0gc29tZVZlY3Rvci5sZW5ndGhcblxuICAgIHJldHVybiB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBzb21lVmVjdG9yLnJlZHVjZShmdW5jdGlvbiAoc3VtLCB3aXRuZXNzKSB7XG4gICAgICByZXR1cm4gc3VtICsgdmFyU2xpY2VTaXplKHdpdG5lc3MpXG4gICAgfSwgMClcbiAgfVxuXG4gIFRyYW5zYWN0aW9uLnByb3RvdHlwZS5fX2J5dGVMZW5ndGggPSBmdW5jdGlvbiAoX19hbGxvd1dpdG5lc3MpIHtcbiAgICB2YXIgaGFzV2l0bmVzc2VzID0gX19hbGxvd1dpdG5lc3MgJiYgdGhpcy5oYXNXaXRuZXNzZXMoKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChoYXNXaXRuZXNzZXMgPyAxMCA6IDgpICtcbiAgICAgIHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgodGhpcy5pbnMubGVuZ3RoKSArXG4gICAgICB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMub3V0cy5sZW5ndGgpICtcbiAgICAgIHRoaXMuaW5zLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBpbnB1dCkgeyByZXR1cm4gc3VtICsgNDAgKyB2YXJTbGljZVNpemUoaW5wdXQuc2NyaXB0KSB9LCAwKSArXG4gICAgICB0aGlzLm91dHMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIG91dHB1dCkgeyByZXR1cm4gc3VtICsgOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KSB9LCAwKSArXG4gICAgICAoaGFzV2l0bmVzc2VzID8gdGhpcy5pbnMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIGlucHV0KSB7IHJldHVybiBzdW0gKyB2ZWN0b3JTaXplKGlucHV0LndpdG5lc3MpIH0sIDApIDogMClcbiAgICApXG4gIH1cblxuICBUcmFuc2FjdGlvbi5wcm90b3R5cGUud2VpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBiYXNlID0gdGhpcy5fX2J5dGVMZW5ndGgoZmFsc2UpXG4gICAgdmFyIHRvdGFsID0gdGhpcy5fX2J5dGVMZW5ndGgodHJ1ZSlcbiAgICByZXR1cm4gYmFzZSAqIDMgKyB0b3RhbFxuICB9XG5cbiAgVHJhbnNhY3Rpb24ucHJvdG90eXBlLnZpcnR1YWxTaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy53ZWlnaHQoKSAvIDQpXG4gIH1cbmBgYFxuKi9cblxuaW1wb3J0IHtcbiAgZ2V0SW5wdXRDb21wb25lbnRzV2VpZ2h0LFxuICBJbnB1dENvbXBvbmVudHMsXG4gIGlucHV0Q29tcG9uZW50c1Ayc2gsXG4gIGlucHV0Q29tcG9uZW50c1Ayc2hQMnBrLFxuICBpbnB1dENvbXBvbmVudHNQMnNoUDJ3c2gsXG4gIGlucHV0Q29tcG9uZW50c1AydHJLZXlTcGVuZCxcbiAgaW5wdXRDb21wb25lbnRzUDJ0clNjcmlwdFNwZW5kTGV2ZWwxLFxuICBpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDIsXG4gIGlucHV0Q29tcG9uZW50c1Ayd3NoLFxufSBmcm9tICcuL2lucHV0V2VpZ2h0cyc7XG5cbmZ1bmN0aW9uIGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhjb21wb25lbnRzOiBJbnB1dENvbXBvbmVudHMpOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC5jZWlsKGdldElucHV0Q29tcG9uZW50c1dlaWdodChjb21wb25lbnRzKSAvIDQpO1xufVxuXG4vLyBDb25zdGFudHMgZm9yIHNpZ25lZCBUWCBpbnB1dCBhbmQgb3V0cHV0IHZzaXplcy5cbi8vIFNlZSBodHRwczovL2JpdGNvaW5jb3JlLm9yZy9lbi9zZWd3aXRfd2FsbGV0X2Rldi8jdHJhbnNhY3Rpb24tc2VyaWFsaXphdGlvbiBmb3IgZnVsbCBkZXNjcmlwdGlvblxuLy8gRklYTUUoQkctOTIzMyk6IHVzZSB3ZWlnaHQgdW5pdHMgaW5zdGVhZFxuZXhwb3J0IGNvbnN0IFZpcnR1YWxTaXplcyA9IE9iamVjdC5mcmVlemUoe1xuICAvLyBGSVhNRShCRy03ODczKTogYWRkIHN1cHBvcnQgZm9yIHNpZ25hdHVyZSBncmluZGluZ1xuXG4gIC8vIFNpemUgb2YgYSBQMlBLSCBpbnB1dCB3aXRoICh1biljb21wcmVzc2VkIGtleVxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgdHhQMnBraElucHV0U2l6ZUNvbXByZXNzZWRLZXk6IDE0OCxcbiAgLyoqIEBkZXByZWNhdGVkICovXG4gIHR4UDJwa2hJbnB1dFNpemVVbmNvbXByZXNzZWRLZXk6IDE4MCxcblxuICAvLyBJbnB1dCBzaXplc1xuICB0eFAyc2hJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnNoKSxcbiAgdHhQMnNoUDJ3c2hJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnNoUDJ3c2gpLFxuICB0eFAyd3NoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJ3c2gpLFxuICB0eFAydHJLZXlwYXRoSW5wdXRTaXplOiBnZXRWaXJ0dWFsSW5wdXRTaXplRnJvbUNvbXBvbmVudHMoaW5wdXRDb21wb25lbnRzUDJ0cktleVNwZW5kKSxcbiAgdHhQMnNoUDJwa0lucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1Ayc2hQMnBrKSxcbiAgdHhQMnRyU2NyaXB0UGF0aExldmVsMUlucHV0U2l6ZTogZ2V0VmlydHVhbElucHV0U2l6ZUZyb21Db21wb25lbnRzKGlucHV0Q29tcG9uZW50c1AydHJTY3JpcHRTcGVuZExldmVsMSksXG4gIHR4UDJ0clNjcmlwdFBhdGhMZXZlbDJJbnB1dFNpemU6IGdldFZpcnR1YWxJbnB1dFNpemVGcm9tQ29tcG9uZW50cyhpbnB1dENvbXBvbmVudHNQMnRyU2NyaXB0U3BlbmRMZXZlbDIpLFxuXG4gIC8vXG4gIC8vIE91dHB1dCBzaXplc1xuICAvL1xuXG4gIC8vIFRoZSBzaXplIGlzIGNhbGN1bGF0ZWQgYXNcbiAgLy9cbiAgLy8gICAgc2NyaXB0TGVuZ3RoICsgY29tcGFjdFNpemUoc2NyaXB0TGVuZ3RoKSArIHR4T3V0cHV0QW1vdW50U2l6ZVxuICAvL1xuICAvLyBTaW5jZSBjb21wYWN0U2l6ZShzY3JpcHRMZW5ndGgpIGlzIDEgZm9yIGFsbCBzY3JpcHRzIGNvbnNpZGVyZWQgaGVyZSwgd2UgY2FuIHNpbXBsaWZ5IHRoaXMgdG9cbiAgLy9cbiAgLy8gICAgc2NyaXB0TGVuZ3RoICsgOVxuICAvL1xuXG4gIC8vIFNpemUgb2Ygc2luZ2xlIG91dHB1dCBhbW91bnRcbiAgdHhPdXRwdXRBbW91bnRTaXplOiA4LFxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYml0Y29pbmpzLWxpYi9ibG9iL3Y0LjAuMi9zcmMvdGVtcGxhdGVzL3NjcmlwdGhhc2gvb3V0cHV0LmpzI0w5XG4gIHR4UDJzaE91dHB1dFNpemU6IDMyLFxuICB0eFAyc2hQMndzaE91dHB1dFNpemU6IDMyLFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92NC4wLjIvc3JjL3RlbXBsYXRlcy93aXRuZXNzc2NyaXB0aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMndzaE91dHB1dFNpemU6IDQzLFxuICAvLyBPUF8xIE9QX1BVU0gzMiA8c2Nobm9ycl9wdWJsaWNfa2V5PlxuICB0eFAydHJPdXRwdXRTaXplOiA0MyxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9iaXRjb2luanMtbGliL2Jsb2IvdjQuMC4yL3NyYy90ZW1wbGF0ZXMvcHVia2V5aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMnBraE91dHB1dFNpemU6IDM0LFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmpzL2JpdGNvaW5qcy1saWIvYmxvYi92NC4wLjIvc3JjL3RlbXBsYXRlcy93aXRuZXNzcHVia2V5aGFzaC9vdXRwdXQuanMjTDlcbiAgdHhQMndwa2hPdXRwdXRTaXplOiAzMSxcblxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdHhQMnBraE91dHB1dFNpemUgaW5zdGVhZCAqL1xuICB0eE91dHB1dFNpemU6IDM0LFxuXG4gIC8vXG4gIC8vIEdlbmVyYWwgdHggc2l6ZSBjb25zdGFudHNcbiAgLy9cblxuICB0eE92ZXJoZWFkU2l6ZTogMTAsXG4gIC8vIFNlZ3dpdCBhZGRzIG9uZSBieXRlIGVhY2ggZm9yIG1hcmtlciBhbmQgZmxhZyB0byB0aGUgd2l0bmVzcyBzZWN0aW9uLlxuICAvLyBUaHVzLCB0aGUgdnNpemUgaXMgb25seSBpbmNyZWFzZWQgYnkgb25lLlxuICB0eFNlZ092ZXJoZWFkVlNpemU6IDExLFxufSk7XG4iXX0=