@secrecy/lib 1.0.0-dev.8 → 1.0.0-dev.81
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.
- package/README.md +1 -1
- package/dist/BaseClient.d.ts +104 -0
- package/dist/BaseClient.js +430 -0
- package/{lib → dist}/PopupTools.d.ts +1 -1
- package/dist/PopupTools.js +196 -0
- package/{lib → dist}/ZeusThunder.d.ts +0 -0
- package/dist/ZeusThunder.js +65 -0
- package/dist/cache.d.ts +6 -0
- package/dist/cache.js +4 -0
- package/dist/client/SecrecyAppClient.d.ts +17 -0
- package/dist/client/SecrecyAppClient.js +227 -0
- package/dist/client/SecrecyCloudClient.d.ts +89 -0
- package/dist/client/SecrecyCloudClient.js +1411 -0
- package/dist/client/SecrecyDbClient.d.ts +21 -0
- package/dist/client/SecrecyDbClient.js +177 -0
- package/dist/client/SecrecyMailClient.d.ts +42 -0
- package/dist/client/SecrecyMailClient.js +1022 -0
- package/dist/client/SecrecyPayClient.d.ts +28 -0
- package/dist/client/SecrecyPayClient.js +68 -0
- package/dist/client/SecrecyWalletClient.d.ts +30 -0
- package/dist/client/SecrecyWalletClient.js +73 -0
- package/{lib → dist}/client/convert/file.d.ts +3 -3
- package/dist/client/convert/file.js +33 -0
- package/dist/client/convert/mail.d.ts +3 -0
- package/dist/client/convert/mail.js +43 -0
- package/dist/client/convert/node.d.ts +9 -0
- package/dist/client/convert/node.js +88 -0
- package/{lib → dist}/client/helpers.d.ts +6 -1
- package/dist/client/helpers.js +119 -0
- package/dist/client/index.d.ts +34 -0
- package/dist/client/index.js +46 -0
- package/{lib → dist}/client/storage.d.ts +0 -0
- package/dist/client/storage.js +12 -0
- package/dist/client/types/File.d.ts +14 -0
- package/dist/client/types/File.js +3 -0
- package/{lib → dist}/client/types/Inputs.d.ts +2 -7
- package/dist/client/types/Inputs.js +3 -0
- package/dist/client/types/Node.d.ts +56 -0
- package/dist/client/types/Node.js +3 -0
- package/{lib → dist}/client/types/UserAppNotifications.d.ts +1 -1
- package/dist/client/types/UserAppNotifications.js +3 -0
- package/{lib → dist}/client/types/UserAppSettings.d.ts +1 -3
- package/dist/client/types/UserAppSettings.js +3 -0
- package/{lib → dist}/client/types/index.d.ts +9 -43
- package/dist/client/types/index.js +8 -0
- package/dist/client/types/selectors.d.ts +400 -0
- package/dist/client/types/selectors.js +135 -0
- package/{lib → dist}/crypto/file.d.ts +0 -0
- package/dist/crypto/file.js +195 -0
- package/{lib → dist}/crypto/index.d.ts +0 -0
- package/dist/crypto/index.js +45 -0
- package/dist/error.d.ts +33 -0
- package/dist/error.js +3 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +10 -0
- package/{lib → dist}/minify/index.d.ts +0 -0
- package/dist/minify/index.js +23 -0
- package/{lib → dist}/minify/lz4.d.ts +0 -0
- package/dist/minify/lz4.js +539 -0
- package/{lib → dist}/sodium.d.ts +0 -0
- package/dist/sodium.js +6 -0
- package/{lib → dist}/utils/store-buddy.d.ts +0 -0
- package/dist/utils/store-buddy.js +58 -0
- package/{lib → dist}/utils/time.d.ts +0 -0
- package/dist/utils/time.js +12 -0
- package/{lib → dist/utils}/utils.d.ts +0 -0
- package/dist/utils/utils.js +47 -0
- package/{lib → dist}/worker/md5.d.ts +0 -0
- package/dist/worker/md5.js +24 -0
- package/{lib → dist}/worker/sodium.d.ts +0 -0
- package/dist/worker/sodium.js +118 -0
- package/{lib → dist}/worker/workerCodes.d.ts +0 -0
- package/dist/worker/workerCodes.js +255 -0
- package/{lib → dist}/zeus/const.d.ts +5 -0
- package/dist/zeus/const.js +1670 -0
- package/dist/zeus/index.d.ts +7896 -0
- package/dist/zeus/index.js +602 -0
- package/package.json +64 -54
- package/lib/BaseClient.d.ts +0 -266
- package/lib/BaseClient.js +0 -1332
- package/lib/PopupTools.js +0 -213
- package/lib/ZeusThunder.js +0 -112
- package/lib/cache.d.ts +0 -7
- package/lib/cache.js +0 -5
- package/lib/client/convert/file.js +0 -39
- package/lib/client/convert/folder.d.ts +0 -8
- package/lib/client/convert/folder.js +0 -264
- package/lib/client/convert/mail.d.ts +0 -3
- package/lib/client/convert/mail.js +0 -46
- package/lib/client/convert/vFile.d.ts +0 -5
- package/lib/client/convert/vFile.js +0 -164
- package/lib/client/helpers.js +0 -116
- package/lib/client/index.d.ts +0 -168
- package/lib/client/index.js +0 -3795
- package/lib/client/storage.js +0 -12
- package/lib/client/types/File.d.ts +0 -21
- package/lib/client/types/File.js +0 -2
- package/lib/client/types/FilesOnUsersOnApplications.d.ts +0 -9
- package/lib/client/types/FilesOnUsersOnApplications.js +0 -2
- package/lib/client/types/Folder.d.ts +0 -68
- package/lib/client/types/Folder.js +0 -7
- package/lib/client/types/Inputs.js +0 -2
- package/lib/client/types/UserAppNotifications.js +0 -2
- package/lib/client/types/UserAppSettings.js +0 -2
- package/lib/client/types/VFile.d.ts +0 -62
- package/lib/client/types/VFile.js +0 -4
- package/lib/client/types/index.js +0 -9
- package/lib/client/types/queries.d.ts +0 -535
- package/lib/client/types/queries.js +0 -192
- package/lib/crypto/file.js +0 -291
- package/lib/crypto/index.js +0 -37
- package/lib/index.d.ts +0 -11
- package/lib/index.js +0 -40
- package/lib/minify/index.js +0 -28
- package/lib/minify/lz4.js +0 -633
- package/lib/sodium.js +0 -28
- package/lib/utils/store-buddy.js +0 -69
- package/lib/utils/time.js +0 -22
- package/lib/utils.js +0 -188
- package/lib/worker/__mock__/sodium.worker.d.ts +0 -19
- package/lib/worker/__mock__/sodium.worker.js +0 -57
- package/lib/worker/md5.js +0 -43
- package/lib/worker/sodium.js +0 -155
- package/lib/worker/workerCodes.js +0 -3
- package/lib/zeus/const.js +0 -1644
- package/lib/zeus/index.d.ts +0 -26279
- package/lib/zeus/index.js +0 -552
package/lib/zeus/index.js
DELETED
|
@@ -1,552 +0,0 @@
|
|
|
1
|
-
import _construct from "@babel/runtime/helpers/construct";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
|
|
4
|
-
import _wrapNativeSuper from "@babel/runtime/helpers/wrapNativeSuper";
|
|
5
|
-
|
|
6
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
7
|
-
|
|
8
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
9
|
-
|
|
10
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
|
-
|
|
12
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
13
|
-
|
|
14
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
15
|
-
|
|
16
|
-
/* eslint-disable */
|
|
17
|
-
import { AllTypesProps, ReturnTypes } from './const.js';
|
|
18
|
-
export var Lang;
|
|
19
|
-
|
|
20
|
-
(function (Lang) {
|
|
21
|
-
Lang["fr"] = "fr";
|
|
22
|
-
Lang["en"] = "en";
|
|
23
|
-
Lang["it"] = "it";
|
|
24
|
-
Lang["de"] = "de";
|
|
25
|
-
Lang["pt"] = "pt";
|
|
26
|
-
Lang["ja"] = "ja";
|
|
27
|
-
Lang["es"] = "es";
|
|
28
|
-
Lang["nl"] = "nl";
|
|
29
|
-
Lang["pl"] = "pl";
|
|
30
|
-
Lang["ru"] = "ru";
|
|
31
|
-
Lang["zh"] = "zh";
|
|
32
|
-
Lang["ar"] = "ar";
|
|
33
|
-
Lang["he"] = "he";
|
|
34
|
-
Lang["hi"] = "hi";
|
|
35
|
-
Lang["ko"] = "ko";
|
|
36
|
-
})(Lang || (Lang = {}));
|
|
37
|
-
|
|
38
|
-
export var PlanKind;
|
|
39
|
-
|
|
40
|
-
(function (PlanKind) {
|
|
41
|
-
PlanKind["free"] = "free";
|
|
42
|
-
PlanKind["basic"] = "basic";
|
|
43
|
-
PlanKind["advanced"] = "advanced";
|
|
44
|
-
PlanKind["pro"] = "pro";
|
|
45
|
-
})(PlanKind || (PlanKind = {}));
|
|
46
|
-
|
|
47
|
-
export var UserRole;
|
|
48
|
-
|
|
49
|
-
(function (UserRole) {
|
|
50
|
-
UserRole["user"] = "user";
|
|
51
|
-
UserRole["admin"] = "admin";
|
|
52
|
-
})(UserRole || (UserRole = {}));
|
|
53
|
-
|
|
54
|
-
export var MailType;
|
|
55
|
-
|
|
56
|
-
(function (MailType) {
|
|
57
|
-
MailType["sent"] = "sent";
|
|
58
|
-
MailType["received"] = "received";
|
|
59
|
-
})(MailType || (MailType = {}));
|
|
60
|
-
|
|
61
|
-
export var Rights;
|
|
62
|
-
|
|
63
|
-
(function (Rights) {
|
|
64
|
-
Rights["admin"] = "admin";
|
|
65
|
-
Rights["write"] = "write";
|
|
66
|
-
Rights["read"] = "read";
|
|
67
|
-
})(Rights || (Rights = {}));
|
|
68
|
-
|
|
69
|
-
export var FileContentType;
|
|
70
|
-
|
|
71
|
-
(function (FileContentType) {
|
|
72
|
-
FileContentType["cloud"] = "cloud";
|
|
73
|
-
FileContentType["sent_mail"] = "sent_mail";
|
|
74
|
-
FileContentType["received_mail"] = "received_mail";
|
|
75
|
-
})(FileContentType || (FileContentType = {}));
|
|
76
|
-
|
|
77
|
-
export var PayInputType;
|
|
78
|
-
|
|
79
|
-
(function (PayInputType) {
|
|
80
|
-
PayInputType["secure"] = "secure";
|
|
81
|
-
PayInputType["classic"] = "classic";
|
|
82
|
-
})(PayInputType || (PayInputType = {}));
|
|
83
|
-
|
|
84
|
-
export var GraphQLError = /*#__PURE__*/function (_Error) {
|
|
85
|
-
_inheritsLoose(GraphQLError, _Error);
|
|
86
|
-
|
|
87
|
-
function GraphQLError(response) {
|
|
88
|
-
var _this;
|
|
89
|
-
|
|
90
|
-
_this = _Error.call(this, "") || this;
|
|
91
|
-
_this.response = response;
|
|
92
|
-
console.error(response);
|
|
93
|
-
return _this;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
var _proto = GraphQLError.prototype;
|
|
97
|
-
|
|
98
|
-
_proto.toString = function toString() {
|
|
99
|
-
return "GraphQL Response Error";
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
return GraphQLError;
|
|
103
|
-
}( /*#__PURE__*/_wrapNativeSuper(Error));
|
|
104
|
-
export var ZeusSelect = function ZeusSelect() {
|
|
105
|
-
return function (t) {
|
|
106
|
-
return t;
|
|
107
|
-
};
|
|
108
|
-
};
|
|
109
|
-
export var ScalarResolver = function ScalarResolver(scalar, value) {
|
|
110
|
-
switch (scalar) {
|
|
111
|
-
case 'String':
|
|
112
|
-
return "" + JSON.stringify(value);
|
|
113
|
-
|
|
114
|
-
case 'Int':
|
|
115
|
-
return "" + value;
|
|
116
|
-
|
|
117
|
-
case 'Float':
|
|
118
|
-
return "" + value;
|
|
119
|
-
|
|
120
|
-
case 'Boolean':
|
|
121
|
-
return "" + value;
|
|
122
|
-
|
|
123
|
-
case 'ID':
|
|
124
|
-
return "\"" + value + "\"";
|
|
125
|
-
|
|
126
|
-
case 'enum':
|
|
127
|
-
return "" + value;
|
|
128
|
-
|
|
129
|
-
case 'scalar':
|
|
130
|
-
return "" + value;
|
|
131
|
-
|
|
132
|
-
default:
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
};
|
|
136
|
-
export var TypesPropsResolver = function TypesPropsResolver(_ref) {
|
|
137
|
-
var value = _ref.value,
|
|
138
|
-
type = _ref.type,
|
|
139
|
-
name = _ref.name,
|
|
140
|
-
key = _ref.key,
|
|
141
|
-
blockArrays = _ref.blockArrays;
|
|
142
|
-
|
|
143
|
-
if (value === null) {
|
|
144
|
-
return "null";
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
var resolvedValue = AllTypesProps[type][name];
|
|
148
|
-
|
|
149
|
-
if (key) {
|
|
150
|
-
resolvedValue = resolvedValue[key];
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (!resolvedValue) {
|
|
154
|
-
throw new Error("Cannot resolve " + type + " " + name + (key ? " " + key : ''));
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
var typeResolved = resolvedValue.type;
|
|
158
|
-
var isArray = resolvedValue.array;
|
|
159
|
-
var isArrayRequired = resolvedValue.arrayRequired;
|
|
160
|
-
|
|
161
|
-
if (typeof value === 'string' && value.startsWith("ZEUS_VAR$")) {
|
|
162
|
-
var isRequired = resolvedValue.required ? '!' : '';
|
|
163
|
-
|
|
164
|
-
var _t = "" + typeResolved;
|
|
165
|
-
|
|
166
|
-
if (isArray) {
|
|
167
|
-
if (isRequired) {
|
|
168
|
-
_t = _t + "!";
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
_t = "[" + _t + "]";
|
|
172
|
-
|
|
173
|
-
if (isArrayRequired) {
|
|
174
|
-
_t = _t + "!";
|
|
175
|
-
}
|
|
176
|
-
} else {
|
|
177
|
-
if (isRequired) {
|
|
178
|
-
_t = _t + "!";
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
return "$" + value.split("ZEUS_VAR$")[1] + "__ZEUS_VAR__" + _t;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
if (isArray && !blockArrays) {
|
|
186
|
-
return "[" + value.map(function (v) {
|
|
187
|
-
return TypesPropsResolver({
|
|
188
|
-
value: v,
|
|
189
|
-
type: type,
|
|
190
|
-
name: name,
|
|
191
|
-
key: key,
|
|
192
|
-
blockArrays: true
|
|
193
|
-
});
|
|
194
|
-
}).join(',') + "]";
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
var reslovedScalar = ScalarResolver(typeResolved, value);
|
|
198
|
-
|
|
199
|
-
if (!reslovedScalar) {
|
|
200
|
-
var resolvedType = AllTypesProps[typeResolved];
|
|
201
|
-
|
|
202
|
-
if (typeof resolvedType === 'object') {
|
|
203
|
-
var argsKeys = Object.keys(resolvedType);
|
|
204
|
-
return "{" + argsKeys.filter(function (ak) {
|
|
205
|
-
return value[ak] !== undefined;
|
|
206
|
-
}).map(function (ak) {
|
|
207
|
-
return ak + ":" + TypesPropsResolver({
|
|
208
|
-
value: value[ak],
|
|
209
|
-
type: typeResolved,
|
|
210
|
-
name: ak
|
|
211
|
-
});
|
|
212
|
-
}) + "}";
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
return ScalarResolver(AllTypesProps[typeResolved], value);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
return reslovedScalar;
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
var isArrayFunction = function isArrayFunction(parent, a) {
|
|
222
|
-
var values = a[0],
|
|
223
|
-
r = a[1];
|
|
224
|
-
var mainKey = parent[0],
|
|
225
|
-
key = parent[1],
|
|
226
|
-
keys = parent.slice(2);
|
|
227
|
-
var keyValues = Object.keys(values).filter(function (k) {
|
|
228
|
-
return typeof values[k] !== 'undefined';
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
if (!keys.length) {
|
|
232
|
-
return keyValues.length > 0 ? "(" + keyValues.map(function (v) {
|
|
233
|
-
return v + ":" + TypesPropsResolver({
|
|
234
|
-
value: values[v],
|
|
235
|
-
type: mainKey,
|
|
236
|
-
name: key,
|
|
237
|
-
key: v
|
|
238
|
-
});
|
|
239
|
-
}).join(',') + ")" + (r ? traverseToSeekArrays(parent, r) : '') : traverseToSeekArrays(parent, r);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
var _keys$splice = keys.splice(keys.length - 1, 1),
|
|
243
|
-
typeResolverKey = _keys$splice[0];
|
|
244
|
-
|
|
245
|
-
var valueToResolve = ReturnTypes[mainKey][key];
|
|
246
|
-
|
|
247
|
-
for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
|
|
248
|
-
var k = _step.value;
|
|
249
|
-
valueToResolve = ReturnTypes[valueToResolve][k];
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
var argumentString = keyValues.length > 0 ? "(" + keyValues.map(function (v) {
|
|
253
|
-
return v + ":" + TypesPropsResolver({
|
|
254
|
-
value: values[v],
|
|
255
|
-
type: valueToResolve,
|
|
256
|
-
name: typeResolverKey,
|
|
257
|
-
key: v
|
|
258
|
-
});
|
|
259
|
-
}).join(',') + ")" + (r ? traverseToSeekArrays(parent, r) : '') : traverseToSeekArrays(parent, r);
|
|
260
|
-
return argumentString;
|
|
261
|
-
};
|
|
262
|
-
|
|
263
|
-
var resolveKV = function resolveKV(k, v) {
|
|
264
|
-
return typeof v === 'boolean' ? k : typeof v === 'object' ? k + "{" + objectToTree(v) + "}" : "" + k + v;
|
|
265
|
-
};
|
|
266
|
-
|
|
267
|
-
var objectToTree = function objectToTree(o) {
|
|
268
|
-
return "{" + Object.keys(o).map(function (k) {
|
|
269
|
-
return "" + resolveKV(k, o[k]);
|
|
270
|
-
}).join(' ') + "}";
|
|
271
|
-
};
|
|
272
|
-
|
|
273
|
-
var traverseToSeekArrays = function traverseToSeekArrays(parent, a) {
|
|
274
|
-
if (!a) return '';
|
|
275
|
-
|
|
276
|
-
if (Object.keys(a).length === 0) {
|
|
277
|
-
return '';
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
var b = {};
|
|
281
|
-
|
|
282
|
-
if (Array.isArray(a)) {
|
|
283
|
-
return isArrayFunction([].concat(parent), a);
|
|
284
|
-
} else {
|
|
285
|
-
if (typeof a === 'object') {
|
|
286
|
-
Object.keys(a).filter(function (k) {
|
|
287
|
-
return typeof a[k] !== 'undefined';
|
|
288
|
-
}).forEach(function (k) {
|
|
289
|
-
if (k === '__alias') {
|
|
290
|
-
Object.keys(a[k]).forEach(function (aliasKey) {
|
|
291
|
-
var aliasOperations = a[k][aliasKey];
|
|
292
|
-
var aliasOperationName = Object.keys(aliasOperations)[0];
|
|
293
|
-
var aliasOperation = aliasOperations[aliasOperationName];
|
|
294
|
-
b[aliasOperationName + "__alias__" + aliasKey + ": " + aliasOperationName] = traverseToSeekArrays([].concat(parent, [aliasOperationName]), aliasOperation);
|
|
295
|
-
});
|
|
296
|
-
} else {
|
|
297
|
-
b[k] = traverseToSeekArrays([].concat(parent, [k]), a[k]);
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
} else {
|
|
301
|
-
return '';
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
return objectToTree(b);
|
|
306
|
-
};
|
|
307
|
-
|
|
308
|
-
var buildQuery = function buildQuery(type, a) {
|
|
309
|
-
return traverseToSeekArrays([type], a);
|
|
310
|
-
};
|
|
311
|
-
|
|
312
|
-
var inspectVariables = function inspectVariables(query) {
|
|
313
|
-
var regex = /\$\b\w*__ZEUS_VAR__\[?[^!^\]^\s^,^\)^\}]*[!]?[\]]?[!]?/g;
|
|
314
|
-
var result;
|
|
315
|
-
var AllVariables = [];
|
|
316
|
-
|
|
317
|
-
while (result = regex.exec(query)) {
|
|
318
|
-
if (AllVariables.includes(result[0])) {
|
|
319
|
-
continue;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
AllVariables.push(result[0]);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
if (!AllVariables.length) {
|
|
326
|
-
return query;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
var filteredQuery = query;
|
|
330
|
-
AllVariables.forEach(function (variable) {
|
|
331
|
-
while (filteredQuery.includes(variable)) {
|
|
332
|
-
filteredQuery = filteredQuery.replace(variable, variable.split('__ZEUS_VAR__')[0]);
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
return "(" + AllVariables.map(function (a) {
|
|
336
|
-
return a.split('__ZEUS_VAR__');
|
|
337
|
-
}).map(function (_ref2) {
|
|
338
|
-
var variableName = _ref2[0],
|
|
339
|
-
variableType = _ref2[1];
|
|
340
|
-
return variableName + ":" + variableType;
|
|
341
|
-
}).join(', ') + ")" + filteredQuery;
|
|
342
|
-
};
|
|
343
|
-
|
|
344
|
-
export var queryConstruct = function queryConstruct(t, tName, operationName) {
|
|
345
|
-
return function (o) {
|
|
346
|
-
return "" + t.toLowerCase() + (operationName ? ' ' + operationName : '') + inspectVariables(buildQuery(tName, o));
|
|
347
|
-
};
|
|
348
|
-
};
|
|
349
|
-
|
|
350
|
-
var fullChainConstruct = function fullChainConstruct(fn) {
|
|
351
|
-
return function (t, tName) {
|
|
352
|
-
return function (o, options) {
|
|
353
|
-
return fn(queryConstruct(t, tName, options == null ? void 0 : options.operationName)(o), options == null ? void 0 : options.variables).then(function (r) {
|
|
354
|
-
seekForAliases(r);
|
|
355
|
-
return r;
|
|
356
|
-
});
|
|
357
|
-
};
|
|
358
|
-
};
|
|
359
|
-
};
|
|
360
|
-
|
|
361
|
-
export var fullChainConstructor = function fullChainConstructor(fn, operation, key) {
|
|
362
|
-
return function (o, options) {
|
|
363
|
-
return fullChainConstruct(fn)(operation, key)(o, options);
|
|
364
|
-
};
|
|
365
|
-
};
|
|
366
|
-
|
|
367
|
-
var fullSubscriptionConstruct = function fullSubscriptionConstruct(fn) {
|
|
368
|
-
return function (t, tName) {
|
|
369
|
-
return function (o, options) {
|
|
370
|
-
return fn(queryConstruct(t, tName, options == null ? void 0 : options.operationName)(o));
|
|
371
|
-
};
|
|
372
|
-
};
|
|
373
|
-
};
|
|
374
|
-
|
|
375
|
-
export var fullSubscriptionConstructor = function fullSubscriptionConstructor(fn, operation, key) {
|
|
376
|
-
return function (o, options) {
|
|
377
|
-
return fullSubscriptionConstruct(fn)(operation, key)(o, options);
|
|
378
|
-
};
|
|
379
|
-
};
|
|
380
|
-
|
|
381
|
-
var seekForAliases = function seekForAliases(response) {
|
|
382
|
-
var traverseAlias = function traverseAlias(value) {
|
|
383
|
-
if (Array.isArray(value)) {
|
|
384
|
-
value.forEach(seekForAliases);
|
|
385
|
-
} else {
|
|
386
|
-
if (typeof value === 'object') {
|
|
387
|
-
seekForAliases(value);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
};
|
|
391
|
-
|
|
392
|
-
if (typeof response === 'object' && response) {
|
|
393
|
-
var keys = Object.keys(response);
|
|
394
|
-
|
|
395
|
-
if (keys.length < 1) {
|
|
396
|
-
return;
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
keys.forEach(function (k) {
|
|
400
|
-
var value = response[k];
|
|
401
|
-
|
|
402
|
-
if (k.indexOf('__alias__') !== -1) {
|
|
403
|
-
var _response$alias;
|
|
404
|
-
|
|
405
|
-
var _k$split = k.split('__alias__'),
|
|
406
|
-
operation = _k$split[0],
|
|
407
|
-
alias = _k$split[1];
|
|
408
|
-
|
|
409
|
-
response[alias] = (_response$alias = {}, _response$alias[operation] = value, _response$alias);
|
|
410
|
-
delete response[k];
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
traverseAlias(value);
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
|
-
};
|
|
417
|
-
|
|
418
|
-
export var $ = function $(t) {
|
|
419
|
-
return "ZEUS_VAR$" + t.join('');
|
|
420
|
-
};
|
|
421
|
-
export var resolverFor = function resolverFor(fn) {
|
|
422
|
-
return fn;
|
|
423
|
-
};
|
|
424
|
-
|
|
425
|
-
var handleFetchResponse = function handleFetchResponse(response) {
|
|
426
|
-
if (!response.ok) {
|
|
427
|
-
return new Promise(function (_, reject) {
|
|
428
|
-
response.text().then(function (text) {
|
|
429
|
-
try {
|
|
430
|
-
reject(JSON.parse(text));
|
|
431
|
-
} catch (err) {
|
|
432
|
-
reject(text);
|
|
433
|
-
}
|
|
434
|
-
}).catch(reject);
|
|
435
|
-
});
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
return response.json();
|
|
439
|
-
};
|
|
440
|
-
|
|
441
|
-
export var apiFetch = function apiFetch(options) {
|
|
442
|
-
return function (query, variables) {
|
|
443
|
-
if (variables === void 0) {
|
|
444
|
-
variables = {};
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
var fetchFunction = fetch;
|
|
448
|
-
var queryString = query;
|
|
449
|
-
var fetchOptions = options[1] || {};
|
|
450
|
-
|
|
451
|
-
if (fetchOptions.method && fetchOptions.method === 'GET') {
|
|
452
|
-
queryString = encodeURIComponent(query);
|
|
453
|
-
return fetchFunction(options[0] + "?query=" + queryString, fetchOptions).then(handleFetchResponse).then(function (response) {
|
|
454
|
-
if (response.errors) {
|
|
455
|
-
throw new GraphQLError(response);
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
return response.data;
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
return fetchFunction("" + options[0], _objectSpread({
|
|
463
|
-
body: JSON.stringify({
|
|
464
|
-
query: queryString,
|
|
465
|
-
variables: variables
|
|
466
|
-
}),
|
|
467
|
-
method: 'POST',
|
|
468
|
-
headers: {
|
|
469
|
-
'Content-Type': 'application/json'
|
|
470
|
-
}
|
|
471
|
-
}, fetchOptions)).then(handleFetchResponse).then(function (response) {
|
|
472
|
-
if (response.errors) {
|
|
473
|
-
throw new GraphQLError(response);
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
return response.data;
|
|
477
|
-
});
|
|
478
|
-
};
|
|
479
|
-
};
|
|
480
|
-
export var apiSubscription = function apiSubscription(options) {
|
|
481
|
-
return function (query) {
|
|
482
|
-
try {
|
|
483
|
-
var _options$, _options$$websocket, _options$2;
|
|
484
|
-
|
|
485
|
-
var queryString = options[0] + '?query=' + encodeURIComponent(query);
|
|
486
|
-
var wsString = queryString.replace('http', 'ws');
|
|
487
|
-
var host = options.length > 1 && ((_options$ = options[1]) == null ? void 0 : (_options$$websocket = _options$.websocket) == null ? void 0 : _options$$websocket[0]) || wsString;
|
|
488
|
-
var webSocketOptions = ((_options$2 = options[1]) == null ? void 0 : _options$2.websocket) || [host];
|
|
489
|
-
|
|
490
|
-
var ws = _construct(WebSocket, webSocketOptions);
|
|
491
|
-
|
|
492
|
-
return {
|
|
493
|
-
ws: ws,
|
|
494
|
-
on: function on(e) {
|
|
495
|
-
ws.onmessage = function (event) {
|
|
496
|
-
if (event.data) {
|
|
497
|
-
var parsed = JSON.parse(event.data);
|
|
498
|
-
var data = parsed.data;
|
|
499
|
-
|
|
500
|
-
if (data) {
|
|
501
|
-
seekForAliases(data);
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
return e(data);
|
|
505
|
-
}
|
|
506
|
-
};
|
|
507
|
-
},
|
|
508
|
-
off: function off(e) {
|
|
509
|
-
ws.onclose = e;
|
|
510
|
-
},
|
|
511
|
-
error: function error(e) {
|
|
512
|
-
ws.onerror = e;
|
|
513
|
-
},
|
|
514
|
-
open: function open(e) {
|
|
515
|
-
ws.onopen = e;
|
|
516
|
-
}
|
|
517
|
-
};
|
|
518
|
-
} catch (_unused) {
|
|
519
|
-
throw new Error('No websockets implemented');
|
|
520
|
-
}
|
|
521
|
-
};
|
|
522
|
-
};
|
|
523
|
-
export var Thunder = function Thunder(fn) {
|
|
524
|
-
return {
|
|
525
|
-
query: fullChainConstructor(fn, 'query', 'Query'),
|
|
526
|
-
mutation: fullChainConstructor(fn, 'mutation', 'Mutation')
|
|
527
|
-
};
|
|
528
|
-
};
|
|
529
|
-
export var Chain = function Chain() {
|
|
530
|
-
for (var _len = arguments.length, options = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
531
|
-
options[_key] = arguments[_key];
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
return {
|
|
535
|
-
query: fullChainConstructor(apiFetch(options), 'query', 'Query'),
|
|
536
|
-
mutation: fullChainConstructor(apiFetch(options), 'mutation', 'Mutation')
|
|
537
|
-
};
|
|
538
|
-
};
|
|
539
|
-
export var Zeus = {
|
|
540
|
-
query: function query(o, operationName) {
|
|
541
|
-
return queryConstruct('query', 'Query', operationName)(o);
|
|
542
|
-
},
|
|
543
|
-
mutation: function mutation(o, operationName) {
|
|
544
|
-
return queryConstruct('mutation', 'Mutation', operationName)(o);
|
|
545
|
-
}
|
|
546
|
-
};
|
|
547
|
-
export var Selectors = {
|
|
548
|
-
query: ZeusSelect(),
|
|
549
|
-
mutation: ZeusSelect()
|
|
550
|
-
};
|
|
551
|
-
export var Gql = Chain('https://api.dev.secrecy.me/graphql');
|
|
552
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy96ZXVzL2luZGV4LnRzIl0sIm5hbWVzIjpbIkFsbFR5cGVzUHJvcHMiLCJSZXR1cm5UeXBlcyIsIkxhbmciLCJQbGFuS2luZCIsIlVzZXJSb2xlIiwiTWFpbFR5cGUiLCJSaWdodHMiLCJGaWxlQ29udGVudFR5cGUiLCJQYXlJbnB1dFR5cGUiLCJHcmFwaFFMRXJyb3IiLCJyZXNwb25zZSIsImNvbnNvbGUiLCJlcnJvciIsInRvU3RyaW5nIiwiRXJyb3IiLCJaZXVzU2VsZWN0IiwidCIsIlNjYWxhclJlc29sdmVyIiwic2NhbGFyIiwidmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwiVHlwZXNQcm9wc1Jlc29sdmVyIiwidHlwZSIsIm5hbWUiLCJrZXkiLCJibG9ja0FycmF5cyIsInJlc29sdmVkVmFsdWUiLCJ0eXBlUmVzb2x2ZWQiLCJpc0FycmF5IiwiYXJyYXkiLCJpc0FycmF5UmVxdWlyZWQiLCJhcnJheVJlcXVpcmVkIiwic3RhcnRzV2l0aCIsImlzUmVxdWlyZWQiLCJyZXF1aXJlZCIsInNwbGl0IiwibWFwIiwidiIsImpvaW4iLCJyZXNsb3ZlZFNjYWxhciIsInJlc29sdmVkVHlwZSIsImFyZ3NLZXlzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImFrIiwidW5kZWZpbmVkIiwiaXNBcnJheUZ1bmN0aW9uIiwicGFyZW50IiwiYSIsInZhbHVlcyIsInIiLCJtYWluS2V5Iiwia2V5VmFsdWVzIiwiayIsImxlbmd0aCIsInRyYXZlcnNlVG9TZWVrQXJyYXlzIiwic3BsaWNlIiwidHlwZVJlc29sdmVyS2V5IiwidmFsdWVUb1Jlc29sdmUiLCJhcmd1bWVudFN0cmluZyIsInJlc29sdmVLViIsIm9iamVjdFRvVHJlZSIsIm8iLCJiIiwiQXJyYXkiLCJmb3JFYWNoIiwiYWxpYXNLZXkiLCJhbGlhc09wZXJhdGlvbnMiLCJhbGlhc09wZXJhdGlvbk5hbWUiLCJhbGlhc09wZXJhdGlvbiIsImJ1aWxkUXVlcnkiLCJpbnNwZWN0VmFyaWFibGVzIiwicXVlcnkiLCJyZWdleCIsInJlc3VsdCIsIkFsbFZhcmlhYmxlcyIsImV4ZWMiLCJpbmNsdWRlcyIsInB1c2giLCJmaWx0ZXJlZFF1ZXJ5IiwidmFyaWFibGUiLCJyZXBsYWNlIiwidmFyaWFibGVOYW1lIiwidmFyaWFibGVUeXBlIiwicXVlcnlDb25zdHJ1Y3QiLCJ0TmFtZSIsIm9wZXJhdGlvbk5hbWUiLCJ0b0xvd2VyQ2FzZSIsImZ1bGxDaGFpbkNvbnN0cnVjdCIsImZuIiwib3B0aW9ucyIsInZhcmlhYmxlcyIsInRoZW4iLCJzZWVrRm9yQWxpYXNlcyIsImZ1bGxDaGFpbkNvbnN0cnVjdG9yIiwib3BlcmF0aW9uIiwiZnVsbFN1YnNjcmlwdGlvbkNvbnN0cnVjdCIsImZ1bGxTdWJzY3JpcHRpb25Db25zdHJ1Y3RvciIsInRyYXZlcnNlQWxpYXMiLCJpbmRleE9mIiwiYWxpYXMiLCIkIiwicmVzb2x2ZXJGb3IiLCJoYW5kbGVGZXRjaFJlc3BvbnNlIiwib2siLCJQcm9taXNlIiwiXyIsInJlamVjdCIsInRleHQiLCJwYXJzZSIsImVyciIsImNhdGNoIiwianNvbiIsImFwaUZldGNoIiwiZmV0Y2hGdW5jdGlvbiIsImZldGNoIiwicXVlcnlTdHJpbmciLCJmZXRjaE9wdGlvbnMiLCJtZXRob2QiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlcnJvcnMiLCJkYXRhIiwiYm9keSIsImhlYWRlcnMiLCJhcGlTdWJzY3JpcHRpb24iLCJ3c1N0cmluZyIsImhvc3QiLCJ3ZWJzb2NrZXQiLCJ3ZWJTb2NrZXRPcHRpb25zIiwid3MiLCJXZWJTb2NrZXQiLCJvbiIsImUiLCJvbm1lc3NhZ2UiLCJldmVudCIsInBhcnNlZCIsIm9mZiIsIm9uY2xvc2UiLCJvbmVycm9yIiwib3BlbiIsIm9ub3BlbiIsIlRodW5kZXIiLCJtdXRhdGlvbiIsIkNoYWluIiwiWmV1cyIsIlNlbGVjdG9ycyIsIkdxbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFQSxTQUFTQSxhQUFULEVBQXdCQyxXQUF4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RWhELG9CQUFvQixDQUFDbUIsUUFBUSxDQUFDdkIsT0FBRCxDQUFULEVBQW1CLFVBQW5CLEVBQStCLFVBQS9CO0FBRnNCLEdBQS9CO0FBQUEsQ0FBZDtBQUlQLE9BQU8sSUFBTXNELElBQUksR0FBRztBQUNsQnhFLEVBQUFBLEtBQUssRUFBRSxlQUFDVixDQUFELEVBQXdCd0IsYUFBeEI7QUFBQSxXQUFtREYsY0FBYyxDQUFDLE9BQUQsRUFBVSxPQUFWLEVBQW1CRSxhQUFuQixDQUFkLENBQWdEeEIsQ0FBaEQsQ0FBbkQ7QUFBQSxHQURXO0FBRXBCZ0YsRUFBQUEsUUFBUSxFQUFFLGtCQUFDaEYsQ0FBRCxFQUEyQndCLGFBQTNCO0FBQUEsV0FBc0RGLGNBQWMsQ0FBQyxVQUFELEVBQWEsVUFBYixFQUF5QkUsYUFBekIsQ0FBZCxDQUFzRHhCLENBQXRELENBQXREO0FBQUE7QUFGVSxDQUFiO0FBSVAsT0FBTyxJQUFNbUYsU0FBUyxHQUFHO0FBQ3ZCekUsRUFBQUEsS0FBSyxFQUFFM0QsVUFBVSxFQURNO0FBRXpCaUksRUFBQUEsUUFBUSxFQUFFakksVUFBVTtBQUZLLENBQWxCO0FBTVAsT0FBTyxJQUFNcUksR0FBRyxHQUFHSCxLQUFLLENBQUMsb0NBQUQsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQgeyBBbGxUeXBlc1Byb3BzLCBSZXR1cm5UeXBlcyB9IGZyb20gJy4vY29uc3QuanMnO1xudHlwZSBaRVVTX0lOVEVSRkFDRVMgPSBHcmFwaFFMVHlwZXNbXCJGaWxlQ29udGVudEJhc2VcIl1cbnR5cGUgWkVVU19VTklPTlMgPSBHcmFwaFFMVHlwZXNbXCJGaWxlQ29udGVudFwiXVxuXG5leHBvcnQgdHlwZSBWYWx1ZVR5cGVzID0ge1xuICAgIC8qKiBUaGUgYEJpZ0ludGAgc2NhbGFyIHR5cGUgcmVwcmVzZW50cyBub24tZnJhY3Rpb25hbCBzaWduZWQgd2hvbGUgbnVtZXJpYyB2YWx1ZXMuXG5Ac2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0JpZ0ludCAqL1xuW1wiQmlnSW50XCJdOnVua25vd247XG5cdC8qKiBUaGUgYEJ5dGVgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgYnl0ZSB2YWx1ZSBhcyBhIEJ1ZmZlciAqL1xuW1wiQnl0ZXNcIl06dW5rbm93bjtcblx0LyoqIEEgZGF0ZS10aW1lIHN0cmluZyBhdCBVVEMsIHN1Y2ggYXMgMjAwNy0xMi0wM1QxMDoxNTozMFosIGNvbXBsaWFudCB3aXRoIHRoZSBgZGF0ZS10aW1lYCBmb3JtYXQgb3V0bGluZWQgaW4gc2VjdGlvbiA1LjYgb2YgdGhlIFJGQyAzMzM5IHByb2ZpbGUgb2YgdGhlIElTTyA4NjAxIHN0YW5kYXJkIGZvciByZXByZXNlbnRhdGlvbiBvZiBkYXRlcyBhbmQgdGltZXMgdXNpbmcgdGhlIEdyZWdvcmlhbiBjYWxlbmRhci4gKi9cbltcIkRhdGVUaW1lXCJdOnVua25vd247XG5cdC8qKiBBbiBhcmJpdHJhcnktcHJlY2lzaW9uIERlY2ltYWwgdHlwZSAqL1xuW1wiRGVjaW1hbFwiXTp1bmtub3duO1xuXHQvKiogVGhlIGBKU09OT2JqZWN0YCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIEpTT04gb2JqZWN0cyBhcyBzcGVjaWZpZWQgYnkgW0VDTUEtNDA0XShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvcHVibGljYXRpb25zL2ZpbGVzL0VDTUEtU1QvRUNNQS00MDQucGRmKS4gKi9cbltcIkpzb25cIl06dW5rbm93bjtcblx0W1wiTGFuZ1wiXTpMYW5nO1xuXHRbXCJQbGFuS2luZFwiXTpQbGFuS2luZDtcblx0W1wiVXNlclJvbGVcIl06VXNlclJvbGU7XG5cdFtcIk1haWxUeXBlXCJdOk1haWxUeXBlO1xuXHRbXCJSaWdodHNcIl06UmlnaHRzO1xuXHRbXCJGaWxlXCJdOiBBbGlhc1R5cGU8e1xuXHRpZD86dHJ1ZSxcblx0c2l6ZT86dHJ1ZSxcblx0c2l6ZUJlZm9yZT86dHJ1ZSxcblx0Y3JlYXRlZEF0Pzp0cnVlLFxuXHR2RmlsZXM/OlZhbHVlVHlwZXNbXCJWRmlsZVwiXSxcblx0dkZpbGVzQ3VycmVudD86VmFsdWVUeXBlc1tcIlZGaWxlXCJdLFxuXHR1c2Vycz86VmFsdWVUeXBlc1tcIkZpbGVzT25Vc2Vyc09uQXBwbGljYXRpb25zXCJdLFxuXHRtZDU/OnRydWUsXG5cdG1kNUVuY3J5cHRlZD86dHJ1ZSxcblx0ZGVsZXRlZEF0Pzp0cnVlLFxuXHR1c2VyQXBwPzpWYWx1ZVR5cGVzW1wiQXBwbGljYXRpb25zT25Vc2Vyc1wiXSxcblx0bWFpbHM/OlZhbHVlVHlwZXNbXCJGaWxlc09uTWFpbHNcIl0sXG5cdHZhbGlkYXRlZEF0Pzp0cnVlLFxuXHR1c2VyPzpWYWx1ZVR5cGVzW1wiRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl0sXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJGaWxlUGFydFwiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdGZpbGU/OlZhbHVlVHlwZXNbXCJGaWxlXCJdLFxuXHRmaWxlSWQ/OnRydWUsXG5cdHNpemU/OnRydWUsXG5cdG9yZGVyPzp0cnVlLFxuXHRtZDU/OnRydWUsXG5cdHZhbGlkYXRlZEF0Pzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZUNvbnRlbnRUeXBlXCJdOkZpbGVDb250ZW50VHlwZTtcblx0W1wiRmlsZUNvbnRlbnRQYXJ0XCJdOiBBbGlhc1R5cGU8e1xuXHRjb250ZW50VXJsPzp0cnVlLFxuXHRvcmRlcj86dHJ1ZSxcblx0bWQ1Pzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZUNvbnRlbnRCYXNlXCJdOkFsaWFzVHlwZTx7XG5cdFx0cGFydHM/OlZhbHVlVHlwZXNbXCJGaWxlQ29udGVudFBhcnRcIl0sXG5cdGtleT86dHJ1ZSxcblx0bWQ1Pzp0cnVlLFxuXHRtZDVFbmNyeXB0ZWQ/OnRydWUsXG5cdHRvdGFsU2l6ZT86dHJ1ZSxcblx0dHlwZT86dHJ1ZTtcblx0XHRbJy4uLm9uIEZpbGVDb250ZW50Q2xvdWQnXT86IE9taXQ8VmFsdWVUeXBlc1tcIkZpbGVDb250ZW50Q2xvdWRcIl0sa2V5b2YgVmFsdWVUeXBlc1tcIkZpbGVDb250ZW50QmFzZVwiXT47XG5cdFx0WycuLi5vbiBGaWxlQ29udGVudFNlbnRNYWlsJ10/OiBPbWl0PFZhbHVlVHlwZXNbXCJGaWxlQ29udGVudFNlbnRNYWlsXCJdLGtleW9mIFZhbHVlVHlwZXNbXCJGaWxlQ29udGVudEJhc2VcIl0+O1xuXHRcdFsnLi4ub24gRmlsZUNvbnRlbnRSZWNlaXZlZE1haWwnXT86IE9taXQ8VmFsdWVUeXBlc1tcIkZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCJdLGtleW9mIFZhbHVlVHlwZXNbXCJGaWxlQ29udGVudEJhc2VcIl0+O1xuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZUNvbnRlbnRDbG91ZFwiXTogQWxpYXNUeXBlPHtcblx0cGFydHM/OlZhbHVlVHlwZXNbXCJGaWxlQ29udGVudFBhcnRcIl0sXG5cdGtleT86dHJ1ZSxcblx0bWQ1Pzp0cnVlLFxuXHRtZDVFbmNyeXB0ZWQ/OnRydWUsXG5cdHRvdGFsU2l6ZT86dHJ1ZSxcblx0dHlwZT86dHJ1ZSxcblx0cHVibGljS2V5Pzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZUNvbnRlbnRTZW50TWFpbFwiXTogQWxpYXNUeXBlPHtcblx0cGFydHM/OlZhbHVlVHlwZXNbXCJGaWxlQ29udGVudFBhcnRcIl0sXG5cdGtleT86dHJ1ZSxcblx0bWQ1Pzp0cnVlLFxuXHRtZDVFbmNyeXB0ZWQ/OnRydWUsXG5cdHRvdGFsU2l6ZT86dHJ1ZSxcblx0dHlwZT86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIkZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCJdOiBBbGlhc1R5cGU8e1xuXHRwYXJ0cz86VmFsdWVUeXBlc1tcIkZpbGVDb250ZW50UGFydFwiXSxcblx0a2V5Pzp0cnVlLFxuXHRtZDU/OnRydWUsXG5cdG1kNUVuY3J5cHRlZD86dHJ1ZSxcblx0dG90YWxTaXplPzp0cnVlLFxuXHR0eXBlPzp0cnVlLFxuXHRzZW5kZXJQdWJsaWNLZXk/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJGaWxlQ29udGVudFwiXTogQWxpYXNUeXBlPHtcdFx0W1wiLi4ub24gRmlsZUNvbnRlbnRDbG91ZFwiXSA6IFZhbHVlVHlwZXNbXCJGaWxlQ29udGVudENsb3VkXCJdLFxuXHRcdFtcIi4uLm9uIEZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCJdIDogVmFsdWVUeXBlc1tcIkZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCJdLFxuXHRcdFtcIi4uLm9uIEZpbGVDb250ZW50U2VudE1haWxcIl0gOiBWYWx1ZVR5cGVzW1wiRmlsZUNvbnRlbnRTZW50TWFpbFwiXVxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZVJlc3BvbnNlXCJdOiBBbGlhc1R5cGU8e1xuXHRmaWxlSWQ/OnRydWUsXG5cdHBhcnRzPzpWYWx1ZVR5cGVzW1wiRmlsZVBhcnRSZXNwb25zZVwiXSxcblx0ZmlsZVBhcnRTaXplPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZVBhcnRSZXNwb25zZVwiXTogQWxpYXNUeXBlPHtcblx0ZmllbGRzPzp0cnVlLFxuXHR1cmw/OnRydWUsXG5cdG9yZGVyPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZVNoYXJlZFwiXTogQWxpYXNUeXBlPHtcblx0dXNlcklkPzp0cnVlLFxuXHRtZXNzYWdlPzp0cnVlLFxuXHRhcHBJZD86dHJ1ZSxcblx0aWQ/OnRydWUsXG5cdGZpbGVuYW1lPzp0cnVlLFxuXHRzaXplPzp0cnVlLFxuXHRzaXplQmVmb3JlPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZVNoYXJlZENvbnRlbnRcIl06IEFsaWFzVHlwZTx7XG5cdG93bmVySWQ/OnRydWUsXG5cdHB1YktleT86dHJ1ZSxcblx0bWVzc2FnZT86dHJ1ZSxcblx0YXBwSWQ/OnRydWUsXG5cdGlkPzp0cnVlLFxuXHR0eXBlPzp0cnVlLFxuXHRmaWxlbmFtZT86dHJ1ZSxcblx0Y29udGVudFVybD86dHJ1ZSxcblx0a2V5Pzp0cnVlLFxuXHRzaXplPzp0cnVlLFxuXHRzaXplQmVmb3JlPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiQ2xvdWRMaW1pdHNcIl06IEFsaWFzVHlwZTx7XG5cdHNpemU/OnRydWUsXG5cdG1heFNpemU/OnRydWUsXG5cdGNvdW50Pzp0cnVlLFxuXHRtYXhDb3VudD86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIk1haWxMaW1pdHNWYWx1ZXNcIl06IEFsaWFzVHlwZTx7XG5cdGNvdW50Pzp0cnVlLFxuXHRtYXhDb3VudD86dHJ1ZSxcblx0ZmlsZUNvdW50Pzp0cnVlLFxuXHRtYXhGaWxlQ291bnQ/OnRydWUsXG5cdGZpbGVTaXplPzp0cnVlLFxuXHRtYXhGaWxlU2l6ZT86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIlVzZXJNYWlsTGltaXRzXCJdOiBBbGlhc1R5cGU8e1xuXHRzZW50PzpWYWx1ZVR5cGVzW1wiTWFpbExpbWl0c1ZhbHVlc1wiXSxcblx0cmVjZWl2ZWQ/OlZhbHVlVHlwZXNbXCJNYWlsTGltaXRzVmFsdWVzXCJdLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiUXVlcnlMaW1pdHNcIl06IEFsaWFzVHlwZTx7XG5cdGNsb3VkPzpWYWx1ZVR5cGVzW1wiQ2xvdWRMaW1pdHNcIl0sXG5cdG1haWw/OlZhbHVlVHlwZXNbXCJVc2VyTWFpbExpbWl0c1wiXSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIkxpbWl0c1wiXTogQWxpYXNUeXBlPHtcblx0ZG93bmxvYWRCYW5kd2lkdGg/OnRydWUsXG5cdGRvd25sb2FkQ291bnQ/OnRydWUsXG5cdGhhcmRGaWxlQ291bnQ/OnRydWUsXG5cdGhhcmRGaWxlU2l6ZT86dHJ1ZSxcblx0cGVyRmlsZVNpemU/OnRydWUsXG5cdHJlY2VpdmVkTWFpbHM/OlZhbHVlVHlwZXNbXCJNYWlsTGltaXRzXCJdLFxuXHRzZW50TWFpbHM/OlZhbHVlVHlwZXNbXCJNYWlsTGltaXRzXCJdLFxuXHR1cGxvYWRCYW5kd2lkdGg/OnRydWUsXG5cdHVwbG9hZENvdW50Pzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiTWFpbExpbWl0c1wiXTogQWxpYXNUeXBlPHtcblx0Y291bnQ/OnRydWUsXG5cdGZpbGVDb3VudD86dHJ1ZSxcblx0ZmlsZVNpemU/OnRydWUsXG5cdGhhcmRDb3VudD86dHJ1ZSxcblx0aGFyZEZpbGVDb3VudD86dHJ1ZSxcblx0aGFyZEZpbGVTaXplPzp0cnVlLFxuXHRwZXJGaWxlU2l6ZT86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIlVzZXJcIl06IEFsaWFzVHlwZTx7XG5cdGlkPzp0cnVlLFxuXHRkZWxldGVkQXQ/OnRydWUsXG5cdGxhbmc/OnRydWUsXG5cdHJlcG9ydFNlbnQ/OlZhbHVlVHlwZXNbXCJSZXBvcnRcIl0sXG5cdGdvZEZhdGhlcj86VmFsdWVUeXBlc1tcIlVzZXJcIl0sXG5cdGdvZENoaWxkcmVuPzpWYWx1ZVR5cGVzW1wiVXNlclwiXSxcblx0Zmlyc3RuYW1lPzp0cnVlLFxuXHRsYXN0bmFtZT86dHJ1ZSxcblx0ZW1haWw/OnRydWUsXG5cdHBob25lPzp0cnVlLFxuXHRsYXN0TG9naW4/OnRydWUsXG5cdHJvbGU/OnRydWUsXG5cdHNlc3Npb25zPzpWYWx1ZVR5cGVzW1wiVXNlclNlc3Npb25cIl0sXG5cdGNyZWF0ZWRBdD86dHJ1ZSxcblx0cmVjZWl2ZWRNYWlscz86VmFsdWVUeXBlc1tcIk1haWxcIl0sXG5cdHdhaXRpbmdSZWNlaXZlZE1haWxzPzpWYWx1ZVR5cGVzW1wiV2FpdGluZ1JlY2VpdmVkTWFpbFwiXSxcblx0c2VudE1haWxzPzpWYWx1ZVR5cGVzW1wiTWFpbFwiXSxcblx0ZHJhZnRNYWlscz86VmFsdWVUeXBlc1tcIk1haWxcIl0sXG5cdGFwcFNldHRpbmdzPzpWYWx1ZVR5cGVzW1wiVXNlckFwcFNldHRpbmdzXCJdLFxuXHRhcHBsaWNhdGlvbnM/OlZhbHVlVHlwZXNbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdLFxuXHRwdWJsaWNLZXk/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJNYWlsXCJdOiBBbGlhc1R5cGU8e1xuXHRpZD86dHJ1ZSxcblx0YXBwPzpWYWx1ZVR5cGVzW1wiQXBwbGljYXRpb25cIl0sXG5cdGJvZHk/OnRydWUsXG5cdGNyZWF0ZWRBdD86dHJ1ZSxcblx0ZGVsZXRlZEF0Pzp0cnVlLFxuXHRmaWxlcz86VmFsdWVUeXBlc1tcIkZpbGVzT25NYWlsc1wiXSxcblx0bWFpbEludGVncml0eT86VmFsdWVUeXBlc1tcIk1haWxJbnRlZ3JpdHlcIl0sXG5cdG1haWxJbnRlZ3JpdHlEcmFmdD86VmFsdWVUeXBlc1tcIk1haWxJbnRlZ3JpdHlEcmFmdFwiXSxcblx0b3BlbmVkQXQ/OnRydWUsXG5cdHJlY2lwaWVudD86VmFsdWVUeXBlc1tcIlVzZXJcIl0sXG5cdHNlbmRlcj86VmFsdWVUeXBlc1tcIlVzZXJcIl0sXG5cdHN1YmplY3Q/OnRydWUsXG5cdHR5cGU/OnRydWUsXG5cdHJlY2lwaWVudHM/OlZhbHVlVHlwZXNbXCJVc2VyXCJdLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiTWFpbEludGVncml0eVwiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdGhhc2g/OnRydWUsXG5cdGhhc2hLZXk/OnRydWUsXG5cdGFuc3dlcnM/OlZhbHVlVHlwZXNbXCJNYWlsSW50ZWdyaXR5XCJdLFxuXHRhcHA/OlZhbHVlVHlwZXNbXCJBcHBsaWNhdGlvblwiXSxcblx0bWFpbHM/OlZhbHVlVHlwZXNbXCJNYWlsXCJdLFxuXHRyZWNpcGllbnRzPzpWYWx1ZVR5cGVzW1wiVXNlclwiXSxcblx0dGVtcG9yYXJ5UmVjaXBpZW50cz86VmFsdWVUeXBlc1tcIlRlbXBvcmFyeVVzZXJcIl0sXG5cdHJlcGx5VG8/OlZhbHVlVHlwZXNbXCJNYWlsSW50ZWdyaXR5XCJdLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZXNPbk1haWxzXCJdOiBBbGlhc1R5cGU8e1xuXHRmaWxlPzpWYWx1ZVR5cGVzW1wiRmlsZVwiXSxcblx0ZmlsZUtleT86dHJ1ZSxcblx0ZmlsZW5hbWU/OnRydWUsXG5cdG1haWw/OlZhbHVlVHlwZXNbXCJNYWlsXCJdLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl06IEFsaWFzVHlwZTx7XG5cdGZpbGU/OlZhbHVlVHlwZXNbXCJGaWxlXCJdLFxuXHR1c2VyQXBwPzpWYWx1ZVR5cGVzW1wiQXBwbGljYXRpb25zT25Vc2Vyc1wiXSxcblx0LyoqIEVuY3J5cHRlZCB3aXRoIFVzZXJBcHAga2V5cyAqL1xuXHRrZXk/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJWRmlsZVwiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdGlzRmF2b3JpdGU/OnRydWUsXG5cdGNyZWF0ZWRBdD86dHJ1ZSxcblx0ZGVsZXRlZEF0Pzp0cnVlLFxuXHRmaWxlbmFtZT86dHJ1ZSxcblx0dXNlckFwcHM/OlZhbHVlVHlwZXNbXCJWRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl0sXG5cdGNyZWF0ZWRCeT86VmFsdWVUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0sXG5cdHVzZXJBcHA/OlZhbHVlVHlwZXNbXCJWRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl0sXG5cdGZvbGRlcj86VmFsdWVUeXBlc1tcIkZvbGRlclwiXSxcblx0aGlzdG9yeT86VmFsdWVUeXBlc1tcIkZpbGVcIl0sXG5cdGN1cnJlbnQ/OlZhbHVlVHlwZXNbXCJGaWxlXCJdLFxuXHR1cGRhdGVkQXQ/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJGb2xkZXJCcmVhZGNydW1iSXRlbVwiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdG5hbWU/OnRydWUsXG5cdHB1YktleT86dHJ1ZSxcblx0bmFtZUtleT86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIkZvbGRlclwiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdGlzRmF2b3JpdGU/OnRydWUsXG5cdGNyZWF0ZWRBdD86dHJ1ZSxcblx0ZGVsZXRlZEF0Pzp0cnVlLFxuXHR1cGRhdGVkQXQ/OnRydWUsXG5cdGNyZWF0ZWRCeT86VmFsdWVUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0sXG5cdHVzZXJBcHBzPzpWYWx1ZVR5cGVzW1wiRm9sZGVyc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXSxcblx0dXNlckFwcD86VmFsdWVUeXBlc1tcIkZvbGRlcnNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl0sXG5cdG5hbWU/OnRydWUsXG5cdHBhcmVudEZvbGRlcj86VmFsdWVUeXBlc1tcIkZvbGRlclwiXSxcblx0c3ViZm9sZGVycz86VmFsdWVUeXBlc1tcIkZvbGRlclwiXSxcblx0dkZpbGVzPzpWYWx1ZVR5cGVzW1wiVkZpbGVcIl0sXG5cdGJyZWFkY3J1bWI/OlZhbHVlVHlwZXNbXCJGb2xkZXJCcmVhZGNydW1iSXRlbVwiXSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIkFwcGxpY2F0aW9uXCJdOiBBbGlhc1R5cGU8e1xuXHRpZD86dHJ1ZSxcblx0bmFtZT86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl06IEFsaWFzVHlwZTx7XG5cdGZha2VVc2VySWQ/OnRydWUsXG5cdGtleVBhaXI/OlZhbHVlVHlwZXNbXCJBcHBLZXlQYWlyXCJdLFxuXHRzZXNzaW9ucz86VmFsdWVUeXBlc1tcIkFwcFNlc3Npb25cIl0sXG5cdGFwcD86VmFsdWVUeXBlc1tcIkFwcGxpY2F0aW9uXCJdLFxuXHR1c2VyPzpWYWx1ZVR5cGVzW1wiVXNlclwiXSxcblx0Zm9sZGVycz86VmFsdWVUeXBlc1tcIkZvbGRlcnNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl0sXG5cdHNldHRpbmdzPzpWYWx1ZVR5cGVzW1wiVXNlckFwcFNldHRpbmdzXCJdLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiQXBwS2V5UGFpclwiXTogQWxpYXNUeXBlPHtcblx0cHViPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRm9sZGVyU2l6ZVwiXTogQWxpYXNUeXBlPHtcblx0c2l6ZT86dHJ1ZSxcblx0c2l6ZUJlZm9yZT86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIlVzZXJTZXNzaW9uXCJdOiBBbGlhc1R5cGU8e1xuXHRpZD86dHJ1ZSxcblx0YXBwU2Vzc2lvbnM/OlZhbHVlVHlwZXNbXCJBcHBTZXNzaW9uXCJdLFxuXHRsYXN0QWN0aXZpdHk/OnRydWUsXG5cdHVzZXJBZ2VudD86dHJ1ZSxcblx0aXA/OnRydWUsXG5cdGNpdHk/OnRydWUsXG5cdGNvdW50cnk/OnRydWUsXG5cdGNyZWF0ZWRBdD86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIkFwcFNlc3Npb25cIl06IEFsaWFzVHlwZTx7XG5cdGlkPzp0cnVlLFxuXHRsYXN0QWN0aXZpdHk/OnRydWUsXG5cdHVzZXJBZ2VudD86dHJ1ZSxcblx0aXA/OnRydWUsXG5cdGNpdHk/OnRydWUsXG5cdGNvdW50cnk/OnRydWUsXG5cdHVzZXJTZXNzaW9uPzpWYWx1ZVR5cGVzW1wiVXNlclNlc3Npb25cIl0sXG5cdHVzZXJBcHA/OlZhbHVlVHlwZXNbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdLFxuXHRjcmVhdGVkQXQ/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJVc2VyQXBwU2V0dGluZ3NcIl06IEFsaWFzVHlwZTx7XG5cdGlkPzp0cnVlLFxuXHRjbG91ZEZpbGVEYXlzRm9yRGVsZXRlPzp0cnVlLFxuXHRjbG91ZEZvbGRlckRheXNGb3JEZWxldGU/OnRydWUsXG5cdGhpc3RvcnlGaWxlRGF5c0ZvckRlbGV0ZT86dHJ1ZSxcblx0aGlzdG9yeU1heEZpbGVDb3VudD86dHJ1ZSxcblx0YXV0b0Rpc2Nvbm5lY3REZWxheT86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIk1haWxGaWxlSW5wdXRcIl06IHtcblx0aWQ6c3RyaW5nLFxuXHRuYW1lOnN0cmluZyxcblx0ZmlsZUtleTpzdHJpbmdcbn07XG5cdFtcIk1haWxSZWNpcGllbnRJbnB1dFwiXToge1xuXHRib2R5OnN0cmluZyxcblx0c3ViamVjdDpzdHJpbmcsXG5cdHJlY2lwaWVudElkOnN0cmluZyxcblx0ZmlsZXM6VmFsdWVUeXBlc1tcIk1haWxGaWxlSW5wdXRcIl1bXVxufTtcblx0W1wiU2hhcmVGaWxlS2V5SW5wdXRcIl06IHtcblx0aWQ6c3RyaW5nLFxuXHRrZXk6c3RyaW5nXG59O1xuXHRbXCJOYW1lS2V5SW5wdXRcIl06IHtcblx0aWQ6c3RyaW5nLFxuXHRuYW1lS2V5OnN0cmluZyxcblx0ZmlsZXM6VmFsdWVUeXBlc1tcIlNoYXJlRmlsZUtleUlucHV0XCJdW11cbn07XG5cdFtcIk5hbWVLZXlJbnB1dEZvbGRlcnNcIl06IHtcblx0aWQ6c3RyaW5nLFxuXHRuYW1lS2V5OnN0cmluZ1xufTtcblx0W1wiU2hhcmVGb2xkZXJzSW5wdXRcIl06IHtcblx0Zm9sZGVyczpWYWx1ZVR5cGVzW1wiTmFtZUtleUlucHV0Rm9sZGVyc1wiXVtdLFxuXHR2RmlsZXM6VmFsdWVUeXBlc1tcIk5hbWVLZXlJbnB1dFwiXVtdXG59O1xuXHRbXCJTaGFyZUZpbGVJbkhpc3RvcnlJbnB1dFwiXToge1xuXHRmaWxlSWQ6c3RyaW5nLFxuXHR1c2VyczpWYWx1ZVR5cGVzW1wiU2hhcmVGaWxlS2V5SW5wdXRcIl1bXVxufTtcblx0W1wiUGF5SW5wdXRUeXBlXCJdOlBheUlucHV0VHlwZTtcblx0W1wiUGF5SW5wdXRcIl06IHtcblx0dHlwZTpWYWx1ZVR5cGVzW1wiUGF5SW5wdXRUeXBlXCJdLFxuXHR0b2tlbjpzdHJpbmcsXG5cdGZpcnN0TmFtZTpzdHJpbmcsXG5cdGxhc3ROYW1lOnN0cmluZyxcblx0c3RyZWV0OnN0cmluZyxcblx0cG9zdGFsQ29kZTpzdHJpbmcsXG5cdGNpdHk6c3RyaW5nLFxuXHRjb3VudHJ5OnN0cmluZyxcblx0bnVtYmVyOnN0cmluZyxcblx0bW9udGg6c3RyaW5nLFxuXHR5ZWFyOnN0cmluZyxcblx0Y3Z2OnN0cmluZ1xufTtcblx0W1wiV2FpdGluZ1JlY2VpdmVkTWFpbFwiXTogQWxpYXNUeXBlPHtcblx0c2VuZGVyPzpWYWx1ZVR5cGVzW1wiVXNlclwiXSxcblx0ZGF0ZT86dHJ1ZSxcblx0cmVjaXBpZW50cz86VmFsdWVUeXBlc1tcIlVzZXJcIl0sXG5cdHRlbXBvcmFyeVJlY2lwaWVudHM/OlZhbHVlVHlwZXNbXCJUZW1wb3JhcnlVc2VyXCJdLFxuXHRhdHRhY2htZW50c0NvdW50Pzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiVGVtcG9yYXJ5VXNlclwiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdG1haWxzPzpWYWx1ZVR5cGVzW1wiTWFpbEludGVncml0eVwiXSxcblx0ZHJhZnRNYWlscz86VmFsdWVUeXBlc1tcIk1haWxJbnRlZ3JpdHlEcmFmdFwiXSxcblx0ZW1haWw/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJNYWlsSW50ZWdyaXR5RHJhZnRcIl06IEFsaWFzVHlwZTx7XG5cdGlkPzp0cnVlLFxuXHRoYXNoPzp0cnVlLFxuXHRoYXNoS2V5Pzp0cnVlLFxuXHRhcHA/OlZhbHVlVHlwZXNbXCJBcHBsaWNhdGlvblwiXSxcblx0bWFpbD86VmFsdWVUeXBlc1tcIk1haWxcIl0sXG5cdHJlY2lwaWVudHM/OlZhbHVlVHlwZXNbXCJVc2VyXCJdLFxuXHR0ZW1wb3JhcnlSZWNpcGllbnRzPzpWYWx1ZVR5cGVzW1wiVGVtcG9yYXJ5VXNlclwiXSxcblx0cmVwbHlUbz86VmFsdWVUeXBlc1tcIk1haWxJbnRlZ3JpdHlcIl0sXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJGYXFcIl06IEFsaWFzVHlwZTx7XG5cdGlkPzp0cnVlLFxuXHRvcmRlcj86dHJ1ZSxcblx0ZW50cmllcz86VmFsdWVUeXBlc1tcIkZhcUVudHJ5XCJdLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRmFxRW50cnlcIl06IEFsaWFzVHlwZTx7XG5cdGlkPzp0cnVlLFxuXHRsYW5nPzp0cnVlLFxuXHRxdWVzdGlvbj86dHJ1ZSxcblx0YW5zd2VyPzp0cnVlLFxuXHRmYXE/OlZhbHVlVHlwZXNbXCJGYXFcIl0sXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJQbGFuXCJdOiBBbGlhc1R5cGU8e1xuXHRpZD86dHJ1ZSxcblx0a2luZD86dHJ1ZSxcblx0Y29kZXM/OnRydWUsXG5cdGxpbWl0cz86VmFsdWVUeXBlc1tcIkxpbWl0c1wiXSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIlJlcG9ydFwiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdHVzZXI/OlZhbHVlVHlwZXNbXCJVc2VyXCJdLFxuXHRyZXBvcnRlZFVzZXI/OlZhbHVlVHlwZXNbXCJVc2VyXCJdLFxuXHRjdXN0b21NZXNzYWdlPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiRm9sZGVyc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXTogQWxpYXNUeXBlPHtcblx0Zm9sZGVyPzpWYWx1ZVR5cGVzW1wiRm9sZGVyXCJdLFxuXHR1c2VyQXBwPzpWYWx1ZVR5cGVzW1wiQXBwbGljYXRpb25zT25Vc2Vyc1wiXSxcblx0cmlnaHRzPzp0cnVlLFxuXHRuYW1lS2V5Pzp0cnVlLFxuXHRpc1Jvb3Q/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJWRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl06IEFsaWFzVHlwZTx7XG5cdHZGaWxlPzpWYWx1ZVR5cGVzW1wiVkZpbGVcIl0sXG5cdHVzZXJBcHA/OlZhbHVlVHlwZXNbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdLFxuXHRyaWdodHM/OnRydWUsXG5cdG5hbWVLZXk/OnRydWUsXG5cdGlzUm9vdD86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIkZhcUl0ZW1cIl06IEFsaWFzVHlwZTx7XG5cdG9yZGVyPzp0cnVlLFxuXHRxdWVzdGlvbj86dHJ1ZSxcblx0YW5zd2VyPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiQmxvZ1wiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdG9yZGVyPzp0cnVlLFxuXHRlbnRyaWVzPzpWYWx1ZVR5cGVzW1wiQmxvZ0VudHJ5XCJdLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiQmxvZ0VudHJ5XCJdOiBBbGlhc1R5cGU8e1xuXHRpZD86dHJ1ZSxcblx0bGFuZz86dHJ1ZSxcblx0YXV0aG9yPzp0cnVlLFxuXHRib2R5Pzp0cnVlLFxuXHRkYXRlPzp0cnVlLFxuXHRpbWFnZT86dHJ1ZSxcblx0c3VtbWFyeT86dHJ1ZSxcblx0dGl0bGU/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJCbG9nSXRlbVwiXTogQWxpYXNUeXBlPHtcblx0aWQ/OnRydWUsXG5cdGJsb2dJZD86dHJ1ZSxcblx0b3JkZXI/OnRydWUsXG5cdHRpdGxlPzp0cnVlLFxuXHRib2R5Pzp0cnVlLFxuXHRhdXRob3I/OnRydWUsXG5cdGltYWdlPzp0cnVlLFxuXHRpbWFnZUFsdD86dHJ1ZSxcblx0c3VtbWFyeT86dHJ1ZSxcblx0ZGF0ZT86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIlVzZXJBcHBOb3RpZmljYXRpb25zXCJdOiBBbGlhc1R5cGU8e1xuXHRpZD86dHJ1ZSxcblx0ZW5hYmxlQWxsPzp0cnVlLFxuXHRtYWlsPzp0cnVlLFxuXHRjbG91ZD86dHJ1ZSxcblx0ZGlzYWJsZUFsbFVudGlsPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiUmVjdXJseUludm9pY2VzXCJdOiBBbGlhc1R5cGU8e1xuXHRwZGY/OnRydWUsXG5cdGRhdGU/OnRydWUsXG5cdGR1ZT86dHJ1ZSxcblx0c3RhdHVzPzp0cnVlLFxuXHR0b3RhbD86dHJ1ZSxcblx0bmFtZT86dHJ1ZSxcblx0Y3VycmVuY3k/OnRydWUsXG5cdFx0X190eXBlbmFtZT86IHRydWVcbn0+O1xuXHRbXCJSZWN1cmx5U3Vic2NyaXB0aW9uXCJdOiBBbGlhc1R5cGU8e1xuXHRhdXRvcmVuZXc/OnRydWUsXG5cdGFjdGl2YXRlZEF0Pzp0cnVlLFxuXHRjdXJyZW50UGVyaW9kRW5kc0F0Pzp0cnVlLFxuXHRjdXJyZW50UGVyaW9kU3RhcnRlZEF0Pzp0cnVlLFxuXHRjYW5jZWxlZEF0Pzp0cnVlLFxuXHRjcmVhdGVkQXQ/OnRydWUsXG5cdGV4cGlyZXNBdD86dHJ1ZSxcblx0cGF1c2VkQXQ/OnRydWUsXG5cdHRyaWFsRW5kc0F0Pzp0cnVlLFxuXHR0cmlhbFN0YXJ0ZWRBdD86dHJ1ZSxcblx0dXBkYXRlZEF0Pzp0cnVlLFxuXHRzdGF0ZT86dHJ1ZSxcblx0Y29sbGVjdGlvbk1ldGhvZD86dHJ1ZSxcblx0cGxhbj86dHJ1ZSxcblx0cGxhbkNvZGU/OnRydWUsXG5cdHRvdGFsPzp0cnVlLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiUGF5bWVudEluZm9zXCJdOiBBbGlhc1R5cGU8e1xuXHRob3N0ZWRVcmw/OnRydWUsXG5cdGN1cnJlbnRTdWJzY3JpcHRpb24/OlZhbHVlVHlwZXNbXCJSZWN1cmx5U3Vic2NyaXB0aW9uXCJdLFxuXHRpbnZvaWNlcz86VmFsdWVUeXBlc1tcIlJlY3VybHlJbnZvaWNlc1wiXSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIlNoYXJlRm9sZGVyUmVzcG9uc2VcIl06IEFsaWFzVHlwZTx7XG5cdGZvbGRlcnM/OnRydWUsXG5cdHZGaWxlcz86dHJ1ZSxcblx0XHRfX3R5cGVuYW1lPzogdHJ1ZVxufT47XG5cdFtcIlF1ZXJ5XCJdOiBBbGlhc1R5cGU8e1xuXHR0ZXN0Pzp0cnVlLFxuXHRsaW1pdHM/OlZhbHVlVHlwZXNbXCJRdWVyeUxpbWl0c1wiXSxcbnVzZXI/OiBbe1x0dXNlcklkPzpzdHJpbmcgfCBudWxsfSxWYWx1ZVR5cGVzW1wiVXNlclwiXV0sXG5kYkNvbmZpZz86IFt7XHRhcHBDb2RlOnN0cmluZ30sdHJ1ZV0sXG5kYkdldD86IFt7XHRmaWVsZDpzdHJpbmcsXHR1c2VySWQ/OnN0cmluZyB8IG51bGx9LHRydWVdLFxuZGJTZWFyY2g/OiBbe1x0c2VhcmNoOnN0cmluZyxcdGZpZWxkOnN0cmluZ30sdHJ1ZV0sXG5maWxlQ29udGVudD86IFt7XHRmaWxlSWQ6c3RyaW5nfSxWYWx1ZVR5cGVzW1wiRmlsZUNvbnRlbnRcIl1dLFxuZmlsZXNTaGFyZWRXaXRoTWU/OiBbe1x0YWNjZXB0ZWQ/OmJvb2xlYW4gfCBudWxsfSxWYWx1ZVR5cGVzW1wiRmlsZVNoYXJlZENvbnRlbnRcIl1dLFxuXHR2RmlsZXNTaGFyZWRXaXRoTWU/OlZhbHVlVHlwZXNbXCJWRmlsZVwiXSxcblx0Zm9sZGVyc1NoYXJlZFdpdGhNZT86VmFsdWVUeXBlc1tcIkZvbGRlclwiXSxcbmZvbGRlclNpemU/OiBbe1x0Zm9sZGVySWQ/OnN0cmluZyB8IG51bGx9LFZhbHVlVHlwZXNbXCJGb2xkZXJTaXplXCJdXSxcbmZvbGRlcj86IFt7XHRpZD86c3RyaW5nIHwgbnVsbCxcdGRlbGV0ZWQ/OmJvb2xlYW4gfCBudWxsfSxWYWx1ZVR5cGVzW1wiRm9sZGVyXCJdXSxcbnZGaWxlPzogW3tcdGlkOnN0cmluZ30sVmFsdWVUeXBlc1tcIlZGaWxlXCJdXSxcbmZpbGU/OiBbe1x0aWQ6c3RyaW5nfSxWYWx1ZVR5cGVzW1wiRmlsZVwiXV0sXG5mYXE/OiBbe1x0bGFuZz86VmFsdWVUeXBlc1tcIkxhbmdcIl0gfCBudWxsfSxWYWx1ZVR5cGVzW1wiRmFxSXRlbVwiXV0sXG5cdHBheW1lbnRJbmZvcz86VmFsdWVUeXBlc1tcIlBheW1lbnRJbmZvc1wiXSxcblx0cGxhbnM/OlZhbHVlVHlwZXNbXCJQbGFuXCJdLFxuXHRzaGFyZWRGb2xkZXJzPzpWYWx1ZVR5cGVzW1wiRm9sZGVyXCJdLFxuXHRzaGFyZWRWRmlsZXM/OlZhbHVlVHlwZXNbXCJWRmlsZVwiXSxcbmJsb2c/OiBbe1x0bGFuZz86VmFsdWVUeXBlc1tcIkxhbmdcIl0gfCBudWxsfSxWYWx1ZVR5cGVzW1wiQmxvZ0l0ZW1cIl1dLFxuXHRkZWxldGVkRm9sZGVycz86VmFsdWVUeXBlc1tcIkZvbGRlclwiXSxcblx0ZGVsZXRlZFZGaWxlcz86VmFsdWVUeXBlc1tcIlZGaWxlXCJdLFxubWFpbD86IFt7XHRpZDpzdHJpbmd9LFZhbHVlVHlwZXNbXCJNYWlsXCJdXSxcbmRlbGV0ZWRNYWlscz86IFt7XHRtYWlsVHlwZTpWYWx1ZVR5cGVzW1wiTWFpbFR5cGVcIl19LFZhbHVlVHlwZXNbXCJNYWlsXCJdXSxcblx0YXBwTm90aWZpY2F0aW9ucz86VmFsdWVUeXBlc1tcIlVzZXJBcHBOb3RpZmljYXRpb25zXCJdLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59Pjtcblx0W1wiTXV0YXRpb25cIl06IEFsaWFzVHlwZTx7XG5jcmVhdGVBcHBsaWNhdGlvbj86IFt7XHRuYW1lOnN0cmluZyxcdG9yaWdpbjpzdHJpbmcsXHRkZXZlbG9wZXJJZDpzdHJpbmd9LHRydWVdLFxuZGJTZXQ/OiBbe1x0dmFsdWU6c3RyaW5nLFx0dXNlcklkPzpzdHJpbmcgfCBudWxsfSx0cnVlXSxcbmRiQ29uZmlnPzogW3tcdGFwcENvZGU6c3RyaW5nLFx0Y29uZmlnOnN0cmluZ30sdHJ1ZV0sXG5zaGFyZVZGaWxlPzogW3tcdHZGaWxlSWQ6c3RyaW5nLFx0dXNlcklkOnN0cmluZyxcdG5hbWVLZXk6c3RyaW5nLFx0cmlnaHRzOlZhbHVlVHlwZXNbXCJSaWdodHNcIl0sXHRoaXN0b3J5OlZhbHVlVHlwZXNbXCJTaGFyZUZpbGVLZXlJbnB1dFwiXVtdfSx0cnVlXSxcbnNoYXJlRm9sZGVyPzogW3tcdGZvbGRlcklkOnN0cmluZyxcdHVzZXJJZDpzdHJpbmd9LFZhbHVlVHlwZXNbXCJTaGFyZUZvbGRlclJlc3BvbnNlXCJdXSxcbnNoYXJlRm9sZGVyRmluaXNoPzogW3tcdHNoYXJlRm9sZGVyczpWYWx1ZVR5cGVzW1wiU2hhcmVGb2xkZXJzSW5wdXRcIl0sXHR1c2VySWQ6c3RyaW5nLFx0cmlnaHRzOlZhbHVlVHlwZXNbXCJSaWdodHNcIl19LHRydWVdLFxudXBkYXRlRmlsZT86IFt7XHRmaWxlSWQ6c3RyaW5nLFx0aXNGYXZvcml0ZT86Ym9vbGVhbiB8IG51bGwsXHRmaWxlbmFtZT86c3RyaW5nIHwgbnVsbCxcdGRlbGV0ZWRBdD86VmFsdWVUeXBlc1tcIkRhdGVUaW1lXCJdIHwgbnVsbH0sVmFsdWVUeXBlc1tcIlZGaWxlXCJdXSxcbnVwZGF0ZVByb2ZpbGU/OiBbe1x0Zmlyc3RuYW1lPzpzdHJpbmcgfCBudWxsLFx0bGFzdG5hbWU/OnN0cmluZyB8IG51bGwsXHRsYW5nPzpWYWx1ZVR5cGVzW1wiTGFuZ1wiXSB8IG51bGx9LFZhbHVlVHlwZXNbXCJVc2VyXCJdXSxcbnVwbG9hZEFub255bW91cz86IFt7XHRmaWxlTmFtZTpzdHJpbmcsXHRmaWxlU2l6ZTpudW1iZXIsXHRmaWxlU2l6ZUJlZm9yZTpudW1iZXIsXHRtZXNzYWdlPzpzdHJpbmcgfCBudWxsLFx0cHViS2V5OnN0cmluZyxcdHRva2VuOnN0cmluZ30sVmFsdWVUeXBlc1tcIkZpbGVSZXNwb25zZVwiXV0sXG51cGxvYWRGaWxlPzogW3tcdGZpbGVTaXplOlZhbHVlVHlwZXNbXCJCaWdJbnRcIl0sXHRmaWxlU2l6ZUJlZm9yZTpWYWx1ZVR5cGVzW1wiQmlnSW50XCJdLFx0ZmlsZUtleTpzdHJpbmcsXHRtZDU6c3RyaW5nLFx0bWQ1RW5jcnlwdGVkOnN0cmluZ30sVmFsdWVUeXBlc1tcIkZpbGVSZXNwb25zZVwiXV0sXG5jcmVhdGVGb2xkZXI/OiBbe1x0bmFtZTpzdHJpbmcsXHRrZXk6c3RyaW5nLFx0cGFyZW50Rm9sZGVySWQ/OnN0cmluZyB8IG51bGx9LFZhbHVlVHlwZXNbXCJGb2xkZXJcIl1dLFxubW92ZUZvbGRlcnM/OiBbe1x0Zm9sZGVyc0lkOnN0cmluZ1tdLFx0cGFyZW50Rm9sZGVySWQ/OnN0cmluZyB8IG51bGx9LHRydWVdLFxuZGVsZXRlRm9sZGVyPzogW3tcdGlkOnN0cmluZ30sdHJ1ZV0sXG5tb3ZlRmlsZXM/OiBbe1x0ZmlsZXNJZDpzdHJpbmdbXSxcdHBhcmVudEZvbGRlcklkPzpzdHJpbmcgfCBudWxsfSx0cnVlXSxcbnVwZGF0ZUZvbGRlcj86IFt7XHRmb2xkZXJJZDpzdHJpbmcsXHRuYW1lPzpzdHJpbmcgfCBudWxsLFx0aXNGYXZvcml0ZT86Ym9vbGVhbiB8IG51bGwsXHRkZWxldGVkQXQ/OlZhbHVlVHlwZXNbXCJEYXRlVGltZVwiXSB8IG51bGx9LFZhbHVlVHlwZXNbXCJGb2xkZXJcIl1dLFxuZGVsZXRlVkZpbGU/OiBbe1x0ZmlsZUlkOnN0cmluZ30sdHJ1ZV0sXG5jcmVhdGVEcmFmdE1haWw/OiBbe1x0aGFzaDpzdHJpbmcsXHRoYXNoS2V5OnN0cmluZyxcdGJvZHk6c3RyaW5nLFx0c3ViamVjdDpzdHJpbmcsXHRyZXBseVRvPzpzdHJpbmcgfCBudWxsLFx0c2VuZGVyRmlsZXM6VmFsdWVUeXBlc1tcIk1haWxGaWxlSW5wdXRcIl1bXSxcdHJlY2lwaWVudHM6c3RyaW5nW119LFZhbHVlVHlwZXNbXCJNYWlsXCJdXSxcbnNlbmREcmFmdE1haWw/OiBbe1x0ZHJhZnRNYWlsSWQ6c3RyaW5nLFx0dGVtcG9yYXJ5UmVjaXBpZW50czpzdHJpbmdbXSxcdHJlY2lwaWVudHM6VmFsdWVUeXBlc1tcIk1haWxSZWNpcGllbnRJbnB1dFwiXVtdLFx0Y3VzdG9tTWVzc2FnZT86c3RyaW5nIHwgbnVsbH0sdHJ1ZV0sXG5yZWFkTWFpbD86IFt7XHRtYWlsSWQ6c3RyaW5nfSx0cnVlXSxcbnVucmVhZE1haWw/OiBbe1x0bWFpbElkOnN0cmluZ30sdHJ1ZV0sXG51cGRhdGVBcHBTZXR0aW5ncz86IFt7XHRjbG91ZEZpbGVEYXlzRm9yRGVsZXRlPzpudW1iZXIgfCBudWxsLFx0Y2xvdWRGb2xkZXJEYXlzRm9yRGVsZXRlPzpudW1iZXIgfCBudWxsLFx0aGlzdG9yeUZpbGVEYXlzRm9yRGVsZXRlPzpudW1iZXIgfCBudWxsLFx0aGlzdG9yeU1heEZpbGVDb3VudD86bnVtYmVyIHwgbnVsbCxcdGF1dG9EaXNjb25uZWN0RGVsYXk/Om51bWJlciB8IG51bGx9LFZhbHVlVHlwZXNbXCJVc2VyQXBwU2V0dGluZ3NcIl1dLFxudXBsb2FkRmlsZUVuZD86IFt7XHRmaWxlSWQ6c3RyaW5nfSx0cnVlXSxcbmxvZ291dD86IFt7XHRzZXNzaW9uSWQ/OnN0cmluZyB8IG51bGx9LHRydWVdLFxuYWRkRmlsZVRvSGlzdG9yeT86IFt7XHR2RmlsZUlkOnN0cmluZyxcdGZpbGVJZDpzdHJpbmd9LFZhbHVlVHlwZXNbXCJWRmlsZVwiXV0sXG5zZW5kT25lTWFpbD86IFt7XHRtYWlsSW50ZWdyaXR5SWQ6c3RyaW5nLFx0cmVjaXBpZW50OlZhbHVlVHlwZXNbXCJNYWlsUmVjaXBpZW50SW5wdXRcIl19LHRydWVdLFxuZGVsZXRlRHJhZnRNYWlsPzogW3tcdGRyYWZ0SWQ6c3RyaW5nfSx0cnVlXSxcbnVwZGF0ZURyYWZ0TWFpbD86IFt7XHRkcmFmdElkOnN0cmluZyxcdGhhc2g/OnN0cmluZyB8IG51bGwsXHRoYXNoS2V5PzpzdHJpbmcgfCBudWxsLFx0Ym9keT86c3RyaW5nIHwgbnVsbCxcdHN1YmplY3Q/OnN0cmluZyB8IG51bGwsXHRyZXBseVRvPzpzdHJpbmcgfCBudWxsLFx0c2VuZGVyRmlsZXM/OlZhbHVlVHlwZXNbXCJNYWlsRmlsZUlucHV0XCJdW10sXHRyZWNpcGllbnRzPzpzdHJpbmdbXX0sVmFsdWVUeXBlc1tcIk1haWxcIl1dLFxuZGVsZXRlVXNlcj86IFt7XHR1c2VySWQ/OnN0cmluZyB8IG51bGx9LHRydWVdLFxucGF5PzogW3tcdHBsYW5Db2RlOnN0cmluZyxcdGlucHV0OlZhbHVlVHlwZXNbXCJQYXlJbnB1dFwiXSxcdGF1dG9SZW5ldz86Ym9vbGVhbiB8IG51bGx9LHRydWVdLFxuXHRjYW5jZWxQYXltZW50Pzp0cnVlLFxuc2VuZFJlcG9ydD86IFt7XHRyZXBvcnRlZFVzZXJJZDpzdHJpbmcsXHRjdXN0b21NZXNzYWdlPzpzdHJpbmcgfCBudWxsfSxWYWx1ZVR5cGVzW1wiUmVwb3J0XCJdXSxcbnNhdmVJbkNsb3VkPzogW3tcdGZpbGVJZDpzdHJpbmcsXHRrZXk6c3RyaW5nLFx0Zm9sZGVySWQ/OnN0cmluZyB8IG51bGwsXHRmaWxlbmFtZTpzdHJpbmcsXHRuYW1lS2V5OnN0cmluZ30sVmFsdWVUeXBlc1tcIlZGaWxlXCJdXSxcbmRlbGV0ZVZGaWxlU2hhcmluZz86IFt7XHR2RmlsZUlkOnN0cmluZyxcdHVzZXJJZDpzdHJpbmd9LHRydWVdLFxuZGVsZXRlRm9sZGVyU2hhcmluZz86IFt7XHRmb2xkZXJJZDpzdHJpbmcsXHR1c2VySWQ6c3RyaW5nfSx0cnVlXSxcbmRlbGV0ZU1haWw/OiBbe1x0bWFpbElkOnN0cmluZ30sdHJ1ZV0sXG5kZWxldGVGaWxlPzogW3tcdGZpbGVJZDpzdHJpbmcsXHR2RmlsZUlkOnN0cmluZ30sdHJ1ZV0sXG5zaGFyZUZpbGVJbkhpc3Rvcnk/OiBbe1x0aW5wdXQ6VmFsdWVUeXBlc1tcIlNoYXJlRmlsZUluSGlzdG9yeUlucHV0XCJdLFx0dkZpbGVJZDpzdHJpbmd9LHRydWVdLFxucmVjb3ZlckZpbGU/OiBbe1x0ZmlsZUlkOnN0cmluZ30sdHJ1ZV0sXG5yZWNvdmVyTWFpbD86IFt7XHRtYWlsSWQ6c3RyaW5nfSx0cnVlXSxcbnJlY292ZXJGb2xkZXI/OiBbe1x0aWQ6c3RyaW5nfSx0cnVlXSxcbmR1cGxpY2F0ZVZGaWxlPzogW3tcdGZpbGVJZDpzdHJpbmcsXHRmb2xkZXJJZD86c3RyaW5nIHwgbnVsbCxcdGN1c3RvbU5hbWU/OnN0cmluZyB8IG51bGx9LHRydWVdLFxuZGVsZXRlRm9sZGVyQ2xvdWRUcmFzaD86IFt7XHRpZHM6c3RyaW5nW119LHRydWVdLFxuZGVsZXRlVkZpbGVDbG91ZFRyYXNoPzogW3tcdGlkczpzdHJpbmdbXX0sdHJ1ZV0sXG5kZWxldGVNYWlsVHJhc2g/OiBbe1x0aWRzOnN0cmluZ1tdfSx0cnVlXSxcblx0ZW1wdHlDbG91ZFRyYXNoPzp0cnVlLFxuXHRlbXB0eU1haWxUcmFzaD86dHJ1ZSxcbnVwbG9hZEZpbGVQYXJ0RW5kPzogW3tcdGZpbGVJZDpzdHJpbmcsXHRtZDU6c3RyaW5nLFx0b3JkZXI6bnVtYmVyfSx0cnVlXSxcbnVwZGF0ZUFwcE5vdGlmaWNhdGlvbnM/OiBbe1x0ZW5hYmxlQWxsPzpib29sZWFuIHwgbnVsbCxcdG1haWw/OmJvb2xlYW4gfCBudWxsLFx0Y2xvdWQ/OmJvb2xlYW4gfCBudWxsLFx0ZGlzYWJsZUFsbFVudGlsPzpWYWx1ZVR5cGVzW1wiRGF0ZVRpbWVcIl0gfCBudWxsfSxWYWx1ZVR5cGVzW1wiVXNlckFwcE5vdGlmaWNhdGlvbnNcIl1dLFxuXHRcdF9fdHlwZW5hbWU/OiB0cnVlXG59PlxuICB9XG5cbmV4cG9ydCB0eXBlIE1vZGVsVHlwZXMgPSB7XG4gICAgLyoqIFRoZSBgQmlnSW50YCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIG5vbi1mcmFjdGlvbmFsIHNpZ25lZCB3aG9sZSBudW1lcmljIHZhbHVlcy5cbkBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvQmlnSW50ICovXG5bXCJCaWdJbnRcIl06YW55O1xuXHQvKiogVGhlIGBCeXRlYCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIGJ5dGUgdmFsdWUgYXMgYSBCdWZmZXIgKi9cbltcIkJ5dGVzXCJdOmFueTtcblx0LyoqIEEgZGF0ZS10aW1lIHN0cmluZyBhdCBVVEMsIHN1Y2ggYXMgMjAwNy0xMi0wM1QxMDoxNTozMFosIGNvbXBsaWFudCB3aXRoIHRoZSBgZGF0ZS10aW1lYCBmb3JtYXQgb3V0bGluZWQgaW4gc2VjdGlvbiA1LjYgb2YgdGhlIFJGQyAzMzM5IHByb2ZpbGUgb2YgdGhlIElTTyA4NjAxIHN0YW5kYXJkIGZvciByZXByZXNlbnRhdGlvbiBvZiBkYXRlcyBhbmQgdGltZXMgdXNpbmcgdGhlIEdyZWdvcmlhbiBjYWxlbmRhci4gKi9cbltcIkRhdGVUaW1lXCJdOmFueTtcblx0LyoqIEFuIGFyYml0cmFyeS1wcmVjaXNpb24gRGVjaW1hbCB0eXBlICovXG5bXCJEZWNpbWFsXCJdOmFueTtcblx0LyoqIFRoZSBgSlNPTk9iamVjdGAgc2NhbGFyIHR5cGUgcmVwcmVzZW50cyBKU09OIG9iamVjdHMgYXMgc3BlY2lmaWVkIGJ5IFtFQ01BLTQwNF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL3B1YmxpY2F0aW9ucy9maWxlcy9FQ01BLVNUL0VDTUEtNDA0LnBkZikuICovXG5bXCJKc29uXCJdOmFueTtcblx0W1wiTGFuZ1wiXTogR3JhcGhRTFR5cGVzW1wiTGFuZ1wiXTtcblx0W1wiUGxhbktpbmRcIl06IEdyYXBoUUxUeXBlc1tcIlBsYW5LaW5kXCJdO1xuXHRbXCJVc2VyUm9sZVwiXTogR3JhcGhRTFR5cGVzW1wiVXNlclJvbGVcIl07XG5cdFtcIk1haWxUeXBlXCJdOiBHcmFwaFFMVHlwZXNbXCJNYWlsVHlwZVwiXTtcblx0W1wiUmlnaHRzXCJdOiBHcmFwaFFMVHlwZXNbXCJSaWdodHNcIl07XG5cdFtcIkZpbGVcIl06IHtcblx0XHRpZDpzdHJpbmcsXG5cdHNpemU6TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0c2l6ZUJlZm9yZTpNb2RlbFR5cGVzW1wiQmlnSW50XCJdLFxuXHRjcmVhdGVkQXQ6TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHR2RmlsZXM6TW9kZWxUeXBlc1tcIlZGaWxlXCJdW10sXG5cdHZGaWxlc0N1cnJlbnQ6TW9kZWxUeXBlc1tcIlZGaWxlXCJdW10sXG5cdHVzZXJzOk1vZGVsVHlwZXNbXCJGaWxlc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXVtdLFxuXHRtZDU6c3RyaW5nLFxuXHRtZDVFbmNyeXB0ZWQ6c3RyaW5nLFxuXHRkZWxldGVkQXQ/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dXNlckFwcDpNb2RlbFR5cGVzW1wiQXBwbGljYXRpb25zT25Vc2Vyc1wiXSxcblx0bWFpbHM6TW9kZWxUeXBlc1tcIkZpbGVzT25NYWlsc1wiXVtdLFxuXHR2YWxpZGF0ZWRBdD86TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHR1c2VyPzpNb2RlbFR5cGVzW1wiRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl1cbn07XG5cdFtcIkZpbGVQYXJ0XCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRmaWxlOk1vZGVsVHlwZXNbXCJGaWxlXCJdLFxuXHRmaWxlSWQ6c3RyaW5nLFxuXHRzaXplOk1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdG9yZGVyOm51bWJlcixcblx0bWQ1OnN0cmluZyxcblx0dmFsaWRhdGVkQXQ/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXVxufTtcblx0W1wiRmlsZUNvbnRlbnRUeXBlXCJdOiBHcmFwaFFMVHlwZXNbXCJGaWxlQ29udGVudFR5cGVcIl07XG5cdFtcIkZpbGVDb250ZW50UGFydFwiXToge1xuXHRcdGNvbnRlbnRVcmw6c3RyaW5nLFxuXHRvcmRlcjpudW1iZXIsXG5cdG1kNTpzdHJpbmdcbn07XG5cdFtcIkZpbGVDb250ZW50QmFzZVwiXTogTW9kZWxUeXBlc1tcIkZpbGVDb250ZW50Q2xvdWRcIl0gfCBNb2RlbFR5cGVzW1wiRmlsZUNvbnRlbnRTZW50TWFpbFwiXSB8IE1vZGVsVHlwZXNbXCJGaWxlQ29udGVudFJlY2VpdmVkTWFpbFwiXTtcblx0W1wiRmlsZUNvbnRlbnRDbG91ZFwiXToge1xuXHRcdHBhcnRzOk1vZGVsVHlwZXNbXCJGaWxlQ29udGVudFBhcnRcIl1bXSxcblx0a2V5OnN0cmluZyxcblx0bWQ1OnN0cmluZyxcblx0bWQ1RW5jcnlwdGVkOnN0cmluZyxcblx0dG90YWxTaXplOk1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdHR5cGU6TW9kZWxUeXBlc1tcIkZpbGVDb250ZW50VHlwZVwiXSxcblx0cHVibGljS2V5OnN0cmluZ1xufTtcblx0W1wiRmlsZUNvbnRlbnRTZW50TWFpbFwiXToge1xuXHRcdHBhcnRzOk1vZGVsVHlwZXNbXCJGaWxlQ29udGVudFBhcnRcIl1bXSxcblx0a2V5OnN0cmluZyxcblx0bWQ1OnN0cmluZyxcblx0bWQ1RW5jcnlwdGVkOnN0cmluZyxcblx0dG90YWxTaXplOk1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdHR5cGU6TW9kZWxUeXBlc1tcIkZpbGVDb250ZW50VHlwZVwiXVxufTtcblx0W1wiRmlsZUNvbnRlbnRSZWNlaXZlZE1haWxcIl06IHtcblx0XHRwYXJ0czpNb2RlbFR5cGVzW1wiRmlsZUNvbnRlbnRQYXJ0XCJdW10sXG5cdGtleTpzdHJpbmcsXG5cdG1kNTpzdHJpbmcsXG5cdG1kNUVuY3J5cHRlZDpzdHJpbmcsXG5cdHRvdGFsU2l6ZTpNb2RlbFR5cGVzW1wiQmlnSW50XCJdLFxuXHR0eXBlOk1vZGVsVHlwZXNbXCJGaWxlQ29udGVudFR5cGVcIl0sXG5cdHNlbmRlclB1YmxpY0tleTpzdHJpbmdcbn07XG5cdFtcIkZpbGVDb250ZW50XCJdOk1vZGVsVHlwZXNbXCJGaWxlQ29udGVudENsb3VkXCJdIHwgTW9kZWxUeXBlc1tcIkZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCJdIHwgTW9kZWxUeXBlc1tcIkZpbGVDb250ZW50U2VudE1haWxcIl07XG5cdFtcIkZpbGVSZXNwb25zZVwiXToge1xuXHRcdGZpbGVJZDpzdHJpbmcsXG5cdHBhcnRzOk1vZGVsVHlwZXNbXCJGaWxlUGFydFJlc3BvbnNlXCJdW10sXG5cdGZpbGVQYXJ0U2l6ZTpNb2RlbFR5cGVzW1wiQmlnSW50XCJdXG59O1xuXHRbXCJGaWxlUGFydFJlc3BvbnNlXCJdOiB7XG5cdFx0ZmllbGRzOk1vZGVsVHlwZXNbXCJKc29uXCJdLFxuXHR1cmw6c3RyaW5nLFxuXHRvcmRlcjpudW1iZXJcbn07XG5cdFtcIkZpbGVTaGFyZWRcIl06IHtcblx0XHR1c2VySWQ6c3RyaW5nLFxuXHRtZXNzYWdlPzpzdHJpbmcsXG5cdGFwcElkOnN0cmluZyxcblx0aWQ6c3RyaW5nLFxuXHRmaWxlbmFtZTpzdHJpbmcsXG5cdHNpemU6bnVtYmVyLFxuXHRzaXplQmVmb3JlOm51bWJlclxufTtcblx0W1wiRmlsZVNoYXJlZENvbnRlbnRcIl06IHtcblx0XHRvd25lcklkPzpzdHJpbmcsXG5cdHB1YktleT86c3RyaW5nLFxuXHRtZXNzYWdlPzpzdHJpbmcsXG5cdGFwcElkOnN0cmluZyxcblx0aWQ6c3RyaW5nLFxuXHR0eXBlOnN0cmluZyxcblx0ZmlsZW5hbWU6c3RyaW5nLFxuXHRjb250ZW50VXJsOnN0cmluZyxcblx0a2V5OnN0cmluZyxcblx0c2l6ZTpudW1iZXIsXG5cdHNpemVCZWZvcmU6bnVtYmVyXG59O1xuXHRbXCJDbG91ZExpbWl0c1wiXToge1xuXHRcdHNpemU6TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0bWF4U2l6ZT86TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0Y291bnQ6TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0bWF4Q291bnQ/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl1cbn07XG5cdFtcIk1haWxMaW1pdHNWYWx1ZXNcIl06IHtcblx0XHRjb3VudDpNb2RlbFR5cGVzW1wiQmlnSW50XCJdLFxuXHRtYXhDb3VudD86TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0ZmlsZUNvdW50Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdG1heEZpbGVDb3VudD86TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0ZmlsZVNpemU6TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0bWF4RmlsZVNpemU/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl1cbn07XG5cdFtcIlVzZXJNYWlsTGltaXRzXCJdOiB7XG5cdFx0c2VudDpNb2RlbFR5cGVzW1wiTWFpbExpbWl0c1ZhbHVlc1wiXSxcblx0cmVjZWl2ZWQ6TW9kZWxUeXBlc1tcIk1haWxMaW1pdHNWYWx1ZXNcIl1cbn07XG5cdFtcIlF1ZXJ5TGltaXRzXCJdOiB7XG5cdFx0Y2xvdWQ6TW9kZWxUeXBlc1tcIkNsb3VkTGltaXRzXCJdLFxuXHRtYWlsOk1vZGVsVHlwZXNbXCJVc2VyTWFpbExpbWl0c1wiXVxufTtcblx0W1wiTGltaXRzXCJdOiB7XG5cdFx0ZG93bmxvYWRCYW5kd2lkdGg/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGRvd25sb2FkQ291bnQ/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGhhcmRGaWxlQ291bnQ/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGhhcmRGaWxlU2l6ZT86TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0cGVyRmlsZVNpemU/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdHJlY2VpdmVkTWFpbHM6TW9kZWxUeXBlc1tcIk1haWxMaW1pdHNcIl0sXG5cdHNlbnRNYWlsczpNb2RlbFR5cGVzW1wiTWFpbExpbWl0c1wiXSxcblx0dXBsb2FkQmFuZHdpZHRoPzpNb2RlbFR5cGVzW1wiQmlnSW50XCJdLFxuXHR1cGxvYWRDb3VudD86TW9kZWxUeXBlc1tcIkJpZ0ludFwiXVxufTtcblx0W1wiTWFpbExpbWl0c1wiXToge1xuXHRcdGNvdW50PzpNb2RlbFR5cGVzW1wiQmlnSW50XCJdLFxuXHRmaWxlQ291bnQ/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGZpbGVTaXplPzpNb2RlbFR5cGVzW1wiQmlnSW50XCJdLFxuXHRoYXJkQ291bnQ/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGhhcmRGaWxlQ291bnQ/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGhhcmRGaWxlU2l6ZT86TW9kZWxUeXBlc1tcIkJpZ0ludFwiXSxcblx0cGVyRmlsZVNpemU/Ok1vZGVsVHlwZXNbXCJCaWdJbnRcIl1cbn07XG5cdFtcIlVzZXJcIl06IHtcblx0XHRpZDpzdHJpbmcsXG5cdGRlbGV0ZWRBdD86TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRsYW5nOk1vZGVsVHlwZXNbXCJMYW5nXCJdLFxuXHRyZXBvcnRTZW50Ok1vZGVsVHlwZXNbXCJSZXBvcnRcIl1bXSxcblx0Z29kRmF0aGVyPzpNb2RlbFR5cGVzW1wiVXNlclwiXSxcblx0Z29kQ2hpbGRyZW46TW9kZWxUeXBlc1tcIlVzZXJcIl1bXSxcblx0Zmlyc3RuYW1lOnN0cmluZyxcblx0bGFzdG5hbWU6c3RyaW5nLFxuXHRlbWFpbDpzdHJpbmcsXG5cdHBob25lOnN0cmluZyxcblx0bGFzdExvZ2luOk1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0cm9sZTpNb2RlbFR5cGVzW1wiVXNlclJvbGVcIl0sXG5cdHNlc3Npb25zOk1vZGVsVHlwZXNbXCJVc2VyU2Vzc2lvblwiXVtdLFxuXHRjcmVhdGVkQXQ6TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRyZWNlaXZlZE1haWxzOk1vZGVsVHlwZXNbXCJNYWlsXCJdW10sXG5cdHdhaXRpbmdSZWNlaXZlZE1haWxzOk1vZGVsVHlwZXNbXCJXYWl0aW5nUmVjZWl2ZWRNYWlsXCJdW10sXG5cdHNlbnRNYWlsczpNb2RlbFR5cGVzW1wiTWFpbFwiXVtdLFxuXHRkcmFmdE1haWxzOk1vZGVsVHlwZXNbXCJNYWlsXCJdW10sXG5cdGFwcFNldHRpbmdzPzpNb2RlbFR5cGVzW1wiVXNlckFwcFNldHRpbmdzXCJdLFxuXHRhcHBsaWNhdGlvbnM6TW9kZWxUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl1bXSxcblx0cHVibGljS2V5OnN0cmluZ1xufTtcblx0W1wiTWFpbFwiXToge1xuXHRcdGlkOnN0cmluZyxcblx0YXBwOk1vZGVsVHlwZXNbXCJBcHBsaWNhdGlvblwiXSxcblx0Ym9keTpzdHJpbmcsXG5cdGNyZWF0ZWRBdDpNb2RlbFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdGRlbGV0ZWRBdD86TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRmaWxlczpNb2RlbFR5cGVzW1wiRmlsZXNPbk1haWxzXCJdW10sXG5cdG1haWxJbnRlZ3JpdHk/Ok1vZGVsVHlwZXNbXCJNYWlsSW50ZWdyaXR5XCJdLFxuXHRtYWlsSW50ZWdyaXR5RHJhZnQ/Ok1vZGVsVHlwZXNbXCJNYWlsSW50ZWdyaXR5RHJhZnRcIl0sXG5cdG9wZW5lZEF0PzpNb2RlbFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdHJlY2lwaWVudDpNb2RlbFR5cGVzW1wiVXNlclwiXSxcblx0c2VuZGVyOk1vZGVsVHlwZXNbXCJVc2VyXCJdLFxuXHRzdWJqZWN0OnN0cmluZyxcblx0dHlwZTpNb2RlbFR5cGVzW1wiTWFpbFR5cGVcIl0sXG5cdHJlY2lwaWVudHM6TW9kZWxUeXBlc1tcIlVzZXJcIl1bXVxufTtcblx0W1wiTWFpbEludGVncml0eVwiXToge1xuXHRcdGlkOnN0cmluZyxcblx0aGFzaDpzdHJpbmcsXG5cdGhhc2hLZXk6c3RyaW5nLFxuXHRhbnN3ZXJzOk1vZGVsVHlwZXNbXCJNYWlsSW50ZWdyaXR5XCJdW10sXG5cdGFwcDpNb2RlbFR5cGVzW1wiQXBwbGljYXRpb25cIl0sXG5cdG1haWxzOk1vZGVsVHlwZXNbXCJNYWlsXCJdW10sXG5cdHJlY2lwaWVudHM6TW9kZWxUeXBlc1tcIlVzZXJcIl1bXSxcblx0dGVtcG9yYXJ5UmVjaXBpZW50czpNb2RlbFR5cGVzW1wiVGVtcG9yYXJ5VXNlclwiXVtdLFxuXHRyZXBseVRvPzpNb2RlbFR5cGVzW1wiTWFpbEludGVncml0eVwiXVxufTtcblx0W1wiRmlsZXNPbk1haWxzXCJdOiB7XG5cdFx0ZmlsZTpNb2RlbFR5cGVzW1wiRmlsZVwiXSxcblx0ZmlsZUtleTpzdHJpbmcsXG5cdGZpbGVuYW1lOnN0cmluZyxcblx0bWFpbDpNb2RlbFR5cGVzW1wiTWFpbFwiXVxufTtcblx0W1wiRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl06IHtcblx0XHRmaWxlOk1vZGVsVHlwZXNbXCJGaWxlXCJdLFxuXHR1c2VyQXBwOk1vZGVsVHlwZXNbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdLFxuXHQvKiogRW5jcnlwdGVkIHdpdGggVXNlckFwcCBrZXlzICovXG5cdGtleTpzdHJpbmdcbn07XG5cdFtcIlZGaWxlXCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRpc0Zhdm9yaXRlOmJvb2xlYW4sXG5cdGNyZWF0ZWRBdDpNb2RlbFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdGRlbGV0ZWRBdD86TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRmaWxlbmFtZTpzdHJpbmcsXG5cdHVzZXJBcHBzOk1vZGVsVHlwZXNbXCJWRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl1bXSxcblx0Y3JlYXRlZEJ5Ok1vZGVsVHlwZXNbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdLFxuXHR1c2VyQXBwPzpNb2RlbFR5cGVzW1wiVkZpbGVzT25Vc2Vyc09uQXBwbGljYXRpb25zXCJdLFxuXHRmb2xkZXI6TW9kZWxUeXBlc1tcIkZvbGRlclwiXSxcblx0aGlzdG9yeTpNb2RlbFR5cGVzW1wiRmlsZVwiXVtdLFxuXHRjdXJyZW50PzpNb2RlbFR5cGVzW1wiRmlsZVwiXSxcblx0dXBkYXRlZEF0Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXVxufTtcblx0W1wiRm9sZGVyQnJlYWRjcnVtYkl0ZW1cIl06IHtcblx0XHRpZDpzdHJpbmcsXG5cdG5hbWU6c3RyaW5nLFxuXHRwdWJLZXk6c3RyaW5nLFxuXHRuYW1lS2V5PzpzdHJpbmdcbn07XG5cdFtcIkZvbGRlclwiXToge1xuXHRcdGlkOnN0cmluZyxcblx0aXNGYXZvcml0ZTpib29sZWFuLFxuXHRjcmVhdGVkQXQ6TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRkZWxldGVkQXQ/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dXBkYXRlZEF0Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0Y3JlYXRlZEJ5Ok1vZGVsVHlwZXNbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdLFxuXHR1c2VyQXBwczpNb2RlbFR5cGVzW1wiRm9sZGVyc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXVtdLFxuXHR1c2VyQXBwPzpNb2RlbFR5cGVzW1wiRm9sZGVyc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXSxcblx0bmFtZTpzdHJpbmcsXG5cdHBhcmVudEZvbGRlcj86TW9kZWxUeXBlc1tcIkZvbGRlclwiXSxcblx0c3ViZm9sZGVyczpNb2RlbFR5cGVzW1wiRm9sZGVyXCJdW10sXG5cdHZGaWxlczpNb2RlbFR5cGVzW1wiVkZpbGVcIl1bXSxcblx0YnJlYWRjcnVtYjpNb2RlbFR5cGVzW1wiRm9sZGVyQnJlYWRjcnVtYkl0ZW1cIl1bXVxufTtcblx0W1wiQXBwbGljYXRpb25cIl06IHtcblx0XHRpZDpzdHJpbmcsXG5cdG5hbWU6c3RyaW5nXG59O1xuXHRbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdOiB7XG5cdFx0ZmFrZVVzZXJJZDpzdHJpbmcsXG5cdGtleVBhaXI/Ok1vZGVsVHlwZXNbXCJBcHBLZXlQYWlyXCJdLFxuXHRzZXNzaW9uczpNb2RlbFR5cGVzW1wiQXBwU2Vzc2lvblwiXVtdLFxuXHRhcHA6TW9kZWxUeXBlc1tcIkFwcGxpY2F0aW9uXCJdLFxuXHR1c2VyOk1vZGVsVHlwZXNbXCJVc2VyXCJdLFxuXHRmb2xkZXJzOk1vZGVsVHlwZXNbXCJGb2xkZXJzT25Vc2Vyc09uQXBwbGljYXRpb25zXCJdW10sXG5cdHNldHRpbmdzOk1vZGVsVHlwZXNbXCJVc2VyQXBwU2V0dGluZ3NcIl1cbn07XG5cdFtcIkFwcEtleVBhaXJcIl06IHtcblx0XHRwdWI6c3RyaW5nXG59O1xuXHRbXCJGb2xkZXJTaXplXCJdOiB7XG5cdFx0c2l6ZTpNb2RlbFR5cGVzW1wiQmlnSW50XCJdLFxuXHRzaXplQmVmb3JlOk1vZGVsVHlwZXNbXCJCaWdJbnRcIl1cbn07XG5cdFtcIlVzZXJTZXNzaW9uXCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRhcHBTZXNzaW9uczpNb2RlbFR5cGVzW1wiQXBwU2Vzc2lvblwiXVtdLFxuXHRsYXN0QWN0aXZpdHk/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dXNlckFnZW50PzpzdHJpbmcsXG5cdGlwPzpzdHJpbmcsXG5cdGNpdHk/OnN0cmluZyxcblx0Y291bnRyeT86c3RyaW5nLFxuXHRjcmVhdGVkQXQ6TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdXG59O1xuXHRbXCJBcHBTZXNzaW9uXCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRsYXN0QWN0aXZpdHk/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dXNlckFnZW50PzpzdHJpbmcsXG5cdGlwPzpzdHJpbmcsXG5cdGNpdHk/OnN0cmluZyxcblx0Y291bnRyeT86c3RyaW5nLFxuXHR1c2VyU2Vzc2lvbjpNb2RlbFR5cGVzW1wiVXNlclNlc3Npb25cIl0sXG5cdHVzZXJBcHA/Ok1vZGVsVHlwZXNbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdLFxuXHRjcmVhdGVkQXQ6TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdXG59O1xuXHRbXCJVc2VyQXBwU2V0dGluZ3NcIl06IHtcblx0XHRpZDpzdHJpbmcsXG5cdGNsb3VkRmlsZURheXNGb3JEZWxldGU6bnVtYmVyLFxuXHRjbG91ZEZvbGRlckRheXNGb3JEZWxldGU6bnVtYmVyLFxuXHRoaXN0b3J5RmlsZURheXNGb3JEZWxldGU/Om51bWJlcixcblx0aGlzdG9yeU1heEZpbGVDb3VudDpudW1iZXIsXG5cdGF1dG9EaXNjb25uZWN0RGVsYXk/Om51bWJlclxufTtcblx0W1wiTWFpbEZpbGVJbnB1dFwiXTogR3JhcGhRTFR5cGVzW1wiTWFpbEZpbGVJbnB1dFwiXTtcblx0W1wiTWFpbFJlY2lwaWVudElucHV0XCJdOiBHcmFwaFFMVHlwZXNbXCJNYWlsUmVjaXBpZW50SW5wdXRcIl07XG5cdFtcIlNoYXJlRmlsZUtleUlucHV0XCJdOiBHcmFwaFFMVHlwZXNbXCJTaGFyZUZpbGVLZXlJbnB1dFwiXTtcblx0W1wiTmFtZUtleUlucHV0XCJdOiBHcmFwaFFMVHlwZXNbXCJOYW1lS2V5SW5wdXRcIl07XG5cdFtcIk5hbWVLZXlJbnB1dEZvbGRlcnNcIl06IEdyYXBoUUxUeXBlc1tcIk5hbWVLZXlJbnB1dEZvbGRlcnNcIl07XG5cdFtcIlNoYXJlRm9sZGVyc0lucHV0XCJdOiBHcmFwaFFMVHlwZXNbXCJTaGFyZUZvbGRlcnNJbnB1dFwiXTtcblx0W1wiU2hhcmVGaWxlSW5IaXN0b3J5SW5wdXRcIl06IEdyYXBoUUxUeXBlc1tcIlNoYXJlRmlsZUluSGlzdG9yeUlucHV0XCJdO1xuXHRbXCJQYXlJbnB1dFR5cGVcIl06IEdyYXBoUUxUeXBlc1tcIlBheUlucHV0VHlwZVwiXTtcblx0W1wiUGF5SW5wdXRcIl06IEdyYXBoUUxUeXBlc1tcIlBheUlucHV0XCJdO1xuXHRbXCJXYWl0aW5nUmVjZWl2ZWRNYWlsXCJdOiB7XG5cdFx0c2VuZGVyOk1vZGVsVHlwZXNbXCJVc2VyXCJdLFxuXHRkYXRlOk1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0cmVjaXBpZW50czpNb2RlbFR5cGVzW1wiVXNlclwiXVtdLFxuXHR0ZW1wb3JhcnlSZWNpcGllbnRzOk1vZGVsVHlwZXNbXCJUZW1wb3JhcnlVc2VyXCJdW10sXG5cdGF0dGFjaG1lbnRzQ291bnQ6bnVtYmVyXG59O1xuXHRbXCJUZW1wb3JhcnlVc2VyXCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRtYWlsczpNb2RlbFR5cGVzW1wiTWFpbEludGVncml0eVwiXVtdLFxuXHRkcmFmdE1haWxzOk1vZGVsVHlwZXNbXCJNYWlsSW50ZWdyaXR5RHJhZnRcIl1bXSxcblx0ZW1haWw/OnN0cmluZ1xufTtcblx0W1wiTWFpbEludGVncml0eURyYWZ0XCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRoYXNoOnN0cmluZyxcblx0aGFzaEtleTpzdHJpbmcsXG5cdGFwcDpNb2RlbFR5cGVzW1wiQXBwbGljYXRpb25cIl0sXG5cdG1haWw6TW9kZWxUeXBlc1tcIk1haWxcIl0sXG5cdHJlY2lwaWVudHM6TW9kZWxUeXBlc1tcIlVzZXJcIl1bXSxcblx0dGVtcG9yYXJ5UmVjaXBpZW50czpNb2RlbFR5cGVzW1wiVGVtcG9yYXJ5VXNlclwiXVtdLFxuXHRyZXBseVRvPzpNb2RlbFR5cGVzW1wiTWFpbEludGVncml0eVwiXVxufTtcblx0W1wiRmFxXCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRvcmRlcjpudW1iZXIsXG5cdGVudHJpZXM6TW9kZWxUeXBlc1tcIkZhcUVudHJ5XCJdW11cbn07XG5cdFtcIkZhcUVudHJ5XCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRsYW5nOk1vZGVsVHlwZXNbXCJMYW5nXCJdLFxuXHRxdWVzdGlvbjpzdHJpbmcsXG5cdGFuc3dlcjpzdHJpbmcsXG5cdGZhcTpNb2RlbFR5cGVzW1wiRmFxXCJdXG59O1xuXHRbXCJQbGFuXCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRraW5kOk1vZGVsVHlwZXNbXCJQbGFuS2luZFwiXSxcblx0Y29kZXM6c3RyaW5nW10sXG5cdGxpbWl0czpNb2RlbFR5cGVzW1wiTGltaXRzXCJdXG59O1xuXHRbXCJSZXBvcnRcIl06IHtcblx0XHRpZDpzdHJpbmcsXG5cdHVzZXI6TW9kZWxUeXBlc1tcIlVzZXJcIl0sXG5cdHJlcG9ydGVkVXNlcjpNb2RlbFR5cGVzW1wiVXNlclwiXSxcblx0Y3VzdG9tTWVzc2FnZT86c3RyaW5nXG59O1xuXHRbXCJGb2xkZXJzT25Vc2Vyc09uQXBwbGljYXRpb25zXCJdOiB7XG5cdFx0Zm9sZGVyOk1vZGVsVHlwZXNbXCJGb2xkZXJcIl0sXG5cdHVzZXJBcHA6TW9kZWxUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0sXG5cdHJpZ2h0czpNb2RlbFR5cGVzW1wiUmlnaHRzXCJdLFxuXHRuYW1lS2V5PzpzdHJpbmcsXG5cdGlzUm9vdDpib29sZWFuXG59O1xuXHRbXCJWRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl06IHtcblx0XHR2RmlsZTpNb2RlbFR5cGVzW1wiVkZpbGVcIl0sXG5cdHVzZXJBcHA6TW9kZWxUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0sXG5cdHJpZ2h0czpNb2RlbFR5cGVzW1wiUmlnaHRzXCJdLFxuXHRuYW1lS2V5OnN0cmluZyxcblx0aXNSb290OmJvb2xlYW5cbn07XG5cdFtcIkZhcUl0ZW1cIl06IHtcblx0XHRvcmRlcjpudW1iZXIsXG5cdHF1ZXN0aW9uOnN0cmluZyxcblx0YW5zd2VyOnN0cmluZ1xufTtcblx0W1wiQmxvZ1wiXToge1xuXHRcdGlkOnN0cmluZyxcblx0b3JkZXI6bnVtYmVyLFxuXHRlbnRyaWVzOk1vZGVsVHlwZXNbXCJCbG9nRW50cnlcIl1bXVxufTtcblx0W1wiQmxvZ0VudHJ5XCJdOiB7XG5cdFx0aWQ6c3RyaW5nLFxuXHRsYW5nOk1vZGVsVHlwZXNbXCJMYW5nXCJdLFxuXHRhdXRob3I6c3RyaW5nLFxuXHRib2R5OnN0cmluZyxcblx0ZGF0ZTpNb2RlbFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdGltYWdlOnN0cmluZyxcblx0c3VtbWFyeTpzdHJpbmcsXG5cdHRpdGxlOnN0cmluZ1xufTtcblx0W1wiQmxvZ0l0ZW1cIl06IHtcblx0XHRpZDpzdHJpbmcsXG5cdGJsb2dJZDpzdHJpbmcsXG5cdG9yZGVyOm51bWJlcixcblx0dGl0bGU6c3RyaW5nLFxuXHRib2R5OnN0cmluZyxcblx0YXV0aG9yOnN0cmluZyxcblx0aW1hZ2U6c3RyaW5nLFxuXHRpbWFnZUFsdDpzdHJpbmcsXG5cdHN1bW1hcnk6c3RyaW5nLFxuXHRkYXRlOk1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXVxufTtcblx0W1wiVXNlckFwcE5vdGlmaWNhdGlvbnNcIl06IHtcblx0XHRpZDpzdHJpbmcsXG5cdGVuYWJsZUFsbDpib29sZWFuLFxuXHRtYWlsOmJvb2xlYW4sXG5cdGNsb3VkOmJvb2xlYW4sXG5cdGRpc2FibGVBbGxVbnRpbD86TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdXG59O1xuXHRbXCJSZWN1cmx5SW52b2ljZXNcIl06IHtcblx0XHRwZGY6c3RyaW5nLFxuXHRkYXRlOk1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0ZHVlOk1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0c3RhdHVzOnN0cmluZyxcblx0dG90YWw6bnVtYmVyLFxuXHRuYW1lOnN0cmluZyxcblx0Y3VycmVuY3k6c3RyaW5nXG59O1xuXHRbXCJSZWN1cmx5U3Vic2NyaXB0aW9uXCJdOiB7XG5cdFx0YXV0b3JlbmV3OmJvb2xlYW4sXG5cdGFjdGl2YXRlZEF0PzpNb2RlbFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdGN1cnJlbnRQZXJpb2RFbmRzQXQ/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0Y3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRjYW5jZWxlZEF0PzpNb2RlbFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdGNyZWF0ZWRBdD86TW9kZWxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRleHBpcmVzQXQ/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0cGF1c2VkQXQ/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dHJpYWxFbmRzQXQ/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dHJpYWxTdGFydGVkQXQ/Ok1vZGVsVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dXBkYXRlZEF0PzpNb2RlbFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdHN0YXRlOnN0cmluZyxcblx0Y29sbGVjdGlvbk1ldGhvZDpzdHJpbmcsXG5cdHBsYW4/OnN0cmluZyxcblx0cGxhbkNvZGU/OnN0cmluZyxcblx0dG90YWw/Om51bWJlclxufTtcblx0W1wiUGF5bWVudEluZm9zXCJdOiB7XG5cdFx0aG9zdGVkVXJsOnN0cmluZyxcblx0Y3VycmVudFN1YnNjcmlwdGlvbjpNb2RlbFR5cGVzW1wiUmVjdXJseVN1YnNjcmlwdGlvblwiXSxcblx0aW52b2ljZXM6TW9kZWxUeXBlc1tcIlJlY3VybHlJbnZvaWNlc1wiXVtdXG59O1xuXHRbXCJTaGFyZUZvbGRlclJlc3BvbnNlXCJdOiB7XG5cdFx0Zm9sZGVyczpzdHJpbmdbXSxcblx0dkZpbGVzOnN0cmluZ1tdXG59O1xuXHRbXCJRdWVyeVwiXToge1xuXHRcdHRlc3Q/OmJvb2xlYW4sXG5cdGxpbWl0cz86TW9kZWxUeXBlc1tcIlF1ZXJ5TGltaXRzXCJdLFxuXHR1c2VyPzpNb2RlbFR5cGVzW1wiVXNlclwiXSxcblx0ZGJDb25maWc/Ok1vZGVsVHlwZXNbXCJKc29uXCJdLFxuXHRkYkdldD86TW9kZWxUeXBlc1tcIkpzb25cIl0sXG5cdGRiU2VhcmNoOk1vZGVsVHlwZXNbXCJKc29uXCJdW10sXG5cdGZpbGVDb250ZW50PzpNb2RlbFR5cGVzW1wiRmlsZUNvbnRlbnRcIl0sXG5cdGZpbGVzU2hhcmVkV2l0aE1lOk1vZGVsVHlwZXNbXCJGaWxlU2hhcmVkQ29udGVudFwiXVtdLFxuXHR2RmlsZXNTaGFyZWRXaXRoTWU6TW9kZWxUeXBlc1tcIlZGaWxlXCJdW10sXG5cdGZvbGRlcnNTaGFyZWRXaXRoTWU6TW9kZWxUeXBlc1tcIkZvbGRlclwiXVtdLFxuXHRmb2xkZXJTaXplPzpNb2RlbFR5cGVzW1wiRm9sZGVyU2l6ZVwiXSxcblx0Zm9sZGVyPzpNb2RlbFR5cGVzW1wiRm9sZGVyXCJdLFxuXHR2RmlsZT86TW9kZWxUeXBlc1tcIlZGaWxlXCJdLFxuXHRmaWxlPzpNb2RlbFR5cGVzW1wiRmlsZVwiXSxcblx0ZmFxOk1vZGVsVHlwZXNbXCJGYXFJdGVtXCJdW10sXG5cdHBheW1lbnRJbmZvcz86TW9kZWxUeXBlc1tcIlBheW1lbnRJbmZvc1wiXSxcblx0cGxhbnM6TW9kZWxUeXBlc1tcIlBsYW5cIl1bXSxcblx0c2hhcmVkRm9sZGVyczpNb2RlbFR5cGVzW1wiRm9sZGVyXCJdW10sXG5cdHNoYXJlZFZGaWxlczpNb2RlbFR5cGVzW1wiVkZpbGVcIl1bXSxcblx0YmxvZzpNb2RlbFR5cGVzW1wiQmxvZ0l0ZW1cIl1bXSxcblx0ZGVsZXRlZEZvbGRlcnM6TW9kZWxUeXBlc1tcIkZvbGRlclwiXVtdLFxuXHRkZWxldGVkVkZpbGVzOk1vZGVsVHlwZXNbXCJWRmlsZVwiXVtdLFxuXHRtYWlsPzpNb2RlbFR5cGVzW1wiTWFpbFwiXSxcblx0ZGVsZXRlZE1haWxzOk1vZGVsVHlwZXNbXCJNYWlsXCJdW10sXG5cdGFwcE5vdGlmaWNhdGlvbnM/Ok1vZGVsVHlwZXNbXCJVc2VyQXBwTm90aWZpY2F0aW9uc1wiXVxufTtcblx0W1wiTXV0YXRpb25cIl06IHtcblx0XHRjcmVhdGVBcHBsaWNhdGlvbj86c3RyaW5nLFxuXHRkYlNldD86TW9kZWxUeXBlc1tcIkpzb25cIl0sXG5cdGRiQ29uZmlnOk1vZGVsVHlwZXNbXCJKc29uXCJdLFxuXHRzaGFyZVZGaWxlPzpib29sZWFuLFxuXHRzaGFyZUZvbGRlcjpNb2RlbFR5cGVzW1wiU2hhcmVGb2xkZXJSZXNwb25zZVwiXSxcblx0c2hhcmVGb2xkZXJGaW5pc2g/OmJvb2xlYW4sXG5cdHVwZGF0ZUZpbGU/Ok1vZGVsVHlwZXNbXCJWRmlsZVwiXSxcblx0dXBkYXRlUHJvZmlsZT86TW9kZWxUeXBlc1tcIlVzZXJcIl0sXG5cdHVwbG9hZEFub255bW91cz86TW9kZWxUeXBlc1tcIkZpbGVSZXNwb25zZVwiXSxcblx0dXBsb2FkRmlsZT86TW9kZWxUeXBlc1tcIkZpbGVSZXNwb25zZVwiXSxcblx0Y3JlYXRlRm9sZGVyPzpNb2RlbFR5cGVzW1wiRm9sZGVyXCJdLFxuXHRtb3ZlRm9sZGVycz86Ym9vbGVhbixcblx0ZGVsZXRlRm9sZGVyPzpib29sZWFuLFxuXHRtb3ZlRmlsZXM/OmJvb2xlYW4sXG5cdHVwZGF0ZUZvbGRlcj86TW9kZWxUeXBlc1tcIkZvbGRlclwiXSxcblx0ZGVsZXRlVkZpbGU6Ym9vbGVhbixcblx0Y3JlYXRlRHJhZnRNYWlsPzpNb2RlbFR5cGVzW1wiTWFpbFwiXSxcblx0c2VuZERyYWZ0TWFpbD86Ym9vbGVhbixcblx0cmVhZE1haWw/OmJvb2xlYW4sXG5cdHVucmVhZE1haWw/OmJvb2xlYW4sXG5cdHVwZGF0ZUFwcFNldHRpbmdzOk1vZGVsVHlwZXNbXCJVc2VyQXBwU2V0dGluZ3NcIl0sXG5cdHVwbG9hZEZpbGVFbmQ/OnN0cmluZyxcblx0bG9nb3V0Pzpib29sZWFuLFxuXHRhZGRGaWxlVG9IaXN0b3J5Ok1vZGVsVHlwZXNbXCJWRmlsZVwiXSxcblx0c2VuZE9uZU1haWw/OmJvb2xlYW4sXG5cdGRlbGV0ZURyYWZ0TWFpbD86Ym9vbGVhbixcblx0dXBkYXRlRHJhZnRNYWlsPzpNb2RlbFR5cGVzW1wiTWFpbFwiXSxcblx0ZGVsZXRlVXNlcj86Ym9vbGVhbixcblx0cGF5OmJvb2xlYW4sXG5cdGNhbmNlbFBheW1lbnQ/OmJvb2xlYW4sXG5cdHNlbmRSZXBvcnQ/Ok1vZGVsVHlwZXNbXCJSZXBvcnRcIl0sXG5cdHNhdmVJbkNsb3VkOk1vZGVsVHlwZXNbXCJWRmlsZVwiXSxcblx0ZGVsZXRlVkZpbGVTaGFyaW5nOmJvb2xlYW4sXG5cdGRlbGV0ZUZvbGRlclNoYXJpbmc6Ym9vbGVhbixcblx0ZGVsZXRlTWFpbDpib29sZWFuLFxuXHRkZWxldGVGaWxlOmJvb2xlYW4sXG5cdHNoYXJlRmlsZUluSGlzdG9yeTpib29sZWFuLFxuXHRyZWNvdmVyRmlsZTpib29sZWFuLFxuXHRyZWNvdmVyTWFpbDpib29sZWFuLFxuXHRyZWNvdmVyRm9sZGVyPzpib29sZWFuLFxuXHRkdXBsaWNhdGVWRmlsZTpib29sZWFuLFxuXHRkZWxldGVGb2xkZXJDbG91ZFRyYXNoPzpib29sZWFuLFxuXHRkZWxldGVWRmlsZUNsb3VkVHJhc2g/OmJvb2xlYW4sXG5cdGRlbGV0ZU1haWxUcmFzaDpib29sZWFuLFxuXHRlbXB0eUNsb3VkVHJhc2g/OmJvb2xlYW4sXG5cdGVtcHR5TWFpbFRyYXNoPzpib29sZWFuLFxuXHR1cGxvYWRGaWxlUGFydEVuZDpib29sZWFuLFxuXHR1cGRhdGVBcHBOb3RpZmljYXRpb25zPzpNb2RlbFR5cGVzW1wiVXNlckFwcE5vdGlmaWNhdGlvbnNcIl1cbn1cbiAgICB9XG5cbmV4cG9ydCB0eXBlIEdyYXBoUUxUeXBlcyA9IHtcbiAgICAvKiogVGhlIGBCaWdJbnRgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgbm9uLWZyYWN0aW9uYWwgc2lnbmVkIHdob2xlIG51bWVyaWMgdmFsdWVzLlxuQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9CaWdJbnQgKi9cbltcIkJpZ0ludFwiXTphbnk7XG5cdC8qKiBUaGUgYEJ5dGVgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgYnl0ZSB2YWx1ZSBhcyBhIEJ1ZmZlciAqL1xuW1wiQnl0ZXNcIl06YW55O1xuXHQvKiogQSBkYXRlLXRpbWUgc3RyaW5nIGF0IFVUQywgc3VjaCBhcyAyMDA3LTEyLTAzVDEwOjE1OjMwWiwgY29tcGxpYW50IHdpdGggdGhlIGBkYXRlLXRpbWVgIGZvcm1hdCBvdXRsaW5lZCBpbiBzZWN0aW9uIDUuNiBvZiB0aGUgUkZDIDMzMzkgcHJvZmlsZSBvZiB0aGUgSVNPIDg2MDEgc3RhbmRhcmQgZm9yIHJlcHJlc2VudGF0aW9uIG9mIGRhdGVzIGFuZCB0aW1lcyB1c2luZyB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLiAqL1xuW1wiRGF0ZVRpbWVcIl06YW55O1xuXHQvKiogQW4gYXJiaXRyYXJ5LXByZWNpc2lvbiBEZWNpbWFsIHR5cGUgKi9cbltcIkRlY2ltYWxcIl06YW55O1xuXHQvKiogVGhlIGBKU09OT2JqZWN0YCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIEpTT04gb2JqZWN0cyBhcyBzcGVjaWZpZWQgYnkgW0VDTUEtNDA0XShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvcHVibGljYXRpb25zL2ZpbGVzL0VDTUEtU1QvRUNNQS00MDQucGRmKS4gKi9cbltcIkpzb25cIl06YW55O1xuXHRbXCJMYW5nXCJdOiBMYW5nO1xuXHRbXCJQbGFuS2luZFwiXTogUGxhbktpbmQ7XG5cdFtcIlVzZXJSb2xlXCJdOiBVc2VyUm9sZTtcblx0W1wiTWFpbFR5cGVcIl06IE1haWxUeXBlO1xuXHRbXCJSaWdodHNcIl06IFJpZ2h0cztcblx0W1wiRmlsZVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZpbGVcIixcblx0aWQ6IHN0cmluZyxcblx0c2l6ZTogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRzaXplQmVmb3JlOiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGNyZWF0ZWRBdDogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdHZGaWxlczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiVkZpbGVcIl0+LFxuXHR2RmlsZXNDdXJyZW50OiBBcnJheTxHcmFwaFFMVHlwZXNbXCJWRmlsZVwiXT4sXG5cdHVzZXJzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJGaWxlc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXT4sXG5cdG1kNTogc3RyaW5nLFxuXHRtZDVFbmNyeXB0ZWQ6IHN0cmluZyxcblx0ZGVsZXRlZEF0PzogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdHVzZXJBcHA6IEdyYXBoUUxUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0sXG5cdG1haWxzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJGaWxlc09uTWFpbHNcIl0+LFxuXHR2YWxpZGF0ZWRBdD86IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHR1c2VyPzogR3JhcGhRTFR5cGVzW1wiRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl1cbn07XG5cdFtcIkZpbGVQYXJ0XCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiRmlsZVBhcnRcIixcblx0aWQ6IHN0cmluZyxcblx0ZmlsZTogR3JhcGhRTFR5cGVzW1wiRmlsZVwiXSxcblx0ZmlsZUlkOiBzdHJpbmcsXG5cdHNpemU6IEdyYXBoUUxUeXBlc1tcIkJpZ0ludFwiXSxcblx0b3JkZXI6IG51bWJlcixcblx0bWQ1OiBzdHJpbmcsXG5cdHZhbGlkYXRlZEF0PzogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl1cbn07XG5cdFtcIkZpbGVDb250ZW50VHlwZVwiXTogRmlsZUNvbnRlbnRUeXBlO1xuXHRbXCJGaWxlQ29udGVudFBhcnRcIl06IHtcblx0X190eXBlbmFtZTogXCJGaWxlQ29udGVudFBhcnRcIixcblx0Y29udGVudFVybDogc3RyaW5nLFxuXHRvcmRlcjogbnVtYmVyLFxuXHRtZDU6IHN0cmluZ1xufTtcblx0W1wiRmlsZUNvbnRlbnRCYXNlXCJdOiB7XG5cdF9fdHlwZW5hbWU6XCJGaWxlQ29udGVudENsb3VkXCIgfCBcIkZpbGVDb250ZW50U2VudE1haWxcIiB8IFwiRmlsZUNvbnRlbnRSZWNlaXZlZE1haWxcIixcblx0cGFydHM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZpbGVDb250ZW50UGFydFwiXT4sXG5cdGtleTogc3RyaW5nLFxuXHRtZDU6IHN0cmluZyxcblx0bWQ1RW5jcnlwdGVkOiBzdHJpbmcsXG5cdHRvdGFsU2l6ZTogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHR0eXBlOiBHcmFwaFFMVHlwZXNbXCJGaWxlQ29udGVudFR5cGVcIl1cblx0WycuLi5vbiBGaWxlQ29udGVudENsb3VkJ106ICdfX3VuaW9uJyAmIEdyYXBoUUxUeXBlc1tcIkZpbGVDb250ZW50Q2xvdWRcIl07XG5cdFsnLi4ub24gRmlsZUNvbnRlbnRTZW50TWFpbCddOiAnX191bmlvbicgJiBHcmFwaFFMVHlwZXNbXCJGaWxlQ29udGVudFNlbnRNYWlsXCJdO1xuXHRbJy4uLm9uIEZpbGVDb250ZW50UmVjZWl2ZWRNYWlsJ106ICdfX3VuaW9uJyAmIEdyYXBoUUxUeXBlc1tcIkZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCJdO1xufTtcblx0W1wiRmlsZUNvbnRlbnRDbG91ZFwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZpbGVDb250ZW50Q2xvdWRcIixcblx0cGFydHM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZpbGVDb250ZW50UGFydFwiXT4sXG5cdGtleTogc3RyaW5nLFxuXHRtZDU6IHN0cmluZyxcblx0bWQ1RW5jcnlwdGVkOiBzdHJpbmcsXG5cdHRvdGFsU2l6ZTogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHR0eXBlOiBHcmFwaFFMVHlwZXNbXCJGaWxlQ29udGVudFR5cGVcIl0sXG5cdHB1YmxpY0tleTogc3RyaW5nXG59O1xuXHRbXCJGaWxlQ29udGVudFNlbnRNYWlsXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiRmlsZUNvbnRlbnRTZW50TWFpbFwiLFxuXHRwYXJ0czogQXJyYXk8R3JhcGhRTFR5cGVzW1wiRmlsZUNvbnRlbnRQYXJ0XCJdPixcblx0a2V5OiBzdHJpbmcsXG5cdG1kNTogc3RyaW5nLFxuXHRtZDVFbmNyeXB0ZWQ6IHN0cmluZyxcblx0dG90YWxTaXplOiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdHR5cGU6IEdyYXBoUUxUeXBlc1tcIkZpbGVDb250ZW50VHlwZVwiXVxufTtcblx0W1wiRmlsZUNvbnRlbnRSZWNlaXZlZE1haWxcIl06IHtcblx0X190eXBlbmFtZTogXCJGaWxlQ29udGVudFJlY2VpdmVkTWFpbFwiLFxuXHRwYXJ0czogQXJyYXk8R3JhcGhRTFR5cGVzW1wiRmlsZUNvbnRlbnRQYXJ0XCJdPixcblx0a2V5OiBzdHJpbmcsXG5cdG1kNTogc3RyaW5nLFxuXHRtZDVFbmNyeXB0ZWQ6IHN0cmluZyxcblx0dG90YWxTaXplOiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdHR5cGU6IEdyYXBoUUxUeXBlc1tcIkZpbGVDb250ZW50VHlwZVwiXSxcblx0c2VuZGVyUHVibGljS2V5OiBzdHJpbmdcbn07XG5cdFtcIkZpbGVDb250ZW50XCJdOntcblx0X190eXBlbmFtZTpcIkZpbGVDb250ZW50Q2xvdWRcIiB8IFwiRmlsZUNvbnRlbnRSZWNlaXZlZE1haWxcIiB8IFwiRmlsZUNvbnRlbnRTZW50TWFpbFwiXG5cdFsnLi4ub24gRmlsZUNvbnRlbnRDbG91ZCddOiAnX191bmlvbicgJiBHcmFwaFFMVHlwZXNbXCJGaWxlQ29udGVudENsb3VkXCJdO1xuXHRbJy4uLm9uIEZpbGVDb250ZW50UmVjZWl2ZWRNYWlsJ106ICdfX3VuaW9uJyAmIEdyYXBoUUxUeXBlc1tcIkZpbGVDb250ZW50UmVjZWl2ZWRNYWlsXCJdO1xuXHRbJy4uLm9uIEZpbGVDb250ZW50U2VudE1haWwnXTogJ19fdW5pb24nICYgR3JhcGhRTFR5cGVzW1wiRmlsZUNvbnRlbnRTZW50TWFpbFwiXTtcbn07XG5cdFtcIkZpbGVSZXNwb25zZVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZpbGVSZXNwb25zZVwiLFxuXHRmaWxlSWQ6IHN0cmluZyxcblx0cGFydHM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZpbGVQYXJ0UmVzcG9uc2VcIl0+LFxuXHRmaWxlUGFydFNpemU6IEdyYXBoUUxUeXBlc1tcIkJpZ0ludFwiXVxufTtcblx0W1wiRmlsZVBhcnRSZXNwb25zZVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZpbGVQYXJ0UmVzcG9uc2VcIixcblx0ZmllbGRzOiBHcmFwaFFMVHlwZXNbXCJKc29uXCJdLFxuXHR1cmw6IHN0cmluZyxcblx0b3JkZXI6IG51bWJlclxufTtcblx0W1wiRmlsZVNoYXJlZFwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZpbGVTaGFyZWRcIixcblx0dXNlcklkOiBzdHJpbmcsXG5cdG1lc3NhZ2U/OiBzdHJpbmcsXG5cdGFwcElkOiBzdHJpbmcsXG5cdGlkOiBzdHJpbmcsXG5cdGZpbGVuYW1lOiBzdHJpbmcsXG5cdHNpemU6IG51bWJlcixcblx0c2l6ZUJlZm9yZTogbnVtYmVyXG59O1xuXHRbXCJGaWxlU2hhcmVkQ29udGVudFwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZpbGVTaGFyZWRDb250ZW50XCIsXG5cdG93bmVySWQ/OiBzdHJpbmcsXG5cdHB1YktleT86IHN0cmluZyxcblx0bWVzc2FnZT86IHN0cmluZyxcblx0YXBwSWQ6IHN0cmluZyxcblx0aWQ6IHN0cmluZyxcblx0dHlwZTogc3RyaW5nLFxuXHRmaWxlbmFtZTogc3RyaW5nLFxuXHRjb250ZW50VXJsOiBzdHJpbmcsXG5cdGtleTogc3RyaW5nLFxuXHRzaXplOiBudW1iZXIsXG5cdHNpemVCZWZvcmU6IG51bWJlclxufTtcblx0W1wiQ2xvdWRMaW1pdHNcIl06IHtcblx0X190eXBlbmFtZTogXCJDbG91ZExpbWl0c1wiLFxuXHRzaXplOiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdG1heFNpemU/OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGNvdW50OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdG1heENvdW50PzogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdXG59O1xuXHRbXCJNYWlsTGltaXRzVmFsdWVzXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiTWFpbExpbWl0c1ZhbHVlc1wiLFxuXHRjb3VudDogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRtYXhDb3VudD86IEdyYXBoUUxUeXBlc1tcIkJpZ0ludFwiXSxcblx0ZmlsZUNvdW50OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdG1heEZpbGVDb3VudD86IEdyYXBoUUxUeXBlc1tcIkJpZ0ludFwiXSxcblx0ZmlsZVNpemU6IEdyYXBoUUxUeXBlc1tcIkJpZ0ludFwiXSxcblx0bWF4RmlsZVNpemU/OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl1cbn07XG5cdFtcIlVzZXJNYWlsTGltaXRzXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiVXNlck1haWxMaW1pdHNcIixcblx0c2VudDogR3JhcGhRTFR5cGVzW1wiTWFpbExpbWl0c1ZhbHVlc1wiXSxcblx0cmVjZWl2ZWQ6IEdyYXBoUUxUeXBlc1tcIk1haWxMaW1pdHNWYWx1ZXNcIl1cbn07XG5cdFtcIlF1ZXJ5TGltaXRzXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiUXVlcnlMaW1pdHNcIixcblx0Y2xvdWQ6IEdyYXBoUUxUeXBlc1tcIkNsb3VkTGltaXRzXCJdLFxuXHRtYWlsOiBHcmFwaFFMVHlwZXNbXCJVc2VyTWFpbExpbWl0c1wiXVxufTtcblx0W1wiTGltaXRzXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiTGltaXRzXCIsXG5cdGRvd25sb2FkQmFuZHdpZHRoPzogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRkb3dubG9hZENvdW50PzogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRoYXJkRmlsZUNvdW50PzogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRoYXJkRmlsZVNpemU/OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdHBlckZpbGVTaXplPzogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRyZWNlaXZlZE1haWxzOiBHcmFwaFFMVHlwZXNbXCJNYWlsTGltaXRzXCJdLFxuXHRzZW50TWFpbHM6IEdyYXBoUUxUeXBlc1tcIk1haWxMaW1pdHNcIl0sXG5cdHVwbG9hZEJhbmR3aWR0aD86IEdyYXBoUUxUeXBlc1tcIkJpZ0ludFwiXSxcblx0dXBsb2FkQ291bnQ/OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl1cbn07XG5cdFtcIk1haWxMaW1pdHNcIl06IHtcblx0X190eXBlbmFtZTogXCJNYWlsTGltaXRzXCIsXG5cdGNvdW50PzogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRmaWxlQ291bnQ/OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGZpbGVTaXplPzogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRoYXJkQ291bnQ/OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGhhcmRGaWxlQ291bnQ/OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl0sXG5cdGhhcmRGaWxlU2l6ZT86IEdyYXBoUUxUeXBlc1tcIkJpZ0ludFwiXSxcblx0cGVyRmlsZVNpemU/OiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl1cbn07XG5cdFtcIlVzZXJcIl06IHtcblx0X190eXBlbmFtZTogXCJVc2VyXCIsXG5cdGlkOiBzdHJpbmcsXG5cdGRlbGV0ZWRBdD86IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRsYW5nOiBHcmFwaFFMVHlwZXNbXCJMYW5nXCJdLFxuXHRyZXBvcnRTZW50OiBBcnJheTxHcmFwaFFMVHlwZXNbXCJSZXBvcnRcIl0+LFxuXHRnb2RGYXRoZXI/OiBHcmFwaFFMVHlwZXNbXCJVc2VyXCJdLFxuXHRnb2RDaGlsZHJlbjogQXJyYXk8R3JhcGhRTFR5cGVzW1wiVXNlclwiXT4sXG5cdGZpcnN0bmFtZTogc3RyaW5nLFxuXHRsYXN0bmFtZTogc3RyaW5nLFxuXHRlbWFpbDogc3RyaW5nLFxuXHRwaG9uZTogc3RyaW5nLFxuXHRsYXN0TG9naW46IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRyb2xlOiBHcmFwaFFMVHlwZXNbXCJVc2VyUm9sZVwiXSxcblx0c2Vzc2lvbnM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIlVzZXJTZXNzaW9uXCJdPixcblx0Y3JlYXRlZEF0OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0cmVjZWl2ZWRNYWlsczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiTWFpbFwiXT4sXG5cdHdhaXRpbmdSZWNlaXZlZE1haWxzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJXYWl0aW5nUmVjZWl2ZWRNYWlsXCJdPixcblx0c2VudE1haWxzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJNYWlsXCJdPixcblx0ZHJhZnRNYWlsczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiTWFpbFwiXT4sXG5cdGFwcFNldHRpbmdzPzogR3JhcGhRTFR5cGVzW1wiVXNlckFwcFNldHRpbmdzXCJdLFxuXHRhcHBsaWNhdGlvbnM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0+LFxuXHRwdWJsaWNLZXk6IHN0cmluZ1xufTtcblx0W1wiTWFpbFwiXToge1xuXHRfX3R5cGVuYW1lOiBcIk1haWxcIixcblx0aWQ6IHN0cmluZyxcblx0YXBwOiBHcmFwaFFMVHlwZXNbXCJBcHBsaWNhdGlvblwiXSxcblx0Ym9keTogc3RyaW5nLFxuXHRjcmVhdGVkQXQ6IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRkZWxldGVkQXQ/OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0ZmlsZXM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZpbGVzT25NYWlsc1wiXT4sXG5cdG1haWxJbnRlZ3JpdHk/OiBHcmFwaFFMVHlwZXNbXCJNYWlsSW50ZWdyaXR5XCJdLFxuXHRtYWlsSW50ZWdyaXR5RHJhZnQ/OiBHcmFwaFFMVHlwZXNbXCJNYWlsSW50ZWdyaXR5RHJhZnRcIl0sXG5cdG9wZW5lZEF0PzogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdHJlY2lwaWVudDogR3JhcGhRTFR5cGVzW1wiVXNlclwiXSxcblx0c2VuZGVyOiBHcmFwaFFMVHlwZXNbXCJVc2VyXCJdLFxuXHRzdWJqZWN0OiBzdHJpbmcsXG5cdHR5cGU6IEdyYXBoUUxUeXBlc1tcIk1haWxUeXBlXCJdLFxuXHRyZWNpcGllbnRzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJVc2VyXCJdPlxufTtcblx0W1wiTWFpbEludGVncml0eVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIk1haWxJbnRlZ3JpdHlcIixcblx0aWQ6IHN0cmluZyxcblx0aGFzaDogc3RyaW5nLFxuXHRoYXNoS2V5OiBzdHJpbmcsXG5cdGFuc3dlcnM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIk1haWxJbnRlZ3JpdHlcIl0+LFxuXHRhcHA6IEdyYXBoUUxUeXBlc1tcIkFwcGxpY2F0aW9uXCJdLFxuXHRtYWlsczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiTWFpbFwiXT4sXG5cdHJlY2lwaWVudHM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIlVzZXJcIl0+LFxuXHR0ZW1wb3JhcnlSZWNpcGllbnRzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJUZW1wb3JhcnlVc2VyXCJdPixcblx0cmVwbHlUbz86IEdyYXBoUUxUeXBlc1tcIk1haWxJbnRlZ3JpdHlcIl1cbn07XG5cdFtcIkZpbGVzT25NYWlsc1wiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZpbGVzT25NYWlsc1wiLFxuXHRmaWxlOiBHcmFwaFFMVHlwZXNbXCJGaWxlXCJdLFxuXHRmaWxlS2V5OiBzdHJpbmcsXG5cdGZpbGVuYW1lOiBzdHJpbmcsXG5cdG1haWw6IEdyYXBoUUxUeXBlc1tcIk1haWxcIl1cbn07XG5cdFtcIkZpbGVzT25Vc2Vyc09uQXBwbGljYXRpb25zXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiRmlsZXNPblVzZXJzT25BcHBsaWNhdGlvbnNcIixcblx0ZmlsZTogR3JhcGhRTFR5cGVzW1wiRmlsZVwiXSxcblx0dXNlckFwcDogR3JhcGhRTFR5cGVzW1wiQXBwbGljYXRpb25zT25Vc2Vyc1wiXSxcblx0LyoqIEVuY3J5cHRlZCB3aXRoIFVzZXJBcHAga2V5cyAqL1xuXHRrZXk6IHN0cmluZ1xufTtcblx0W1wiVkZpbGVcIl06IHtcblx0X190eXBlbmFtZTogXCJWRmlsZVwiLFxuXHRpZDogc3RyaW5nLFxuXHRpc0Zhdm9yaXRlOiBib29sZWFuLFxuXHRjcmVhdGVkQXQ6IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRkZWxldGVkQXQ/OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0ZmlsZW5hbWU6IHN0cmluZyxcblx0dXNlckFwcHM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIlZGaWxlc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXT4sXG5cdGNyZWF0ZWRCeTogR3JhcGhRTFR5cGVzW1wiQXBwbGljYXRpb25zT25Vc2Vyc1wiXSxcblx0dXNlckFwcD86IEdyYXBoUUxUeXBlc1tcIlZGaWxlc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXSxcblx0Zm9sZGVyOiBHcmFwaFFMVHlwZXNbXCJGb2xkZXJcIl0sXG5cdGhpc3Rvcnk6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZpbGVcIl0+LFxuXHRjdXJyZW50PzogR3JhcGhRTFR5cGVzW1wiRmlsZVwiXSxcblx0dXBkYXRlZEF0OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXVxufTtcblx0W1wiRm9sZGVyQnJlYWRjcnVtYkl0ZW1cIl06IHtcblx0X190eXBlbmFtZTogXCJGb2xkZXJCcmVhZGNydW1iSXRlbVwiLFxuXHRpZDogc3RyaW5nLFxuXHRuYW1lOiBzdHJpbmcsXG5cdHB1YktleTogc3RyaW5nLFxuXHRuYW1lS2V5Pzogc3RyaW5nXG59O1xuXHRbXCJGb2xkZXJcIl06IHtcblx0X190eXBlbmFtZTogXCJGb2xkZXJcIixcblx0aWQ6IHN0cmluZyxcblx0aXNGYXZvcml0ZTogYm9vbGVhbixcblx0Y3JlYXRlZEF0OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0ZGVsZXRlZEF0PzogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdHVwZGF0ZWRBdDogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdGNyZWF0ZWRCeTogR3JhcGhRTFR5cGVzW1wiQXBwbGljYXRpb25zT25Vc2Vyc1wiXSxcblx0dXNlckFwcHM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZvbGRlcnNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl0+LFxuXHR1c2VyQXBwPzogR3JhcGhRTFR5cGVzW1wiRm9sZGVyc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXSxcblx0bmFtZTogc3RyaW5nLFxuXHRwYXJlbnRGb2xkZXI/OiBHcmFwaFFMVHlwZXNbXCJGb2xkZXJcIl0sXG5cdHN1YmZvbGRlcnM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZvbGRlclwiXT4sXG5cdHZGaWxlczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiVkZpbGVcIl0+LFxuXHRicmVhZGNydW1iOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJGb2xkZXJCcmVhZGNydW1iSXRlbVwiXT5cbn07XG5cdFtcIkFwcGxpY2F0aW9uXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiQXBwbGljYXRpb25cIixcblx0aWQ6IHN0cmluZyxcblx0bmFtZTogc3RyaW5nXG59O1xuXHRbXCJBcHBsaWNhdGlvbnNPblVzZXJzXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiQXBwbGljYXRpb25zT25Vc2Vyc1wiLFxuXHRmYWtlVXNlcklkOiBzdHJpbmcsXG5cdGtleVBhaXI/OiBHcmFwaFFMVHlwZXNbXCJBcHBLZXlQYWlyXCJdLFxuXHRzZXNzaW9uczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiQXBwU2Vzc2lvblwiXT4sXG5cdGFwcDogR3JhcGhRTFR5cGVzW1wiQXBwbGljYXRpb25cIl0sXG5cdHVzZXI6IEdyYXBoUUxUeXBlc1tcIlVzZXJcIl0sXG5cdGZvbGRlcnM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZvbGRlcnNPblVzZXJzT25BcHBsaWNhdGlvbnNcIl0+LFxuXHRzZXR0aW5nczogR3JhcGhRTFR5cGVzW1wiVXNlckFwcFNldHRpbmdzXCJdXG59O1xuXHRbXCJBcHBLZXlQYWlyXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiQXBwS2V5UGFpclwiLFxuXHRwdWI6IHN0cmluZ1xufTtcblx0W1wiRm9sZGVyU2l6ZVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZvbGRlclNpemVcIixcblx0c2l6ZTogR3JhcGhRTFR5cGVzW1wiQmlnSW50XCJdLFxuXHRzaXplQmVmb3JlOiBHcmFwaFFMVHlwZXNbXCJCaWdJbnRcIl1cbn07XG5cdFtcIlVzZXJTZXNzaW9uXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiVXNlclNlc3Npb25cIixcblx0aWQ6IHN0cmluZyxcblx0YXBwU2Vzc2lvbnM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkFwcFNlc3Npb25cIl0+LFxuXHRsYXN0QWN0aXZpdHk/OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dXNlckFnZW50Pzogc3RyaW5nLFxuXHRpcD86IHN0cmluZyxcblx0Y2l0eT86IHN0cmluZyxcblx0Y291bnRyeT86IHN0cmluZyxcblx0Y3JlYXRlZEF0OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXVxufTtcblx0W1wiQXBwU2Vzc2lvblwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkFwcFNlc3Npb25cIixcblx0aWQ6IHN0cmluZyxcblx0bGFzdEFjdGl2aXR5PzogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdHVzZXJBZ2VudD86IHN0cmluZyxcblx0aXA/OiBzdHJpbmcsXG5cdGNpdHk/OiBzdHJpbmcsXG5cdGNvdW50cnk/OiBzdHJpbmcsXG5cdHVzZXJTZXNzaW9uOiBHcmFwaFFMVHlwZXNbXCJVc2VyU2Vzc2lvblwiXSxcblx0dXNlckFwcD86IEdyYXBoUUxUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0sXG5cdGNyZWF0ZWRBdDogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl1cbn07XG5cdFtcIlVzZXJBcHBTZXR0aW5nc1wiXToge1xuXHRfX3R5cGVuYW1lOiBcIlVzZXJBcHBTZXR0aW5nc1wiLFxuXHRpZDogc3RyaW5nLFxuXHRjbG91ZEZpbGVEYXlzRm9yRGVsZXRlOiBudW1iZXIsXG5cdGNsb3VkRm9sZGVyRGF5c0ZvckRlbGV0ZTogbnVtYmVyLFxuXHRoaXN0b3J5RmlsZURheXNGb3JEZWxldGU/OiBudW1iZXIsXG5cdGhpc3RvcnlNYXhGaWxlQ291bnQ6IG51bWJlcixcblx0YXV0b0Rpc2Nvbm5lY3REZWxheT86IG51bWJlclxufTtcblx0W1wiTWFpbEZpbGVJbnB1dFwiXToge1xuXHRcdGlkOiBzdHJpbmcsXG5cdG5hbWU6IHN0cmluZyxcblx0ZmlsZUtleTogc3RyaW5nXG59O1xuXHRbXCJNYWlsUmVjaXBpZW50SW5wdXRcIl06IHtcblx0XHRib2R5OiBzdHJpbmcsXG5cdHN1YmplY3Q6IHN0cmluZyxcblx0cmVjaXBpZW50SWQ6IHN0cmluZyxcblx0ZmlsZXM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIk1haWxGaWxlSW5wdXRcIl0+XG59O1xuXHRbXCJTaGFyZUZpbGVLZXlJbnB1dFwiXToge1xuXHRcdGlkOiBzdHJpbmcsXG5cdGtleTogc3RyaW5nXG59O1xuXHRbXCJOYW1lS2V5SW5wdXRcIl06IHtcblx0XHRpZDogc3RyaW5nLFxuXHRuYW1lS2V5OiBzdHJpbmcsXG5cdGZpbGVzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJTaGFyZUZpbGVLZXlJbnB1dFwiXT5cbn07XG5cdFtcIk5hbWVLZXlJbnB1dEZvbGRlcnNcIl06IHtcblx0XHRpZDogc3RyaW5nLFxuXHRuYW1lS2V5OiBzdHJpbmdcbn07XG5cdFtcIlNoYXJlRm9sZGVyc0lucHV0XCJdOiB7XG5cdFx0Zm9sZGVyczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiTmFtZUtleUlucHV0Rm9sZGVyc1wiXT4sXG5cdHZGaWxlczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiTmFtZUtleUlucHV0XCJdPlxufTtcblx0W1wiU2hhcmVGaWxlSW5IaXN0b3J5SW5wdXRcIl06IHtcblx0XHRmaWxlSWQ6IHN0cmluZyxcblx0dXNlcnM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIlNoYXJlRmlsZUtleUlucHV0XCJdPlxufTtcblx0W1wiUGF5SW5wdXRUeXBlXCJdOiBQYXlJbnB1dFR5cGU7XG5cdFtcIlBheUlucHV0XCJdOiB7XG5cdFx0dHlwZTogR3JhcGhRTFR5cGVzW1wiUGF5SW5wdXRUeXBlXCJdLFxuXHR0b2tlbjogc3RyaW5nLFxuXHRmaXJzdE5hbWU6IHN0cmluZyxcblx0bGFzdE5hbWU6IHN0cmluZyxcblx0c3RyZWV0OiBzdHJpbmcsXG5cdHBvc3RhbENvZGU6IHN0cmluZyxcblx0Y2l0eTogc3RyaW5nLFxuXHRjb3VudHJ5OiBzdHJpbmcsXG5cdG51bWJlcjogc3RyaW5nLFxuXHRtb250aDogc3RyaW5nLFxuXHR5ZWFyOiBzdHJpbmcsXG5cdGN2djogc3RyaW5nXG59O1xuXHRbXCJXYWl0aW5nUmVjZWl2ZWRNYWlsXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiV2FpdGluZ1JlY2VpdmVkTWFpbFwiLFxuXHRzZW5kZXI6IEdyYXBoUUxUeXBlc1tcIlVzZXJcIl0sXG5cdGRhdGU6IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRyZWNpcGllbnRzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJVc2VyXCJdPixcblx0dGVtcG9yYXJ5UmVjaXBpZW50czogQXJyYXk8R3JhcGhRTFR5cGVzW1wiVGVtcG9yYXJ5VXNlclwiXT4sXG5cdGF0dGFjaG1lbnRzQ291bnQ6IG51bWJlclxufTtcblx0W1wiVGVtcG9yYXJ5VXNlclwiXToge1xuXHRfX3R5cGVuYW1lOiBcIlRlbXBvcmFyeVVzZXJcIixcblx0aWQ6IHN0cmluZyxcblx0bWFpbHM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIk1haWxJbnRlZ3JpdHlcIl0+LFxuXHRkcmFmdE1haWxzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJNYWlsSW50ZWdyaXR5RHJhZnRcIl0+LFxuXHRlbWFpbD86IHN0cmluZ1xufTtcblx0W1wiTWFpbEludGVncml0eURyYWZ0XCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiTWFpbEludGVncml0eURyYWZ0XCIsXG5cdGlkOiBzdHJpbmcsXG5cdGhhc2g6IHN0cmluZyxcblx0aGFzaEtleTogc3RyaW5nLFxuXHRhcHA6IEdyYXBoUUxUeXBlc1tcIkFwcGxpY2F0aW9uXCJdLFxuXHRtYWlsOiBHcmFwaFFMVHlwZXNbXCJNYWlsXCJdLFxuXHRyZWNpcGllbnRzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJVc2VyXCJdPixcblx0dGVtcG9yYXJ5UmVjaXBpZW50czogQXJyYXk8R3JhcGhRTFR5cGVzW1wiVGVtcG9yYXJ5VXNlclwiXT4sXG5cdHJlcGx5VG8/OiBHcmFwaFFMVHlwZXNbXCJNYWlsSW50ZWdyaXR5XCJdXG59O1xuXHRbXCJGYXFcIl06IHtcblx0X190eXBlbmFtZTogXCJGYXFcIixcblx0aWQ6IHN0cmluZyxcblx0b3JkZXI6IG51bWJlcixcblx0ZW50cmllczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiRmFxRW50cnlcIl0+XG59O1xuXHRbXCJGYXFFbnRyeVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZhcUVudHJ5XCIsXG5cdGlkOiBzdHJpbmcsXG5cdGxhbmc6IEdyYXBoUUxUeXBlc1tcIkxhbmdcIl0sXG5cdHF1ZXN0aW9uOiBzdHJpbmcsXG5cdGFuc3dlcjogc3RyaW5nLFxuXHRmYXE6IEdyYXBoUUxUeXBlc1tcIkZhcVwiXVxufTtcblx0W1wiUGxhblwiXToge1xuXHRfX3R5cGVuYW1lOiBcIlBsYW5cIixcblx0aWQ6IHN0cmluZyxcblx0a2luZDogR3JhcGhRTFR5cGVzW1wiUGxhbktpbmRcIl0sXG5cdGNvZGVzOiBBcnJheTxzdHJpbmc+LFxuXHRsaW1pdHM6IEdyYXBoUUxUeXBlc1tcIkxpbWl0c1wiXVxufTtcblx0W1wiUmVwb3J0XCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiUmVwb3J0XCIsXG5cdGlkOiBzdHJpbmcsXG5cdHVzZXI6IEdyYXBoUUxUeXBlc1tcIlVzZXJcIl0sXG5cdHJlcG9ydGVkVXNlcjogR3JhcGhRTFR5cGVzW1wiVXNlclwiXSxcblx0Y3VzdG9tTWVzc2FnZT86IHN0cmluZ1xufTtcblx0W1wiRm9sZGVyc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZvbGRlcnNPblVzZXJzT25BcHBsaWNhdGlvbnNcIixcblx0Zm9sZGVyOiBHcmFwaFFMVHlwZXNbXCJGb2xkZXJcIl0sXG5cdHVzZXJBcHA6IEdyYXBoUUxUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0sXG5cdHJpZ2h0czogR3JhcGhRTFR5cGVzW1wiUmlnaHRzXCJdLFxuXHRuYW1lS2V5Pzogc3RyaW5nLFxuXHRpc1Jvb3Q6IGJvb2xlYW5cbn07XG5cdFtcIlZGaWxlc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiXToge1xuXHRfX3R5cGVuYW1lOiBcIlZGaWxlc09uVXNlcnNPbkFwcGxpY2F0aW9uc1wiLFxuXHR2RmlsZTogR3JhcGhRTFR5cGVzW1wiVkZpbGVcIl0sXG5cdHVzZXJBcHA6IEdyYXBoUUxUeXBlc1tcIkFwcGxpY2F0aW9uc09uVXNlcnNcIl0sXG5cdHJpZ2h0czogR3JhcGhRTFR5cGVzW1wiUmlnaHRzXCJdLFxuXHRuYW1lS2V5OiBzdHJpbmcsXG5cdGlzUm9vdDogYm9vbGVhblxufTtcblx0W1wiRmFxSXRlbVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkZhcUl0ZW1cIixcblx0b3JkZXI6IG51bWJlcixcblx0cXVlc3Rpb246IHN0cmluZyxcblx0YW5zd2VyOiBzdHJpbmdcbn07XG5cdFtcIkJsb2dcIl06IHtcblx0X190eXBlbmFtZTogXCJCbG9nXCIsXG5cdGlkOiBzdHJpbmcsXG5cdG9yZGVyOiBudW1iZXIsXG5cdGVudHJpZXM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkJsb2dFbnRyeVwiXT5cbn07XG5cdFtcIkJsb2dFbnRyeVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkJsb2dFbnRyeVwiLFxuXHRpZDogc3RyaW5nLFxuXHRsYW5nOiBHcmFwaFFMVHlwZXNbXCJMYW5nXCJdLFxuXHRhdXRob3I6IHN0cmluZyxcblx0Ym9keTogc3RyaW5nLFxuXHRkYXRlOiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0aW1hZ2U6IHN0cmluZyxcblx0c3VtbWFyeTogc3RyaW5nLFxuXHR0aXRsZTogc3RyaW5nXG59O1xuXHRbXCJCbG9nSXRlbVwiXToge1xuXHRfX3R5cGVuYW1lOiBcIkJsb2dJdGVtXCIsXG5cdGlkOiBzdHJpbmcsXG5cdGJsb2dJZDogc3RyaW5nLFxuXHRvcmRlcjogbnVtYmVyLFxuXHR0aXRsZTogc3RyaW5nLFxuXHRib2R5OiBzdHJpbmcsXG5cdGF1dGhvcjogc3RyaW5nLFxuXHRpbWFnZTogc3RyaW5nLFxuXHRpbWFnZUFsdDogc3RyaW5nLFxuXHRzdW1tYXJ5OiBzdHJpbmcsXG5cdGRhdGU6IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdXG59O1xuXHRbXCJVc2VyQXBwTm90aWZpY2F0aW9uc1wiXToge1xuXHRfX3R5cGVuYW1lOiBcIlVzZXJBcHBOb3RpZmljYXRpb25zXCIsXG5cdGlkOiBzdHJpbmcsXG5cdGVuYWJsZUFsbDogYm9vbGVhbixcblx0bWFpbDogYm9vbGVhbixcblx0Y2xvdWQ6IGJvb2xlYW4sXG5cdGRpc2FibGVBbGxVbnRpbD86IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdXG59O1xuXHRbXCJSZWN1cmx5SW52b2ljZXNcIl06IHtcblx0X190eXBlbmFtZTogXCJSZWN1cmx5SW52b2ljZXNcIixcblx0cGRmOiBzdHJpbmcsXG5cdGRhdGU6IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRkdWU6IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRzdGF0dXM6IHN0cmluZyxcblx0dG90YWw6IG51bWJlcixcblx0bmFtZTogc3RyaW5nLFxuXHRjdXJyZW5jeTogc3RyaW5nXG59O1xuXHRbXCJSZWN1cmx5U3Vic2NyaXB0aW9uXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiUmVjdXJseVN1YnNjcmlwdGlvblwiLFxuXHRhdXRvcmVuZXc6IGJvb2xlYW4sXG5cdGFjdGl2YXRlZEF0PzogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0Y3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRjYW5jZWxlZEF0PzogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdGNyZWF0ZWRBdD86IEdyYXBoUUxUeXBlc1tcIkRhdGVUaW1lXCJdLFxuXHRleHBpcmVzQXQ/OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0cGF1c2VkQXQ/OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dHJpYWxFbmRzQXQ/OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dHJpYWxTdGFydGVkQXQ/OiBHcmFwaFFMVHlwZXNbXCJEYXRlVGltZVwiXSxcblx0dXBkYXRlZEF0PzogR3JhcGhRTFR5cGVzW1wiRGF0ZVRpbWVcIl0sXG5cdHN0YXRlOiBzdHJpbmcsXG5cdGNvbGxlY3Rpb25NZXRob2Q6IHN0cmluZyxcblx0cGxhbj86IHN0cmluZyxcblx0cGxhbkNvZGU/OiBzdHJpbmcsXG5cdHRvdGFsPzogbnVtYmVyXG59O1xuXHRbXCJQYXltZW50SW5mb3NcIl06IHtcblx0X190eXBlbmFtZTogXCJQYXltZW50SW5mb3NcIixcblx0aG9zdGVkVXJsOiBzdHJpbmcsXG5cdGN1cnJlbnRTdWJzY3JpcHRpb246IEdyYXBoUUxUeXBlc1tcIlJlY3VybHlTdWJzY3JpcHRpb25cIl0sXG5cdGludm9pY2VzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJSZWN1cmx5SW52b2ljZXNcIl0+XG59O1xuXHRbXCJTaGFyZUZvbGRlclJlc3BvbnNlXCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiU2hhcmVGb2xkZXJSZXNwb25zZVwiLFxuXHRmb2xkZXJzOiBBcnJheTxzdHJpbmc+LFxuXHR2RmlsZXM6IEFycmF5PHN0cmluZz5cbn07XG5cdFtcIlF1ZXJ5XCJdOiB7XG5cdF9fdHlwZW5hbWU6IFwiUXVlcnlcIixcblx0dGVzdD86IGJvb2xlYW4sXG5cdGxpbWl0cz86IEdyYXBoUUxUeXBlc1tcIlF1ZXJ5TGltaXRzXCJdLFxuXHR1c2VyPzogR3JhcGhRTFR5cGVzW1wiVXNlclwiXSxcblx0ZGJDb25maWc/OiBHcmFwaFFMVHlwZXNbXCJKc29uXCJdLFxuXHRkYkdldD86IEdyYXBoUUxUeXBlc1tcIkpzb25cIl0sXG5cdGRiU2VhcmNoOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJKc29uXCJdPixcblx0ZmlsZUNvbnRlbnQ/OiBHcmFwaFFMVHlwZXNbXCJGaWxlQ29udGVudFwiXSxcblx0ZmlsZXNTaGFyZWRXaXRoTWU6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZpbGVTaGFyZWRDb250ZW50XCJdPixcblx0dkZpbGVzU2hhcmVkV2l0aE1lOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJWRmlsZVwiXT4sXG5cdGZvbGRlcnNTaGFyZWRXaXRoTWU6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZvbGRlclwiXT4sXG5cdGZvbGRlclNpemU/OiBHcmFwaFFMVHlwZXNbXCJGb2xkZXJTaXplXCJdLFxuXHRmb2xkZXI/OiBHcmFwaFFMVHlwZXNbXCJGb2xkZXJcIl0sXG5cdHZGaWxlPzogR3JhcGhRTFR5cGVzW1wiVkZpbGVcIl0sXG5cdGZpbGU/OiBHcmFwaFFMVHlwZXNbXCJGaWxlXCJdLFxuXHRmYXE6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZhcUl0ZW1cIl0+LFxuXHRwYXltZW50SW5mb3M/OiBHcmFwaFFMVHlwZXNbXCJQYXltZW50SW5mb3NcIl0sXG5cdHBsYW5zOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJQbGFuXCJdPixcblx0c2hhcmVkRm9sZGVyczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiRm9sZGVyXCJdPixcblx0c2hhcmVkVkZpbGVzOiBBcnJheTxHcmFwaFFMVHlwZXNbXCJWRmlsZVwiXT4sXG5cdGJsb2c6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkJsb2dJdGVtXCJdPixcblx0ZGVsZXRlZEZvbGRlcnM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIkZvbGRlclwiXT4sXG5cdGRlbGV0ZWRWRmlsZXM6IEFycmF5PEdyYXBoUUxUeXBlc1tcIlZGaWxlXCJdPixcblx0bWFpbD86IEdyYXBoUUxUeXBlc1tcIk1haWxcIl0sXG5cdGRlbGV0ZWRNYWlsczogQXJyYXk8R3JhcGhRTFR5cGVzW1wiTWFpbFwiXT4sXG5cdGFwcE5vdGlmaWNhdGlvbnM/OiBHcmFwaFFMVHlwZXNbXCJVc2VyQXBwTm90aWZpY2F0aW9uc1wiXVxufTtcblx0W1wiTXV0YXRpb25cIl06IHtcblx0X190eXBlbmFtZTogXCJNdXRhdGlvblwiLFxuXHRjcmVhdGVBcHBsaWNhdGlvbj86IHN0cmluZyxcblx0ZGJTZXQ/OiBHcmFwaFFMVHlwZXNbXCJKc29uXCJdLFxuXHRkYkNvbmZpZzogR3JhcGhRTFR5cGVzW1wiSnNvblwiXSxcblx0c2hhcmVWRmlsZT86IGJvb2xlYW4sXG5cdHNoYXJlRm9sZGVyOiBHcmFwaFFMVHlwZXNbXCJTaGFyZUZvbGRlclJlc3BvbnNlXCJdLFxuXHRzaGFyZUZvbGRlckZpbmlzaD86IGJvb2xlYW4sXG5cdHVwZGF0ZUZpbGU/OiBHcmFwaFFMVHlwZXNbXCJWRmlsZVwiXSxcblx0dXBkYXRlUHJvZmlsZT86IEdyYXBoUUxUeXBlc1tcIlVzZXJcIl0sXG5cdHVwbG9hZEFub255bW91cz86IEdyYXBoUUxUeXBlc1tcIkZpbGVSZXNwb25zZVwiXSxcblx0dXBsb2FkRmlsZT86IEdyYXBoUUxUeXBlc1tcIkZpbGVSZXNwb25zZVwiXSxcblx0Y3JlYXRlRm9sZGVyPzogR3JhcGhRTFR5cGVzW1wiRm9sZGVyXCJdLFxuXHRtb3ZlRm9sZGVycz86IGJvb2xlYW4sXG5cdGRlbGV0ZUZvbGRlcj86IGJvb2xlYW4sXG5cdG1vdmVGaWxlcz86IGJvb2xlYW4sXG5cdHVwZGF0ZUZvbGRlcj86IEdyYXBoUUxUeXBlc1tcIkZvbGRlclwiXSxcblx0ZGVsZXRlVkZpbGU6IGJvb2xlYW4sXG5cdGNyZWF0ZURyYWZ0TWFpbD86IEdyYXBoUUxUeXBlc1tcIk1haWxcIl0sXG5cdHNlbmREcmFmdE1haWw/OiBib29sZWFuLFxuXHRyZWFkTWFpbD86IGJvb2xlYW4sXG5cdHVucmVhZE1haWw/OiBib29sZWFuLFxuXHR1cGRhdGVBcHBTZXR0aW5nczogR3JhcGhRTFR5cGVzW1wiVXNlckFwcFNldHRpbmdzXCJdLFxuXHR1cGxvYWRGaWxlRW5kPzogc3RyaW5nLFxuXHRsb2dvdXQ/OiBib29sZWFuLFxuXHRhZGRGaWxlVG9IaXN0b3J5OiBHcmFwaFFMVHlwZXNbXCJWRmlsZVwiXSxcblx0c2VuZE9uZU1haWw/OiBib29sZWFuLFxuXHRkZWxldGVEcmFmdE1haWw/OiBib29sZWFuLFxuXHR1cGRhdGVEcmFmdE1haWw/OiBHcmFwaFFMVHlwZXNbXCJNYWlsXCJdLFxuXHRkZWxldGVVc2VyPzogYm9vbGVhbixcblx0cGF5OiBib29sZWFuLFxuXHRjYW5jZWxQYXltZW50PzogYm9vbGVhbixcblx0c2VuZFJlcG9ydD86IEdyYXBoUUxUeXBlc1tcIlJlcG9ydFwiXSxcblx0c2F2ZUluQ2xvdWQ6IEdyYXBoUUxUeXBlc1tcIlZGaWxlXCJdLFxuXHRkZWxldGVWRmlsZVNoYXJpbmc6IGJvb2xlYW4sXG5cdGRlbGV0ZUZvbGRlclNoYXJpbmc6IGJvb2xlYW4sXG5cdGRlbGV0ZU1haWw6IGJvb2xlYW4sXG5cdGRlbGV0ZUZpbGU6IGJvb2xlYW4sXG5cdHNoYXJlRmlsZUluSGlzdG9yeTogYm9vbGVhbixcblx0cmVjb3ZlckZpbGU6IGJvb2xlYW4sXG5cdHJlY292ZXJNYWlsOiBib29sZWFuLFxuXHRyZWNvdmVyRm9sZGVyPzogYm9vbGVhbixcblx0ZHVwbGljYXRlVkZpbGU6IGJvb2xlYW4sXG5cdGRlbGV0ZUZvbGRlckNsb3VkVHJhc2g/OiBib29sZWFuLFxuXHRkZWxldGVWRmlsZUNsb3VkVHJhc2g/OiBib29sZWFuLFxuXHRkZWxldGVNYWlsVHJhc2g6IGJvb2xlYW4sXG5cdGVtcHR5Q2xvdWRUcmFzaD86IGJvb2xlYW4sXG5cdGVtcHR5TWFpbFRyYXNoPzogYm9vbGVhbixcblx0dXBsb2FkRmlsZVBhcnRFbmQ6IGJvb2xlYW4sXG5cdHVwZGF0ZUFwcE5vdGlmaWNhdGlvbnM/OiBHcmFwaFFMVHlwZXNbXCJVc2VyQXBwTm90aWZpY2F0aW9uc1wiXVxufVxuICAgIH1cbmV4cG9ydCBjb25zdCBlbnVtIExhbmcge1xuXHRmciA9IFwiZnJcIixcblx0ZW4gPSBcImVuXCIsXG5cdGl0ID0gXCJpdFwiLFxuXHRkZSA9IFwiZGVcIixcblx0cHQgPSBcInB0XCIsXG5cdGphID0gXCJqYVwiLFxuXHRlcyA9IFwiZXNcIixcblx0bmwgPSBcIm5sXCIsXG5cdHBsID0gXCJwbFwiLFxuXHRydSA9IFwicnVcIixcblx0emggPSBcInpoXCIsXG5cdGFyID0gXCJhclwiLFxuXHRoZSA9IFwiaGVcIixcblx0aGkgPSBcImhpXCIsXG5cdGtvID0gXCJrb1wiXG59XG5leHBvcnQgY29uc3QgZW51bSBQbGFuS2luZCB7XG5cdGZyZWUgPSBcImZyZWVcIixcblx0YmFzaWMgPSBcImJhc2ljXCIsXG5cdGFkdmFuY2VkID0gXCJhZHZhbmNlZFwiLFxuXHRwcm8gPSBcInByb1wiXG59XG5leHBvcnQgY29uc3QgZW51bSBVc2VyUm9sZSB7XG5cdHVzZXIgPSBcInVzZXJcIixcblx0YWRtaW4gPSBcImFkbWluXCJcbn1cbmV4cG9ydCBjb25zdCBlbnVtIE1haWxUeXBlIHtcblx0c2VudCA9IFwic2VudFwiLFxuXHRyZWNlaXZlZCA9IFwicmVjZWl2ZWRcIlxufVxuZXhwb3J0IGNvbnN0IGVudW0gUmlnaHRzIHtcblx0YWRtaW4gPSBcImFkbWluXCIsXG5cdHdyaXRlID0gXCJ3cml0ZVwiLFxuXHRyZWFkID0gXCJyZWFkXCJcbn1cbmV4cG9ydCBjb25zdCBlbnVtIEZpbGVDb250ZW50VHlwZSB7XG5cdGNsb3VkID0gXCJjbG91ZFwiLFxuXHRzZW50X21haWwgPSBcInNlbnRfbWFpbFwiLFxuXHRyZWNlaXZlZF9tYWlsID0gXCJyZWNlaXZlZF9tYWlsXCJcbn1cbmV4cG9ydCBjb25zdCBlbnVtIFBheUlucHV0VHlwZSB7XG5cdHNlY3VyZSA9IFwic2VjdXJlXCIsXG5cdGNsYXNzaWMgPSBcImNsYXNzaWNcIlxufVxuZXhwb3J0IGNsYXNzIEdyYXBoUUxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVzcG9uc2U6IEdyYXBoUUxSZXNwb25zZSkge1xuICAgICAgc3VwZXIoXCJcIik7XG4gICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJHcmFwaFFMIFJlc3BvbnNlIEVycm9yXCI7XG4gICAgfVxuICB9XG5cblxuZXhwb3J0IHR5cGUgVW53cmFwUHJvbWlzZTxUPiA9IFQgZXh0ZW5kcyBQcm9taXNlPGluZmVyIFI+ID8gUiA6IFQ7XG5leHBvcnQgdHlwZSBaZXVzU3RhdGU8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+PiA9IE5vbk51bGxhYmxlPFxuICBVbndyYXBQcm9taXNlPFJldHVyblR5cGU8VD4+XG4+O1xuZXhwb3J0IHR5cGUgWmV1c0hvb2s8XG4gIFQgZXh0ZW5kcyAoXG4gICAgLi4uYXJnczogYW55W11cbiAgKSA9PiBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8YW55Pj4sXG4gIE4gZXh0ZW5kcyBrZXlvZiBSZXR1cm5UeXBlPFQ+XG4+ID0gWmV1c1N0YXRlPFJldHVyblR5cGU8VD5bTl0+O1xuXG50eXBlIFdpdGhUeXBlTmFtZVZhbHVlPFQ+ID0gVCAmIHtcbiAgX190eXBlbmFtZT86IHRydWU7XG59O1xudHlwZSBBbGlhc1R5cGU8VD4gPSBXaXRoVHlwZU5hbWVWYWx1ZTxUPiAmIHtcbiAgX19hbGlhcz86IFJlY29yZDxzdHJpbmcsIFdpdGhUeXBlTmFtZVZhbHVlPFQ+Pjtcbn07XG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoUUxSZXNwb25zZSB7XG4gIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBlcnJvcnM/OiBBcnJheTx7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9Pjtcbn1cbnR5cGUgRGVlcEFuaWZ5PFQ+ID0ge1xuICBbUCBpbiBrZXlvZiBUXT86IGFueTtcbn07XG50eXBlIElzUGF5TG9hZDxUPiA9IFQgZXh0ZW5kcyBbYW55LCBpbmZlciBQYXlMb2FkXSA/IFBheUxvYWQgOiBUO1xudHlwZSBJc0FycmF5PFQsIFU+ID0gVCBleHRlbmRzIEFycmF5PGluZmVyIFI+ID8gSW5wdXRUeXBlPFIsIFU+W10gOiBJbnB1dFR5cGU8VCwgVT47XG50eXBlIEZsYXR0ZW5BcnJheTxUPiA9IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBSPiA/IFIgOiBUO1xuXG50eXBlIElzSW50ZXJmYWNlZDxTUkMgZXh0ZW5kcyBEZWVwQW5pZnk8RFNUPiwgRFNUPiA9IEZsYXR0ZW5BcnJheTxTUkM+IGV4dGVuZHMgWkVVU19JTlRFUkZBQ0VTIHwgWkVVU19VTklPTlNcbiAgPyB7XG4gICAgICBbUCBpbiBrZXlvZiBTUkNdOiBTUkNbUF0gZXh0ZW5kcyAnX191bmlvbicgJiBpbmZlciBSXG4gICAgICAgID8gUCBleHRlbmRzIGtleW9mIERTVFxuICAgICAgICAgID8gSXNBcnJheTxSLCAnX190eXBlbmFtZScgZXh0ZW5kcyBrZXlvZiBEU1QgPyBEU1RbUF0gJiB7IF9fdHlwZW5hbWU6IHRydWUgfSA6IERTVFtQXT5cbiAgICAgICAgICA6IHt9XG4gICAgICAgIDogbmV2ZXI7XG4gICAgfVtrZXlvZiBEU1RdICZcbiAgICAgIHtcbiAgICAgICAgW1AgaW4ga2V5b2YgT21pdDxcbiAgICAgICAgICBQaWNrPFxuICAgICAgICAgICAgU1JDLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBbUCBpbiBrZXlvZiBEU1RdOiBTUkNbUF0gZXh0ZW5kcyAnX191bmlvbicgPyBuZXZlciA6IFA7XG4gICAgICAgICAgICB9W2tleW9mIERTVF1cbiAgICAgICAgICA+LFxuICAgICAgICAgICdfX3R5cGVuYW1lJ1xuICAgICAgICA+XTogSXNQYXlMb2FkPERTVFtQXT4gZXh0ZW5kcyB0cnVlID8gU1JDW1BdIDogSXNBcnJheTxTUkNbUF0sIERTVFtQXT47XG4gICAgICB9XG4gIDoge1xuICAgICAgW1AgaW4ga2V5b2YgUGljazxTUkMsIGtleW9mIERTVD5dOiBJc1BheUxvYWQ8RFNUW1BdPiBleHRlbmRzIHRydWUgPyBTUkNbUF0gOiBJc0FycmF5PFNSQ1tQXSwgRFNUW1BdPjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBNYXBUeXBlPFNSQywgRFNUPiA9IFNSQyBleHRlbmRzIERlZXBBbmlmeTxEU1Q+ID8gSXNJbnRlcmZhY2VkPFNSQywgRFNUPiA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgSW5wdXRUeXBlPFNSQywgRFNUPiA9IElzUGF5TG9hZDxEU1Q+IGV4dGVuZHMgeyBfX2FsaWFzOiBpbmZlciBSIH1cbiAgPyB7XG4gICAgICBbUCBpbiBrZXlvZiBSXTogTWFwVHlwZTxTUkMsIFJbUF0+O1xuICAgIH0gJlxuICAgICAgTWFwVHlwZTxTUkMsIE9taXQ8SXNQYXlMb2FkPERTVD4sICdfX2FsaWFzJz4+XG4gIDogTWFwVHlwZTxTUkMsIElzUGF5TG9hZDxEU1Q+PjtcbnR5cGUgRnVuYzxQIGV4dGVuZHMgYW55W10sIFI+ID0gKC4uLmFyZ3M6IFApID0+IFI7XG50eXBlIEFueUZ1bmMgPSBGdW5jPGFueSwgYW55PjtcbmV4cG9ydCB0eXBlIEFyZ3NUeXBlPEYgZXh0ZW5kcyBBbnlGdW5jPiA9IEYgZXh0ZW5kcyBGdW5jPGluZmVyIFAsIGFueT4gPyBQIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBPcGVyYXRpb25PcHRpb25zID0ge1xuICB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE9wZXJhdGlvblRvR3JhcGhRTDxWLCBUPiA9IDxaIGV4dGVuZHMgVj4obzogWiB8IFYsIG9wdGlvbnM/OiBPcGVyYXRpb25PcHRpb25zKSA9PiBQcm9taXNlPElucHV0VHlwZTxULCBaPj47XG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25Ub0dyYXBoUUw8ViwgVD4gPSA8WiBleHRlbmRzIFY+KFxuICBvOiBaIHwgVixcbiAgb3B0aW9ucz86IE9wZXJhdGlvbk9wdGlvbnMsXG4pID0+IHtcbiAgd3M6IFdlYlNvY2tldDtcbiAgb246IChmbjogKGFyZ3M6IElucHV0VHlwZTxULCBaPikgPT4gdm9pZCkgPT4gdm9pZDtcbiAgb2ZmOiAoZm46IChlOiB7IGRhdGE/OiBJbnB1dFR5cGU8VCwgWj47IGNvZGU/OiBudW1iZXI7IHJlYXNvbj86IHN0cmluZzsgbWVzc2FnZT86IHN0cmluZyB9KSA9PiB2b2lkKSA9PiB2b2lkO1xuICBlcnJvcjogKGZuOiAoZTogeyBkYXRhPzogSW5wdXRUeXBlPFQsIFo+OyBlcnJvcnM/OnN0cmluZ1tdIH0pID0+IHZvaWQpID0+IHZvaWQ7XG4gIG9wZW46ICgpID0+IHZvaWQ7XG59O1xuZXhwb3J0IHR5cGUgU2VsZWN0aW9uRnVuY3Rpb248Vj4gPSA8VD4odDogVCB8IFYpID0+IFQ7XG5leHBvcnQgdHlwZSBmZXRjaE9wdGlvbnMgPSBBcmdzVHlwZTx0eXBlb2YgZmV0Y2g+O1xudHlwZSB3ZWJzb2NrZXRPcHRpb25zID0gdHlwZW9mIFdlYlNvY2tldCBleHRlbmRzIG5ldyAoXG4gIC4uLmFyZ3M6IGluZmVyIFJcbikgPT4gV2ViU29ja2V0XG4gID8gUlxuICA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgY2hhaW5PcHRpb25zID1cbiAgfCBbZmV0Y2hPcHRpb25zWzBdLCBmZXRjaE9wdGlvbnNbMV0gJiB7d2Vic29ja2V0Pzogd2Vic29ja2V0T3B0aW9uc31dXG4gIHwgW2ZldGNoT3B0aW9uc1swXV07XG5leHBvcnQgdHlwZSBGZXRjaEZ1bmN0aW9uID0gKFxuICBxdWVyeTogc3RyaW5nLFxuICB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSA9PiBQcm9taXNlPGFueT47XG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25GdW5jdGlvbiA9IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkO1xudHlwZSBOb3RVbmRlZmluZWQ8VD4gPSBUIGV4dGVuZHMgdW5kZWZpbmVkID8gbmV2ZXIgOiBUO1xuZXhwb3J0IHR5cGUgUmVzb2x2ZXJUeXBlPEY+ID0gTm90VW5kZWZpbmVkPEYgZXh0ZW5kcyBbaW5mZXIgQVJHUywgYW55XSA/IEFSR1MgOiB1bmRlZmluZWQ+O1xuXG5cblxuZXhwb3J0IGNvbnN0IFpldXNTZWxlY3QgPSA8VD4oKSA9PiAoKHQ6IGFueSkgPT4gdCkgYXMgU2VsZWN0aW9uRnVuY3Rpb248VD47XG5cbmV4cG9ydCBjb25zdCBTY2FsYXJSZXNvbHZlciA9IChzY2FsYXI6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICBzd2l0Y2ggKHNjYWxhcikge1xuICAgIGNhc2UgJ1N0cmluZyc6XG4gICAgICByZXR1cm4gIGAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gO1xuICAgIGNhc2UgJ0ludCc6XG4gICAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgICBjYXNlICdGbG9hdCc6XG4gICAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgICBjYXNlICdCb29sZWFuJzpcbiAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICAgIGNhc2UgJ0lEJzpcbiAgICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYDtcbiAgICBjYXNlICdlbnVtJzpcbiAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xuICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5cbmV4cG9ydCBjb25zdCBUeXBlc1Byb3BzUmVzb2x2ZXIgPSAoe1xuICAgIHZhbHVlLFxuICAgIHR5cGUsXG4gICAgbmFtZSxcbiAgICBrZXksXG4gICAgYmxvY2tBcnJheXNcbn06IHtcbiAgICB2YWx1ZTogYW55O1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIGJsb2NrQXJyYXlzPzogYm9vbGVhbjtcbn0pOiBzdHJpbmcgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYG51bGxgO1xuICAgIH1cbiAgICBsZXQgcmVzb2x2ZWRWYWx1ZSA9IEFsbFR5cGVzUHJvcHNbdHlwZV1bbmFtZV07XG4gICAgaWYgKGtleSkge1xuICAgICAgICByZXNvbHZlZFZhbHVlID0gcmVzb2x2ZWRWYWx1ZVtrZXldO1xuICAgIH1cbiAgICBpZiAoIXJlc29sdmVkVmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSAke3R5cGV9ICR7bmFtZX0ke2tleSA/IGAgJHtrZXl9YCA6ICcnfWApXG4gICAgfVxuICAgIGNvbnN0IHR5cGVSZXNvbHZlZCA9IHJlc29sdmVkVmFsdWUudHlwZTtcbiAgICBjb25zdCBpc0FycmF5ID0gcmVzb2x2ZWRWYWx1ZS5hcnJheTtcbiAgICBjb25zdCBpc0FycmF5UmVxdWlyZWQgPSByZXNvbHZlZFZhbHVlLmFycmF5UmVxdWlyZWQ7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuc3RhcnRzV2l0aChgWkVVU19WQVIkYCkpIHtcbiAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IHJlc29sdmVkVmFsdWUucmVxdWlyZWQgPyAnIScgOiAnJztcbiAgICAgICAgbGV0IHQgPSBgJHt0eXBlUmVzb2x2ZWR9YDtcbiAgICAgICAgaWYgKGlzQXJyYXkpIHtcbiAgICAgICAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICB0ID0gYCR7dH0hYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdCA9IGBbJHt0fV1gO1xuICAgICAgICAgIGlmKGlzQXJyYXlSZXF1aXJlZCl7XG4gICAgICAgICAgICB0ID0gYCR7dH0hYDtcbiAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdCA9IGAke3R9IWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgXFwkJHt2YWx1ZS5zcGxpdChgWkVVU19WQVIkYClbMV19X19aRVVTX1ZBUl9fJHt0fWA7XG4gICAgfVxuICAgIGlmIChpc0FycmF5ICYmICFibG9ja0FycmF5cykge1xuICAgICAgICByZXR1cm4gYFske3ZhbHVlXG4gICAgICAgIC5tYXAoKHY6IGFueSkgPT4gVHlwZXNQcm9wc1Jlc29sdmVyKHsgdmFsdWU6IHYsIHR5cGUsIG5hbWUsIGtleSwgYmxvY2tBcnJheXM6IHRydWUgfSkpXG4gICAgICAgIC5qb2luKCcsJyl9XWA7XG4gICAgfVxuICAgIGNvbnN0IHJlc2xvdmVkU2NhbGFyID0gU2NhbGFyUmVzb2x2ZXIodHlwZVJlc29sdmVkLCB2YWx1ZSk7XG4gICAgaWYgKCFyZXNsb3ZlZFNjYWxhcikge1xuICAgICAgICBjb25zdCByZXNvbHZlZFR5cGUgPSBBbGxUeXBlc1Byb3BzW3R5cGVSZXNvbHZlZF07XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBhcmdzS2V5cyA9IE9iamVjdC5rZXlzKHJlc29sdmVkVHlwZSk7XG4gICAgICAgIHJldHVybiBgeyR7YXJnc0tleXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGFrKSA9PiB2YWx1ZVtha10gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAoYWspID0+IGAke2FrfToke1R5cGVzUHJvcHNSZXNvbHZlcih7IHZhbHVlOiB2YWx1ZVtha10sIHR5cGU6IHR5cGVSZXNvbHZlZCwgbmFtZTogYWsgfSl9YFxuICAgICAgICAgICAgKX19YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU2NhbGFyUmVzb2x2ZXIoQWxsVHlwZXNQcm9wc1t0eXBlUmVzb2x2ZWRdLCB2YWx1ZSkgYXMgc3RyaW5nO1xuICAgIH1cbiAgICByZXR1cm4gcmVzbG92ZWRTY2FsYXI7XG59O1xuXG5cbmNvbnN0IGlzQXJyYXlGdW5jdGlvbiA9IChcbiAgcGFyZW50OiBzdHJpbmdbXSxcbiAgYTogYW55W11cbikgPT4ge1xuICBjb25zdCBbdmFsdWVzLCByXSA9IGE7XG4gIGNvbnN0IFttYWluS2V5LCBrZXksIC4uLmtleXNdID0gcGFyZW50O1xuICBjb25zdCBrZXlWYWx1ZXMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpLmZpbHRlcigoaykgPT4gdHlwZW9mIHZhbHVlc1trXSAhPT0gJ3VuZGVmaW5lZCcpO1xuXG4gIGlmICgha2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBrZXlWYWx1ZXMubGVuZ3RoID4gMFxuICAgICAgICA/IGAoJHtrZXlWYWx1ZXNcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICh2KSA9PlxuICAgICAgICAgICAgICAgIGAke3Z9OiR7VHlwZXNQcm9wc1Jlc29sdmVyKHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZXNbdl0sXG4gICAgICAgICAgICAgICAgICB0eXBlOiBtYWluS2V5LFxuICAgICAgICAgICAgICAgICAgbmFtZToga2V5LFxuICAgICAgICAgICAgICAgICAga2V5OiB2XG4gICAgICAgICAgICAgICAgfSl9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oJywnKX0pJHtyID8gdHJhdmVyc2VUb1NlZWtBcnJheXMocGFyZW50LCByKSA6ICcnfWBcbiAgICAgICAgOiB0cmF2ZXJzZVRvU2Vla0FycmF5cyhwYXJlbnQsIHIpO1xuICAgIH1cblxuICBjb25zdCBbdHlwZVJlc29sdmVyS2V5XSA9IGtleXMuc3BsaWNlKGtleXMubGVuZ3RoIC0gMSwgMSk7XG4gIGxldCB2YWx1ZVRvUmVzb2x2ZSA9IFJldHVyblR5cGVzW21haW5LZXldW2tleV07XG4gIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgdmFsdWVUb1Jlc29sdmUgPSBSZXR1cm5UeXBlc1t2YWx1ZVRvUmVzb2x2ZV1ba107XG4gIH1cblxuICBjb25zdCBhcmd1bWVudFN0cmluZyA9XG4gICAga2V5VmFsdWVzLmxlbmd0aCA+IDBcbiAgICAgID8gYCgke2tleVZhbHVlc1xuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAodikgPT5cbiAgICAgICAgICAgICAgYCR7dn06JHtUeXBlc1Byb3BzUmVzb2x2ZXIoe1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZXNbdl0sXG4gICAgICAgICAgICAgICAgdHlwZTogdmFsdWVUb1Jlc29sdmUsXG4gICAgICAgICAgICAgICAgbmFtZTogdHlwZVJlc29sdmVyS2V5LFxuICAgICAgICAgICAgICAgIGtleTogdlxuICAgICAgICAgICAgICB9KX1gXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKCcsJyl9KSR7ciA/IHRyYXZlcnNlVG9TZWVrQXJyYXlzKHBhcmVudCwgcikgOiAnJ31gXG4gICAgICA6IHRyYXZlcnNlVG9TZWVrQXJyYXlzKHBhcmVudCwgcik7XG4gIHJldHVybiBhcmd1bWVudFN0cmluZztcbn07XG5cblxuY29uc3QgcmVzb2x2ZUtWID0gKGs6IHN0cmluZywgdjogYm9vbGVhbiB8IHN0cmluZyB8IHsgW3g6IHN0cmluZ106IGJvb2xlYW4gfCBzdHJpbmcgfSkgPT5cbiAgdHlwZW9mIHYgPT09ICdib29sZWFuJyA/IGsgOiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyBgJHtrfXske29iamVjdFRvVHJlZSh2KX19YCA6IGAke2t9JHt2fWA7XG5cblxuY29uc3Qgb2JqZWN0VG9UcmVlID0gKG86IHsgW3g6IHN0cmluZ106IGJvb2xlYW4gfCBzdHJpbmcgfSk6IHN0cmluZyA9PlxuICBgeyR7T2JqZWN0LmtleXMobykubWFwKChrKSA9PiBgJHtyZXNvbHZlS1Yoaywgb1trXSl9YCkuam9pbignICcpfX1gO1xuXG5cbmNvbnN0IHRyYXZlcnNlVG9TZWVrQXJyYXlzID0gKHBhcmVudDogc3RyaW5nW10sIGE/OiBhbnkpOiBzdHJpbmcgPT4ge1xuICBpZiAoIWEpIHJldHVybiAnJztcbiAgaWYgKE9iamVjdC5rZXlzKGEpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBsZXQgYjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgIHJldHVybiBpc0FycmF5RnVuY3Rpb24oWy4uLnBhcmVudF0sIGEpO1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKGEpXG4gICAgICAgIC5maWx0ZXIoKGspID0+IHR5cGVvZiBhW2tdICE9PSAndW5kZWZpbmVkJylcbiAgICAgICAgLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgaWYgKGsgPT09ICdfX2FsaWFzJykge1xuICAgICAgICAgIE9iamVjdC5rZXlzKGFba10pLmZvckVhY2goKGFsaWFzS2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhbGlhc09wZXJhdGlvbnMgPSBhW2tdW2FsaWFzS2V5XTtcbiAgICAgICAgICAgIGNvbnN0IGFsaWFzT3BlcmF0aW9uTmFtZSA9IE9iamVjdC5rZXlzKGFsaWFzT3BlcmF0aW9ucylbMF07XG4gICAgICAgICAgICBjb25zdCBhbGlhc09wZXJhdGlvbiA9IGFsaWFzT3BlcmF0aW9uc1thbGlhc09wZXJhdGlvbk5hbWVdO1xuICAgICAgICAgICAgYltcbiAgICAgICAgICAgICAgYCR7YWxpYXNPcGVyYXRpb25OYW1lfV9fYWxpYXNfXyR7YWxpYXNLZXl9OiAke2FsaWFzT3BlcmF0aW9uTmFtZX1gXG4gICAgICAgICAgICBdID0gdHJhdmVyc2VUb1NlZWtBcnJheXMoWy4uLnBhcmVudCwgYWxpYXNPcGVyYXRpb25OYW1lXSwgYWxpYXNPcGVyYXRpb24pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJba10gPSB0cmF2ZXJzZVRvU2Vla0FycmF5cyhbLi4ucGFyZW50LCBrXSwgYVtrXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3RUb1RyZWUoYik7XG59O1xuXG5cbmNvbnN0IGJ1aWxkUXVlcnkgPSAodHlwZTogc3RyaW5nLCBhPzogUmVjb3JkPGFueSwgYW55PikgPT5cbiAgdHJhdmVyc2VUb1NlZWtBcnJheXMoW3R5cGVdLCBhKTtcblxuXG5jb25zdCBpbnNwZWN0VmFyaWFibGVzID0gKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcmVnZXggPSAvXFwkXFxiXFx3Kl9fWkVVU19WQVJfX1xcWz9bXiFeXFxdXlxcc14sXlxcKV5cXH1dKlshXT9bXFxdXT9bIV0/L2c7XG4gIGxldCByZXN1bHQ7XG4gIGNvbnN0IEFsbFZhcmlhYmxlczogc3RyaW5nW10gPSBbXTtcbiAgd2hpbGUgKChyZXN1bHQgPSByZWdleC5leGVjKHF1ZXJ5KSkpIHtcbiAgICBpZiAoQWxsVmFyaWFibGVzLmluY2x1ZGVzKHJlc3VsdFswXSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBBbGxWYXJpYWJsZXMucHVzaChyZXN1bHRbMF0pO1xuICB9XG4gIGlmICghQWxsVmFyaWFibGVzLmxlbmd0aCkge1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuICBsZXQgZmlsdGVyZWRRdWVyeSA9IHF1ZXJ5O1xuICBBbGxWYXJpYWJsZXMuZm9yRWFjaCgodmFyaWFibGUpID0+IHtcbiAgICB3aGlsZSAoZmlsdGVyZWRRdWVyeS5pbmNsdWRlcyh2YXJpYWJsZSkpIHtcbiAgICAgIGZpbHRlcmVkUXVlcnkgPSBmaWx0ZXJlZFF1ZXJ5LnJlcGxhY2UodmFyaWFibGUsIHZhcmlhYmxlLnNwbGl0KCdfX1pFVVNfVkFSX18nKVswXSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGAoJHtBbGxWYXJpYWJsZXMubWFwKChhKSA9PiBhLnNwbGl0KCdfX1pFVVNfVkFSX18nKSlcbiAgICAubWFwKChbdmFyaWFibGVOYW1lLCB2YXJpYWJsZVR5cGVdKSA9PiBgJHt2YXJpYWJsZU5hbWV9OiR7dmFyaWFibGVUeXBlfWApXG4gICAgLmpvaW4oJywgJyl9KSR7ZmlsdGVyZWRRdWVyeX1gO1xufTtcblxuXG5leHBvcnQgY29uc3QgcXVlcnlDb25zdHJ1Y3QgPSAodDogJ3F1ZXJ5JyB8ICdtdXRhdGlvbicgfCAnc3Vic2NyaXB0aW9uJywgdE5hbWU6IHN0cmluZywgb3BlcmF0aW9uTmFtZT86IHN0cmluZykgPT4gKG86IFJlY29yZDxhbnksIGFueT4pID0+XG4gIGAke3QudG9Mb3dlckNhc2UoKX0ke29wZXJhdGlvbk5hbWUgPyAnICcgKyBvcGVyYXRpb25OYW1lIDogJyd9JHtpbnNwZWN0VmFyaWFibGVzKGJ1aWxkUXVlcnkodE5hbWUsIG8pKX1gO1xuXG5cbmNvbnN0IGZ1bGxDaGFpbkNvbnN0cnVjdCA9IChmbjogRmV0Y2hGdW5jdGlvbikgPT4gKHQ6ICdxdWVyeScgfCAnbXV0YXRpb24nIHwgJ3N1YnNjcmlwdGlvbicsIHROYW1lOiBzdHJpbmcpID0+IChcbiAgbzogUmVjb3JkPGFueSwgYW55PixcbiAgb3B0aW9ucz86IE9wZXJhdGlvbk9wdGlvbnMsXG4pID0+IGZuKHF1ZXJ5Q29uc3RydWN0KHQsIHROYW1lLCBvcHRpb25zPy5vcGVyYXRpb25OYW1lKShvKSwgb3B0aW9ucz8udmFyaWFibGVzKS50aGVuKChyOmFueSkgPT4ge1xuICBzZWVrRm9yQWxpYXNlcyhyKVxuICByZXR1cm4gclxufSk7XG5cbmV4cG9ydCBjb25zdCBmdWxsQ2hhaW5Db25zdHJ1Y3RvciA9IDxGIGV4dGVuZHMgRmV0Y2hGdW5jdGlvbiwgUiBleHRlbmRzIGtleW9mIFZhbHVlVHlwZXM+KFxuICBmbjogRixcbiAgb3BlcmF0aW9uOiAncXVlcnknIHwgJ211dGF0aW9uJyB8ICdzdWJzY3JpcHRpb24nLFxuICBrZXk6IFIsXG4pID0+XG4gICgobywgb3B0aW9ucykgPT4gZnVsbENoYWluQ29uc3RydWN0KGZuKShvcGVyYXRpb24sIGtleSkobyBhcyBhbnksIG9wdGlvbnMpKSBhcyBPcGVyYXRpb25Ub0dyYXBoUUw8XG4gICAgVmFsdWVUeXBlc1tSXSxcbiAgICBHcmFwaFFMVHlwZXNbUl1cbiAgPjtcblxuXG5jb25zdCBmdWxsU3Vic2NyaXB0aW9uQ29uc3RydWN0ID0gKGZuOiBTdWJzY3JpcHRpb25GdW5jdGlvbikgPT4gKFxuICB0OiAncXVlcnknIHwgJ211dGF0aW9uJyB8ICdzdWJzY3JpcHRpb24nLFxuICB0TmFtZTogc3RyaW5nLFxuKSA9PiAobzogUmVjb3JkPGFueSwgYW55Piwgb3B0aW9ucz86IE9wZXJhdGlvbk9wdGlvbnMpID0+XG4gIGZuKHF1ZXJ5Q29uc3RydWN0KHQsIHROYW1lLCBvcHRpb25zPy5vcGVyYXRpb25OYW1lKShvKSk7XG5cbmV4cG9ydCBjb25zdCBmdWxsU3Vic2NyaXB0aW9uQ29uc3RydWN0b3IgPSA8RiBleHRlbmRzIFN1YnNjcmlwdGlvbkZ1bmN0aW9uLCBSIGV4dGVuZHMga2V5b2YgVmFsdWVUeXBlcz4oXG4gIGZuOiBGLFxuICBvcGVyYXRpb246ICdxdWVyeScgfCAnbXV0YXRpb24nIHwgJ3N1YnNjcmlwdGlvbicsXG4gIGtleTogUixcbikgPT5cbiAgKChvLCBvcHRpb25zKSA9PiBmdWxsU3Vic2NyaXB0aW9uQ29uc3RydWN0KGZuKShvcGVyYXRpb24sIGtleSkobyBhcyBhbnksIG9wdGlvbnMpKSBhcyBTdWJzY3JpcHRpb25Ub0dyYXBoUUw8XG4gICAgVmFsdWVUeXBlc1tSXSxcbiAgICBHcmFwaFFMVHlwZXNbUl1cbiAgPjtcblxuXG5jb25zdCBzZWVrRm9yQWxpYXNlcyA9IChyZXNwb25zZTogYW55KSA9PiB7XG4gIGNvbnN0IHRyYXZlcnNlQWxpYXMgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUuZm9yRWFjaChzZWVrRm9yQWxpYXNlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHNlZWtGb3JBbGlhc2VzKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGlmICh0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnICYmIHJlc3BvbnNlKSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJlc3BvbnNlKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSByZXNwb25zZVtrXTtcbiAgICAgIGlmIChrLmluZGV4T2YoJ19fYWxpYXNfXycpICE9PSAtMSkge1xuICAgICAgICBjb25zdCBbb3BlcmF0aW9uLCBhbGlhc10gPSBrLnNwbGl0KCdfX2FsaWFzX18nKTtcbiAgICAgICAgcmVzcG9uc2VbYWxpYXNdID0ge1xuICAgICAgICAgIFtvcGVyYXRpb25dOiB2YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgZGVsZXRlIHJlc3BvbnNlW2tdO1xuICAgICAgfVxuICAgICAgdHJhdmVyc2VBbGlhcyh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cbn07XG5cblxuZXhwb3J0IGNvbnN0ICQgPSAodDogVGVtcGxhdGVTdHJpbmdzQXJyYXkpOiBhbnkgPT4gYFpFVVNfVkFSJCR7dC5qb2luKCcnKX1gO1xuXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlckZvciA9IDxcbiAgVCBleHRlbmRzIGtleW9mIFZhbHVlVHlwZXMsXG4gIFogZXh0ZW5kcyBrZXlvZiBWYWx1ZVR5cGVzW1RdLFxuICBZIGV4dGVuZHMgKFxuICAgIGFyZ3M6IFJlcXVpcmVkPFZhbHVlVHlwZXNbVF0+W1pdIGV4dGVuZHMgW2luZmVyIElucHV0LCBhbnldID8gSW5wdXQgOiBhbnksXG4gICAgc291cmNlOiBhbnksXG4gICkgPT4gWiBleHRlbmRzIGtleW9mIE1vZGVsVHlwZXNbVF0gPyBNb2RlbFR5cGVzW1RdW1pdIHwgUHJvbWlzZTxNb2RlbFR5cGVzW1RdW1pdPiA6IGFueVxuPihcbiAgZm46IFksXG4pID0+IGZuIGFzIChhcmdzPzogYW55LHNvdXJjZT86IGFueSkgPT4gYW55O1xuXG5cbmNvbnN0IGhhbmRsZUZldGNoUmVzcG9uc2UgPSAoXG4gIHJlc3BvbnNlOiBQYXJhbWV0ZXJzPEV4dHJhY3Q8UGFyYW1ldGVyczxSZXR1cm5UeXBlPHR5cGVvZiBmZXRjaD5bJ3RoZW4nXT5bMF0sIEZ1bmN0aW9uPj5bMF1cbik6IFByb21pc2U8R3JhcGhRTFJlc3BvbnNlPiA9PiB7XG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgcmVzcG9uc2UudGV4dCgpLnRoZW4odGV4dCA9PiB7XG4gICAgICAgIHRyeSB7IHJlamVjdChKU09OLnBhcnNlKHRleHQpKTsgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7IHJlamVjdCh0ZXh0KTsgfVxuICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFwaUZldGNoID0gKG9wdGlvbnM6IGZldGNoT3B0aW9ucykgPT4gKHF1ZXJ5OiBzdHJpbmcsIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSA9PiB7XG4gICAgbGV0IGZldGNoRnVuY3Rpb24gPSBmZXRjaDtcbiAgICBsZXQgcXVlcnlTdHJpbmcgPSBxdWVyeTtcbiAgICBsZXQgZmV0Y2hPcHRpb25zID0gb3B0aW9uc1sxXSB8fCB7fTtcbiAgICBpZiAoZmV0Y2hPcHRpb25zLm1ldGhvZCAmJiBmZXRjaE9wdGlvbnMubWV0aG9kID09PSAnR0VUJykge1xuICAgICAgcXVlcnlTdHJpbmcgPSBlbmNvZGVVUklDb21wb25lbnQocXVlcnkpO1xuICAgICAgcmV0dXJuIGZldGNoRnVuY3Rpb24oYCR7b3B0aW9uc1swXX0/cXVlcnk9JHtxdWVyeVN0cmluZ31gLCBmZXRjaE9wdGlvbnMpXG4gICAgICAgIC50aGVuKGhhbmRsZUZldGNoUmVzcG9uc2UpXG4gICAgICAgIC50aGVuKChyZXNwb25zZTogR3JhcGhRTFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9ycykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZldGNoRnVuY3Rpb24oYCR7b3B0aW9uc1swXX1gLCB7XG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5OiBxdWVyeVN0cmluZywgdmFyaWFibGVzIH0pLFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgIH0sXG4gICAgICAuLi5mZXRjaE9wdGlvbnNcbiAgICB9KVxuICAgICAgLnRoZW4oaGFuZGxlRmV0Y2hSZXNwb25zZSlcbiAgICAgIC50aGVuKChyZXNwb25zZTogR3JhcGhRTFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5lcnJvcnMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgIH0pO1xuICB9O1xuXG5cbmV4cG9ydCBjb25zdCBhcGlTdWJzY3JpcHRpb24gPSAob3B0aW9uczogY2hhaW5PcHRpb25zKSA9PiAoXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gb3B0aW9uc1swXSArICc/cXVlcnk9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeSk7XG4gICAgICBjb25zdCB3c1N0cmluZyA9IHF1ZXJ5U3RyaW5nLnJlcGxhY2UoJ2h0dHAnLCAnd3MnKTtcbiAgICAgIGNvbnN0IGhvc3QgPSAob3B0aW9ucy5sZW5ndGggPiAxICYmIG9wdGlvbnNbMV0/LndlYnNvY2tldD8uWzBdKSB8fCB3c1N0cmluZztcbiAgICAgIGNvbnN0IHdlYlNvY2tldE9wdGlvbnMgPSBvcHRpb25zWzFdPy53ZWJzb2NrZXQgfHwgW2hvc3RdO1xuICAgICAgY29uc3Qgd3MgPSBuZXcgV2ViU29ja2V0KC4uLndlYlNvY2tldE9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3MsXG4gICAgICAgIG9uOiAoZTogKGFyZ3M6IGFueSkgPT4gdm9pZCkgPT4ge1xuICAgICAgICAgIHdzLm9ubWVzc2FnZSA9IChldmVudDphbnkpID0+IHtcbiAgICAgICAgICAgIGlmKGV2ZW50LmRhdGEpe1xuICAgICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBwYXJzZWQuZGF0YVxuICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIHNlZWtGb3JBbGlhc2VzKGRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBlKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIG9mZjogKGU6IChhcmdzOiBhbnkpID0+IHZvaWQpID0+IHtcbiAgICAgICAgICB3cy5vbmNsb3NlID0gZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlOiAoYXJnczogYW55KSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgd3Mub25lcnJvciA9IGU7XG4gICAgICAgIH0sXG4gICAgICAgIG9wZW46IChlOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgd3Mub25vcGVuID0gZTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHdlYnNvY2tldHMgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gIH07XG5cblxuZXhwb3J0IGNvbnN0IFRodW5kZXIgPSAoZm46IEZldGNoRnVuY3Rpb24pID0+ICh7XG4gIHF1ZXJ5OiBmdWxsQ2hhaW5Db25zdHJ1Y3RvcihmbiwncXVlcnknLCAnUXVlcnknKSxcbm11dGF0aW9uOiBmdWxsQ2hhaW5Db25zdHJ1Y3RvcihmbiwnbXV0YXRpb24nLCAnTXV0YXRpb24nKVxufSk7XG5cbmV4cG9ydCBjb25zdCBDaGFpbiA9ICguLi5vcHRpb25zOiBjaGFpbk9wdGlvbnMpID0+ICh7XG4gIHF1ZXJ5OiBmdWxsQ2hhaW5Db25zdHJ1Y3RvcihhcGlGZXRjaChvcHRpb25zKSwncXVlcnknLCAnUXVlcnknKSxcbm11dGF0aW9uOiBmdWxsQ2hhaW5Db25zdHJ1Y3RvcihhcGlGZXRjaChvcHRpb25zKSwnbXV0YXRpb24nLCAnTXV0YXRpb24nKVxufSk7XG5leHBvcnQgY29uc3QgWmV1cyA9IHtcbiAgcXVlcnk6IChvOlZhbHVlVHlwZXNbXCJRdWVyeVwiXSwgb3BlcmF0aW9uTmFtZT86IHN0cmluZykgPT4gcXVlcnlDb25zdHJ1Y3QoJ3F1ZXJ5JywgJ1F1ZXJ5Jywgb3BlcmF0aW9uTmFtZSkobyksXG5tdXRhdGlvbjogKG86VmFsdWVUeXBlc1tcIk11dGF0aW9uXCJdLCBvcGVyYXRpb25OYW1lPzogc3RyaW5nKSA9PiBxdWVyeUNvbnN0cnVjdCgnbXV0YXRpb24nLCAnTXV0YXRpb24nLCBvcGVyYXRpb25OYW1lKShvKVxufTtcbmV4cG9ydCBjb25zdCBTZWxlY3RvcnMgPSB7XG4gIHF1ZXJ5OiBaZXVzU2VsZWN0PFZhbHVlVHlwZXNbXCJRdWVyeVwiXT4oKSxcbm11dGF0aW9uOiBaZXVzU2VsZWN0PFZhbHVlVHlwZXNbXCJNdXRhdGlvblwiXT4oKVxufTtcblxuXG5leHBvcnQgY29uc3QgR3FsID0gQ2hhaW4oJ2h0dHBzOi8vYXBpLmRldi5zZWNyZWN5Lm1lL2dyYXBocWwnKVxuIl19
|