cdktn 0.25.0-pre.2 → 0.25.0-pre.21
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/.jsii +927 -107
- package/lib/annotations.js +4 -4
- package/lib/app.js +54 -5
- package/lib/aspect.js +3 -4
- package/lib/asset-hash.d.ts +75 -0
- package/lib/asset-hash.js +129 -0
- package/lib/assets.d.ts +168 -0
- package/lib/assets.js +128 -0
- package/lib/backends/azurerm-backend.js +4 -6
- package/lib/backends/cloud-backend.js +10 -10
- package/lib/backends/consul-backend.js +4 -6
- package/lib/backends/cos-backend.js +4 -6
- package/lib/backends/gcs-backend.js +4 -6
- package/lib/backends/http-backend.js +4 -6
- package/lib/backends/local-backend.js +38 -7
- package/lib/backends/oss-backend.js +4 -6
- package/lib/backends/pg-backend.js +4 -6
- package/lib/backends/remote-backend.js +8 -10
- package/lib/backends/s3-backend.js +4 -6
- package/lib/backends/swift-backend.js +4 -6
- package/lib/complex-computed-list.js +114 -65
- package/lib/errors.d.ts +6 -0
- package/lib/errors.js +24 -3
- package/lib/functions/provider-function.js +2 -4
- package/lib/functions/terraform-functions.generated.js +2 -4
- package/lib/ignore-strategy.d.ts +82 -0
- package/lib/ignore-strategy.js +29 -0
- package/lib/importable-resource.js +3 -4
- package/lib/index.d.ts +3 -0
- package/lib/index.js +27 -2
- package/lib/manifest.js +56 -14
- package/lib/private/fs.d.ts +74 -2
- package/lib/private/fs.js +129 -17
- package/lib/private/unique.js +35 -2
- package/lib/resource.js +3 -4
- package/lib/synthesize/synthesizer.js +43 -4
- package/lib/terraform-asset.d.ts +33 -2
- package/lib/terraform-asset.js +118 -34
- package/lib/terraform-backend.js +3 -4
- package/lib/terraform-count.js +3 -4
- package/lib/terraform-data-resource.js +12 -10
- package/lib/terraform-data-source.js +10 -4
- package/lib/terraform-dynamic-block.js +5 -2
- package/lib/terraform-dynamic-expression.js +4 -1
- package/lib/terraform-element.js +34 -6
- package/lib/terraform-ephemeral-resource.js +10 -4
- package/lib/terraform-functions.js +2 -4
- package/lib/terraform-hcl-module.js +3 -4
- package/lib/terraform-iterator.js +11 -12
- package/lib/terraform-local.js +3 -4
- package/lib/terraform-module-asset.js +45 -5
- package/lib/terraform-module.js +8 -4
- package/lib/terraform-operators.js +2 -4
- package/lib/terraform-output.js +7 -4
- package/lib/terraform-provider.js +5 -4
- package/lib/terraform-provisioner.js +2 -4
- package/lib/terraform-remote-state.js +5 -5
- package/lib/terraform-resource-targets.js +3 -7
- package/lib/terraform-resource.js +16 -5
- package/lib/terraform-stack.js +38 -38
- package/lib/terraform-variable.js +25 -22
- package/lib/testing/index.js +42 -8
- package/lib/testing/matchers.js +39 -6
- package/lib/tfExpression.js +25 -8
- package/lib/tokens/lazy.js +11 -7
- package/lib/tokens/private/dependency.js +2 -2
- package/lib/tokens/private/encoding.js +6 -1
- package/lib/tokens/private/intrinsic.js +6 -1
- package/lib/tokens/private/resolve.js +2 -5
- package/lib/tokens/private/token-map.js +4 -6
- package/lib/tokens/private/uniqueid.js +35 -2
- package/lib/tokens/resolvable.js +4 -6
- package/lib/tokens/string-fragments.js +6 -10
- package/lib/tokens/token.js +15 -18
- package/lib/upgrade-id-aspect.js +37 -6
- package/lib/validations/target-versions.js +39 -2
- package/lib/validations/validate-binary-version.js +39 -2
- package/lib/validations/validate-function-version-support.js +2 -1
- package/lib/validations/validate-provider-function-target-support.js +2 -1
- package/lib/validations/validate-provider-presence.js +10 -9
- package/lib/validations/validate-terraform-version.js +3 -1
- package/package.json +5 -5
- package/scripts/pack.mjs +57 -15
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/tsconfig.json +0 -40
- package/tsconfig.test.json +0 -12
package/lib/tfExpression.js
CHANGED
|
@@ -173,6 +173,7 @@ class TFExpression extends intrinsic_1.Intrinsic {
|
|
|
173
173
|
// A string that represents an input value to be escaped
|
|
174
174
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
175
175
|
class RawString extends TFExpression {
|
|
176
|
+
str;
|
|
176
177
|
constructor(str) {
|
|
177
178
|
super(str);
|
|
178
179
|
this.str = str;
|
|
@@ -191,17 +192,19 @@ function rawString(str) {
|
|
|
191
192
|
}
|
|
192
193
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
193
194
|
class Reference extends TFExpression {
|
|
195
|
+
identifier;
|
|
196
|
+
originStack;
|
|
197
|
+
/**
|
|
198
|
+
* A single reference could be used in multiple stacks,
|
|
199
|
+
* e.g. if we expose the ref directly or as token on the stack.
|
|
200
|
+
* We need to store the identifier for each stack,
|
|
201
|
+
* so that the resolved identifier string matches the stack it's resolved in.
|
|
202
|
+
*/
|
|
203
|
+
crossStackIdentifier = {};
|
|
194
204
|
constructor(identifier, originStack) {
|
|
195
205
|
super(identifier);
|
|
196
206
|
this.identifier = identifier;
|
|
197
207
|
this.originStack = originStack;
|
|
198
|
-
/**
|
|
199
|
-
* A single reference could be used in multiple stacks,
|
|
200
|
-
* e.g. if we expose the ref directly or as token on the stack.
|
|
201
|
-
* We need to store the identifier for each stack,
|
|
202
|
-
* so that the resolved identifier string matches the stack it's resolved in.
|
|
203
|
-
*/
|
|
204
|
-
this.crossStackIdentifier = {};
|
|
205
208
|
}
|
|
206
209
|
resolve(context) {
|
|
207
210
|
// We check for cross stack references on preparation, setting a new identifier
|
|
@@ -239,6 +242,8 @@ function insideTfExpression(arg) {
|
|
|
239
242
|
}
|
|
240
243
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
241
244
|
class PropertyAccess extends TFExpression {
|
|
245
|
+
target;
|
|
246
|
+
args;
|
|
242
247
|
constructor(target, args) {
|
|
243
248
|
super({ target, args });
|
|
244
249
|
this.target = target;
|
|
@@ -274,6 +279,9 @@ function propertyAccess(target, args) {
|
|
|
274
279
|
}
|
|
275
280
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
276
281
|
class ConditionalExpression extends TFExpression {
|
|
282
|
+
condition;
|
|
283
|
+
trueValue;
|
|
284
|
+
falseValue;
|
|
277
285
|
constructor(condition, trueValue, falseValue) {
|
|
278
286
|
super({ condition, trueValue, falseValue });
|
|
279
287
|
this.condition = condition;
|
|
@@ -301,6 +309,9 @@ function conditional(condition, trueValue, falseValue) {
|
|
|
301
309
|
* @internal
|
|
302
310
|
*/
|
|
303
311
|
class OperatorExpression extends TFExpression {
|
|
312
|
+
operator;
|
|
313
|
+
left;
|
|
314
|
+
right;
|
|
304
315
|
constructor(operator, left, right) {
|
|
305
316
|
super({ operator, leftValue: left, rightValue: right });
|
|
306
317
|
this.operator = operator;
|
|
@@ -341,6 +352,8 @@ class OperatorExpression extends TFExpression {
|
|
|
341
352
|
exports.OperatorExpression = OperatorExpression;
|
|
342
353
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
343
354
|
class FunctionCall extends TFExpression {
|
|
355
|
+
name;
|
|
356
|
+
args;
|
|
344
357
|
constructor(name, args) {
|
|
345
358
|
super({ name, args });
|
|
346
359
|
this.name = name;
|
|
@@ -409,6 +422,9 @@ exports.FOR_EXPRESSION_VALUE = ref("val");
|
|
|
409
422
|
* https://developer.hashicorp.com/terraform/language/expressions/for
|
|
410
423
|
*/
|
|
411
424
|
class ForExpression extends TFExpression {
|
|
425
|
+
input;
|
|
426
|
+
valueExpression;
|
|
427
|
+
keyExpression;
|
|
412
428
|
constructor(input, valueExpression, keyExpression) {
|
|
413
429
|
super({ input, valueExpression, keyExpression });
|
|
414
430
|
this.input = input;
|
|
@@ -456,6 +472,7 @@ function forExpression(input, valueExpression, keyExpression) {
|
|
|
456
472
|
}
|
|
457
473
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
458
474
|
class Dependable extends TFExpression {
|
|
475
|
+
dependable;
|
|
459
476
|
constructor(dependable) {
|
|
460
477
|
super(dependable);
|
|
461
478
|
this.dependable = dependable;
|
|
@@ -469,4 +486,4 @@ class Dependable extends TFExpression {
|
|
|
469
486
|
function dependable(dependable) {
|
|
470
487
|
return token_1.Token.asString(new Dependable(dependable));
|
|
471
488
|
}
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZFeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RmRXhwcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvTkEsOEJBRUM7QUFtREQsa0JBRUM7QUFNRCxnREFFQztBQStDRCx3Q0FFQztBQTZCRCxrQ0FNQztBQXNJRCxvQkFFQztBQXdERCxzQ0FVQztBQWVELGdDQUVDO0FBL2pCRCwwREFBdUQ7QUFDdkQsMENBQXFEO0FBQ3JELCtCQUE0QjtBQUM1Qix1REFBbUQ7QUFFbkQsMkNBQXVDO0FBRXZDLE1BQU0sMEJBQTBCLEdBQUcsMEJBQTBCLENBQUM7QUFFOUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxHQUFXO0lBQ2xDLHVFQUF1RTtJQUN2RSxzRUFBc0U7SUFDdEUsa0VBQWtFO0lBQ2xFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7U0FDdkIsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDN0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sWUFBYSxTQUFRLHFCQUFTO0lBQ3hCLHFCQUFxQixDQUFDLE9BQXdCLEVBQUUsR0FBUTtRQUNoRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksb0JBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxtRUFBbUU7WUFDbkUsb0VBQW9FO1lBQ3BFLHFFQUFxRTtZQUNyRSxvRUFBb0U7WUFDcEUsb0VBQW9FO1lBQ3BFLHVFQUF1RTtZQUN2RSw2REFBNkQ7WUFDN0QsK0RBQStEO1lBQy9ELGdFQUFnRTtZQUNoRSxvRUFBb0U7WUFDcEUsbUVBQW1FO1lBQ25FLHNFQUFzRTtZQUN0RSxJQUFJLFdBQVcsS0FBSyxJQUFJLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN0RCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0Qsc0VBQXNFO1lBQ3RFLHVFQUF1RTtZQUN2RSxpRUFBaUU7WUFDakUsc0VBQXNFO1lBQ3RFLHFFQUFxRTtZQUNyRSxvRUFBb0U7WUFDcEUseURBQXlEO1lBQ3pELHNFQUFzRTtZQUN0RSxrRUFBa0U7WUFDbEUsc0VBQXNFO1lBQ3RFLGtFQUFrRTtZQUNsRSxxRUFBcUU7WUFDckUsOERBQThEO1lBQzlELGlFQUFpRTtZQUNqRSxxRUFBcUU7WUFDckUsd0RBQXdEO1lBQ3hELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUMvQixPQUFPLElBQUksV0FBVztxQkFDbkIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDbkIsQ0FBQztZQUNELElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztxQkFDaEMsR0FBRyxDQUNGLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDTixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUM1RTtxQkFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNuQixDQUFDO1lBQ0QsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxXQUFXO2lCQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsQ0FBQztRQUVELElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7aUJBQ2hDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSx3RUFBd0U7UUFDeEUsd0VBQXdFO1FBQ3hFLHVFQUF1RTtRQUN2RSx5RUFBeUU7UUFDekUsOERBQThEO1FBQzlELElBQUksV0FBVyxLQUFLLElBQUksSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFUyxVQUFVLENBQUMsT0FBd0IsRUFBRSxHQUFRO1FBQ3JELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNqRCwwR0FBMEc7WUFDMUcseUdBQXlHO1lBQ3pHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDTyxZQUFZLENBQUMsR0FBVztRQUNoQyxPQUFPLEdBQUc7YUFDUCxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLGtCQUFrQjthQUN4QyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQ2pELENBQUM7SUFFTyxhQUFhLENBQUMsR0FBVyxFQUFFLFdBQWdCO1FBQ2pELE1BQU0sU0FBUyxHQUFHLG9CQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBRTVFLGlCQUFpQjtRQUNqQixJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLFdBQVcsS0FBSyxHQUFHO2dCQUN4QixXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDM0IsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1FBQzVDLENBQUM7UUFFRCx5QkFBeUI7UUFDekIsSUFDRSxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDOUIsY0FBYyxLQUFLLENBQUMsRUFDcEIsQ0FBQztZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCwrQ0FBK0M7UUFDL0MsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNoQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3BCLE1BQU0sVUFBVSxHQUFHLG9CQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLGFBQWEsR0FBRyxvQkFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkQsTUFBTSxXQUFXLEdBQUcsb0JBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWhELE1BQU0sY0FBYyxHQUNsQixhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFFL0QsZ0dBQWdHO2dCQUNoRyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBRXJCLHlEQUF5RDtnQkFDekQsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksY0FBYyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNoRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztnQkFFRCx1RUFBdUU7Z0JBQ3ZFLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDaEUsU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ3JDLENBQUM7Z0JBRUQsTUFBTSxVQUFVLEdBQ2QsV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDO29CQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7b0JBQzFCLENBQUMsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUU5QixPQUFPLEdBQUcsU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLENBQUM7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsS0FBSyxHQUFHO1lBQ3ZCLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQzFCLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxVQUFVO1lBQ1osQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBRUQsd0RBQXdEO0FBQ3hELCtDQUErQztBQUMvQyxNQUFNLFNBQVUsU0FBUSxZQUFZO0lBQ2xDLFlBQTZCLEdBQVc7UUFDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRGdCLFFBQUcsR0FBSCxHQUFHLENBQVE7SUFFeEMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUF3QjtRQUNyQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyx3Q0FBd0M7SUFDckgsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBRUQsK0NBQStDO0FBQy9DLFNBQWdCLFNBQVMsQ0FBQyxHQUFXO0lBQ25DLE9BQU8sSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVELCtDQUErQztBQUMvQyxNQUFNLFNBQVUsU0FBUSxZQUFZO0lBUWxDLFlBQ1UsVUFBa0IsRUFDbEIsV0FBNEI7UUFFcEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBSFYsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFUdEM7Ozs7O1dBS0c7UUFDSyx5QkFBb0IsR0FBMkIsRUFBRSxDQUFDO0lBTTFELENBQUM7SUFFTSxPQUFPLENBQUMsT0FBd0I7UUFDckMsK0VBQStFO1FBQy9FLE1BQU0sZUFBZSxHQUFHLGdDQUFjLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0MsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM5QyxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0Qix3QkFBd0I7WUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssZUFBZSxFQUFFLENBQUM7Z0JBQzdELE1BQU0sR0FBRyxHQUFHLFNBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsbUJBQW1CLENBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQ2hCLGVBQWUsRUFDZixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO2dCQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDN0MsQ0FBQztRQUNILENBQUM7UUFFRCx1RkFBdUY7UUFDdkYsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLGNBQWM7Z0JBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO2dCQUN0QyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUNwRCxDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDO0lBQ3JFLENBQUM7Q0FDRjtBQUVELCtDQUErQztBQUMvQyxTQUFnQixHQUFHLENBQUMsVUFBa0IsRUFBRSxLQUFzQjtJQUM1RCxPQUFPLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsR0FBUTtJQUN6QyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBTSxjQUFlLFNBQVEsWUFBWTtJQUN2QyxZQUNVLE1BQWtCLEVBQ2xCLElBQWtCO1FBRTFCLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBSGhCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBYztJQUc1QixDQUFDO0lBRU0sT0FBTyxDQUFDLE9BQXdCO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDOUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUk7YUFDN0IsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDWCxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxhQUFhLEdBQ2pCLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEUsTUFBTSxhQUFhLEdBQ2pCLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFdEQsSUFBSSxhQUFhLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjthQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFWixNQUFNLFVBQVUsR0FDZCxzQkFBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQ3hELENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1QyxNQUFNLElBQUksR0FBRyxHQUFHLFVBQVUsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUU5QyxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDO0lBQy9DLENBQUM7Q0FDRjtBQUVELCtDQUErQztBQUMvQyxTQUFnQixjQUFjLENBQUMsTUFBa0IsRUFBRSxJQUFrQjtJQUNuRSxPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQWdCLENBQUM7QUFDekQsQ0FBQztBQUVELCtDQUErQztBQUMvQyxNQUFNLHFCQUFzQixTQUFRLFlBQVk7SUFDOUMsWUFDVSxTQUFxQixFQUNyQixTQUFxQixFQUNyQixVQUFzQjtRQUU5QixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFKcEMsY0FBUyxHQUFULFNBQVMsQ0FBWTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFZO1FBQ3JCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFHaEMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUF3QjtRQUNyQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTlCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdELE1BQU0sSUFBSSxHQUFHLEdBQUcsU0FBUyxNQUFNLFNBQVMsTUFBTSxVQUFVLEVBQUUsQ0FBQztRQUUzRCxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDO0lBQy9DLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsV0FBVyxDQUN6QixTQUFxQixFQUNyQixTQUFxQixFQUNyQixVQUFzQjtJQUV0QixPQUFPLElBQUkscUJBQXFCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBbUJEOzs7R0FHRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsWUFBWTtJQUNsRCxZQUNVLFFBQWtCLEVBQ2xCLElBQWdCLEVBQ2hCLEtBQWtCO1FBRTFCLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBSmhELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFhO0lBRzVCLENBQUM7SUFFTSxPQUFPLENBQUMsT0FBd0I7UUFDckMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM5QyxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUU5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsTUFBTSxLQUFLLEdBQ1QsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFaEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNULElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsK0NBQStDO2dCQUNsRSxNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDVCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDeEIsY0FBYztvQkFDZCxJQUFJLEdBQUcsSUFBSSxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUM7Z0JBQ2hDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixXQUFXO29CQUNYLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsK0NBQStDO2dCQUNwRSxDQUFDO2dCQUNELE1BQU07WUFDUixDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDUixJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBMUNELGdEQTBDQztBQUVELCtDQUErQztBQUMvQyxNQUFNLFlBQWEsU0FBUSxZQUFZO0lBQ3JDLFlBQ1UsSUFBWSxFQUNaLElBQWtCO1FBRTFCLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBSGQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFNBQUksR0FBSixJQUFJLENBQWM7SUFHNUIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUF3QjtRQUNyQyw4REFBOEQ7UUFDOUQsd0VBQXdFO1FBQ3hFLHVFQUF1RTtRQUN2RSxnRUFBZ0U7UUFDaEUsbUVBQW1FO1FBQ25FLHFDQUFxQztRQUNyQyxFQUFFO1FBQ0YsNERBQTREO1FBQzVELDJEQUEyRDtRQUMzRCxxRUFBcUU7UUFDckUsdUVBQXVFO1FBQ3ZFLHVFQUF1RTtRQUN2RSxtRUFBbUU7UUFDbkUsbUVBQW1FO1FBQ25FLHdFQUF3RTtRQUN4RSx1RUFBdUU7UUFDdkUsZ0NBQWdDO1FBQ2hDLElBQUksS0FBaUMsQ0FBQztRQUN0QyxJQUFJLGdDQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDO2dCQUNILEtBQUssR0FBRyxnQ0FBYyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDOUMsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ3BELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUVoRCxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM5QixPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM3QixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUUzQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSTthQUM3QixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxjQUFjLEdBQUcsQ0FBQztRQUUvQyxPQUFPLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDO1FBQzlDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7UUFFMUMsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUFDRCwrQ0FBK0M7QUFDL0MsU0FBZ0IsSUFBSSxDQUFDLElBQVksRUFBRSxJQUFrQjtJQUNuRCxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQWdCLENBQUM7QUFDckQsQ0FBQztBQUVZLFFBQUEsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLFFBQUEsb0JBQW9CLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxhQUFjLFNBQVEsWUFBWTtJQUN0QyxZQUNVLEtBQWlCLEVBQ2pCLGVBQTJCLEVBQzNCLGFBQTBCO1FBRWxDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUp6QyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLG9CQUFlLEdBQWYsZUFBZSxDQUFZO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFhO0lBR3BDLENBQUM7SUFFTSxPQUFPLENBQUMsT0FBd0I7UUFDckMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM5QyxPQUFPLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM5QixPQUFPLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLDBCQUFrQixDQUFDLENBQUM7UUFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsNEJBQW9CLENBQUMsQ0FBQztRQUM3RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFNUUsSUFBSSxJQUFZLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFeEUsSUFBSSxHQUFHLFNBQVMsR0FBRyxLQUFLLEtBQUssT0FBTyxLQUFLLEtBQUssT0FBTyxPQUFPLFNBQVMsSUFBSSxDQUFDO1FBQzVFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxHQUFHLFNBQVMsR0FBRyxLQUFLLEtBQUssT0FBTyxLQUFLLEtBQUssU0FBUyxHQUFHLENBQUM7UUFDN0QsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxTQUFnQixhQUFhLENBQzNCLEtBQWlCLEVBQ2pCLGVBQTJCLEVBQzNCLGFBQTBCO0lBRTFCLE9BQU8sSUFBSSxhQUFhLENBQ3RCLEtBQUssRUFDTCxlQUFlLEVBQ2YsYUFBYSxDQUNDLENBQUM7QUFDbkIsQ0FBQztBQUVELCtDQUErQztBQUMvQyxNQUFNLFVBQVcsU0FBUSxZQUFZO0lBQ25DLFlBQW9CLFVBQWdDO1FBQ2xELEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQURBLGVBQVUsR0FBVixVQUFVLENBQXNCO0lBRXBELENBQUM7SUFFTSxPQUFPLENBQUMsT0FBd0I7UUFDckMsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUFDRCwrQ0FBK0M7QUFDL0MsU0FBZ0IsVUFBVSxDQUFDLFVBQWdDO0lBQ3pELE9BQU8sYUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgSVJlc29sdmFibGUsIElSZXNvbHZlQ29udGV4dCB9IGZyb20gXCIuL3Rva2Vucy9yZXNvbHZhYmxlXCI7XG5pbXBvcnQgeyBJbnRyaW5zaWMgfSBmcm9tIFwiLi90b2tlbnMvcHJpdmF0ZS9pbnRyaW5zaWNcIjtcbmltcG9ydCB7IFRva2VuaXphdGlvbiwgVG9rZW4gfSBmcm9tIFwiLi90b2tlbnMvdG9rZW5cIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuL2FwcFwiO1xuaW1wb3J0IHsgVGVycmFmb3JtU3RhY2sgfSBmcm9tIFwiLi90ZXJyYWZvcm0tc3RhY2tcIjtcbmltcG9ydCB7IElUZXJyYWZvcm1EZXBlbmRhYmxlIH0gZnJvbSBcIi4vdGVycmFmb3JtLWRlcGVuZGFibGVcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmNvbnN0IFRFUlJBRk9STV9JREVOVElGSUVSX1JFR0VYID0gL15bX2EtekEtWl1bX2EtekEtWjAtOV0qJC87XG5cbi8qKlxuICogU2VyaWFsaXplcyBhbiBvYmplY3Qga2V5IGFzIGEgVGVycmFmb3JtIHF1b3RlZC1zdHJpbmcgbGl0ZXJhbDpcbiAqIGBKU09OLnN0cmluZ2lmeWAgY292ZXJzIHF1b3RlcywgYmFja3NsYXNoZXMgYW5kIGNvbnRyb2wgY2hhcmFjdGVycywgYW5kXG4gKiBgJCR7YC9gJSV7YCBhcmUgVGVycmFmb3JtJ3Mgb3duIGVzY2FwZXMgZm9yIHdoYXQgd291bGQgb3RoZXJ3aXNlIGJlY29tZVxuICogdGVtcGxhdGUgaW50ZXJwb2xhdGlvbi9kaXJlY3RpdmUgc2VxdWVuY2VzIGluc2lkZSB0aGUgcXVvdGVkIHN0cmluZy4gVGhlXG4gKiBwcmUtZXhpc3RpbmcgZGlyZWN0LW9iamVjdCBicmFuY2hlcyBvZiBgcmVzb2x2ZUV4cHJlc3Npb25QYXJ0YCBzdGlsbFxuICogaW50ZXJwb2xhdGUga2V5cyB1bmVzY2FwZWQgLSB0cmFja2VkIGluXG4gKiBodHRwczovL2dpdGh1Yi5jb20vb3Blbi1jb25zdHJ1Y3RzL2Nkay10ZXJyYWluL2lzc3Vlcy8zNTAuXG4gKi9cbmZ1bmN0aW9uIHF1b3RlZFN0cmluZ0tleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlcGxhY2VyIGZ1bmN0aW9ucywgbm90IHJlcGxhY2VtZW50IHN0cmluZ3M6IGluIGEgcmVwbGFjZW1lbnQgc3RyaW5nXG4gIC8vIGAkJGAgaXMgaXRzZWxmIGFuIGVzY2FwZSAoZm9yIGEgbGl0ZXJhbCBgJGApLCBzbyBgXCIkJHtcImAgd291bGQgZW1pdFxuICAvLyBqdXN0IGAke2AgLSBzaWxlbnRseSB1bmRvaW5nIHRoZSBlc2NhcGUgdGhpcyBleGlzdHMgdG8gcHJvZHVjZS5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGtleSlcbiAgICAucmVwbGFjZSgvXFwkXFx7L2csICgpID0+IFwiJCR7XCIpXG4gICAgLnJlcGxhY2UoLyVcXHsvZywgKCkgPT4gXCIlJXtcIik7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBURkV4cHJlc3Npb24gZXh0ZW5kcyBJbnRyaW5zaWMgaW1wbGVtZW50cyBJUmVzb2x2YWJsZSB7XG4gIHByb3RlY3RlZCByZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dDogSVJlc29sdmVDb250ZXh0LCBhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzb2x2ZWRBcmcgPSBjb250ZXh0LnJlc29sdmUoYXJnKTtcbiAgICBpZiAoVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZShhcmcpKSB7XG4gICAgICAvLyBBIHJlc29sdmFibGUgYXJnIChlLmcuIGBjZGt0bi5Ub2tlbi5udWxsVmFsdWUoKWAsIGFuIElSZXNvbHZhYmxlXG4gICAgICAvLyB3cmFwcGluZyBgbnVsbGAgLSBzZWUgVG9rZW4ubnVsbFZhbHVlKCkvVG9rZW4uYXNBbnkoKSkgY2FuIGl0c2VsZlxuICAgICAgLy8gcmVzb2x2ZSB0byBgbnVsbGAvYHVuZGVmaW5lZGAuIENvbGxhcHNlIHRoYXQgdG8gdGhlIGxpdGVyYWwgXCJudWxsXCJcbiAgICAgIC8vIHN0cmluZyB0b28sIGZvciB0aGUgZXhhY3Qgc2FtZSByZWFzb24gYXMgdGhlIHBsYWluLW51bGwvdW5kZWZpbmVkXG4gICAgICAvLyBicmFuY2ggZnVydGhlciBkb3duOiBBcnJheS5wcm90b3R5cGUuam9pbigpICh1c2VkIGJ5IGNhbGxlcnMgbGlrZVxuICAgICAgLy8gRnVuY3Rpb25DYWxsLnJlc29sdmUoKSkgdHJlYXRzIGEgYG51bGxgL2B1bmRlZmluZWRgIGFycmF5IEVMRU1FTlQgYXNcbiAgICAgIC8vIGFuIGVtcHR5IHN0cmluZywgc2lsZW50bHkgZHJvcHBpbmcgdGhlIGFyZ3VtZW50IGluc3RlYWQgb2ZcbiAgICAgIC8vIHJlbmRlcmluZyB0aGUgVGVycmFmb3JtIGBudWxsYCBrZXl3b3JkLiBXaXRob3V0IHRoaXMsIG9ubHkgYVxuICAgICAgLy8gbGl0ZXJhbCBKUyBgbnVsbGAvYHVuZGVmaW5lZGAgYXJndW1lbnQgcmVuZGVyZWQgY29ycmVjdGx5IC0gYVxuICAgICAgLy8gcmVzb2x2YWJsZSB0b2tlbiB0aGF0IHJlc29sdmVzIHRvIGBudWxsYCAodGhlIG9ubHkgd2F5IHRvIHBhc3MgYW5cbiAgICAgIC8vIGV4cGxpY2l0IGBudWxsYCBpbiBhIGpzaWktdHlwZWQgZml4ZWQgcG9zaXRpb24sIHNpbmNlIGpzaWkgY2FuJ3RcbiAgICAgIC8vIGV4cHJlc3MgYSBsaXRlcmFsIGBudWxsYCBwYXJhbWV0ZXIgdHlwZSkgc2lsZW50bHkgdmFuaXNoZWQgaW5zdGVhZC5cbiAgICAgIGlmIChyZXNvbHZlZEFyZyA9PT0gbnVsbCB8fCByZXNvbHZlZEFyZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgIH1cbiAgICAgIC8vIEEgcmVzb2x2YWJsZSBjYW4gaXRzZWxmIHJlc29sdmUgdG8gYSBwbGFpbiAodW5lbmNvZGVkKSBhcnJheS9vYmplY3RcbiAgICAgIC8vIHJhdGhlciB0aGFuIGFuIGFscmVhZHktcmVuZGVyZWQgc3RyaW5nIC0gZS5nLiBhIG1hbnVhbGx5LWNvbnN0cnVjdGVkXG4gICAgICAvLyB3aG9sZS1jb2xsZWN0aW9uIHRva2VuIGxpa2UgYGNka3RuLlRva2VuLmFzQW55KFt0cnVlLCBmYWxzZV0pYFxuICAgICAgLy8gKGV4YWN0bHkgdGhlIHNoYXBlIGEganNpaS10eXBlZCBgQXJyYXk8Ym9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlPlxuICAgICAgLy8gfCBjZGt0bi5JUmVzb2x2YWJsZWAgcHJvdmlkZXItZnVuY3Rpb24gcGFyYW1ldGVyIG5vdyBhY2NlcHRzIC0gc2VlXG4gICAgICAvLyBwcm92aWRlci1mdW5jdGlvbi1tb2RlbC50cykuIEZvcm1hdCBpdCB0aGUgc2FtZSBicmFja2V0L2JyYWNlIHdheVxuICAgICAgLy8gdGhlIHBsYWluIGFycmF5L29iamVjdCBicmFuY2hlcyBiZWxvdyBkbywgcmVjdXJzaW5nIG9uXG4gICAgICAvLyBgcmVzb2x2ZWRBcmdgJ3Mgb3duIGVsZW1lbnRzIChOT1QgYGFyZ2AncyAtIGBhcmdgIGlzIHRoZSByZXNvbHZhYmxlXG4gICAgICAvLyB3cmFwcGVyIGl0c2VsZiwgbm90IGluZGV4YWJsZS9rZXlhYmxlKS4gV2l0aG91dCB0aGlzLCB0aGUgYXJyYXlcbiAgICAgIC8vIGJyYW5jaCBiZWxvdyBpcyB1bnJlYWNoYWJsZSBmb3IgYSByZXNvbHZhYmxlIGFyZyAodGhpcyBgaWZgIGFscmVhZHlcbiAgICAgIC8vIHJldHVybmVkKSwgc28gdGhlIHJhdyBhcnJheS9vYmplY3QgZmVsbCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZVxuICAgICAgLy8gcGxhaW4gYHJldHVybiByZXNvbHZlZEFyZ2AgYXQgdGhlIGJvdHRvbSAtIHJlbHlpbmcgb24gdGhlIGNhbGxlcidzXG4gICAgICAvLyBgQXJyYXkucHJvdG90eXBlLmpvaW4oKWAgKEZ1bmN0aW9uQ2FsbC5yZXNvbHZlKCkgZXQgYWwuKSB0b1xuICAgICAgLy8gc3RyaW5naWZ5IGl0LCB3aGljaCBkcm9wcyBhbiBhcnJheSdzIGJyYWNrZXRzL3NwYWNpbmcgKHJlbmRlcnNcbiAgICAgIC8vIGB0cnVlLGZhbHNlYCBpbnN0ZWFkIG9mIGBbdHJ1ZSwgZmFsc2VdYCkgYW5kLCBmb3IgYW4gb2JqZWN0LCB3b3VsZFxuICAgICAgLy8gcHJvZHVjZSB0aGUgdXNlbGVzcyBsaXRlcmFsIHN0cmluZyBgW29iamVjdCBPYmplY3RdYC5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc29sdmVkQXJnKSkge1xuICAgICAgICByZXR1cm4gYFske3Jlc29sdmVkQXJnXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT4gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIGl0ZW0pKVxuICAgICAgICAgIC5qb2luKFwiLCBcIil9XWA7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHJlc29sdmVkQXJnID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHJldHVybiBgeyR7T2JqZWN0LmtleXMocmVzb2x2ZWRBcmcpXG4gICAgICAgICAgLm1hcChcbiAgICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICAgIGAke3F1b3RlZFN0cmluZ0tleShrZXkpfSA9ICR7dGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHJlc29sdmVkQXJnW2tleV0pfWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKFwiLCBcIil9fWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc29sdmVkQXJnKSkge1xuICAgICAgcmV0dXJuIGBbJHtyZXNvbHZlZEFyZ1xuICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIGFyZ1tpbmRleF0pKVxuICAgICAgICAuam9pbihcIiwgXCIpfV1gO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRBcmcgPT09IFwib2JqZWN0XCIgJiYgcmVzb2x2ZWRBcmcgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBgeyR7T2JqZWN0LmtleXMocmVzb2x2ZWRBcmcpXG4gICAgICAgIC5tYXAoKGtleSkgPT4gYFwiJHtrZXl9XCIgPSAke3RoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCBhcmdba2V5XSl9YClcbiAgICAgICAgLmpvaW4oXCIsIFwiKX19YDtcbiAgICB9XG5cbiAgICAvLyBBIGxpdGVyYWwgYG51bGxgL2B1bmRlZmluZWRgIGFyZ3VtZW50IChlLmcuIGEgZml4ZWQtYXJpdHkgcHJvdmlkZXJcbiAgICAvLyBmdW5jdGlvbiBwb3NpdGlvbmFsIHNsb3QgdGhlIGNhbGxlciBpbnRlbnRpb25hbGx5IGxlZnQgZW1wdHkpIG11c3QgYmVcbiAgICAvLyByZW5kZXJlZCBhcyB0aGUgVGVycmFmb3JtIGBudWxsYCBrZXl3b3JkLiBXaXRob3V0IHRoaXMsIGByZXNvbHZlZEFyZ2BcbiAgICAvLyBzdGF5cyBgbnVsbGAvYHVuZGVmaW5lZGAgYW5kIEFycmF5LnByb3RvdHlwZS5qb2luKCkgKHVzZWQgYnkgY2FsbGVyc1xuICAgIC8vIGxpa2UgRnVuY3Rpb25DYWxsLnJlc29sdmUoKSkgc2lsZW50bHkgY29sbGFwc2VzIGl0IHRvIGFuIGVtcHR5IHN0cmluZyxcbiAgICAvLyBzaGlmdGluZy9kcm9wcGluZyB0aGUgYXJndW1lbnQgaW5zdGVhZCBvZiByZW5kZXJpbmcgYG51bGxgLlxuICAgIGlmIChyZXNvbHZlZEFyZyA9PT0gbnVsbCB8fCByZXNvbHZlZEFyZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkQXJnO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVBcmcoY29udGV4dDogSVJlc29sdmVDb250ZXh0LCBhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzb2x2ZWRBcmcgPSBjb250ZXh0LnJlc29sdmUoYXJnKTtcblxuICAgIGlmICh0eXBlb2YgYXJnID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBzdHIgPSB0aGlzLnJlc29sdmVTdHJpbmcoYXJnLCByZXNvbHZlZEFyZyk7XG4gICAgICAvLyBXaGVuIFRva2VuLmFzU3RyaW5nKCkgaXMgdXNlZCBvbiBhbiBvYmplY3QsIHN0ciB3aWxsIGJlIHRoZSBvYmplY3QgYW5kIG5lZWRzIHRvIGJlIHJlc29sdmVkIGRpZmZlcmVudGx5XG4gICAgICAvLyBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgaW4gTWFwVGVycmFmb3JtSXRlcmF0b3IjX2dldEZvckVhY2hFeHByZXNzaW9uIGFuZCBjYW4gY2F1c2UgaXNzdWVzIGxpa2UgIzM1NDBcbiAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFeHByZXNzaW9uUGFydChjb250ZXh0LCBzdHIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dCwgYXJnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFc2NhcGUgc3RyaW5nIHJlbW92ZXMgY2hhcmFjdGVycyBmcm9tIHRoZSBzdHJpbmcgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gVGVycmFmb3JtIG9yIEpTT05cbiAgICogSXQgbXVzdCBvbmx5IGJlIHVzZWQgb24gbm9uLXRva2VuIHZhbHVlc1xuICAgKi9cbiAgcHJvdGVjdGVkIGVzY2FwZVN0cmluZyhzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHJcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKSAvLyBlc2NhcGUgbmV3bGluZXNcbiAgICAgIC5yZXBsYWNlKC9cXCR7L2csIFwiJCQke1wiKTsgLy8gZXNjYXBlICR7IHRvICQke1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU3RyaW5nKHN0cjogc3RyaW5nLCByZXNvbHZlZEFyZzogYW55KSB7XG4gICAgY29uc3QgdG9rZW5MaXN0ID0gVG9rZW5pemF0aW9uLnJldmVyc2VTdHJpbmcoc3RyKTtcbiAgICBjb25zdCBudW1iZXJPZlRva2VucyA9IHRva2VuTGlzdC50b2tlbnMubGVuZ3RoICsgdG9rZW5MaXN0LmludHJpbnNpYy5sZW5ndGg7XG5cbiAgICAvLyBTdHJpbmcgbGl0ZXJhbFxuICAgIGlmIChudW1iZXJPZlRva2VucyA9PT0gMCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVkQXJnICE9PSBgXCJgICYmXG4gICAgICAgIHJlc29sdmVkQXJnLnN0YXJ0c1dpdGgoJ1wiJykgJiZcbiAgICAgICAgcmVzb2x2ZWRBcmcuZW5kc1dpdGgoJ1wiJylcbiAgICAgICAgPyB0aGlzLmVzY2FwZVN0cmluZyhyZXNvbHZlZEFyZylcbiAgICAgICAgOiBgXCIke3RoaXMuZXNjYXBlU3RyaW5nKHJlc29sdmVkQXJnKX1cImA7XG4gICAgfVxuXG4gICAgLy8gT25seSBhIHRva2VuIHJlZmVyZW5jZVxuICAgIGlmIChcbiAgICAgIHRva2VuTGlzdC5saXRlcmFscy5sZW5ndGggPT09IDAgJiZcbiAgICAgIHRva2VuTGlzdC5lc2NhcGVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgbnVtYmVyT2ZUb2tlbnMgPT09IDFcbiAgICApIHtcbiAgICAgIHJldHVybiByZXNvbHZlZEFyZztcbiAgICB9XG5cbiAgICAvLyBTdHJpbmcgbGl0ZXJhbCArIHRva2VuIHJlZmVyZW5jZSBjb21iaW5hdGlvblxuICAgIGNvbnN0IGpvaW5SZXN1bHQgPSB0b2tlbkxpc3Quam9pbih7XG4gICAgICBqb2luOiAobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdFRva2VucyA9IFRva2VuaXphdGlvbi5yZXZlcnNlKGxlZnQpO1xuICAgICAgICBjb25zdCBsZWZ0VG9rZW5MaXN0ID0gVG9rZW5pemF0aW9uLnJldmVyc2VTdHJpbmcobGVmdCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0VG9rZW5zID0gVG9rZW5pemF0aW9uLnJldmVyc2UocmlnaHQpO1xuXG4gICAgICAgIGNvbnN0IGxlZnRUb2tlbkNvdW50ID1cbiAgICAgICAgICBsZWZ0VG9rZW5MaXN0LmludHJpbnNpYy5sZW5ndGggKyBsZWZ0VG9rZW5MaXN0LnRva2Vucy5sZW5ndGg7XG5cbiAgICAgICAgLy8gaWYgbGVmdCBpcyBtaXhlZCwgbmVlZHMgdG8gYmUgbGVmdCBhbG9uZSAoYmVjYXVzZSBpdCdzIGEgcmVzdWx0IG9mIGEgcHJldmlvdXMgam9pbiBpdGVyYXRpb24pXG4gICAgICAgIGxldCBsZWZ0VmFsdWUgPSBsZWZ0O1xuXG4gICAgICAgIC8vIGlmIGxlZnQgaXMgYSBzdHJpbmcgbGl0ZXJhbCwgdGhlbiB3ZSBuZWVkIHRvIGVzY2FwZSBpdFxuICAgICAgICBpZiAobGVmdFRva2VuTGlzdC5saXRlcmFscy5sZW5ndGggPT09IDEgJiYgbGVmdFRva2VuQ291bnQgPT09IDApIHtcbiAgICAgICAgICBsZWZ0VmFsdWUgPSB0aGlzLmVzY2FwZVN0cmluZyhsZWZ0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIGxlZnQgaXMgb25seSBhIHRva2VuLCBuZWVkcyB0byBiZSB3cmFwcGVkIGFzIHRlcnJhZm9ybSBleHByZXNzaW9uXG4gICAgICAgIGlmIChsZWZ0VG9rZW5MaXN0LmxpdGVyYWxzLmxlbmd0aCA9PT0gMCAmJiBsZWZ0VG9rZW5Db3VudCA9PT0gMSkge1xuICAgICAgICAgIGxlZnRWYWx1ZSA9IGBcXCR7JHtsZWZ0VG9rZW5zWzBdfX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmlnaHRWYWx1ZSA9XG4gICAgICAgICAgcmlnaHRUb2tlbnMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IHRoaXMuZXNjYXBlU3RyaW5nKHJpZ2h0KVxuICAgICAgICAgICAgOiBgXFwkeyR7cmlnaHRUb2tlbnNbMF19fWA7XG5cbiAgICAgICAgcmV0dXJuIGAke2xlZnRWYWx1ZX0ke3JpZ2h0VmFsdWV9YDtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gam9pblJlc3VsdCAhPT0gYFwiYCAmJlxuICAgICAgam9pblJlc3VsdC5zdGFydHNXaXRoKCdcIicpICYmXG4gICAgICBqb2luUmVzdWx0LmVuZHNXaXRoKCdcIicpXG4gICAgICA/IGpvaW5SZXN1bHRcbiAgICAgIDogYFwiJHtqb2luUmVzdWx0fVwiYDtcbiAgfVxufVxuXG4vLyBBIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYW4gaW5wdXQgdmFsdWUgdG8gYmUgZXNjYXBlZFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIFJhd1N0cmluZyBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RyOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzdHIpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUoY29udGV4dDogSVJlc29sdmVDb250ZXh0KSB7XG4gICAgY29uc3QgcXRzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcyA/IGBcImAgOiBgYDtcbiAgICByZXR1cm4gYCR7cXRzfSR7dGhpcy5lc2NhcGVTdHJpbmcodGhpcy5zdHIpLnJlcGxhY2UoL1xcXCIvZywgJ1xcXFxcIicpfSR7cXRzfWA7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHI7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiByYXdTdHJpbmcoc3RyOiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gIHJldHVybiBuZXcgUmF3U3RyaW5nKHN0cik7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBSZWZlcmVuY2UgZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICAvKipcbiAgICogQSBzaW5nbGUgcmVmZXJlbmNlIGNvdWxkIGJlIHVzZWQgaW4gbXVsdGlwbGUgc3RhY2tzLFxuICAgKiBlLmcuIGlmIHdlIGV4cG9zZSB0aGUgcmVmIGRpcmVjdGx5IG9yIGFzIHRva2VuIG9uIHRoZSBzdGFjay5cbiAgICogV2UgbmVlZCB0byBzdG9yZSB0aGUgaWRlbnRpZmllciBmb3IgZWFjaCBzdGFjayxcbiAgICogc28gdGhhdCB0aGUgcmVzb2x2ZWQgaWRlbnRpZmllciBzdHJpbmcgbWF0Y2hlcyB0aGUgc3RhY2sgaXQncyByZXNvbHZlZCBpbi5cbiAgICovXG4gIHByaXZhdGUgY3Jvc3NTdGFja0lkZW50aWZpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBvcmlnaW5TdGFjaz86IFRlcnJhZm9ybVN0YWNrLFxuICApIHtcbiAgICBzdXBlcihpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgLy8gV2UgY2hlY2sgZm9yIGNyb3NzIHN0YWNrIHJlZmVyZW5jZXMgb24gcHJlcGFyYXRpb24sIHNldHRpbmcgYSBuZXcgaWRlbnRpZmllclxuICAgIGNvbnN0IHJlc29sdXRpb25TdGFjayA9IFRlcnJhZm9ybVN0YWNrLm9mKGNvbnRleHQuc2NvcGUpO1xuICAgIGNvbnN0IHN0YWNrTmFtZSA9IHJlc29sdXRpb25TdGFjay50b1N0cmluZygpO1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIGlmIChjb250ZXh0LnByZXBhcmluZykge1xuICAgICAgLy8gQ3Jvc3Mgc3RhY2sgcmVmZXJlbmNlXG4gICAgICBpZiAodGhpcy5vcmlnaW5TdGFjayAmJiB0aGlzLm9yaWdpblN0YWNrICE9PSByZXNvbHV0aW9uU3RhY2spIHtcbiAgICAgICAgY29uc3QgYXBwID0gQXBwLm9mKHRoaXMub3JpZ2luU3RhY2spO1xuICAgICAgICBjb25zdCBjc3IgPSBhcHAuY3Jvc3NTdGFja1JlZmVyZW5jZShcbiAgICAgICAgICB0aGlzLm9yaWdpblN0YWNrLFxuICAgICAgICAgIHJlc29sdXRpb25TdGFjayxcbiAgICAgICAgICB0aGlzLmlkZW50aWZpZXIsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jcm9zc1N0YWNrSWRlbnRpZmllcltzdGFja05hbWVdID0gY3NyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoaXMgaXMgYSBjcm9zcyBzdGFjayByZWZlcmVuY2Ugd2Ugd2lsbCByZXNvbHZlIHRvIGEgcmVmZXJlbmNlIHdpdGhpbiB0aGlzIHN0YWNrLlxuICAgIGlmICh0aGlzLmNyb3NzU3RhY2tJZGVudGlmaWVyW3N0YWNrTmFtZV0pIHtcbiAgICAgIHJldHVybiBzdXBwcmVzc0JyYWNlc1xuICAgICAgICA/IHRoaXMuY3Jvc3NTdGFja0lkZW50aWZpZXJbc3RhY2tOYW1lXVxuICAgICAgICA6IGBcXCR7JHt0aGlzLmNyb3NzU3RhY2tJZGVudGlmaWVyW3N0YWNrTmFtZV19fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cHByZXNzQnJhY2VzID8gdGhpcy5pZGVudGlmaWVyIDogYFxcJHske3RoaXMuaWRlbnRpZmllcn19YDtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIHJlZihpZGVudGlmaWVyOiBzdHJpbmcsIHN0YWNrPzogVGVycmFmb3JtU3RhY2spOiBJUmVzb2x2YWJsZSB7XG4gIHJldHVybiBuZXcgUmVmZXJlbmNlKGlkZW50aWZpZXIsIHN0YWNrKTtcbn1cblxuLyoqXG4gKiBtYXJrcyB0aGUgYXJndW1lbnQgYXMgYmVpbmcgdXNlZCBpbiBhIHRlcnJhZm9ybSBleHByZXNzaW9uXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zaWRlVGZFeHByZXNzaW9uKGFyZzogYW55KSB7XG4gIHJldHVybiBhcmc7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBQcm9wZXJ0eUFjY2VzcyBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFyZ2V0OiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgYXJnczogRXhwcmVzc2lvbltdLFxuICApIHtcbiAgICBzdXBlcih7IHRhcmdldCwgYXJncyB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3VwcHJlc3NCcmFjZXMgPSBjb250ZXh0LnN1cHByZXNzQnJhY2VzO1xuICAgIGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPSB0cnVlO1xuXG4gICAgY29uc3Qgc2VyaWFsaXplZEFyZ3MgPSB0aGlzLmFyZ3NcbiAgICAgIC5tYXAoKGFyZykgPT4ge1xuICAgICAgICBpZiAoYXJnID09PSBgKmApIHtcbiAgICAgICAgICByZXR1cm4gXCJbKl1cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgYXJnKTtcbiAgICAgICAgY29uc3QgaXNQbGFpblN0cmluZyA9XG4gICAgICAgICAgdHlwZW9mIGFyZyA9PT0gXCJzdHJpbmdcIiAmJiBURVJSQUZPUk1fSURFTlRJRklFUl9SRUdFWC50ZXN0KGFyZyk7XG4gICAgICAgIGNvbnN0IGlzUGxhaW5OdW1iZXIgPVxuICAgICAgICAgIHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChhcmcpO1xuXG4gICAgICAgIGlmIChpc1BsYWluU3RyaW5nIHx8IGlzUGxhaW5OdW1iZXIpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke2FyZ31gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGBbJHthfV1gO1xuICAgICAgfSkgLy8gcHJvcGVydHkgYWNjZXNzXG4gICAgICAuam9pbihcIlwiKTtcblxuICAgIGNvbnN0IHRhcmdldEV4cHIgPVxuICAgICAgQ29uc3RydWN0LmlzQ29uc3RydWN0KHRoaXMudGFyZ2V0KSAmJiBcImZxblwiIGluIHRoaXMudGFyZ2V0XG4gICAgICAgID8gdGhpcy50YXJnZXQuZnFuXG4gICAgICAgIDogdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMudGFyZ2V0KTtcblxuICAgIGNvbnN0IGV4cHIgPSBgJHt0YXJnZXRFeHByfSR7c2VyaWFsaXplZEFyZ3N9YDtcblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IGV4cHIgOiBgXFwkeyR7ZXhwcn19YDtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5QWNjZXNzKHRhcmdldDogRXhwcmVzc2lvbiwgYXJnczogRXhwcmVzc2lvbltdKSB7XG4gIHJldHVybiBuZXcgUHJvcGVydHlBY2Nlc3ModGFyZ2V0LCBhcmdzKSBhcyBJUmVzb2x2YWJsZTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIENvbmRpdGlvbmFsRXhwcmVzc2lvbiBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgdHJ1ZVZhbHVlOiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgZmFsc2VWYWx1ZTogRXhwcmVzc2lvbixcbiAgKSB7XG4gICAgc3VwZXIoeyBjb25kaXRpb24sIHRydWVWYWx1ZSwgZmFsc2VWYWx1ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3VwcHJlc3NCcmFjZXMgPSBjb250ZXh0LnN1cHByZXNzQnJhY2VzO1xuICAgIGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPSB0cnVlO1xuXG4gICAgY29uc3QgY29uZGl0aW9uID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMuY29uZGl0aW9uKTtcbiAgICBjb25zdCB0cnVlVmFsdWUgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy50cnVlVmFsdWUpO1xuICAgIGNvbnN0IGZhbHNlVmFsdWUgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy5mYWxzZVZhbHVlKTtcblxuICAgIGNvbnN0IGV4cHIgPSBgJHtjb25kaXRpb259ID8gJHt0cnVlVmFsdWV9IDogJHtmYWxzZVZhbHVlfWA7XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBjcmVhdGVzIGFuIGV4cHJlc3Npb24gbGlrZSBgdHJ1ZSA/IDEgOiAwYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZGl0aW9uYWwoXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbixcbiAgdHJ1ZVZhbHVlOiBFeHByZXNzaW9uLFxuICBmYWxzZVZhbHVlOiBFeHByZXNzaW9uLFxuKSB7XG4gIHJldHVybiBuZXcgQ29uZGl0aW9uYWxFeHByZXNzaW9uKGNvbmRpdGlvbiwgdHJ1ZVZhbHVlLCBmYWxzZVZhbHVlKTtcbn1cblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuaGFzaGljb3JwLmNvbS90ZXJyYWZvcm0vbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb3BlcmF0b3JzXG5leHBvcnQgdHlwZSBPcGVyYXRvciA9XG4gIHwgXCIhXCJcbiAgfCBcIi1cIlxuICB8IFwiKlwiXG4gIHwgXCIvXCJcbiAgfCBcIiVcIlxuICB8IFwiK1wiXG4gIHwgXCI+XCJcbiAgfCBcIj49XCJcbiAgfCBcIjxcIlxuICB8IFwiPD1cIlxuICB8IFwiPT1cIlxuICB8IFwiIT1cIlxuICB8IFwiJiZcIlxuICB8IFwifHxcIjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBPcGVyYXRvciBFeHByZXNzaW9uc1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRvckV4cHJlc3Npb24gZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG9wZXJhdG9yOiBPcGVyYXRvcixcbiAgICBwcml2YXRlIGxlZnQ6IEV4cHJlc3Npb24sXG4gICAgcHJpdmF0ZSByaWdodD86IEV4cHJlc3Npb24sIC8vIG9wdGlvbmFsIGZvciAhIGFuZCAtIG9wZXJhdG9yXG4gICkge1xuICAgIHN1cGVyKHsgb3BlcmF0b3IsIGxlZnRWYWx1ZTogbGVmdCwgcmlnaHRWYWx1ZTogcmlnaHQgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxlZnQgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy5sZWZ0KTtcbiAgICBjb25zdCByaWdodCA9XG4gICAgICB0aGlzLnJpZ2h0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy5yaWdodClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBsZXQgZXhwciA9IFwiXCI7XG4gICAgc3dpdGNoICh0aGlzLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlIFwiIVwiOiB7XG4gICAgICAgIGV4cHIgPSBgISR7bGVmdH1gOyAvLyBubyBicmFjZXMgbmVlZGVkIGFzICEgaGFzIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgXCItXCI6IHtcbiAgICAgICAgaWYgKHJpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBzdWJ0cmFjdGlvblxuICAgICAgICAgIGV4cHIgPSBgKCR7bGVmdH0gLSAke3JpZ2h0fSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG5lZ2F0aW9uXG4gICAgICAgICAgZXhwciA9IGAtJHtsZWZ0fWA7IC8vIG5vIGJyYWNlcyBuZWVkZWQgYXMgLSBoYXMgaGlnaGVzdCBwcmVjZWRlbmNlXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGV4cHIgPSBgKCR7bGVmdH0gJHt0aGlzLm9wZXJhdG9yfSAke3JpZ2h0fSlgO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IGV4cHIgOiBgXFwkeyR7ZXhwcn19YDtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgRnVuY3Rpb25DYWxsIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSBhcmdzOiBFeHByZXNzaW9uW10sXG4gICkge1xuICAgIHN1cGVyKHsgbmFtZSwgYXJncyB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgLy8gUmVjb3JkaW5nIGhlcmUsIGF0IHJlc29sdmUgdGltZSwgaXMgZGVsaWJlcmF0ZTogYSBgRm4uKigpYC9cbiAgICAvLyBgVGVycmFmb3JtUHJvdmlkZXJGdW5jdGlvbi5pbnZva2UoKWAgY2FsbCBvbmx5IHByb2R1Y2VzIGEgdG9rZW46IHRoaXNcbiAgICAvLyBpcyB0aGUgcG9pbnQgd2hlcmUgdGhhdCB0b2tlbiBhY3R1YWxseSBsYW5kcyBpbiBhIHJlbmRlcmVkIHN0YWNrLCBzb1xuICAgIC8vIHVzYWdlIGlzIGF0dHJpYnV0ZWQgdG8gdGhlIFNUQUNLIHdob3NlIHN5bnRoZXNpcyBpcyBkb2luZyB0aGVcbiAgICAvLyByZW5kZXJpbmcgLSBzZWUgYFRlcnJhZm9ybVN0YWNrLl91c2VkRnVuY3Rpb25zYCBmb3Igd2h5IHVzYWdlIGlzXG4gICAgLy8gc3RhY2stb3duZWQgcmF0aGVyIHRoYW4gQXBwLW93bmVkLlxuICAgIC8vXG4gICAgLy8gYGNvbnRleHQuc2NvcGVgIElTIHRoZSByZXNvbHZpbmcgVGVycmFmb3JtU3RhY2sgZm9yIGV2ZXJ5XG4gICAgLy8gc3ludGgtZHJpdmVuIHJlc29sdmUgKEFwcC5zeW50aCwgVGVzdGluZy5zeW50aC9zeW50aEhjbCxcbiAgICAvLyBTdGFja1N5bnRoZXNpemVyLnN5bnRoZXNpemUgYWxsIHJlc29sdmUgZWxlbWVudHMgd2l0aCB0aGVpciBvd25pbmdcbiAgICAvLyBzdGFjayBhcyBzY29wZSksIHNvIGBUZXJyYWZvcm1TdGFjay5pc1N0YWNrYCBpcyBjaGVja2VkIGZpcnN0IGFzIHRoZVxuICAgIC8vIGNvbW1vbiBjYXNlLiBgVGVycmFmb3JtU3RhY2sub2YoKWAgaXMgYSBmYWxsYmFjayBmb3IgYSBzY29wZSB0aGF0IGlzXG4gICAgLy8gc29tZSBvdGhlciBjb25zdHJ1Y3Qgd2l0aGluIGEgc3RhY2suIElmIG5laXRoZXIgZmluZHMgYSBzdGFjayAoYVxuICAgIC8vIHVzZXItZHJpdmVuIGBUb2tlbnMucmVzb2x2ZSgpYCBjYWxsIGFnYWluc3QgYSBiYXJlIHNjb3BlIHdpdGggbm9cbiAgICAvLyBzdGFjayBpbiBpdHMgYW5jZXN0cnkpLCB0aGVyZSBpcyBub3doZXJlIHRvIHJlY29yZCBpbnRvIC0gYW5kIG5vdGhpbmdcbiAgICAvLyB3b3VsZCBldmVyIHJlYWQgaXQgYmFjayB0byB2YWxpZGF0ZSBhbnl3YXkgLSBzbyByZWNvcmRpbmcgaXMgcXVpZXRseVxuICAgIC8vIHNraXBwZWQgcmF0aGVyIHRoYW4gdGhyb3dpbmcuXG4gICAgbGV0IHN0YWNrOiBUZXJyYWZvcm1TdGFjayB8IHVuZGVmaW5lZDtcbiAgICBpZiAoVGVycmFmb3JtU3RhY2suaXNTdGFjayhjb250ZXh0LnNjb3BlKSkge1xuICAgICAgc3RhY2sgPSBjb250ZXh0LnNjb3BlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGFjayA9IFRlcnJhZm9ybVN0YWNrLm9mKGNvbnRleHQuc2NvcGUpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHN0YWNrID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFjaykge1xuICAgICAgaWYgKHRoaXMubmFtZS5zdGFydHNXaXRoKFwicHJvdmlkZXI6OlwiKSkge1xuICAgICAgICBzdGFjay5fcmVjb3JkUHJvdmlkZXJGdW5jdGlvblVzYWdlKHRoaXMubmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFjay5fcmVjb3JkRnVuY3Rpb25Vc2FnZSh0aGlzLm5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb25zdCBvcmlnaW5hbElnbm9yZUVzY2FwZXMgPSBjb250ZXh0Lmlnbm9yZUVzY2FwZXM7XG4gICAgY29uc3Qgb3JpZ2luYWxXYXJuRXNjYXBlcyA9IGNvbnRleHQud2FybkVzY2FwZXM7XG5cbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcbiAgICBjb250ZXh0Lmlnbm9yZUVzY2FwZXMgPSB0cnVlO1xuICAgIGNvbnRleHQud2FybkVzY2FwZXMgPSB0cnVlO1xuXG4gICAgY29uc3Qgc2VyaWFsaXplZEFyZ3MgPSB0aGlzLmFyZ3NcbiAgICAgIC5tYXAoKGFyZykgPT4gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIGFyZykpXG4gICAgICAuam9pbihcIiwgXCIpO1xuXG4gICAgY29uc3QgZXhwciA9IGAke3RoaXMubmFtZX0oJHtzZXJpYWxpemVkQXJnc30pYDtcblxuICAgIGNvbnRleHQuaWdub3JlRXNjYXBlcyA9IG9yaWdpbmFsSWdub3JlRXNjYXBlcztcbiAgICBjb250ZXh0Lndhcm5Fc2NhcGVzID0gb3JpZ2luYWxXYXJuRXNjYXBlcztcblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IGV4cHIgOiBgXFwkeyR7ZXhwcn19YDtcbiAgfVxufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBjYWxsKG5hbWU6IHN0cmluZywgYXJnczogRXhwcmVzc2lvbltdKSB7XG4gIHJldHVybiBuZXcgRnVuY3Rpb25DYWxsKG5hbWUsIGFyZ3MpIGFzIElSZXNvbHZhYmxlO1xufVxuXG5leHBvcnQgY29uc3QgRk9SX0VYUFJFU1NJT05fS0VZID0gcmVmKFwia2V5XCIpO1xuZXhwb3J0IGNvbnN0IEZPUl9FWFBSRVNTSU9OX1ZBTFVFID0gcmVmKFwidmFsXCIpO1xuXG4vKipcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL2V4cHJlc3Npb25zL2ZvclxuICovXG5jbGFzcyBGb3JFeHByZXNzaW9uIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnB1dDogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIHZhbHVlRXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIGtleUV4cHJlc3Npb24/OiBFeHByZXNzaW9uLFxuICApIHtcbiAgICBzdXBlcih7IGlucHV0LCB2YWx1ZUV4cHJlc3Npb24sIGtleUV4cHJlc3Npb24gfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcbiAgICBjb250ZXh0Lml0ZXJhdG9yQ29udGV4dCA9IFwiRk9SX0VYUFJFU1NJT05cIjtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgRk9SX0VYUFJFU1NJT05fS0VZKTtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCBGT1JfRVhQUkVTU0lPTl9WQUxVRSk7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgdGhpcy5pbnB1dCk7XG4gICAgY29uc3QgdmFsdWVFeHByID0gdGhpcy5yZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dCwgdGhpcy52YWx1ZUV4cHJlc3Npb24pO1xuXG4gICAgbGV0IGV4cHI6IHN0cmluZztcbiAgICBpZiAodGhpcy5rZXlFeHByZXNzaW9uKSB7XG4gICAgICBjb25zdCBrZXlFeHByID0gdGhpcy5yZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dCwgdGhpcy5rZXlFeHByZXNzaW9uKTtcblxuICAgICAgZXhwciA9IGB7IGZvciAke2tleX0sICR7dmFsdWV9IGluICR7aW5wdXR9OiAke2tleUV4cHJ9ID0+ICR7dmFsdWVFeHByfSB9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwciA9IGBbIGZvciAke2tleX0sICR7dmFsdWV9IGluICR7aW5wdXR9OiAke3ZhbHVlRXhwcn1dYDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZm9yIGV4cHJlc3Npb24sIHVzZWQgZm9yIGFkdmFuY2VkIGludGVybmFsIHVzZSBjYXNlcyAoZS5nLiBpbiB0aGUgQGNka3RuL2F3cy1hZGFwdGVyKVxuICogSXQgaXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSB0byB1c2UgdGhpcyB2aWEgSlNJSSBpbiBvdGhlciBsYW5ndWFnZXMuIFVzdWFsbHkgeW91IG1pZ2h0IHdhbnQgdG9cbiAqIHVzZSBUZXJyYWZvcm1JdGVyYXRvciBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBpbnB1dCB0aGUgaW5wdXQgZm9yIHRoZSBleHByZXNzaW9uIGUuZy4gYSBsaXN0IG9yIGFuIG9iamVjdFxuICogQHBhcmFtIHZhbHVlRXhwcmVzc2lvbiB3aWxsIGV4cHJlc3MgdGhlIHZhbHVlIGUuZy4gWyBmb3IgaSBpbiAmbHQ7aW5wdXQmZ3Q7IDogJmx0O3ZhbHVlRXhwcmVzc2lvbiZndDsgXVxuICogQHBhcmFtIGtleUV4cHJlc3Npb24gaWYgc2V0IHdpbGwgcmV0dXJuIGFuIG9iamVjdCBlLmcuIHsgZm9yIGssdiBpbiAmbHQ7aW5wdXQmZ3Q7IDogJmx0O2tleUV4cHJlc3Npb24mZ3Q7ID0+ICZsdDt2YWx1ZUV4cHJlc3Npb24mZ3Q7fVxuICogQHJldHVybnMgYSBmb3IgZXhwcmVzc2lvblxuICpcbiAqIFRoZSB2YXJpYWJsZXMgZm9yIGtleSAoZm9yIG1hcHMpIC8gaW5kZXggKGZvciBsaXN0cykgYW5kIHZhbHVlIHRoYXQgYXJlIHZhbGlkIGluIHRoZSBrZXktIGFuZCB2YWx1ZUV4cHJlc3Npb25cbiAqIGNhbiBiZSByZWZlcmVuY2VkIGJ5IHVzaW5nIHRoZXNlIGNvbnN0YW50czogRk9SX0VYUFJFU1NJT05fS0VZIGFuZCBGT1JfRVhQUkVTU0lPTl9WQUxVRS5cbiAqXG4gKiBDdXJyZW50bHkgbmVzdGluZyBmb3IgZXhwcmVzc2lvbnMgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gdGhpcyBzaW1wbGlmaWNhdGlvbi5cbiAqXG4gKiBDdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCBmaWx0ZXJpbmcgZWxlbWVudHMgKGlmIGNsYXVzZSkgb3IgZ3JvdXBpbmcgcmVzdWx0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZm9yRXhwcmVzc2lvbihcbiAgaW5wdXQ6IEV4cHJlc3Npb24sXG4gIHZhbHVlRXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAga2V5RXhwcmVzc2lvbj86IEV4cHJlc3Npb24sXG4pIHtcbiAgcmV0dXJuIG5ldyBGb3JFeHByZXNzaW9uKFxuICAgIGlucHV0LFxuICAgIHZhbHVlRXhwcmVzc2lvbixcbiAgICBrZXlFeHByZXNzaW9uLFxuICApIGFzIElSZXNvbHZhYmxlO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgRGVwZW5kYWJsZSBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVwZW5kYWJsZTogSVRlcnJhZm9ybURlcGVuZGFibGUpIHtcbiAgICBzdXBlcihkZXBlbmRhYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB7XG4gICAgY29udGV4dC5zdXBwcmVzc0JyYWNlcyA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5kZXBlbmRhYmxlLmZxbjtcbiAgfVxufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBkZXBlbmRhYmxlKGRlcGVuZGFibGU6IElUZXJyYWZvcm1EZXBlbmRhYmxlKTogc3RyaW5nIHtcbiAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKG5ldyBEZXBlbmRhYmxlKGRlcGVuZGFibGUpKTtcbn1cblxuZXhwb3J0IHR5cGUgRXhwcmVzc2lvbiA9XG4gIHwgUmVmZXJlbmNlXG4gIHwgRnVuY3Rpb25DYWxsXG4gIHwgUHJvcGVydHlBY2Nlc3NcbiAgfCBDb25kaXRpb25hbEV4cHJlc3Npb25cbiAgfCBPcGVyYXRvckV4cHJlc3Npb25cbiAgfCBEZXBlbmRhYmxlXG4gIHwgRm9yRXhwcmVzc2lvblxuICB8IHN0cmluZ1xuICB8IHN0cmluZ1tdXG4gIHwgbnVtYmVyXG4gIHwgYm9vbGVhblxuICB8IElSZXNvbHZhYmxlXG4gIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICB8IG51bGxcbiAgfCBhbnkgLy8gdWx0aW1hdGVseSBhbnkgdmFsaWQgVGVycmFmb3JtIHR5cGUgY2FuIGJlIHVzZWQgYXMgYW4gZXhwcmVzc2lvblxuICB8IGFueVtdO1xuIl19
|
|
489
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGZFeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RmRXhwcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvTkEsOEJBRUM7QUFtREQsa0JBRUM7QUFNRCxnREFFQztBQStDRCx3Q0FFQztBQTZCRCxrQ0FNQztBQXNJRCxvQkFFQztBQXdERCxzQ0FVQztBQWVELGdDQUVDO0FBL2pCRCwwREFBdUQ7QUFDdkQsMENBQXFEO0FBQ3JELCtCQUE0QjtBQUM1Qix1REFBbUQ7QUFFbkQsMkNBQXVDO0FBRXZDLE1BQU0sMEJBQTBCLEdBQUcsMEJBQTBCLENBQUM7QUFFOUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxHQUFXO0lBQ2xDLHVFQUF1RTtJQUN2RSxzRUFBc0U7SUFDdEUsa0VBQWtFO0lBQ2xFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7U0FDdkIsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDN0IsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sWUFBYSxTQUFRLHFCQUFTO0lBQ3hCLHFCQUFxQixDQUFDLE9BQXdCLEVBQUUsR0FBUTtRQUNoRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksb0JBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxtRUFBbUU7WUFDbkUsb0VBQW9FO1lBQ3BFLHFFQUFxRTtZQUNyRSxvRUFBb0U7WUFDcEUsb0VBQW9FO1lBQ3BFLHVFQUF1RTtZQUN2RSw2REFBNkQ7WUFDN0QsK0RBQStEO1lBQy9ELGdFQUFnRTtZQUNoRSxvRUFBb0U7WUFDcEUsbUVBQW1FO1lBQ25FLHNFQUFzRTtZQUN0RSxJQUFJ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T0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQWdCLGFBQWEsQ0FDM0IsS0FBaUIsRUFDakIsZUFBMkIsRUFDM0IsYUFBMEI7SUFFMUIsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsS0FBSyxFQUNMLGVBQWUsRUFDZixhQUFhLENBQ0MsQ0FBQztBQUNuQixDQUFDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sVUFBVyxTQUFRLFlBQVk7SUFDZjtJQUFwQixZQUFvQixVQUFnQztRQUNsRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFEQSxlQUFVLEdBQVYsVUFBVSxDQUFzQjtJQUVwRCxDQUFDO0lBRU0sT0FBTyxDQUFDLE9BQXdCO1FBQ3JDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBQ0QsK0NBQStDO0FBQy9DLFNBQWdCLFVBQVUsQ0FBQyxVQUFnQztJQUN6RCxPQUFPLGFBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IElSZXNvbHZhYmxlLCBJUmVzb2x2ZUNvbnRleHQgfSBmcm9tIFwiLi90b2tlbnMvcmVzb2x2YWJsZVwiO1xuaW1wb3J0IHsgSW50cmluc2ljIH0gZnJvbSBcIi4vdG9rZW5zL3ByaXZhdGUvaW50cmluc2ljXCI7XG5pbXBvcnQgeyBUb2tlbml6YXRpb24sIFRva2VuIH0gZnJvbSBcIi4vdG9rZW5zL3Rva2VuXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi9hcHBcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4vdGVycmFmb3JtLXN0YWNrXCI7XG5pbXBvcnQgeyBJVGVycmFmb3JtRGVwZW5kYWJsZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1kZXBlbmRhYmxlXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5jb25zdCBURVJSQUZPUk1fSURFTlRJRklFUl9SRUdFWCA9IC9eW19hLXpBLVpdW19hLXpBLVowLTldKiQvO1xuXG4vKipcbiAqIFNlcmlhbGl6ZXMgYW4gb2JqZWN0IGtleSBhcyBhIFRlcnJhZm9ybSBxdW90ZWQtc3RyaW5nIGxpdGVyYWw6XG4gKiBgSlNPTi5zdHJpbmdpZnlgIGNvdmVycyBxdW90ZXMsIGJhY2tzbGFzaGVzIGFuZCBjb250cm9sIGNoYXJhY3RlcnMsIGFuZFxuICogYCQke2AvYCUle2AgYXJlIFRlcnJhZm9ybSdzIG93biBlc2NhcGVzIGZvciB3aGF0IHdvdWxkIG90aGVyd2lzZSBiZWNvbWVcbiAqIHRlbXBsYXRlIGludGVycG9sYXRpb24vZGlyZWN0aXZlIHNlcXVlbmNlcyBpbnNpZGUgdGhlIHF1b3RlZCBzdHJpbmcuIFRoZVxuICogcHJlLWV4aXN0aW5nIGRpcmVjdC1vYmplY3QgYnJhbmNoZXMgb2YgYHJlc29sdmVFeHByZXNzaW9uUGFydGAgc3RpbGxcbiAqIGludGVycG9sYXRlIGtleXMgdW5lc2NhcGVkIC0gdHJhY2tlZCBpblxuICogaHR0cHM6Ly9naXRodWIuY29tL29wZW4tY29uc3RydWN0cy9jZGstdGVycmFpbi9pc3N1ZXMvMzUwLlxuICovXG5mdW5jdGlvbiBxdW90ZWRTdHJpbmdLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZXBsYWNlciBmdW5jdGlvbnMsIG5vdCByZXBsYWNlbWVudCBzdHJpbmdzOiBpbiBhIHJlcGxhY2VtZW50IHN0cmluZ1xuICAvLyBgJCRgIGlzIGl0c2VsZiBhbiBlc2NhcGUgKGZvciBhIGxpdGVyYWwgYCRgKSwgc28gYFwiJCR7XCJgIHdvdWxkIGVtaXRcbiAgLy8ganVzdCBgJHtgIC0gc2lsZW50bHkgdW5kb2luZyB0aGUgZXNjYXBlIHRoaXMgZXhpc3RzIHRvIHByb2R1Y2UuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShrZXkpXG4gICAgLnJlcGxhY2UoL1xcJFxcey9nLCAoKSA9PiBcIiQke1wiKVxuICAgIC5yZXBsYWNlKC8lXFx7L2csICgpID0+IFwiJSV7XCIpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgVEZFeHByZXNzaW9uIGV4dGVuZHMgSW50cmluc2ljIGltcGxlbWVudHMgSVJlc29sdmFibGUge1xuICBwcm90ZWN0ZWQgcmVzb2x2ZUV4cHJlc3Npb25QYXJ0KGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCwgYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc29sdmVkQXJnID0gY29udGV4dC5yZXNvbHZlKGFyZyk7XG4gICAgaWYgKFRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoYXJnKSkge1xuICAgICAgLy8gQSByZXNvbHZhYmxlIGFyZyAoZS5nLiBgY2RrdG4uVG9rZW4ubnVsbFZhbHVlKClgLCBhbiBJUmVzb2x2YWJsZVxuICAgICAgLy8gd3JhcHBpbmcgYG51bGxgIC0gc2VlIFRva2VuLm51bGxWYWx1ZSgpL1Rva2VuLmFzQW55KCkpIGNhbiBpdHNlbGZcbiAgICAgIC8vIHJlc29sdmUgdG8gYG51bGxgL2B1bmRlZmluZWRgLiBDb2xsYXBzZSB0aGF0IHRvIHRoZSBsaXRlcmFsIFwibnVsbFwiXG4gICAgICAvLyBzdHJpbmcgdG9vLCBmb3IgdGhlIGV4YWN0IHNhbWUgcmVhc29uIGFzIHRoZSBwbGFpbi1udWxsL3VuZGVmaW5lZFxuICAgICAgLy8gYnJhbmNoIGZ1cnRoZXIgZG93bjogQXJyYXkucHJvdG90eXBlLmpvaW4oKSAodXNlZCBieSBjYWxsZXJzIGxpa2VcbiAgICAgIC8vIEZ1bmN0aW9uQ2FsbC5yZXNvbHZlKCkpIHRyZWF0cyBhIGBudWxsYC9gdW5kZWZpbmVkYCBhcnJheSBFTEVNRU5UIGFzXG4gICAgICAvLyBhbiBlbXB0eSBzdHJpbmcsIHNpbGVudGx5IGRyb3BwaW5nIHRoZSBhcmd1bWVudCBpbnN0ZWFkIG9mXG4gICAgICAvLyByZW5kZXJpbmcgdGhlIFRlcnJhZm9ybSBgbnVsbGAga2V5d29yZC4gV2l0aG91dCB0aGlzLCBvbmx5IGFcbiAgICAgIC8vIGxpdGVyYWwgSlMgYG51bGxgL2B1bmRlZmluZWRgIGFyZ3VtZW50IHJlbmRlcmVkIGNvcnJlY3RseSAtIGFcbiAgICAgIC8vIHJlc29sdmFibGUgdG9rZW4gdGhhdCByZXNvbHZlcyB0byBgbnVsbGAgKHRoZSBvbmx5IHdheSB0byBwYXNzIGFuXG4gICAgICAvLyBleHBsaWNpdCBgbnVsbGAgaW4gYSBqc2lpLXR5cGVkIGZpeGVkIHBvc2l0aW9uLCBzaW5jZSBqc2lpIGNhbid0XG4gICAgICAvLyBleHByZXNzIGEgbGl0ZXJhbCBgbnVsbGAgcGFyYW1ldGVyIHR5cGUpIHNpbGVudGx5IHZhbmlzaGVkIGluc3RlYWQuXG4gICAgICBpZiAocmVzb2x2ZWRBcmcgPT09IG51bGwgfHwgcmVzb2x2ZWRBcmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICB9XG4gICAgICAvLyBBIHJlc29sdmFibGUgY2FuIGl0c2VsZiByZXNvbHZlIHRvIGEgcGxhaW4gKHVuZW5jb2RlZCkgYXJyYXkvb2JqZWN0XG4gICAgICAvLyByYXRoZXIgdGhhbiBhbiBhbHJlYWR5LXJlbmRlcmVkIHN0cmluZyAtIGUuZy4gYSBtYW51YWxseS1jb25zdHJ1Y3RlZFxuICAgICAgLy8gd2hvbGUtY29sbGVjdGlvbiB0b2tlbiBsaWtlIGBjZGt0bi5Ub2tlbi5hc0FueShbdHJ1ZSwgZmFsc2VdKWBcbiAgICAgIC8vIChleGFjdGx5IHRoZSBzaGFwZSBhIGpzaWktdHlwZWQgYEFycmF5PGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZT5cbiAgICAgIC8vIHwgY2RrdG4uSVJlc29sdmFibGVgIHByb3ZpZGVyLWZ1bmN0aW9uIHBhcmFtZXRlciBub3cgYWNjZXB0cyAtIHNlZVxuICAgICAgLy8gcHJvdmlkZXItZnVuY3Rpb24tbW9kZWwudHMpLiBGb3JtYXQgaXQgdGhlIHNhbWUgYnJhY2tldC9icmFjZSB3YXlcbiAgICAgIC8vIHRoZSBwbGFpbiBhcnJheS9vYmplY3QgYnJhbmNoZXMgYmVsb3cgZG8sIHJlY3Vyc2luZyBvblxuICAgICAgLy8gYHJlc29sdmVkQXJnYCdzIG93biBlbGVtZW50cyAoTk9UIGBhcmdgJ3MgLSBgYXJnYCBpcyB0aGUgcmVzb2x2YWJsZVxuICAgICAgLy8gd3JhcHBlciBpdHNlbGYsIG5vdCBpbmRleGFibGUva2V5YWJsZSkuIFdpdGhvdXQgdGhpcywgdGhlIGFycmF5XG4gICAgICAvLyBicmFuY2ggYmVsb3cgaXMgdW5yZWFjaGFibGUgZm9yIGEgcmVzb2x2YWJsZSBhcmcgKHRoaXMgYGlmYCBhbHJlYWR5XG4gICAgICAvLyByZXR1cm5lZCksIHNvIHRoZSByYXcgYXJyYXkvb2JqZWN0IGZlbGwgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGVcbiAgICAgIC8vIHBsYWluIGByZXR1cm4gcmVzb2x2ZWRBcmdgIGF0IHRoZSBib3R0b20gLSByZWx5aW5nIG9uIHRoZSBjYWxsZXInc1xuICAgICAgLy8gYEFycmF5LnByb3RvdHlwZS5qb2luKClgIChGdW5jdGlvbkNhbGwucmVzb2x2ZSgpIGV0IGFsLikgdG9cbiAgICAgIC8vIHN0cmluZ2lmeSBpdCwgd2hpY2ggZHJvcHMgYW4gYXJyYXkncyBicmFja2V0cy9zcGFjaW5nIChyZW5kZXJzXG4gICAgICAvLyBgdHJ1ZSxmYWxzZWAgaW5zdGVhZCBvZiBgW3RydWUsIGZhbHNlXWApIGFuZCwgZm9yIGFuIG9iamVjdCwgd291bGRcbiAgICAgIC8vIHByb2R1Y2UgdGhlIHVzZWxlc3MgbGl0ZXJhbCBzdHJpbmcgYFtvYmplY3QgT2JqZWN0XWAuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNvbHZlZEFyZykpIHtcbiAgICAgICAgcmV0dXJuIGBbJHtyZXNvbHZlZEFyZ1xuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCBpdGVtKSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpfV1gO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiByZXNvbHZlZEFyZyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICByZXR1cm4gYHske09iamVjdC5rZXlzKHJlc29sdmVkQXJnKVxuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAoa2V5KSA9PlxuICAgICAgICAgICAgICBgJHtxdW90ZWRTdHJpbmdLZXkoa2V5KX0gPSAke3RoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCByZXNvbHZlZEFyZ1trZXldKX1gLFxuICAgICAgICAgIClcbiAgICAgICAgICAuam9pbihcIiwgXCIpfX1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmVkQXJnO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNvbHZlZEFyZykpIHtcbiAgICAgIHJldHVybiBgWyR7cmVzb2x2ZWRBcmdcbiAgICAgICAgLm1hcCgoXywgaW5kZXgpID0+IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCBhcmdbaW5kZXhdKSlcbiAgICAgICAgLmpvaW4oXCIsIFwiKX1dYDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlc29sdmVkQXJnID09PSBcIm9iamVjdFwiICYmIHJlc29sdmVkQXJnICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYHske09iamVjdC5rZXlzKHJlc29sdmVkQXJnKVxuICAgICAgICAubWFwKChrZXkpID0+IGBcIiR7a2V5fVwiID0gJHt0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgYXJnW2tleV0pfWApXG4gICAgICAgIC5qb2luKFwiLCBcIil9fWA7XG4gICAgfVxuXG4gICAgLy8gQSBsaXRlcmFsIGBudWxsYC9gdW5kZWZpbmVkYCBhcmd1bWVudCAoZS5nLiBhIGZpeGVkLWFyaXR5IHByb3ZpZGVyXG4gICAgLy8gZnVuY3Rpb24gcG9zaXRpb25hbCBzbG90IHRoZSBjYWxsZXIgaW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5KSBtdXN0IGJlXG4gICAgLy8gcmVuZGVyZWQgYXMgdGhlIFRlcnJhZm9ybSBgbnVsbGAga2V5d29yZC4gV2l0aG91dCB0aGlzLCBgcmVzb2x2ZWRBcmdgXG4gICAgLy8gc3RheXMgYG51bGxgL2B1bmRlZmluZWRgIGFuZCBBcnJheS5wcm90b3R5cGUuam9pbigpICh1c2VkIGJ5IGNhbGxlcnNcbiAgICAvLyBsaWtlIEZ1bmN0aW9uQ2FsbC5yZXNvbHZlKCkpIHNpbGVudGx5IGNvbGxhcHNlcyBpdCB0byBhbiBlbXB0eSBzdHJpbmcsXG4gICAgLy8gc2hpZnRpbmcvZHJvcHBpbmcgdGhlIGFyZ3VtZW50IGluc3RlYWQgb2YgcmVuZGVyaW5nIGBudWxsYC5cbiAgICBpZiAocmVzb2x2ZWRBcmcgPT09IG51bGwgfHwgcmVzb2x2ZWRBcmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZEFyZztcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNvbHZlQXJnKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCwgYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc29sdmVkQXJnID0gY29udGV4dC5yZXNvbHZlKGFyZyk7XG5cbiAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3Qgc3RyID0gdGhpcy5yZXNvbHZlU3RyaW5nKGFyZywgcmVzb2x2ZWRBcmcpO1xuICAgICAgLy8gV2hlbiBUb2tlbi5hc1N0cmluZygpIGlzIHVzZWQgb24gYW4gb2JqZWN0LCBzdHIgd2lsbCBiZSB0aGUgb2JqZWN0IGFuZCBuZWVkcyB0byBiZSByZXNvbHZlZCBkaWZmZXJlbnRseVxuICAgICAgLy8gVGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIGluIE1hcFRlcnJhZm9ybUl0ZXJhdG9yI19nZXRGb3JFYWNoRXhwcmVzc2lvbiBhbmQgY2FuIGNhdXNlIGlzc3VlcyBsaWtlICMzNTQwXG4gICAgICBpZiAodHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRXhwcmVzc2lvblBhcnQoY29udGV4dCwgc3RyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUV4cHJlc3Npb25QYXJ0KGNvbnRleHQsIGFyZyk7XG4gIH1cblxuICAvKipcbiAgICogRXNjYXBlIHN0cmluZyByZW1vdmVzIGNoYXJhY3RlcnMgZnJvbSB0aGUgc3RyaW5nIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIFRlcnJhZm9ybSBvciBKU09OXG4gICAqIEl0IG11c3Qgb25seSBiZSB1c2VkIG9uIG5vbi10b2tlbiB2YWx1ZXNcbiAgICovXG4gIHByb3RlY3RlZCBlc2NhcGVTdHJpbmcoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyXG4gICAgICAucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIikgLy8gZXNjYXBlIG5ld2xpbmVzXG4gICAgICAucmVwbGFjZSgvXFwkey9nLCBcIiQkJHtcIik7IC8vIGVzY2FwZSAkeyB0byAkJHtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVN0cmluZyhzdHI6IHN0cmluZywgcmVzb2x2ZWRBcmc6IGFueSkge1xuICAgIGNvbnN0IHRva2VuTGlzdCA9IFRva2VuaXphdGlvbi5yZXZlcnNlU3RyaW5nKHN0cik7XG4gICAgY29uc3QgbnVtYmVyT2ZUb2tlbnMgPSB0b2tlbkxpc3QudG9rZW5zLmxlbmd0aCArIHRva2VuTGlzdC5pbnRyaW5zaWMubGVuZ3RoO1xuXG4gICAgLy8gU3RyaW5nIGxpdGVyYWxcbiAgICBpZiAobnVtYmVyT2ZUb2tlbnMgPT09IDApIHtcbiAgICAgIHJldHVybiByZXNvbHZlZEFyZyAhPT0gYFwiYCAmJlxuICAgICAgICByZXNvbHZlZEFyZy5zdGFydHNXaXRoKCdcIicpICYmXG4gICAgICAgIHJlc29sdmVkQXJnLmVuZHNXaXRoKCdcIicpXG4gICAgICAgID8gdGhpcy5lc2NhcGVTdHJpbmcocmVzb2x2ZWRBcmcpXG4gICAgICAgIDogYFwiJHt0aGlzLmVzY2FwZVN0cmluZyhyZXNvbHZlZEFyZyl9XCJgO1xuICAgIH1cblxuICAgIC8vIE9ubHkgYSB0b2tlbiByZWZlcmVuY2VcbiAgICBpZiAoXG4gICAgICB0b2tlbkxpc3QubGl0ZXJhbHMubGVuZ3RoID09PSAwICYmXG4gICAgICB0b2tlbkxpc3QuZXNjYXBlcy5sZW5ndGggPT09IDAgJiZcbiAgICAgIG51bWJlck9mVG9rZW5zID09PSAxXG4gICAgKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZWRBcmc7XG4gICAgfVxuXG4gICAgLy8gU3RyaW5nIGxpdGVyYWwgKyB0b2tlbiByZWZlcmVuY2UgY29tYmluYXRpb25cbiAgICBjb25zdCBqb2luUmVzdWx0ID0gdG9rZW5MaXN0LmpvaW4oe1xuICAgICAgam9pbjogKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnRUb2tlbnMgPSBUb2tlbml6YXRpb24ucmV2ZXJzZShsZWZ0KTtcbiAgICAgICAgY29uc3QgbGVmdFRva2VuTGlzdCA9IFRva2VuaXphdGlvbi5yZXZlcnNlU3RyaW5nKGxlZnQpO1xuICAgICAgICBjb25zdCByaWdodFRva2VucyA9IFRva2VuaXphdGlvbi5yZXZlcnNlKHJpZ2h0KTtcblxuICAgICAgICBjb25zdCBsZWZ0VG9rZW5Db3VudCA9XG4gICAgICAgICAgbGVmdFRva2VuTGlzdC5pbnRyaW5zaWMubGVuZ3RoICsgbGVmdFRva2VuTGlzdC50b2tlbnMubGVuZ3RoO1xuXG4gICAgICAgIC8vIGlmIGxlZnQgaXMgbWl4ZWQsIG5lZWRzIHRvIGJlIGxlZnQgYWxvbmUgKGJlY2F1c2UgaXQncyBhIHJlc3VsdCBvZiBhIHByZXZpb3VzIGpvaW4gaXRlcmF0aW9uKVxuICAgICAgICBsZXQgbGVmdFZhbHVlID0gbGVmdDtcblxuICAgICAgICAvLyBpZiBsZWZ0IGlzIGEgc3RyaW5nIGxpdGVyYWwsIHRoZW4gd2UgbmVlZCB0byBlc2NhcGUgaXRcbiAgICAgICAgaWYgKGxlZnRUb2tlbkxpc3QubGl0ZXJhbHMubGVuZ3RoID09PSAxICYmIGxlZnRUb2tlbkNvdW50ID09PSAwKSB7XG4gICAgICAgICAgbGVmdFZhbHVlID0gdGhpcy5lc2NhcGVTdHJpbmcobGVmdCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBsZWZ0IGlzIG9ubHkgYSB0b2tlbiwgbmVlZHMgdG8gYmUgd3JhcHBlZCBhcyB0ZXJyYWZvcm0gZXhwcmVzc2lvblxuICAgICAgICBpZiAobGVmdFRva2VuTGlzdC5saXRlcmFscy5sZW5ndGggPT09IDAgJiYgbGVmdFRva2VuQ291bnQgPT09IDEpIHtcbiAgICAgICAgICBsZWZ0VmFsdWUgPSBgXFwkeyR7bGVmdFRva2Vuc1swXX19YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPVxuICAgICAgICAgIHJpZ2h0VG9rZW5zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgPyB0aGlzLmVzY2FwZVN0cmluZyhyaWdodClcbiAgICAgICAgICAgIDogYFxcJHske3JpZ2h0VG9rZW5zWzBdfX1gO1xuXG4gICAgICAgIHJldHVybiBgJHtsZWZ0VmFsdWV9JHtyaWdodFZhbHVlfWA7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGpvaW5SZXN1bHQgIT09IGBcImAgJiZcbiAgICAgIGpvaW5SZXN1bHQuc3RhcnRzV2l0aCgnXCInKSAmJlxuICAgICAgam9pblJlc3VsdC5lbmRzV2l0aCgnXCInKVxuICAgICAgPyBqb2luUmVzdWx0XG4gICAgICA6IGBcIiR7am9pblJlc3VsdH1cImA7XG4gIH1cbn1cblxuLy8gQSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGFuIGlucHV0IHZhbHVlIHRvIGJlIGVzY2FwZWRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBSYXdTdHJpbmcgZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0cjogc3RyaW5nKSB7XG4gICAgc3VwZXIoc3RyKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIGNvbnN0IHF0cyA9IGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPyBgXCJgIDogYGA7XG4gICAgcmV0dXJuIGAke3F0c30ke3RoaXMuZXNjYXBlU3RyaW5nKHRoaXMuc3RyKS5yZXBsYWNlKC9cXFwiL2csICdcXFxcXCInKX0ke3F0c31gOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVzZWxlc3MtZXNjYXBlXG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gcmF3U3RyaW5nKHN0cjogc3RyaW5nKTogSVJlc29sdmFibGUge1xuICByZXR1cm4gbmV3IFJhd1N0cmluZyhzdHIpO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgUmVmZXJlbmNlIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgLyoqXG4gICAqIEEgc2luZ2xlIHJlZmVyZW5jZSBjb3VsZCBiZSB1c2VkIGluIG11bHRpcGxlIHN0YWNrcyxcbiAgICogZS5nLiBpZiB3ZSBleHBvc2UgdGhlIHJlZiBkaXJlY3RseSBvciBhcyB0b2tlbiBvbiB0aGUgc3RhY2suXG4gICAqIFdlIG5lZWQgdG8gc3RvcmUgdGhlIGlkZW50aWZpZXIgZm9yIGVhY2ggc3RhY2ssXG4gICAqIHNvIHRoYXQgdGhlIHJlc29sdmVkIGlkZW50aWZpZXIgc3RyaW5nIG1hdGNoZXMgdGhlIHN0YWNrIGl0J3MgcmVzb2x2ZWQgaW4uXG4gICAqL1xuICBwcml2YXRlIGNyb3NzU3RhY2tJZGVudGlmaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaWRlbnRpZmllcjogc3RyaW5nLFxuICAgIHByaXZhdGUgb3JpZ2luU3RhY2s/OiBUZXJyYWZvcm1TdGFjayxcbiAgKSB7XG4gICAgc3VwZXIoaWRlbnRpZmllcik7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIC8vIFdlIGNoZWNrIGZvciBjcm9zcyBzdGFjayByZWZlcmVuY2VzIG9uIHByZXBhcmF0aW9uLCBzZXR0aW5nIGEgbmV3IGlkZW50aWZpZXJcbiAgICBjb25zdCByZXNvbHV0aW9uU3RhY2sgPSBUZXJyYWZvcm1TdGFjay5vZihjb250ZXh0LnNjb3BlKTtcbiAgICBjb25zdCBzdGFja05hbWUgPSByZXNvbHV0aW9uU3RhY2sudG9TdHJpbmcoKTtcbiAgICBjb25zdCBzdXBwcmVzc0JyYWNlcyA9IGNvbnRleHQuc3VwcHJlc3NCcmFjZXM7XG4gICAgY29udGV4dC5zdXBwcmVzc0JyYWNlcyA9IHRydWU7XG5cbiAgICBpZiAoY29udGV4dC5wcmVwYXJpbmcpIHtcbiAgICAgIC8vIENyb3NzIHN0YWNrIHJlZmVyZW5jZVxuICAgICAgaWYgKHRoaXMub3JpZ2luU3RhY2sgJiYgdGhpcy5vcmlnaW5TdGFjayAhPT0gcmVzb2x1dGlvblN0YWNrKSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IEFwcC5vZih0aGlzLm9yaWdpblN0YWNrKTtcbiAgICAgICAgY29uc3QgY3NyID0gYXBwLmNyb3NzU3RhY2tSZWZlcmVuY2UoXG4gICAgICAgICAgdGhpcy5vcmlnaW5TdGFjayxcbiAgICAgICAgICByZXNvbHV0aW9uU3RhY2ssXG4gICAgICAgICAgdGhpcy5pZGVudGlmaWVyLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY3Jvc3NTdGFja0lkZW50aWZpZXJbc3RhY2tOYW1lXSA9IGNzcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGlzIGlzIGEgY3Jvc3Mgc3RhY2sgcmVmZXJlbmNlIHdlIHdpbGwgcmVzb2x2ZSB0byBhIHJlZmVyZW5jZSB3aXRoaW4gdGhpcyBzdGFjay5cbiAgICBpZiAodGhpcy5jcm9zc1N0YWNrSWRlbnRpZmllcltzdGFja05hbWVdKSB7XG4gICAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXNcbiAgICAgICAgPyB0aGlzLmNyb3NzU3RhY2tJZGVudGlmaWVyW3N0YWNrTmFtZV1cbiAgICAgICAgOiBgXFwkeyR7dGhpcy5jcm9zc1N0YWNrSWRlbnRpZmllcltzdGFja05hbWVdfX1gO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwcmVzc0JyYWNlcyA/IHRoaXMuaWRlbnRpZmllciA6IGBcXCR7JHt0aGlzLmlkZW50aWZpZXJ9fWA7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiByZWYoaWRlbnRpZmllcjogc3RyaW5nLCBzdGFjaz86IFRlcnJhZm9ybVN0YWNrKTogSVJlc29sdmFibGUge1xuICByZXR1cm4gbmV3IFJlZmVyZW5jZShpZGVudGlmaWVyLCBzdGFjayk7XG59XG5cbi8qKlxuICogbWFya3MgdGhlIGFyZ3VtZW50IGFzIGJlaW5nIHVzZWQgaW4gYSB0ZXJyYWZvcm0gZXhwcmVzc2lvblxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2lkZVRmRXhwcmVzc2lvbihhcmc6IGFueSkge1xuICByZXR1cm4gYXJnO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgUHJvcGVydHlBY2Nlc3MgZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhcmdldDogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIGFyZ3M6IEV4cHJlc3Npb25bXSxcbiAgKSB7XG4gICAgc3VwZXIoeyB0YXJnZXQsIGFyZ3MgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWRBcmdzID0gdGhpcy5hcmdzXG4gICAgICAubWFwKChhcmcpID0+IHtcbiAgICAgICAgaWYgKGFyZyA9PT0gYCpgKSB7XG4gICAgICAgICAgcmV0dXJuIFwiWypdXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIGFyZyk7XG4gICAgICAgIGNvbnN0IGlzUGxhaW5TdHJpbmcgPVxuICAgICAgICAgIHR5cGVvZiBhcmcgPT09IFwic3RyaW5nXCIgJiYgVEVSUkFGT1JNX0lERU5USUZJRVJfUkVHRVgudGVzdChhcmcpO1xuICAgICAgICBjb25zdCBpc1BsYWluTnVtYmVyID1cbiAgICAgICAgICB0eXBlb2YgYXJnID09PSBcIm51bWJlclwiICYmICFUb2tlbi5pc1VucmVzb2x2ZWQoYXJnKTtcblxuICAgICAgICBpZiAoaXNQbGFpblN0cmluZyB8fCBpc1BsYWluTnVtYmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGAuJHthcmd9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgWyR7YX1dYDtcbiAgICAgIH0pIC8vIHByb3BlcnR5IGFjY2Vzc1xuICAgICAgLmpvaW4oXCJcIik7XG5cbiAgICBjb25zdCB0YXJnZXRFeHByID1cbiAgICAgIENvbnN0cnVjdC5pc0NvbnN0cnVjdCh0aGlzLnRhcmdldCkgJiYgXCJmcW5cIiBpbiB0aGlzLnRhcmdldFxuICAgICAgICA/IHRoaXMudGFyZ2V0LmZxblxuICAgICAgICA6IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCB0aGlzLnRhcmdldCk7XG5cbiAgICBjb25zdCBleHByID0gYCR7dGFyZ2V0RXhwcn0ke3NlcmlhbGl6ZWRBcmdzfWA7XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eUFjY2Vzcyh0YXJnZXQ6IEV4cHJlc3Npb24sIGFyZ3M6IEV4cHJlc3Npb25bXSkge1xuICByZXR1cm4gbmV3IFByb3BlcnR5QWNjZXNzKHRhcmdldCwgYXJncykgYXMgSVJlc29sdmFibGU7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBDb25kaXRpb25hbEV4cHJlc3Npb24gZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmRpdGlvbjogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIHRydWVWYWx1ZTogRXhwcmVzc2lvbixcbiAgICBwcml2YXRlIGZhbHNlVmFsdWU6IEV4cHJlc3Npb24sXG4gICkge1xuICAgIHN1cGVyKHsgY29uZGl0aW9uLCB0cnVlVmFsdWUsIGZhbHNlVmFsdWUgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1cHByZXNzQnJhY2VzID0gY29udGV4dC5zdXBwcmVzc0JyYWNlcztcbiAgICBjb250ZXh0LnN1cHByZXNzQnJhY2VzID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCB0aGlzLmNvbmRpdGlvbik7XG4gICAgY29uc3QgdHJ1ZVZhbHVlID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMudHJ1ZVZhbHVlKTtcbiAgICBjb25zdCBmYWxzZVZhbHVlID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMuZmFsc2VWYWx1ZSk7XG5cbiAgICBjb25zdCBleHByID0gYCR7Y29uZGl0aW9ufSA/ICR7dHJ1ZVZhbHVlfSA6ICR7ZmFsc2VWYWx1ZX1gO1xuXG4gICAgcmV0dXJuIHN1cHByZXNzQnJhY2VzID8gZXhwciA6IGBcXCR7JHtleHByfX1gO1xuICB9XG59XG5cbi8qKlxuICogY3JlYXRlcyBhbiBleHByZXNzaW9uIGxpa2UgYHRydWUgPyAxIDogMGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmRpdGlvbmFsKFxuICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gIHRydWVWYWx1ZTogRXhwcmVzc2lvbixcbiAgZmFsc2VWYWx1ZTogRXhwcmVzc2lvbixcbikge1xuICByZXR1cm4gbmV3IENvbmRpdGlvbmFsRXhwcmVzc2lvbihjb25kaXRpb24sIHRydWVWYWx1ZSwgZmFsc2VWYWx1ZSk7XG59XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmhhc2hpY29ycC5jb20vdGVycmFmb3JtL2xhbmd1YWdlL2V4cHJlc3Npb25zL29wZXJhdG9yc1xuZXhwb3J0IHR5cGUgT3BlcmF0b3IgPVxuICB8IFwiIVwiXG4gIHwgXCItXCJcbiAgfCBcIipcIlxuICB8IFwiL1wiXG4gIHwgXCIlXCJcbiAgfCBcIitcIlxuICB8IFwiPlwiXG4gIHwgXCI+PVwiXG4gIHwgXCI8XCJcbiAgfCBcIjw9XCJcbiAgfCBcIj09XCJcbiAgfCBcIiE9XCJcbiAgfCBcIiYmXCJcbiAgfCBcInx8XCI7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgT3BlcmF0b3IgRXhwcmVzc2lvbnNcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgT3BlcmF0b3JFeHByZXNzaW9uIGV4dGVuZHMgVEZFeHByZXNzaW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvcGVyYXRvcjogT3BlcmF0b3IsXG4gICAgcHJpdmF0ZSBsZWZ0OiBFeHByZXNzaW9uLFxuICAgIHByaXZhdGUgcmlnaHQ/OiBFeHByZXNzaW9uLCAvLyBvcHRpb25hbCBmb3IgISBhbmQgLSBvcGVyYXRvclxuICApIHtcbiAgICBzdXBlcih7IG9wZXJhdG9yLCBsZWZ0VmFsdWU6IGxlZnQsIHJpZ2h0VmFsdWU6IHJpZ2h0IH0pO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUoY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogc3RyaW5nIHtcbiAgICBjb25zdCBzdXBwcmVzc0JyYWNlcyA9IGNvbnRleHQuc3VwcHJlc3NCcmFjZXM7XG4gICAgY29udGV4dC5zdXBwcmVzc0JyYWNlcyA9IHRydWU7XG5cbiAgICBjb25zdCBsZWZ0ID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMubGVmdCk7XG4gICAgY29uc3QgcmlnaHQgPVxuICAgICAgdGhpcy5yaWdodCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMucmlnaHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgbGV0IGV4cHIgPSBcIlwiO1xuICAgIHN3aXRjaCAodGhpcy5vcGVyYXRvcikge1xuICAgICAgY2FzZSBcIiFcIjoge1xuICAgICAgICBleHByID0gYCEke2xlZnR9YDsgLy8gbm8gYnJhY2VzIG5lZWRlZCBhcyAhIGhhcyBoaWdoZXN0IHByZWNlZGVuY2VcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFwiLVwiOiB7XG4gICAgICAgIGlmIChyaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gc3VidHJhY3Rpb25cbiAgICAgICAgICBleHByID0gYCgke2xlZnR9IC0gJHtyaWdodH0pYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBuZWdhdGlvblxuICAgICAgICAgIGV4cHIgPSBgLSR7bGVmdH1gOyAvLyBubyBicmFjZXMgbmVlZGVkIGFzIC0gaGFzIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBleHByID0gYCgke2xlZnR9ICR7dGhpcy5vcGVyYXRvcn0gJHtyaWdodH0pYDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIEZ1bmN0aW9uQ2FsbCBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgYXJnczogRXhwcmVzc2lvbltdLFxuICApIHtcbiAgICBzdXBlcih7IG5hbWUsIGFyZ3MgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIC8vIFJlY29yZGluZyBoZXJlLCBhdCByZXNvbHZlIHRpbWUsIGlzIGRlbGliZXJhdGU6IGEgYEZuLiooKWAvXG4gICAgLy8gYFRlcnJhZm9ybVByb3ZpZGVyRnVuY3Rpb24uaW52b2tlKClgIGNhbGwgb25seSBwcm9kdWNlcyBhIHRva2VuOiB0aGlzXG4gICAgLy8gaXMgdGhlIHBvaW50IHdoZXJlIHRoYXQgdG9rZW4gYWN0dWFsbHkgbGFuZHMgaW4gYSByZW5kZXJlZCBzdGFjaywgc29cbiAgICAvLyB1c2FnZSBpcyBhdHRyaWJ1dGVkIHRvIHRoZSBTVEFDSyB3aG9zZSBzeW50aGVzaXMgaXMgZG9pbmcgdGhlXG4gICAgLy8gcmVuZGVyaW5nIC0gc2VlIGBUZXJyYWZvcm1TdGFjay5fdXNlZEZ1bmN0aW9uc2AgZm9yIHdoeSB1c2FnZSBpc1xuICAgIC8vIHN0YWNrLW93bmVkIHJhdGhlciB0aGFuIEFwcC1vd25lZC5cbiAgICAvL1xuICAgIC8vIGBjb250ZXh0LnNjb3BlYCBJUyB0aGUgcmVzb2x2aW5nIFRlcnJhZm9ybVN0YWNrIGZvciBldmVyeVxuICAgIC8vIHN5bnRoLWRyaXZlbiByZXNvbHZlIChBcHAuc3ludGgsIFRlc3Rpbmcuc3ludGgvc3ludGhIY2wsXG4gICAgLy8gU3RhY2tTeW50aGVzaXplci5zeW50aGVzaXplIGFsbCByZXNvbHZlIGVsZW1lbnRzIHdpdGggdGhlaXIgb3duaW5nXG4gICAgLy8gc3RhY2sgYXMgc2NvcGUpLCBzbyBgVGVycmFmb3JtU3RhY2suaXNTdGFja2AgaXMgY2hlY2tlZCBmaXJzdCBhcyB0aGVcbiAgICAvLyBjb21tb24gY2FzZS4gYFRlcnJhZm9ybVN0YWNrLm9mKClgIGlzIGEgZmFsbGJhY2sgZm9yIGEgc2NvcGUgdGhhdCBpc1xuICAgIC8vIHNvbWUgb3RoZXIgY29uc3RydWN0IHdpdGhpbiBhIHN0YWNrLiBJZiBuZWl0aGVyIGZpbmRzIGEgc3RhY2sgKGFcbiAgICAvLyB1c2VyLWRyaXZlbiBgVG9rZW5zLnJlc29sdmUoKWAgY2FsbCBhZ2FpbnN0IGEgYmFyZSBzY29wZSB3aXRoIG5vXG4gICAgLy8gc3RhY2sgaW4gaXRzIGFuY2VzdHJ5KSwgdGhlcmUgaXMgbm93aGVyZSB0byByZWNvcmQgaW50byAtIGFuZCBub3RoaW5nXG4gICAgLy8gd291bGQgZXZlciByZWFkIGl0IGJhY2sgdG8gdmFsaWRhdGUgYW55d2F5IC0gc28gcmVjb3JkaW5nIGlzIHF1aWV0bHlcbiAgICAvLyBza2lwcGVkIHJhdGhlciB0aGFuIHRocm93aW5nLlxuICAgIGxldCBzdGFjazogVGVycmFmb3JtU3RhY2sgfCB1bmRlZmluZWQ7XG4gICAgaWYgKFRlcnJhZm9ybVN0YWNrLmlzU3RhY2soY29udGV4dC5zY29wZSkpIHtcbiAgICAgIHN0YWNrID0gY29udGV4dC5zY29wZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RhY2sgPSBUZXJyYWZvcm1TdGFjay5vZihjb250ZXh0LnNjb3BlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBzdGFjayA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhY2spIHtcbiAgICAgIGlmICh0aGlzLm5hbWUuc3RhcnRzV2l0aChcInByb3ZpZGVyOjpcIikpIHtcbiAgICAgICAgc3RhY2suX3JlY29yZFByb3ZpZGVyRnVuY3Rpb25Vc2FnZSh0aGlzLm5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhY2suX3JlY29yZEZ1bmN0aW9uVXNhZ2UodGhpcy5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdXBwcmVzc0JyYWNlcyA9IGNvbnRleHQuc3VwcHJlc3NCcmFjZXM7XG4gICAgY29uc3Qgb3JpZ2luYWxJZ25vcmVFc2NhcGVzID0gY29udGV4dC5pZ25vcmVFc2NhcGVzO1xuICAgIGNvbnN0IG9yaWdpbmFsV2FybkVzY2FwZXMgPSBjb250ZXh0Lndhcm5Fc2NhcGVzO1xuXG4gICAgY29udGV4dC5zdXBwcmVzc0JyYWNlcyA9IHRydWU7XG4gICAgY29udGV4dC5pZ25vcmVFc2NhcGVzID0gdHJ1ZTtcbiAgICBjb250ZXh0Lndhcm5Fc2NhcGVzID0gdHJ1ZTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWRBcmdzID0gdGhpcy5hcmdzXG4gICAgICAubWFwKChhcmcpID0+IHRoaXMucmVzb2x2ZUFyZyhjb250ZXh0LCBhcmcpKVxuICAgICAgLmpvaW4oXCIsIFwiKTtcblxuICAgIGNvbnN0IGV4cHIgPSBgJHt0aGlzLm5hbWV9KCR7c2VyaWFsaXplZEFyZ3N9KWA7XG5cbiAgICBjb250ZXh0Lmlnbm9yZUVzY2FwZXMgPSBvcmlnaW5hbElnbm9yZUVzY2FwZXM7XG4gICAgY29udGV4dC53YXJuRXNjYXBlcyA9IG9yaWdpbmFsV2FybkVzY2FwZXM7XG5cbiAgICByZXR1cm4gc3VwcHJlc3NCcmFjZXMgPyBleHByIDogYFxcJHske2V4cHJ9fWA7XG4gIH1cbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gY2FsbChuYW1lOiBzdHJpbmcsIGFyZ3M6IEV4cHJlc3Npb25bXSkge1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2FsbChuYW1lLCBhcmdzKSBhcyBJUmVzb2x2YWJsZTtcbn1cblxuZXhwb3J0IGNvbnN0IEZPUl9FWFBSRVNTSU9OX0tFWSA9IHJlZihcImtleVwiKTtcbmV4cG9ydCBjb25zdCBGT1JfRVhQUkVTU0lPTl9WQUxVRSA9IHJlZihcInZhbFwiKTtcblxuLyoqXG4gKiBodHRwczovL2RldmVsb3Blci5oYXNoaWNvcnAuY29tL3RlcnJhZm9ybS9sYW5ndWFnZS9leHByZXNzaW9ucy9mb3JcbiAqL1xuY2xhc3MgRm9yRXhwcmVzc2lvbiBleHRlbmRzIFRGRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5wdXQ6IEV4cHJlc3Npb24sXG4gICAgcHJpdmF0ZSB2YWx1ZUV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcHJpdmF0ZSBrZXlFeHByZXNzaW9uPzogRXhwcmVzc2lvbixcbiAgKSB7XG4gICAgc3VwZXIoeyBpbnB1dCwgdmFsdWVFeHByZXNzaW9uLCBrZXlFeHByZXNzaW9uIH0pO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUoY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogc3RyaW5nIHtcbiAgICBjb25zdCBzdXBwcmVzc0JyYWNlcyA9IGNvbnRleHQuc3VwcHJlc3NCcmFjZXM7XG4gICAgY29udGV4dC5zdXBwcmVzc0JyYWNlcyA9IHRydWU7XG4gICAgY29udGV4dC5pdGVyYXRvckNvbnRleHQgPSBcIkZPUl9FWFBSRVNTSU9OXCI7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIEZPUl9FWFBSRVNTSU9OX0tFWSk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlc29sdmVBcmcoY29udGV4dCwgRk9SX0VYUFJFU1NJT05fVkFMVUUpO1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5yZXNvbHZlQXJnKGNvbnRleHQsIHRoaXMuaW5wdXQpO1xuICAgIGNvbnN0IHZhbHVlRXhwciA9IHRoaXMucmVzb2x2ZUV4cHJlc3Npb25QYXJ0KGNvbnRleHQsIHRoaXMudmFsdWVFeHByZXNzaW9uKTtcblxuICAgIGxldCBleHByOiBzdHJpbmc7XG4gICAgaWYgKHRoaXMua2V5RXhwcmVzc2lvbikge1xuICAgICAgY29uc3Qga2V5RXhwciA9IHRoaXMucmVzb2x2ZUV4cHJlc3Npb25QYXJ0KGNvbnRleHQsIHRoaXMua2V5RXhwcmVzc2lvbik7XG5cbiAgICAgIGV4cHIgPSBgeyBmb3IgJHtrZXl9LCAke3ZhbHVlfSBpbiAke2lucHV0fTogJHtrZXlFeHByfSA9PiAke3ZhbHVlRXhwcn0gfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cHIgPSBgWyBmb3IgJHtrZXl9LCAke3ZhbHVlfSBpbiAke2lucHV0fTogJHt2YWx1ZUV4cHJ9XWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cHByZXNzQnJhY2VzID8gZXhwciA6IGBcXCR7JHtleHByfX1gO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZvciBleHByZXNzaW9uLCB1c2VkIGZvciBhZHZhbmNlZCBpbnRlcm5hbCB1c2UgY2FzZXMgKGUuZy4gaW4gdGhlIEBjZGt0bi9hd3MtYWRhcHRlcilcbiAqIEl0IGlzIGN1cnJlbnRseSBub3QgcG9zc2libGUgdG8gdXNlIHRoaXMgdmlhIEpTSUkgaW4gb3RoZXIgbGFuZ3VhZ2VzLiBVc3VhbGx5IHlvdSBtaWdodCB3YW50IHRvXG4gKiB1c2UgVGVycmFmb3JtSXRlcmF0b3IgaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0gaW5wdXQgdGhlIGlucHV0IGZvciB0aGUgZXhwcmVzc2lvbiBlLmcuIGEgbGlzdCBvciBhbiBvYmplY3RcbiAqIEBwYXJhbSB2YWx1ZUV4cHJlc3Npb24gd2lsbCBleHByZXNzIHRoZSB2YWx1ZSBlLmcuIFsgZm9yIGkgaW4gJmx0O2lucHV0Jmd0OyA6ICZsdDt2YWx1ZUV4cHJlc3Npb24mZ3Q7IF1cbiAqIEBwYXJhbSBrZXlFeHByZXNzaW9uIGlmIHNldCB3aWxsIHJldHVybiBhbiBvYmplY3QgZS5nLiB7IGZvciBrLHYgaW4gJmx0O2lucHV0Jmd0OyA6ICZsdDtrZXlFeHByZXNzaW9uJmd0OyA9PiAmbHQ7dmFsdWVFeHByZXNzaW9uJmd0O31cbiAqIEByZXR1cm5zIGEgZm9yIGV4cHJlc3Npb25cbiAqXG4gKiBUaGUgdmFyaWFibGVzIGZvciBrZXkgKGZvciBtYXBzKSAvIGluZGV4IChmb3IgbGlzdHMpIGFuZCB2YWx1ZSB0aGF0IGFyZSB2YWxpZCBpbiB0aGUga2V5LSBhbmQgdmFsdWVFeHByZXNzaW9uXG4gKiBjYW4gYmUgcmVmZXJlbmNlZCBieSB1c2luZyB0aGVzZSBjb25zdGFudHM6IEZPUl9FWFBSRVNTSU9OX0tFWSBhbmQgRk9SX0VYUFJFU1NJT05fVkFMVUUuXG4gKlxuICogQ3VycmVudGx5IG5lc3RpbmcgZm9yIGV4cHJlc3Npb25zIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIHRoaXMgc2ltcGxpZmljYXRpb24uXG4gKlxuICogQ3VycmVudGx5IGRvZXMgbm90IHN1cHBvcnQgZmlsdGVyaW5nIGVsZW1lbnRzIChpZiBjbGF1c2UpIG9yIGdyb3VwaW5nIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvckV4cHJlc3Npb24oXG4gIGlucHV0OiBFeHByZXNzaW9uLFxuICB2YWx1ZUV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gIGtleUV4cHJlc3Npb24/OiBFeHByZXNzaW9uLFxuKSB7XG4gIHJldHVybiBuZXcgRm9yRXhwcmVzc2lvbihcbiAgICBpbnB1dCxcbiAgICB2YWx1ZUV4cHJlc3Npb24sXG4gICAga2V5RXhwcmVzc2lvbixcbiAgKSBhcyBJUmVzb2x2YWJsZTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIERlcGVuZGFibGUgZXh0ZW5kcyBURkV4cHJlc3Npb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlcGVuZGFibGU6IElUZXJyYWZvcm1EZXBlbmRhYmxlKSB7XG4gICAgc3VwZXIoZGVwZW5kYWJsZSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcge1xuICAgIGNvbnRleHQuc3VwcHJlc3NCcmFjZXMgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kYWJsZS5mcW47XG4gIH1cbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgZnVuY3Rpb24gZGVwZW5kYWJsZShkZXBlbmRhYmxlOiBJVGVycmFmb3JtRGVwZW5kYWJsZSk6IHN0cmluZyB7XG4gIHJldHVybiBUb2tlbi5hc1N0cmluZyhuZXcgRGVwZW5kYWJsZShkZXBlbmRhYmxlKSk7XG59XG5cbmV4cG9ydCB0eXBlIEV4cHJlc3Npb24gPVxuICB8IFJlZmVyZW5jZVxuICB8IEZ1bmN0aW9uQ2FsbFxuICB8IFByb3BlcnR5QWNjZXNzXG4gIHwgQ29uZGl0aW9uYWxFeHByZXNzaW9uXG4gIHwgT3BlcmF0b3JFeHByZXNzaW9uXG4gIHwgRGVwZW5kYWJsZVxuICB8IEZvckV4cHJlc3Npb25cbiAgfCBzdHJpbmdcbiAgfCBzdHJpbmdbXVxuICB8IG51bWJlclxuICB8IGJvb2xlYW5cbiAgfCBJUmVzb2x2YWJsZVxuICB8IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgfCBudWxsXG4gIHwgYW55IC8vIHVsdGltYXRlbHkgYW55IHZhbGlkIFRlcnJhZm9ybSB0eXBlIGNhbiBiZSB1c2VkIGFzIGFuIGV4cHJlc3Npb25cbiAgfCBhbnlbXTtcbiJdfQ==
|
package/lib/tokens/lazy.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a, _b;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.LazyBase = exports.Lazy = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -15,6 +14,7 @@ const token_1 = require("./token");
|
|
|
15
14
|
* will only be calculated later, during synthesis.
|
|
16
15
|
*/
|
|
17
16
|
class Lazy {
|
|
17
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.Lazy", version: "0.25.0-pre.21" };
|
|
18
18
|
/**
|
|
19
19
|
* Returns a stringified token for a lazy value.
|
|
20
20
|
* @param producer The producer
|
|
@@ -48,12 +48,12 @@ class Lazy {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
exports.Lazy = Lazy;
|
|
51
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
52
|
-
Lazy[_a] = { fqn: "cdktn.Lazy", version: "0.25.0-pre.2" };
|
|
53
51
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
54
52
|
class LazyBase {
|
|
53
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.LazyBase", version: "0.25.0-pre.21" };
|
|
54
|
+
creationStack;
|
|
55
|
+
postProcessors = [];
|
|
55
56
|
constructor() {
|
|
56
|
-
this.postProcessors = [];
|
|
57
57
|
this.creationStack = (0, stack_trace_1.captureCreationStack)();
|
|
58
58
|
}
|
|
59
59
|
resolve(context) {
|
|
@@ -76,10 +76,9 @@ class LazyBase {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
exports.LazyBase = LazyBase;
|
|
79
|
-
_b = JSII_RTTI_SYMBOL_1;
|
|
80
|
-
LazyBase[_b] = { fqn: "cdktn.LazyBase", version: "0.25.0-pre.2" };
|
|
81
79
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
82
80
|
class LazyString extends LazyBase {
|
|
81
|
+
producer;
|
|
83
82
|
constructor(producer) {
|
|
84
83
|
super();
|
|
85
84
|
this.producer = producer;
|
|
@@ -90,6 +89,7 @@ class LazyString extends LazyBase {
|
|
|
90
89
|
}
|
|
91
90
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
92
91
|
class LazyNumber extends LazyBase {
|
|
92
|
+
producer;
|
|
93
93
|
constructor(producer) {
|
|
94
94
|
super();
|
|
95
95
|
this.producer = producer;
|
|
@@ -100,6 +100,8 @@ class LazyNumber extends LazyBase {
|
|
|
100
100
|
}
|
|
101
101
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
102
102
|
class LazyList extends LazyBase {
|
|
103
|
+
producer;
|
|
104
|
+
options;
|
|
103
105
|
constructor(producer, options = {}) {
|
|
104
106
|
super();
|
|
105
107
|
this.producer = producer;
|
|
@@ -115,6 +117,8 @@ class LazyList extends LazyBase {
|
|
|
115
117
|
}
|
|
116
118
|
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
117
119
|
class LazyAny extends LazyBase {
|
|
120
|
+
producer;
|
|
121
|
+
options;
|
|
118
122
|
constructor(producer, options = {}) {
|
|
119
123
|
super();
|
|
120
124
|
this.producer = producer;
|
|
@@ -128,4 +132,4 @@ class LazyAny extends LazyBase {
|
|
|
128
132
|
return ret;
|
|
129
133
|
}
|
|
130
134
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbnMvbGF6eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsMEdBQTBHO0FBQzFHLHVEQUE2RDtBQUU3RCxtQ0FBZ0M7QUE0RmhDOzs7OztHQUtHO0FBQ0gsTUFBYSxJQUFJO0lBQ2Y7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLFFBQXlCLEVBQ3pCLFVBQWtDLEVBQUU7UUFFcEMsT0FBTyxhQUFLLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQXlCO1FBQ2pELE9BQU8sYUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FDckIsUUFBdUIsRUFDdkIsVUFBZ0MsRUFBRTtRQUVsQyxPQUFPLGFBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FDcEIsUUFBc0IsRUFDdEIsVUFBK0IsRUFBRTtRQUVqQyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDOztBQTNDSCxvQkE0Q0M7OztBQUVELCtDQUErQztBQUMvQyxNQUFzQixRQUFRO0lBSTVCO1FBRlEsbUJBQWMsR0FBcUIsRUFBRSxDQUFDO1FBRzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBQSxrQ0FBb0IsR0FBRSxDQUFDO0lBQzlDLENBQUM7SUFFTSxPQUFPLENBQUMsT0FBd0I7UUFDckMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FDL0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFJTSxRQUFRO1FBQ2IsT0FBTyxhQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCw4REFBOEQ7SUFDdkQsZ0JBQWdCLENBQUMsYUFBNkI7UUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNO1FBQ1gsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDOztBQWpDSCw0QkFrQ0M7OztBQUVELCtDQUErQztBQUMvQyxNQUFNLFVBQVcsU0FBUSxRQUFRO0lBQy9CLFlBQTZCLFFBQXlCO1FBQ3BELEtBQUssRUFBRSxDQUFDO1FBRG1CLGFBQVEsR0FBUixRQUFRLENBQWlCO0lBRXRELENBQUM7SUFFTSxXQUFXLENBQUMsT0FBd0I7UUFDekMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBTSxVQUFXLFNBQVEsUUFBUTtJQUMvQixZQUE2QixRQUF5QjtRQUNwRCxLQUFLLEVBQUUsQ0FBQztRQURtQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUV0RCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXdCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sUUFBUyxTQUFRLFFBQVE7SUFDN0IsWUFDbUIsUUFBdUIsRUFDdkIsVUFBZ0MsRUFBRTtRQUVuRCxLQUFLLEVBQUUsQ0FBQztRQUhTLGFBQVEsR0FBUixRQUFRLENBQWU7UUFDdkIsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7SUFHckQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUF3QjtRQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwRSxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBTSxPQUFRLFNBQVEsUUFBUTtJQUM1QixZQUNtQixRQUFzQixFQUN0QixVQUErQixFQUFFO1FBRWxELEtBQUssRUFBRSxDQUFDO1FBSFMsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUEwQjtJQUdwRCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXdCO1FBQ3pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFFLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4vLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2NvbnN0cnVjdHMvYmxvYi9lMDFlNDdmNzhlZjFlOWI2MDBlZmNkMjNmZjc3MDVhYThkMzg0MDE3L2xpYi9sYXp5LnRzXG5pbXBvcnQgeyBjYXB0dXJlQ3JlYXRpb25TdGFjayB9IGZyb20gXCIuL3ByaXZhdGUvc3RhY2stdHJhY2VcIjtcbmltcG9ydCB7IElQb3N0UHJvY2Vzc29yLCBJUmVzb2x2YWJsZSwgSVJlc29sdmVDb250ZXh0IH0gZnJvbSBcIi4vcmVzb2x2YWJsZVwiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiLi90b2tlblwiO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgbGF6eSBzdHJpbmcgcHJvZHVjZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmluZ1Byb2R1Y2VyIHtcbiAgLyoqXG4gICAqIFByb2R1Y2UgdGhlIHN0cmluZyB2YWx1ZVxuICAgKi9cbiAgcHJvZHVjZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBsYXp5IGxpc3QgcHJvZHVjZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RQcm9kdWNlciB7XG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSBsaXN0IHZhbHVlXG4gICAqL1xuICBwcm9kdWNlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgbGF6eSBudW1iZXIgcHJvZHVjZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU51bWJlclByb2R1Y2VyIHtcbiAgLyoqXG4gICAqIFByb2R1Y2UgdGhlIG51bWJlciB2YWx1ZVxuICAgKi9cbiAgcHJvZHVjZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBudW1iZXIgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBsYXp5IHVudHlwZWQgdmFsdWUgcHJvZHVjZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFueVByb2R1Y2VyIHtcbiAgLyoqXG4gICAqIFByb2R1Y2UgdGhlIHZhbHVlXG4gICAqL1xuICBwcm9kdWNlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IGFueTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIGxhenkgc3RyaW5nIHRva2VuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eVN0cmluZ1ZhbHVlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVc2UgdGhlIGdpdmVuIG5hbWUgYXMgYSBkaXNwbGF5IGhpbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBoaW50XG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5SGludD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIGxhenkgbGlzdCB0b2tlblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhenlMaXN0VmFsdWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgZ2l2ZW4gbmFtZSBhcyBhIGRpc3BsYXkgaGludFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGhpbnRcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlIaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgcHJvZHVjZWQgbGlzdCBpcyBlbXB0eSwgcmV0dXJuICd1bmRlZmluZWQnIGluc3RlYWRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG9taXRFbXB0eT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgbGF6eSB1bnR5cGVkIHRva2Vuc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExhenlBbnlWYWx1ZU9wdGlvbnMge1xuICAvKipcbiAgICogVXNlIHRoZSBnaXZlbiBuYW1lIGFzIGEgZGlzcGxheSBoaW50XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gaGludFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheUhpbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBwcm9kdWNlZCB2YWx1ZSBpcyBhbiBhcnJheSBhbmQgaXQgaXMgZW1wdHksIHJldHVybiAndW5kZWZpbmVkJyBpbnN0ZWFkXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBvbWl0RW1wdHlBcnJheT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTGF6aWx5IHByb2R1Y2UgYSB2YWx1ZVxuICpcbiAqIENhbiBiZSB1c2VkIHRvIHJldHVybiBhIHN0cmluZywgbGlzdCBvciBudW1lcmljIHZhbHVlIHdob3NlIGFjdHVhbCB2YWx1ZVxuICogd2lsbCBvbmx5IGJlIGNhbGN1bGF0ZWQgbGF0ZXIsIGR1cmluZyBzeW50aGVzaXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMYXp5IHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmdpZmllZCB0b2tlbiBmb3IgYSBsYXp5IHZhbHVlLlxuICAgKiBAcGFyYW0gcHJvZHVjZXIgVGhlIHByb2R1Y2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nVmFsdWUoXG4gICAgcHJvZHVjZXI6IElTdHJpbmdQcm9kdWNlcixcbiAgICBvcHRpb25zOiBMYXp5U3RyaW5nVmFsdWVPcHRpb25zID0ge30sXG4gICkge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyhuZXcgTGF6eVN0cmluZyhwcm9kdWNlciksIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBudW1iZXJpZmllZCB0b2tlbiBmb3IgYSBsYXp5IHZhbHVlLlxuICAgKiBAcGFyYW0gcHJvZHVjZXIgVGhlIHByb2R1Y2VyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bWJlclZhbHVlKHByb2R1Y2VyOiBJTnVtYmVyUHJvZHVjZXIpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIobmV3IExhenlOdW1iZXIocHJvZHVjZXIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdC1pZmllZCB0b2tlbiBmb3IgYSBsYXp5IHZhbHVlLlxuICAgKiBAcGFyYW0gcHJvZHVjZXIgVGhlIHByb2R1Y2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGlzdFZhbHVlKFxuICAgIHByb2R1Y2VyOiBJTGlzdFByb2R1Y2VyLFxuICAgIG9wdGlvbnM6IExhenlMaXN0VmFsdWVPcHRpb25zID0ge30sXG4gICkge1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QobmV3IExhenlMaXN0KHByb2R1Y2VyLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZXMgYSBsYXp5IHRva2VuIGZyb20gYW4gdW50eXBlZCB2YWx1ZS5cbiAgICogQHBhcmFtIHByb2R1Y2VyIFRoZSBsYXp5IHByb2R1Y2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW55VmFsdWUoXG4gICAgcHJvZHVjZXI6IElBbnlQcm9kdWNlcixcbiAgICBvcHRpb25zOiBMYXp5QW55VmFsdWVPcHRpb25zID0ge30sXG4gICk6IElSZXNvbHZhYmxlIHtcbiAgICByZXR1cm4gbmV3IExhenlBbnkocHJvZHVjZXIsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGF6eUJhc2UgaW1wbGVtZW50cyBJUmVzb2x2YWJsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGlvblN0YWNrOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBwb3N0UHJvY2Vzc29yczogSVBvc3RQcm9jZXNzb3JbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY3JlYXRpb25TdGFjayA9IGNhcHR1cmVDcmVhdGlvblN0YWNrKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnBvc3RQcm9jZXNzb3JzLnJlZHVjZShcbiAgICAgICh2YWwsIHBwKSA9PiBwcC5wb3N0UHJvY2Vzcyh2YWwsIGNvbnRleHQpLFxuICAgICAgdGhpcy5yZXNvbHZlTGF6eShjb250ZXh0KSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlc29sdmVMYXp5KGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IGFueTtcblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHRoaXMpO1xuICB9XG5cbiAgLy8gd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhpcyBMYXp5J3MgcmVzb2x2ZSgpIG1ldGhvZCBpcyBjYWxsZWRcbiAgcHVibGljIGFkZFBvc3RQcm9jZXNzb3IocG9zdFByb2Nlc3NvcjogSVBvc3RQcm9jZXNzb3IpOiB2b2lkIHtcbiAgICB0aGlzLnBvc3RQcm9jZXNzb3JzLnB1c2gocG9zdFByb2Nlc3Nvcik7XG4gIH1cblxuICAvKipcbiAgICogVHVybiB0aGlzIFRva2VuIGludG8gSlNPTlxuICAgKlxuICAgKiBDYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIEpTT04uc3RyaW5naWZ5KCkgaXMgY2FsbGVkIG9uIGEgVG9rZW4uXG4gICAqL1xuICBwdWJsaWMgdG9KU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIFwiPHVucmVzb2x2ZWQtbGF6eT5cIjtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgTGF6eVN0cmluZyBleHRlbmRzIExhenlCYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9kdWNlcjogSVN0cmluZ1Byb2R1Y2VyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlTGF6eShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9kdWNlci5wcm9kdWNlKGNvbnRleHQpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBMYXp5TnVtYmVyIGV4dGVuZHMgTGF6eUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb2R1Y2VyOiBJTnVtYmVyUHJvZHVjZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVMYXp5KGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIHJldHVybiB0aGlzLnByb2R1Y2VyLnByb2R1Y2UoY29udGV4dCk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIExhenlMaXN0IGV4dGVuZHMgTGF6eUJhc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y2VyOiBJTGlzdFByb2R1Y2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTGF6eUxpc3RWYWx1ZU9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlTGF6eShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpIHtcbiAgICBjb25zdCByZXQgPSB0aGlzLnByb2R1Y2VyLnByb2R1Y2UoY29udGV4dCk7XG4gICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkICYmIHJldC5sZW5ndGggPT09IDAgJiYgdGhpcy5vcHRpb25zLm9taXRFbXB0eSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgTGF6eUFueSBleHRlbmRzIExhenlCYXNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWNlcjogSUFueVByb2R1Y2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTGF6eUFueVZhbHVlT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVMYXp5KGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIGNvbnN0IHJldCA9IHRoaXMucHJvZHVjZXIucHJvZHVjZShjb250ZXh0KTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXQpICYmIHJldC5sZW5ndGggPT09IDAgJiYgdGhpcy5vcHRpb25zLm9taXRFbXB0eUFycmF5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG4iXX0=
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbnMvbGF6eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQywwR0FBMEc7QUFDMUcsdURBQTZEO0FBRTdELG1DQUFnQztBQTRGaEM7Ozs7O0dBS0c7QUFDSCxNQUFhLElBQUk7O0lBQ2Y7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLFFBQXlCLEVBQ3pCLFVBQWtDLEVBQUU7UUFFcEMsT0FBTyxhQUFLLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQXlCO1FBQ2pELE9BQU8sYUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FDckIsUUFBdUIsRUFDdkIsVUFBZ0MsRUFBRTtRQUVsQyxPQUFPLGFBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FDcEIsUUFBc0IsRUFDdEIsVUFBK0IsRUFBRTtRQUVqQyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDOztBQTNDSCxvQkE0Q0M7QUFFRCwrQ0FBK0M7QUFDL0MsTUFBc0IsUUFBUTs7SUFDWixhQUFhLENBQVc7SUFDaEMsY0FBYyxHQUFxQixFQUFFLENBQUM7SUFFOUM7UUFDRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUEsa0NBQW9CLEdBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRU0sT0FBTyxDQUFDLE9BQXdCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQy9CLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQzFCLENBQUM7SUFDSixDQUFDO0lBSU0sUUFBUTtRQUNiLE9BQU8sYUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsOERBQThEO0lBQ3ZELGdCQUFnQixDQUFDLGFBQTZCO1FBQ25ELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQzs7QUFqQ0gsNEJBa0NDO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sVUFBVyxTQUFRLFFBQVE7SUFDRjtJQUE3QixZQUE2QixRQUF5QjtRQUNwRCxLQUFLLEVBQUUsQ0FBQztRQURtQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUV0RCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXdCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sVUFBVyxTQUFRLFFBQVE7SUFDRjtJQUE3QixZQUE2QixRQUF5QjtRQUNwRCxLQUFLLEVBQUUsQ0FBQztRQURtQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUV0RCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXdCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sUUFBUyxTQUFRLFFBQVE7SUFFVjtJQUNBO0lBRm5CLFlBQ21CLFFBQXVCLEVBQ3ZCLFVBQWdDLEVBQUU7UUFFbkQsS0FBSyxFQUFFLENBQUM7UUFIUyxhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQTJCO0lBR3JELENBQUM7SUFFTSxXQUFXLENBQUMsT0FBd0I7UUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEUsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBRUQsK0NBQStDO0FBQy9DLE1BQU0sT0FBUSxTQUFRLFFBQVE7SUFFVDtJQUNBO0lBRm5CLFlBQ21CLFFBQXNCLEVBQ3RCLFVBQStCLEVBQUU7UUFFbEQsS0FBSyxFQUFFLENBQUM7UUFIUyxhQUFRLEdBQVIsUUFBUSxDQUFjO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQTBCO0lBR3BELENBQUM7SUFFTSxXQUFXLENBQUMsT0FBd0I7UUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUUsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cy9ibG9iL2UwMWU0N2Y3OGVmMWU5YjYwMGVmY2QyM2ZmNzcwNWFhOGQzODQwMTcvbGliL2xhenkudHNcbmltcG9ydCB7IGNhcHR1cmVDcmVhdGlvblN0YWNrIH0gZnJvbSBcIi4vcHJpdmF0ZS9zdGFjay10cmFjZVwiO1xuaW1wb3J0IHsgSVBvc3RQcm9jZXNzb3IsIElSZXNvbHZhYmxlLCBJUmVzb2x2ZUNvbnRleHQgfSBmcm9tIFwiLi9yZXNvbHZhYmxlXCI7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gXCIuL3Rva2VuXCI7XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBsYXp5IHN0cmluZyBwcm9kdWNlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3RyaW5nUHJvZHVjZXIge1xuICAvKipcbiAgICogUHJvZHVjZSB0aGUgc3RyaW5nIHZhbHVlXG4gICAqL1xuICBwcm9kdWNlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGxhenkgbGlzdCBwcm9kdWNlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTGlzdFByb2R1Y2VyIHtcbiAgLyoqXG4gICAqIFByb2R1Y2UgdGhlIGxpc3QgdmFsdWVcbiAgICovXG4gIHByb2R1Y2UoY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBsYXp5IG51bWJlciBwcm9kdWNlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTnVtYmVyUHJvZHVjZXIge1xuICAvKipcbiAgICogUHJvZHVjZSB0aGUgbnVtYmVyIHZhbHVlXG4gICAqL1xuICBwcm9kdWNlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGxhenkgdW50eXBlZCB2YWx1ZSBwcm9kdWNlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQW55UHJvZHVjZXIge1xuICAvKipcbiAgICogUHJvZHVjZSB0aGUgdmFsdWVcbiAgICovXG4gIHByb2R1Y2UoY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogYW55O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgbGF6eSBzdHJpbmcgdG9rZW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXp5U3RyaW5nVmFsdWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgZ2l2ZW4gbmFtZSBhcyBhIGRpc3BsYXkgaGludFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGhpbnRcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlIaW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgbGF6eSBsaXN0IHRva2VuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUxpc3RWYWx1ZU9wdGlvbnMge1xuICAvKipcbiAgICogVXNlIHRoZSBnaXZlbiBuYW1lIGFzIGEgZGlzcGxheSBoaW50XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gaGludFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheUhpbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBwcm9kdWNlZCBsaXN0IGlzIGVtcHR5LCByZXR1cm4gJ3VuZGVmaW5lZCcgaW5zdGVhZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgb21pdEVtcHR5PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBsYXp5IHVudHlwZWQgdG9rZW5zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF6eUFueVZhbHVlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVc2UgdGhlIGdpdmVuIG5hbWUgYXMgYSBkaXNwbGF5IGhpbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBoaW50XG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5SGludD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhlIHByb2R1Y2VkIHZhbHVlIGlzIGFuIGFycmF5IGFuZCBpdCBpcyBlbXB0eSwgcmV0dXJuICd1bmRlZmluZWQnIGluc3RlYWRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG9taXRFbXB0eUFycmF5PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBMYXppbHkgcHJvZHVjZSBhIHZhbHVlXG4gKlxuICogQ2FuIGJlIHVzZWQgdG8gcmV0dXJuIGEgc3RyaW5nLCBsaXN0IG9yIG51bWVyaWMgdmFsdWUgd2hvc2UgYWN0dWFsIHZhbHVlXG4gKiB3aWxsIG9ubHkgYmUgY2FsY3VsYXRlZCBsYXRlciwgZHVyaW5nIHN5bnRoZXNpcy5cbiAqL1xuZXhwb3J0IGNsYXNzIExhenkge1xuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZ2lmaWVkIHRva2VuIGZvciBhIGxhenkgdmFsdWUuXG4gICAqIEBwYXJhbSBwcm9kdWNlciBUaGUgcHJvZHVjZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdHJpbmdWYWx1ZShcbiAgICBwcm9kdWNlcjogSVN0cmluZ1Byb2R1Y2VyLFxuICAgIG9wdGlvbnM6IExhenlTdHJpbmdWYWx1ZU9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKG5ldyBMYXp5U3RyaW5nKHByb2R1Y2VyKSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG51bWJlcmlmaWVkIHRva2VuIGZvciBhIGxhenkgdmFsdWUuXG4gICAqIEBwYXJhbSBwcm9kdWNlciBUaGUgcHJvZHVjZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVtYmVyVmFsdWUocHJvZHVjZXI6IElOdW1iZXJQcm9kdWNlcikge1xuICAgIHJldHVybiBUb2tlbi5hc051bWJlcihuZXcgTGF6eU51bWJlcihwcm9kdWNlcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0LWlmaWVkIHRva2VuIGZvciBhIGxhenkgdmFsdWUuXG4gICAqIEBwYXJhbSBwcm9kdWNlciBUaGUgcHJvZHVjZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsaXN0VmFsdWUoXG4gICAgcHJvZHVjZXI6IElMaXN0UHJvZHVjZXIsXG4gICAgb3B0aW9uczogTGF6eUxpc3RWYWx1ZU9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdChuZXcgTGF6eUxpc3QocHJvZHVjZXIsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlcyBhIGxhenkgdG9rZW4gZnJvbSBhbiB1bnR5cGVkIHZhbHVlLlxuICAgKiBAcGFyYW0gcHJvZHVjZXIgVGhlIGxhenkgcHJvZHVjZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbnlWYWx1ZShcbiAgICBwcm9kdWNlcjogSUFueVByb2R1Y2VyLFxuICAgIG9wdGlvbnM6IExhenlBbnlWYWx1ZU9wdGlvbnMgPSB7fSxcbiAgKTogSVJlc29sdmFibGUge1xuICAgIHJldHVybiBuZXcgTGF6eUFueShwcm9kdWNlciwgb3B0aW9ucyk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMYXp5QmFzZSBpbXBsZW1lbnRzIElSZXNvbHZhYmxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0aW9uU3RhY2s6IHN0cmluZ1tdO1xuICBwcml2YXRlIHBvc3RQcm9jZXNzb3JzOiBJUG9zdFByb2Nlc3NvcltdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jcmVhdGlvblN0YWNrID0gY2FwdHVyZUNyZWF0aW9uU3RhY2soKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucG9zdFByb2Nlc3NvcnMucmVkdWNlKFxuICAgICAgKHZhbCwgcHApID0+IHBwLnBvc3RQcm9jZXNzKHZhbCwgY29udGV4dCksXG4gICAgICB0aGlzLnJlc29sdmVMYXp5KGNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVzb2x2ZUxhenkoY29udGV4dDogSVJlc29sdmVDb250ZXh0KTogYW55O1xuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcyk7XG4gIH1cblxuICAvLyB3aWxsIGJlIGludm9rZWQgd2hlbiB0aGlzIExhenkncyByZXNvbHZlKCkgbWV0aG9kIGlzIGNhbGxlZFxuICBwdWJsaWMgYWRkUG9zdFByb2Nlc3Nvcihwb3N0UHJvY2Vzc29yOiBJUG9zdFByb2Nlc3Nvcik6IHZvaWQge1xuICAgIHRoaXMucG9zdFByb2Nlc3NvcnMucHVzaChwb3N0UHJvY2Vzc29yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUdXJuIHRoaXMgVG9rZW4gaW50byBKU09OXG4gICAqXG4gICAqIENhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gSlNPTi5zdHJpbmdpZnkoKSBpcyBjYWxsZWQgb24gYSBUb2tlbi5cbiAgICovXG4gIHB1YmxpYyB0b0pTT04oKTogYW55IHtcbiAgICByZXR1cm4gXCI8dW5yZXNvbHZlZC1sYXp5PlwiO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBMYXp5U3RyaW5nIGV4dGVuZHMgTGF6eUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb2R1Y2VyOiBJU3RyaW5nUHJvZHVjZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVMYXp5KGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIHJldHVybiB0aGlzLnByb2R1Y2VyLnByb2R1Y2UoY29udGV4dCk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbmNsYXNzIExhenlOdW1iZXIgZXh0ZW5kcyBMYXp5QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjZXI6IElOdW1iZXJQcm9kdWNlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZUxhenkoY29udGV4dDogSVJlc29sdmVDb250ZXh0KSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZHVjZXIucHJvZHVjZShjb250ZXh0KTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuY2xhc3MgTGF6eUxpc3QgZXh0ZW5kcyBMYXp5QmFzZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjZXI6IElMaXN0UHJvZHVjZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBMYXp5TGlzdFZhbHVlT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVMYXp5KGNvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgIGNvbnN0IHJldCA9IHRoaXMucHJvZHVjZXIucHJvZHVjZShjb250ZXh0KTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQgJiYgcmV0Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLm9wdGlvbnMub21pdEVtcHR5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG5jbGFzcyBMYXp5QW55IGV4dGVuZHMgTGF6eUJhc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y2VyOiBJQW55UHJvZHVjZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBMYXp5QW55VmFsdWVPcHRpb25zID0ge30sXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZUxhenkoY29udGV4dDogSVJlc29sdmVDb250ZXh0KSB7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5wcm9kdWNlci5wcm9kdWNlKGNvbnRleHQpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJldCkgJiYgcmV0Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLm9wdGlvbnMub21pdEVtcHR5QXJyYXkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -14,8 +14,8 @@ const errors_1 = require("../../errors");
|
|
|
14
14
|
* @experimental
|
|
15
15
|
*/
|
|
16
16
|
class ConcreteDependable {
|
|
17
|
+
_dependencyRoots = new Array();
|
|
17
18
|
constructor() {
|
|
18
|
-
this._dependencyRoots = new Array();
|
|
19
19
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
20
20
|
const self = this;
|
|
21
21
|
DependableTrait.implement(this, {
|
|
@@ -78,4 +78,4 @@ class DependableTrait {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
exports.DependableTrait = DependableTrait;
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b2tlbnMvcHJpdmF0ZS9kZXBlbmRlbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLHdIQUF3SDs7O0FBS3hILHlDQUErRDtBQWlCL0Q7Ozs7Ozs7R0FPRztBQUNILE1BQWEsa0JBQWtCO0lBQ1osZ0JBQWdCLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztJQUU1RDtRQUNFLDREQUE0RDtRQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDOUIsSUFBSSxlQUFlO2dCQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUMvQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksR0FBRyxDQUFDLFNBQXFCO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBbkJELGdEQW1CQztBQUVELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBRXRFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQXNCLGVBQWU7SUFDbkM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBcUIsRUFBRSxLQUFzQjtRQUNuRSw2RUFBNkU7UUFDN0UsOEVBQThFO1FBQzlFLGdDQUFnQztRQUMvQixRQUFnQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBcUI7UUFDckMsTUFBTSxHQUFHLEdBQUksUUFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBQSx3Q0FBK0IsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBU0Y7QUEvQkQsMENBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbi8vIGNvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvY29uc3RydWN0cy9ibG9iL2UwMWU0N2Y3OGVmMWU5YjYwMGVmY2QyM2ZmNzcwNWFhOGQzODQwMTcvbGliL3ByaXZhdGUvZGVwZW5kZW5jeS50c1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGUgKi9cblxuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBkb2VzTm90SW1wbGVtZW50RGVwZW5kYWJsZVRyYWl0IH0gZnJvbSBcIi4uLy4uL2Vycm9yc1wiO1xuXG4vKipcbiAqIFRyYWl0IG1hcmtlciBmb3IgY2xhc3NlcyB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uXG4gKlxuICogVGhlIHByZXNlbmNlIG9mIHRoaXMgaW50ZXJmYWNlIGluZGljYXRlcyB0aGF0IGFuIG9iamVjdCBoYXNcbiAqIGFuIGBJRGVwZW5kYWJsZVRyYWl0YCBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBUaGlzIGludGVyZmFjZSBjYW4gYmUgdXNlZCB0byB0YWtlIGFuIChvcmRlcmluZykgZGVwZW5kZW5jeSBvbiBhIHNldCBvZlxuICogY29uc3RydWN0cy4gQW4gb3JkZXJpbmcgZGVwZW5kZW5jeSBpbXBsaWVzIHRoYXQgdGhlIHJlc291cmNlcyByZXByZXNlbnRlZCBieVxuICogdGhvc2UgY29uc3RydWN0cyBhcmUgZGVwbG95ZWQgYmVmb3JlIHRoZSByZXNvdXJjZXMgZGVwZW5kaW5nIE9OIHRoZW0gYXJlXG4gKiBkZXBsb3llZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGVwZW5kYWJsZSB7XG4gIC8vIEVtcHR5LCB0aGlzIGludGVyZmFjZSBpcyBhIHRyYWl0IG1hcmtlclxufVxuXG4vKipcbiAqIEEgc2V0IG9mIGNvbnN0cnVjdHMgdG8gYmUgdXNlZCBhcyBhIGRlcGVuZGFibGVcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSB1c2VkIHdoZW4gYSBzZXQgb2YgY29uc3RydWN0cyB3aGljaCBhcmUgZGlzam9pbnQgaW4gdGhlXG4gKiBjb25zdHJ1Y3QgdHJlZSBuZWVkcyB0byBiZSBjb21iaW5lZCB0byBiZSB1c2VkIGFzIGEgc2luZ2xlIGRlcGVuZGFibGUuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgQ29uY3JldGVEZXBlbmRhYmxlIGltcGxlbWVudHMgSURlcGVuZGFibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXBlbmRlbmN5Um9vdHMgPSBuZXcgQXJyYXk8SUNvbnN0cnVjdD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBEZXBlbmRhYmxlVHJhaXQuaW1wbGVtZW50KHRoaXMsIHtcbiAgICAgIGdldCBkZXBlbmRlbmN5Um9vdHMoKSB7XG4gICAgICAgIHJldHVybiBzZWxmLl9kZXBlbmRlbmN5Um9vdHM7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNvbnN0cnVjdCB0byB0aGUgZGVwZW5kZW5jeSByb290c1xuICAgKi9cbiAgcHVibGljIGFkZChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpIHtcbiAgICB0aGlzLl9kZXBlbmRlbmN5Um9vdHMucHVzaChjb25zdHJ1Y3QpO1xuICB9XG59XG5cbmNvbnN0IERFUEVOREFCTEVfU1lNQk9MID0gU3ltYm9sLmZvcihcIkBhd3MtY2RrL2NvcmUuRGVwZW5kYWJsZVRyYWl0XCIpO1xuXG4vKipcbiAqIFRyYWl0IGZvciBJRGVwZW5kYWJsZVxuICpcbiAqIFRyYWl0cyBhcmUgaW50ZXJmYWNlcyB0aGF0IGFyZSBwcml2YXRlbHkgaW1wbGVtZW50ZWQgYnkgb2JqZWN0cy4gSW5zdGVhZCBvZlxuICogc2hvd2luZyB1cCBpbiB0aGUgcHVibGljIGludGVyZmFjZSBvZiBhIGNsYXNzLCB0aGV5IG5lZWQgdG8gYmUgcXVlcmllZFxuICogZXhwbGljaXRseS4gVGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCBjZXJ0YWluIGZyYW1ld29yayBmZWF0dXJlcyB0aGF0IGFyZVxuICogbm90IGludGVuZGVkIHRvIGJlIHVzZWQgYnkgQ29uc3RydWN0IGNvbnN1bWVycywgYW5kIHNvIHNob3VsZCBiZSBoaWRkZW5cbiAqIGZyb20gYWNjaWRlbnRhbCB1c2UuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBVc2FnZVxuICogY29uc3Qgcm9vdHMgPSBEZXBlbmRhYmxlVHJhaXQuZ2V0KGNvbnN0cnVjdCkuZGVwZW5kZW5jeVJvb3RzO1xuICpcbiAqIC8vIERlZmluaXRpb25cbiAqIERlcGVuZGFibGVUcmFpdC5pbXBsZW1lbnQoY29uc3RydWN0LCB7XG4gKiAgIGdldCBkZXBlbmRlbmN5Um9vdHMoKSB7IHJldHVybiBbXTsgfVxuICogfSk7XG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVwZW5kYWJsZVRyYWl0IHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGBpbnN0YW5jZWAgdG8gaGF2ZSB0aGUgZ2l2ZW4gRGVwZW5kYWJsZVRyYWl0XG4gICAqXG4gICAqIFNob3VsZCBiZSBjYWxsZWQgaW4gdGhlIGNsYXNzIGNvbnN0cnVjdG9yLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbXBsZW1lbnQoaW5zdGFuY2U6IElEZXBlbmRhYmxlLCB0cmFpdDogRGVwZW5kYWJsZVRyYWl0KSB7XG4gICAgLy8gSSB3b3VsZCBhbHNvIGxpa2UgdG8gcmVmZXJlbmNlIGNsYXNzZXMgKHRvIGN1dCBkb3duIG9uIHRoZSBsaXN0IG9mIG9iamVjdHNcbiAgICAvLyB3ZSBuZWVkIHRvIG1hbmFnZSksIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0IGVpdGhlciBzaW5jZSBqc2lpIGRvZXNuJ3QgaGF2ZSB0aGVcbiAgICAvLyBjb25jZXB0IG9mIGEgY2xhc3MgcmVmZXJlbmNlLlxuICAgIChpbnN0YW5jZSBhcyBhbnkpW0RFUEVOREFCTEVfU1lNQk9MXSA9IHRyYWl0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbWF0Y2hpbmcgRGVwZW5kYWJsZVRyYWl0IGZvciB0aGUgZ2l2ZW4gY2xhc3MgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldChpbnN0YW5jZTogSURlcGVuZGFibGUpOiBEZXBlbmRhYmxlVHJhaXQge1xuICAgIGNvbnN0IHJldCA9IChpbnN0YW5jZSBhcyBhbnkpW0RFUEVOREFCTEVfU1lNQk9MXTtcbiAgICBpZiAoIXJldCkge1xuICAgICAgdGhyb3cgZG9lc05vdEltcGxlbWVudERlcGVuZGFibGVUcmFpdChpbnN0YW5jZSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNldCBvZiBjb25zdHJ1Y3RzIHRoYXQgZm9ybSB0aGUgcm9vdCBvZiB0aGlzIGRlcGVuZGFibGVcbiAgICpcbiAgICogQWxsIHJlc291cmNlcyB1bmRlciBhbGwgcmV0dXJuZWQgY29uc3RydWN0cyBhcmUgaW5jbHVkZWQgaW4gdGhlIG9yZGVyaW5nXG4gICAqIGRlcGVuZGVuY3kuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZGVwZW5kZW5jeVJvb3RzOiBJQ29uc3RydWN0W107XG59XG4iXX0=
|