@ruvector/ruvllm 2.5.6 → 2.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +282 -282
- package/bin/cli.js +1020 -1020
- package/dist/cjs/benchmarks/embedding-benchmark.js +8 -8
- package/dist/cjs/benchmarks/index.js +5 -5
- package/dist/cjs/benchmarks/model-comparison.js +15 -25
- package/dist/cjs/benchmarks/routing-benchmark.js +5 -5
- package/dist/cjs/contrastive.js +78 -78
- package/dist/cjs/engine.js +13 -13
- package/dist/cjs/export.js +31 -31
- package/dist/cjs/federated.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/intelligence.js +8 -18
- package/dist/cjs/lora.js +1 -1
- package/dist/cjs/models.js +13 -23
- package/dist/cjs/native.js +5 -4
- package/dist/cjs/session.js +1 -1
- package/dist/cjs/simd.js +1 -1
- package/dist/cjs/sona.js +1 -1
- package/dist/cjs/streaming.d.ts +1 -0
- package/dist/cjs/streaming.d.ts.map +1 -1
- package/dist/cjs/streaming.js +3 -3
- package/dist/cjs/training.d.ts +32 -4
- package/dist/cjs/training.d.ts.map +1 -1
- package/dist/cjs/training.js +59 -9
- package/dist/cjs/types.js +1 -1
- package/dist/esm/benchmarks/embedding-benchmark.js +1 -1
- package/dist/esm/benchmarks/index.js +1 -1
- package/dist/esm/benchmarks/model-comparison.js +1 -1
- package/dist/esm/benchmarks/routing-benchmark.js +1 -1
- package/dist/esm/contrastive.js +70 -70
- package/dist/esm/engine.js +13 -13
- package/dist/esm/export.js +31 -31
- package/dist/esm/federated.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/intelligence.js +1 -1
- package/dist/esm/lora.js +1 -1
- package/dist/esm/models.js +1 -1
- package/dist/esm/native.js +1 -1
- package/dist/esm/session.js +1 -1
- package/dist/esm/simd.js +1 -1
- package/dist/esm/sona.js +1 -1
- package/dist/esm/streaming.d.ts +1 -0
- package/dist/esm/streaming.d.ts.map +1 -1
- package/dist/esm/streaming.js +1 -1
- package/dist/esm/training.d.ts +32 -4
- package/dist/esm/training.d.ts.map +1 -1
- package/dist/esm/training.js +59 -9
- package/dist/esm/types.js +1 -1
- package/package.json +133 -133
- package/scripts/ensemble-model-compare.js +287 -287
- package/scripts/huggingface/README.md +537 -537
- package/scripts/huggingface/publish.sh +112 -112
- package/scripts/hybrid-model-compare.js +373 -373
- package/scripts/improved-model-compare.js +288 -288
- package/scripts/optimized-model-compare.js +364 -364
- package/scripts/real-model-compare.js +280 -280
- package/scripts/training/agentic-flow-capabilities.json +329 -329
- package/scripts/training/claude-code-synth.js +505 -505
- package/scripts/training/claude-flow-capabilities.json +1322 -1322
- package/scripts/training/claude-hard-negatives.js +222 -222
- package/scripts/training/contrastive-finetune.js +517 -517
- package/scripts/training/ecosystem-triplets.jsonl +1466 -1466
- package/scripts/training/generate-ecosystem-triplets.js +1324 -1324
- package/scripts/training/routing-dataset.js +634 -634
- package/scripts/training/ruvector-capabilities.json +798 -798
- package/scripts/training/validate-ecosystem.js +381 -381
- package/scripts/training/validation-results.json +22 -22
package/dist/esm/training.js
CHANGED
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
* console.log(`Final loss: ${result.finalLoss}`);
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
|
+
import { writeFileSync, readFileSync, mkdirSync } from 'fs';
|
|
26
|
+
import { dirname } from 'path';
|
|
25
27
|
import { LoraAdapter } from './lora';
|
|
26
28
|
import { EwcManager } from './sona';
|
|
27
29
|
/**
|
|
@@ -40,6 +42,8 @@ const DEFAULT_TRAINING_CONFIG = {
|
|
|
40
42
|
ewcLambda: 2000,
|
|
41
43
|
validationSplit: 0.1,
|
|
42
44
|
};
|
|
45
|
+
/** On-disk checkpoint envelope (versioned for forward compatibility). */
|
|
46
|
+
const CHECKPOINT_FORMAT_VERSION = 1;
|
|
43
47
|
/**
|
|
44
48
|
* Learning Rate Scheduler
|
|
45
49
|
*/
|
|
@@ -336,22 +340,68 @@ export class TrainingPipeline {
|
|
|
336
340
|
return count > 0 ? totalLoss / count : 0;
|
|
337
341
|
}
|
|
338
342
|
/**
|
|
339
|
-
* Save checkpoint
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
+
* Save a checkpoint.
|
|
344
|
+
*
|
|
345
|
+
* Always records the checkpoint in the in-memory list (the behavior the
|
|
346
|
+
* training loop relies on). When `path` is given, additionally persists
|
|
347
|
+
* the checkpoint to disk as versioned JSON — before v2.5.7 this method
|
|
348
|
+
* was private, ignored any argument, and never wrote a file, so callers
|
|
349
|
+
* passing a path got `undefined` back and zero bytes on disk.
|
|
350
|
+
*
|
|
351
|
+
* @param path Optional file path; parent directories are created.
|
|
352
|
+
* @returns Where the checkpoint went — in-memory index, and file
|
|
353
|
+
* path + byte size when persisted.
|
|
354
|
+
*/
|
|
355
|
+
saveCheckpoint(path) {
|
|
356
|
+
const checkpoint = {
|
|
343
357
|
epoch: this.currentEpoch,
|
|
344
358
|
step: this.currentStep,
|
|
345
359
|
loss: this.metrics.avgLoss(100),
|
|
346
360
|
weights: this.adapter.toJSON(),
|
|
347
361
|
timestamp: Date.now(),
|
|
348
|
-
}
|
|
362
|
+
};
|
|
363
|
+
this.checkpoints.push(checkpoint);
|
|
364
|
+
const result = {
|
|
365
|
+
index: this.checkpoints.length - 1,
|
|
366
|
+
epoch: checkpoint.epoch,
|
|
367
|
+
step: checkpoint.step,
|
|
368
|
+
loss: checkpoint.loss,
|
|
369
|
+
};
|
|
370
|
+
if (path) {
|
|
371
|
+
const envelope = {
|
|
372
|
+
format: 'ruvllm-checkpoint',
|
|
373
|
+
version: CHECKPOINT_FORMAT_VERSION,
|
|
374
|
+
...checkpoint,
|
|
375
|
+
};
|
|
376
|
+
const serialized = JSON.stringify(envelope);
|
|
377
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
378
|
+
writeFileSync(path, serialized, 'utf-8');
|
|
379
|
+
result.path = path;
|
|
380
|
+
result.bytes = Buffer.byteLength(serialized, 'utf-8');
|
|
381
|
+
}
|
|
382
|
+
return result;
|
|
349
383
|
}
|
|
350
384
|
/**
|
|
351
|
-
* Load checkpoint
|
|
385
|
+
* Load a checkpoint — by in-memory index, or from a file previously
|
|
386
|
+
* written by `saveCheckpoint(path)`.
|
|
352
387
|
*/
|
|
353
|
-
loadCheckpoint(
|
|
354
|
-
|
|
388
|
+
loadCheckpoint(indexOrPath) {
|
|
389
|
+
let checkpoint;
|
|
390
|
+
if (typeof indexOrPath === 'number') {
|
|
391
|
+
checkpoint = this.checkpoints[indexOrPath];
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
try {
|
|
395
|
+
const parsed = JSON.parse(readFileSync(indexOrPath, 'utf-8'));
|
|
396
|
+
if (parsed?.format !== 'ruvllm-checkpoint' || typeof parsed.weights !== 'string') {
|
|
397
|
+
return false;
|
|
398
|
+
}
|
|
399
|
+
checkpoint = parsed;
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
355
405
|
if (!checkpoint)
|
|
356
406
|
return false;
|
|
357
407
|
this.adapter = LoraAdapter.fromJSON(checkpoint.weights);
|
|
@@ -470,4 +520,4 @@ export class TrainingFactory {
|
|
|
470
520
|
});
|
|
471
521
|
}
|
|
472
522
|
}
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW5pbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhaW5pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBR0gsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBNkI7SUFDeEQsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLEVBQUU7SUFDYixNQUFNLEVBQUUsRUFBRTtJQUNWLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFdBQVcsRUFBRSxHQUFHO0lBQ2hCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFlBQVksRUFBRSxHQUFHO0lBQ2pCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsa0JBQWtCLEVBQUUsQ0FBQztJQUNyQixTQUFTLEVBQUUsSUFBSTtJQUNmLGVBQWUsRUFBRSxHQUFHO0NBQ3JCLENBQUM7QUFvREY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQU10QixZQUFZLE1BQWdDLEVBQUUsVUFBa0I7UUFIeEQsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFJOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDOUIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUV4QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRW5FLEtBQUssUUFBUTtnQkFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBRTdGLEtBQUssUUFBUTtnQkFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDL0MsT0FBTyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDO2dCQUNELDRCQUE0QjtnQkFDNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDN0QsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsVUFBVSxDQUFDO2dCQUNoRixPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBRXhFO2dCQUNFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNVLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQzNCLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBQy9CLGNBQVMsR0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0IsY0FBUyxHQUFhLEVBQUUsQ0FBQztJQXFHbkMsQ0FBQztJQW5HQzs7T0FFRztJQUNILFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFZLEdBQUc7UUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLElBQVksRUFBRTtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakgsT0FBTyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLGNBQXNCO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN0RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsWUFBWSxNQUF1QixFQUFFLE9BQXFCO1FBUmxELGNBQVMsR0FBdUIsSUFBSSxDQUFDO1FBQ3JDLFlBQU8sR0FBb0IsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUN4QixnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUMvQixvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUdsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLElBQUksV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsTUFBbUIsRUFBRSxPQUFvQixFQUFFLFNBQW1CO1FBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFxRTtRQUMzRSxxQkFBcUI7UUFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FDWCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUN2QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUN4QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUMxQixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztRQUV6QixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUUxQixrQkFBa0I7WUFDbEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRTlDLHVCQUF1QjtZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNqRixNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXJELGlCQUFpQjtZQUNqQixLQUFLLE1BQU0sS0FBSyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDO1lBRUQsYUFBYTtZQUNiLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXBDLGlCQUFpQjtnQkFDakIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztvQkFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7d0JBQzlELFlBQVksR0FBRyxJQUFJLENBQUM7d0JBQ3BCLE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELGFBQWE7WUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFM0IsMkNBQTJDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1RCxPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQztZQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNwQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ25DLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUMxQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUNoRCxZQUFZO1NBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVMsQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUUvRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVuQyxlQUFlO1lBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0MseUNBQXlDO1lBQ3pDLE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztZQUNoQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7WUFDbkUsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBRXhDLGtCQUFrQjtZQUNsQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDL0UsSUFBSSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFFM0IsZ0JBQWdCO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFN0MsU0FBUyxJQUFJLElBQUksQ0FBQztRQUNwQixDQUFDO1FBRUQsT0FBTyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssUUFBUSxDQUFDLE9BQXdCO1FBQ3ZDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFZCxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRWhDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUN2QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQzFDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixDQUFDO2dCQUNELFNBQVMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDbEMsS0FBSyxFQUFFLENBQUM7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztZQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUM5QixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsS0FBYTtRQUMxQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLE9BQU87WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7WUFDakUsUUFBUSxFQUFFLENBQUM7WUFDWCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUU7WUFDN0MsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUMxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDL0Q7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQjs7T0FFRztJQUNILE1BQU0sQ0FBQyxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQztZQUMxQixZQUFZLEVBQUUsSUFBSTtZQUNsQixNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMsRUFBRSxFQUFFO1lBQ2IsU0FBUyxFQUFFLFVBQVU7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFlBQVk7UUFDakIsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1lBQzFCLFlBQVksRUFBRSxLQUFLO1lBQ25CLE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFLEVBQUU7WUFDYixTQUFTLEVBQUUsUUFBUTtZQUNuQixXQUFXLEVBQUUsR0FBRztZQUNoQixxQkFBcUIsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFvQixJQUFJO1FBQy9DLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQztZQUMxQixZQUFZLEVBQUUsTUFBTTtZQUNwQixNQUFNLEVBQUUsRUFBRTtZQUNWLFNBQVMsRUFBRSxFQUFFO1lBQ2IsU0FBUyxFQUFFLFFBQVE7WUFDbkIsU0FBUztZQUNULHFCQUFxQixFQUFFLEVBQUU7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQjtRQUN6QixPQUFPLElBQUksZ0JBQWdCLENBQUM7WUFDMUIsWUFBWSxFQUFFLE1BQU07WUFDcEIsTUFBTSxFQUFFLENBQUM7WUFDVCxTQUFTLEVBQUUsRUFBRTtZQUNiLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUcmFpbmluZyBQaXBlbGluZSBmb3IgU09OQVxyXG4gKlxyXG4gKiBDb21wcmVoZW5zaXZlIHRyYWluaW5nIGluZnJhc3RydWN0dXJlIHdpdGggbWV0cmljcyB0cmFja2luZyxcclxuICogbGVhcm5pbmcgcmF0ZSBzY2hlZHVsaW5nLCBhbmQgY2hlY2twb2ludCBtYW5hZ2VtZW50LlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGltcG9ydCB7IFRyYWluaW5nUGlwZWxpbmUsIFRyYWluaW5nQ29uZmlnIH0gZnJvbSAnQHJ1dmVjdG9yL3J1dmxsbSc7XHJcbiAqXHJcbiAqIGNvbnN0IHBpcGVsaW5lID0gbmV3IFRyYWluaW5nUGlwZWxpbmUoe1xyXG4gKiAgIGxlYXJuaW5nUmF0ZTogMC4wMDEsXHJcbiAqICAgYmF0Y2hTaXplOiAzMixcclxuICogICBlcG9jaHM6IDEwLFxyXG4gKiB9KTtcclxuICpcclxuICogLy8gQWRkIHRyYWluaW5nIGRhdGFcclxuICogcGlwZWxpbmUuYWRkQmF0Y2goaW5wdXRzLCB0YXJnZXRzLCBxdWFsaXRpZXMpO1xyXG4gKlxyXG4gKiAvLyBSdW4gdHJhaW5pbmdcclxuICogY29uc3QgcmVzdWx0ID0gcGlwZWxpbmUudHJhaW4oKTtcclxuICogY29uc29sZS5sb2coYEZpbmFsIGxvc3M6ICR7cmVzdWx0LmZpbmFsTG9zc31gKTtcclxuICogYGBgXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgRW1iZWRkaW5nLCBUcmFpbmluZ0NvbmZpZywgVHJhaW5pbmdSZXN1bHQgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgTG9yYUFkYXB0ZXIgfSBmcm9tICcuL2xvcmEnO1xyXG5pbXBvcnQgeyBFd2NNYW5hZ2VyIH0gZnJvbSAnLi9zb25hJztcclxuXHJcbi8qKlxyXG4gKiBEZWZhdWx0IHRyYWluaW5nIGNvbmZpZ1xyXG4gKi9cclxuY29uc3QgREVGQVVMVF9UUkFJTklOR19DT05GSUc6IFJlcXVpcmVkPFRyYWluaW5nQ29uZmlnPiA9IHtcclxuICBsZWFybmluZ1JhdGU6IDAuMDAxLFxyXG4gIGJhdGNoU2l6ZTogMzIsXHJcbiAgZXBvY2hzOiAxMCxcclxuICBzY2hlZHVsZXI6ICdjb3NpbmUnLFxyXG4gIHdhcm11cFN0ZXBzOiAxMDAsXHJcbiAgd2VpZ2h0RGVjYXk6IDAuMDEsXHJcbiAgZ3JhZGllbnRDbGlwOiAxLjAsXHJcbiAgZWFybHlTdG9wcGluZ1BhdGllbmNlOiAzLFxyXG4gIGNoZWNrcG9pbnRJbnRlcnZhbDogMSxcclxuICBld2NMYW1iZGE6IDIwMDAsXHJcbiAgdmFsaWRhdGlvblNwbGl0OiAwLjEsXHJcbn07XHJcblxyXG4vKipcclxuICogVHJhaW5pbmcgbWV0cmljc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ01ldHJpY3Mge1xyXG4gIC8qKiBDdXJyZW50IGVwb2NoICovXHJcbiAgZXBvY2g6IG51bWJlcjtcclxuICAvKiogQ3VycmVudCBzdGVwICovXHJcbiAgc3RlcDogbnVtYmVyO1xyXG4gIC8qKiBUcmFpbmluZyBsb3NzICovXHJcbiAgdHJhaW5Mb3NzOiBudW1iZXI7XHJcbiAgLyoqIFZhbGlkYXRpb24gbG9zcyAqL1xyXG4gIHZhbExvc3M6IG51bWJlcjtcclxuICAvKiogTGVhcm5pbmcgcmF0ZSAqL1xyXG4gIGxlYXJuaW5nUmF0ZTogbnVtYmVyO1xyXG4gIC8qKiBHcmFkaWVudCBub3JtICovXHJcbiAgZ3JhZE5vcm06IG51bWJlcjtcclxuICAvKiogU3RlcHMgcGVyIHNlY29uZCAqL1xyXG4gIHN0ZXBzUGVyU2Vjb25kOiBudW1iZXI7XHJcbiAgLyoqIEVUQSBpbiBzZWNvbmRzICovXHJcbiAgZXRhU2Vjb25kczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogVHJhaW5pbmcgZGF0YSBiYXRjaFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ0JhdGNoIHtcclxuICAvKiogSW5wdXQgZW1iZWRkaW5ncyAqL1xyXG4gIGlucHV0czogRW1iZWRkaW5nW107XHJcbiAgLyoqIFRhcmdldCBvdXRwdXRzICovXHJcbiAgdGFyZ2V0czogRW1iZWRkaW5nW107XHJcbiAgLyoqIFF1YWxpdHkgc2NvcmVzICovXHJcbiAgcXVhbGl0aWVzOiBudW1iZXJbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrcG9pbnQgZGF0YVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGVja3BvaW50IHtcclxuICAvKiogRXBvY2ggbnVtYmVyICovXHJcbiAgZXBvY2g6IG51bWJlcjtcclxuICAvKiogU3RlcCBudW1iZXIgKi9cclxuICBzdGVwOiBudW1iZXI7XHJcbiAgLyoqIFRyYWluaW5nIGxvc3MgYXQgY2hlY2twb2ludCAqL1xyXG4gIGxvc3M6IG51bWJlcjtcclxuICAvKiogTW9kZWwgd2VpZ2h0cyAoc2VyaWFsaXplZCkgKi9cclxuICB3ZWlnaHRzOiBzdHJpbmc7XHJcbiAgLyoqIFRpbWVzdGFtcCAqL1xyXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogTGVhcm5pbmcgUmF0ZSBTY2hlZHVsZXJcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMUlNjaGVkdWxlciB7XHJcbiAgcHJpdmF0ZSBjb25maWc6IFJlcXVpcmVkPFRyYWluaW5nQ29uZmlnPjtcclxuICBwcml2YXRlIGluaXRpYWxMUjogbnVtYmVyO1xyXG4gIHByaXZhdGUgY3VycmVudFN0ZXA6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSB0b3RhbFN0ZXBzOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUmVxdWlyZWQ8VHJhaW5pbmdDb25maWc+LCB0b3RhbFN0ZXBzOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xyXG4gICAgdGhpcy5pbml0aWFsTFIgPSBjb25maWcubGVhcm5pbmdSYXRlO1xyXG4gICAgdGhpcy50b3RhbFN0ZXBzID0gdG90YWxTdGVwcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBsZWFybmluZyByYXRlIGZvciBjdXJyZW50IHN0ZXBcclxuICAgKi9cclxuICBnZXRMUigpOiBudW1iZXIge1xyXG4gICAgc3dpdGNoICh0aGlzLmNvbmZpZy5zY2hlZHVsZXIpIHtcclxuICAgICAgY2FzZSAnY29uc3RhbnQnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUjtcclxuXHJcbiAgICAgIGNhc2UgJ2xpbmVhcic6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbExSICogKDEgLSB0aGlzLmN1cnJlbnRTdGVwIC8gdGhpcy50b3RhbFN0ZXBzKTtcclxuXHJcbiAgICAgIGNhc2UgJ2Nvc2luZSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbExSICogMC41ICogKDEgKyBNYXRoLmNvcyhNYXRoLlBJICogdGhpcy5jdXJyZW50U3RlcCAvIHRoaXMudG90YWxTdGVwcykpO1xyXG5cclxuICAgICAgY2FzZSAnd2FybXVwJzpcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50U3RlcCA8IHRoaXMuY29uZmlnLndhcm11cFN0ZXBzKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTFIgKiAodGhpcy5jdXJyZW50U3RlcCAvIHRoaXMuY29uZmlnLndhcm11cFN0ZXBzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQ29zaW5lIGRlY2F5IGFmdGVyIHdhcm11cFxyXG4gICAgICAgIGNvbnN0IGRlY2F5U3RlcHMgPSB0aGlzLnRvdGFsU3RlcHMgLSB0aGlzLmNvbmZpZy53YXJtdXBTdGVwcztcclxuICAgICAgICBjb25zdCBkZWNheVByb2dyZXNzID0gKHRoaXMuY3VycmVudFN0ZXAgLSB0aGlzLmNvbmZpZy53YXJtdXBTdGVwcykgLyBkZWNheVN0ZXBzO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqIDAuNSAqICgxICsgTWF0aC5jb3MoTWF0aC5QSSAqIGRlY2F5UHJvZ3Jlc3MpKTtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbExSO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RlcCB0aGUgc2NoZWR1bGVyXHJcbiAgICovXHJcbiAgc3RlcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFN0ZXArKztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHNjaGVkdWxlclxyXG4gICAqL1xyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVHJhaW5pbmcgTWV0cmljcyBUcmFja2VyXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTWV0cmljc1RyYWNrZXIge1xyXG4gIHByaXZhdGUgbG9zc0hpc3Rvcnk6IG51bWJlcltdID0gW107XHJcbiAgcHJpdmF0ZSB2YWxMb3NzSGlzdG9yeTogbnVtYmVyW10gPSBbXTtcclxuICBwcml2YXRlIGdyYWROb3JtSGlzdG9yeTogbnVtYmVyW10gPSBbXTtcclxuICBwcml2YXRlIHN0YXJ0VGltZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcclxuICBwcml2YXRlIHN0ZXBUaW1lczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVjb3JkIHRyYWluaW5nIGxvc3NcclxuICAgKi9cclxuICByZWNvcmRMb3NzKGxvc3M6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5sb3NzSGlzdG9yeS5wdXNoKGxvc3MpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVjb3JkIHZhbGlkYXRpb24gbG9zc1xyXG4gICAqL1xyXG4gIHJlY29yZFZhbExvc3MobG9zczogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbExvc3NIaXN0b3J5LnB1c2gobG9zcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWNvcmQgZ3JhZGllbnQgbm9ybVxyXG4gICAqL1xyXG4gIHJlY29yZEdyYWROb3JtKG5vcm06IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5ncmFkTm9ybUhpc3RvcnkucHVzaChub3JtKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlY29yZCBzdGVwIHRpbWVcclxuICAgKi9cclxuICByZWNvcmRTdGVwVGltZShtczogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0ZXBUaW1lcy5wdXNoKG1zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhdmVyYWdlIGxvc3Mgb3ZlciBsYXN0IE4gc3RlcHNcclxuICAgKi9cclxuICBhdmdMb3NzKG46IG51bWJlciA9IDEwMCk6IG51bWJlciB7XHJcbiAgICBjb25zdCByZWNlbnQgPSB0aGlzLmxvc3NIaXN0b3J5LnNsaWNlKC1uKTtcclxuICAgIHJldHVybiByZWNlbnQubGVuZ3RoID4gMCA/IHJlY2VudC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIHJlY2VudC5sZW5ndGggOiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGF2ZXJhZ2UgdmFsaWRhdGlvbiBsb3NzXHJcbiAgICovXHJcbiAgYXZnVmFsTG9zcyhuOiBudW1iZXIgPSAxMCk6IG51bWJlciB7XHJcbiAgICBjb25zdCByZWNlbnQgPSB0aGlzLnZhbExvc3NIaXN0b3J5LnNsaWNlKC1uKTtcclxuICAgIHJldHVybiByZWNlbnQubGVuZ3RoID4gMCA/IHJlY2VudC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIHJlY2VudC5sZW5ndGggOiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHN0ZXBzIHBlciBzZWNvbmRcclxuICAgKi9cclxuICBzdGVwc1BlclNlY29uZCgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuc3RlcFRpbWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBhdmdTdGVwVGltZSA9IHRoaXMuc3RlcFRpbWVzLnNsaWNlKC0xMDApLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gTWF0aC5taW4odGhpcy5zdGVwVGltZXMubGVuZ3RoLCAxMDApO1xyXG4gICAgcmV0dXJuIGF2Z1N0ZXBUaW1lID4gMCA/IDEwMDAgLyBhdmdTdGVwVGltZSA6IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgRVRBIGluIHNlY29uZHNcclxuICAgKi9cclxuICBldGEocmVtYWluaW5nU3RlcHM6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBjb25zdCBzcHMgPSB0aGlzLnN0ZXBzUGVyU2Vjb25kKCk7XHJcbiAgICByZXR1cm4gc3BzID4gMCA/IHJlbWFpbmluZ1N0ZXBzIC8gc3BzIDogMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBiZXN0IHZhbGlkYXRpb24gbG9zc1xyXG4gICAqL1xyXG4gIGJlc3RWYWxMb3NzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxMb3NzSGlzdG9yeS5sZW5ndGggPiAwID8gTWF0aC5taW4oLi4udGhpcy52YWxMb3NzSGlzdG9yeSkgOiBJbmZpbml0eTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0b3RhbCBkdXJhdGlvblxyXG4gICAqL1xyXG4gIGR1cmF0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFsbCBsb3NzIGhpc3RvcnlcclxuICAgKi9cclxuICBnZXRMb3NzSGlzdG9yeSgpOiBudW1iZXJbXSB7XHJcbiAgICByZXR1cm4gWy4uLnRoaXMubG9zc0hpc3RvcnldO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFsbCB2YWxpZGF0aW9uIGxvc3MgaGlzdG9yeVxyXG4gICAqL1xyXG4gIGdldFZhbExvc3NIaXN0b3J5KCk6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBbLi4udGhpcy52YWxMb3NzSGlzdG9yeV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCB0cmFja2VyXHJcbiAgICovXHJcbiAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvc3NIaXN0b3J5ID0gW107XHJcbiAgICB0aGlzLnZhbExvc3NIaXN0b3J5ID0gW107XHJcbiAgICB0aGlzLmdyYWROb3JtSGlzdG9yeSA9IFtdO1xyXG4gICAgdGhpcy5zdGVwVGltZXMgPSBbXTtcclxuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmFpbmluZyBQaXBlbGluZVxyXG4gKlxyXG4gKiBGdWxsIHRyYWluaW5nIGluZnJhc3RydWN0dXJlIGZvciBTT05BIG1vZGVscy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBUcmFpbmluZ1BpcGVsaW5lIHtcclxuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8VHJhaW5pbmdDb25maWc+O1xyXG4gIHByaXZhdGUgYWRhcHRlcjogTG9yYUFkYXB0ZXI7XHJcbiAgcHJpdmF0ZSBld2NNYW5hZ2VyOiBFd2NNYW5hZ2VyO1xyXG4gIHByaXZhdGUgbWV0cmljczogTWV0cmljc1RyYWNrZXI7XHJcbiAgcHJpdmF0ZSBzY2hlZHVsZXI6IExSU2NoZWR1bGVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBiYXRjaGVzOiBUcmFpbmluZ0JhdGNoW10gPSBbXTtcclxuICBwcml2YXRlIGNoZWNrcG9pbnRzOiBDaGVja3BvaW50W10gPSBbXTtcclxuICBwcml2YXRlIGN1cnJlbnRFcG9jaDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGN1cnJlbnRTdGVwOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgYmVzdFZhbExvc3M6IG51bWJlciA9IEluZmluaXR5O1xyXG4gIHByaXZhdGUgcGF0aWVuY2VDb3VudGVyOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc/OiBUcmFpbmluZ0NvbmZpZywgYWRhcHRlcj86IExvcmFBZGFwdGVyKSB7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9UUkFJTklOR19DT05GSUcsIC4uLmNvbmZpZyB9O1xyXG4gICAgdGhpcy5hZGFwdGVyID0gYWRhcHRlciB8fCBuZXcgTG9yYUFkYXB0ZXIoeyByYW5rOiA4IH0pO1xyXG4gICAgdGhpcy5ld2NNYW5hZ2VyID0gbmV3IEV3Y01hbmFnZXIodGhpcy5jb25maWcuZXdjTGFtYmRhKTtcclxuICAgIHRoaXMubWV0cmljcyA9IG5ldyBNZXRyaWNzVHJhY2tlcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIHRyYWluaW5nIGJhdGNoXHJcbiAgICovXHJcbiAgYWRkQmF0Y2goaW5wdXRzOiBFbWJlZGRpbmdbXSwgdGFyZ2V0czogRW1iZWRkaW5nW10sIHF1YWxpdGllczogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMuYmF0Y2hlcy5wdXNoKHsgaW5wdXRzLCB0YXJnZXRzLCBxdWFsaXRpZXMgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdHJhaW5pbmcgZGF0YVxyXG4gICAqL1xyXG4gIGFkZERhdGEoZGF0YTogQXJyYXk8eyBpbnB1dDogRW1iZWRkaW5nOyB0YXJnZXQ6IEVtYmVkZGluZzsgcXVhbGl0eTogbnVtYmVyIH0+KTogdm9pZCB7XHJcbiAgICAvLyBHcm91cCBpbnRvIGJhdGNoZXNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gdGhpcy5jb25maWcuYmF0Y2hTaXplKSB7XHJcbiAgICAgIGNvbnN0IGJhdGNoID0gZGF0YS5zbGljZShpLCBpICsgdGhpcy5jb25maWcuYmF0Y2hTaXplKTtcclxuICAgICAgdGhpcy5hZGRCYXRjaChcclxuICAgICAgICBiYXRjaC5tYXAoZCA9PiBkLmlucHV0KSxcclxuICAgICAgICBiYXRjaC5tYXAoZCA9PiBkLnRhcmdldCksXHJcbiAgICAgICAgYmF0Y2gubWFwKGQgPT4gZC5xdWFsaXR5KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUnVuIHRyYWluaW5nXHJcbiAgICovXHJcbiAgdHJhaW4oKTogVHJhaW5pbmdSZXN1bHQge1xyXG4gICAgY29uc3QgdG90YWxTdGVwcyA9IHRoaXMuYmF0Y2hlcy5sZW5ndGggKiB0aGlzLmNvbmZpZy5lcG9jaHM7XHJcbiAgICB0aGlzLnNjaGVkdWxlciA9IG5ldyBMUlNjaGVkdWxlcih0aGlzLmNvbmZpZywgdG90YWxTdGVwcyk7XHJcbiAgICB0aGlzLm1ldHJpY3MucmVzZXQoKTtcclxuICAgIHRoaXMuYWRhcHRlci5zdGFydFRyYWluaW5nKHRoaXMuY29uZmlnLmxlYXJuaW5nUmF0ZSk7XHJcblxyXG4gICAgbGV0IGVhcmx5U3RvcHBlZCA9IGZhbHNlO1xyXG5cclxuICAgIGZvciAobGV0IGVwb2NoID0gMDsgZXBvY2ggPCB0aGlzLmNvbmZpZy5lcG9jaHM7IGVwb2NoKyspIHtcclxuICAgICAgdGhpcy5jdXJyZW50RXBvY2ggPSBlcG9jaDtcclxuXHJcbiAgICAgIC8vIFNodWZmbGUgYmF0Y2hlc1xyXG4gICAgICBjb25zdCBzaHVmZmxlZEJhdGNoZXMgPSB0aGlzLnNodWZmbGVCYXRjaGVzKCk7XHJcblxyXG4gICAgICAvLyBTcGxpdCBpbnRvIHRyYWluL3ZhbFxyXG4gICAgICBjb25zdCB2YWxTaXplID0gTWF0aC5mbG9vcihzaHVmZmxlZEJhdGNoZXMubGVuZ3RoICogdGhpcy5jb25maWcudmFsaWRhdGlvblNwbGl0KTtcclxuICAgICAgY29uc3QgdHJhaW5CYXRjaGVzID0gc2h1ZmZsZWRCYXRjaGVzLnNsaWNlKHZhbFNpemUpO1xyXG4gICAgICBjb25zdCB2YWxCYXRjaGVzID0gc2h1ZmZsZWRCYXRjaGVzLnNsaWNlKDAsIHZhbFNpemUpO1xyXG5cclxuICAgICAgLy8gVHJhaW5pbmcgZXBvY2hcclxuICAgICAgZm9yIChjb25zdCBiYXRjaCBvZiB0cmFpbkJhdGNoZXMpIHtcclxuICAgICAgICBjb25zdCBzdGVwU3RhcnQgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IGxvc3MgPSB0aGlzLnRyYWluU3RlcChiYXRjaCk7XHJcbiAgICAgICAgdGhpcy5tZXRyaWNzLnJlY29yZExvc3MobG9zcyk7XHJcbiAgICAgICAgdGhpcy5tZXRyaWNzLnJlY29yZFN0ZXBUaW1lKERhdGUubm93KCkgLSBzdGVwU3RhcnQpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVyLnN0ZXAoKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwKys7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFZhbGlkYXRpb25cclxuICAgICAgaWYgKHZhbEJhdGNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHZhbExvc3MgPSB0aGlzLnZhbGlkYXRlKHZhbEJhdGNoZXMpO1xyXG4gICAgICAgIHRoaXMubWV0cmljcy5yZWNvcmRWYWxMb3NzKHZhbExvc3MpO1xyXG5cclxuICAgICAgICAvLyBFYXJseSBzdG9wcGluZ1xyXG4gICAgICAgIGlmICh2YWxMb3NzIDwgdGhpcy5iZXN0VmFsTG9zcykge1xyXG4gICAgICAgICAgdGhpcy5iZXN0VmFsTG9zcyA9IHZhbExvc3M7XHJcbiAgICAgICAgICB0aGlzLnBhdGllbmNlQ291bnRlciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucGF0aWVuY2VDb3VudGVyKys7XHJcbiAgICAgICAgICBpZiAodGhpcy5wYXRpZW5jZUNvdW50ZXIgPj0gdGhpcy5jb25maWcuZWFybHlTdG9wcGluZ1BhdGllbmNlKSB7XHJcbiAgICAgICAgICAgIGVhcmx5U3RvcHBlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2hlY2twb2ludFxyXG4gICAgICBpZiAoKGVwb2NoICsgMSkgJSB0aGlzLmNvbmZpZy5jaGVja3BvaW50SW50ZXJ2YWwgPT09IDApIHtcclxuICAgICAgICB0aGlzLnNhdmVDaGVja3BvaW50KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFkYXB0ZXIuZW5kVHJhaW5pbmcoKTtcclxuXHJcbiAgICAvLyBSZWdpc3RlciB3aXRoIEVXQyBmb3IgY29udGludWFsIGxlYXJuaW5nXHJcbiAgICBjb25zdCB3ZWlnaHRzID0gdGhpcy5hZGFwdGVyLm1lcmdlKCkuZmxhdCgpO1xyXG4gICAgdGhpcy5ld2NNYW5hZ2VyLnJlZ2lzdGVyVGFzayhgdGFzay0ke0RhdGUubm93KCl9YCwgd2VpZ2h0cyk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXBvY2hzOiB0aGlzLmN1cnJlbnRFcG9jaCArIDEsXHJcbiAgICAgIHN0ZXBzOiB0aGlzLmN1cnJlbnRTdGVwLFxyXG4gICAgICBmaW5hbExvc3M6IHRoaXMubWV0cmljcy5hdmdMb3NzKDEwMCksXHJcbiAgICAgIGJlc3RWYWxMb3NzOiB0aGlzLmJlc3RWYWxMb3NzLFxyXG4gICAgICBkdXJhdGlvbk1zOiB0aGlzLm1ldHJpY3MuZHVyYXRpb24oKSxcclxuICAgICAgbG9zc0hpc3Rvcnk6IHRoaXMubWV0cmljcy5nZXRMb3NzSGlzdG9yeSgpLFxyXG4gICAgICB2YWxMb3NzSGlzdG9yeTogdGhpcy5tZXRyaWNzLmdldFZhbExvc3NIaXN0b3J5KCksXHJcbiAgICAgIGVhcmx5U3RvcHBlZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaW5nbGUgdHJhaW5pbmcgc3RlcFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdHJhaW5TdGVwKGJhdGNoOiBUcmFpbmluZ0JhdGNoKTogbnVtYmVyIHtcclxuICAgIGxldCB0b3RhbExvc3MgPSAwO1xyXG4gICAgY29uc3QgbHIgPSB0aGlzLnNjaGVkdWxlcj8uZ2V0TFIoKSB8fCB0aGlzLmNvbmZpZy5sZWFybmluZ1JhdGU7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiYXRjaC5pbnB1dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgaW5wdXQgPSBiYXRjaC5pbnB1dHNbaV07XHJcbiAgICAgIGNvbnN0IHRhcmdldCA9IGJhdGNoLnRhcmdldHNbaV07XHJcbiAgICAgIGNvbnN0IHF1YWxpdHkgPSBiYXRjaC5xdWFsaXRpZXNbaV07XHJcblxyXG4gICAgICAvLyBGb3J3YXJkIHBhc3NcclxuICAgICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5hZGFwdGVyLmZvcndhcmQoaW5wdXQpO1xyXG5cclxuICAgICAgLy8gQ29tcHV0ZSBsb3NzIChNU0Ugd2VpZ2h0ZWQgYnkgcXVhbGl0eSlcclxuICAgICAgY29uc3QgZ3JhZE91dHB1dDogbnVtYmVyW10gPSBbXTtcclxuICAgICAgbGV0IGxvc3MgPSAwO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG91dHB1dC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGNvbnN0IGRpZmYgPSBvdXRwdXRbal0gLSAodGFyZ2V0W2pdIHx8IDApO1xyXG4gICAgICAgIGxvc3MgKz0gZGlmZiAqIGRpZmY7XHJcbiAgICAgICAgZ3JhZE91dHB1dC5wdXNoKDIgKiBkaWZmICogcXVhbGl0eSk7IC8vIFF1YWxpdHktd2VpZ2h0ZWQgZ3JhZGllbnRcclxuICAgICAgfVxyXG4gICAgICBsb3NzID0gKGxvc3MgLyBvdXRwdXQubGVuZ3RoKSAqIHF1YWxpdHk7XHJcblxyXG4gICAgICAvLyBBZGQgRVdDIHBlbmFsdHlcclxuICAgICAgY29uc3QgZXdjUGVuYWx0eSA9IHRoaXMuZXdjTWFuYWdlci5jb21wdXRlUGVuYWx0eSh0aGlzLmFkYXB0ZXIubWVyZ2UoKS5mbGF0KCkpO1xyXG4gICAgICBsb3NzICs9IGV3Y1BlbmFsdHkgKiAwLjAwMTtcclxuXHJcbiAgICAgIC8vIEJhY2t3YXJkIHBhc3NcclxuICAgICAgdGhpcy5hZGFwdGVyLmJhY2t3YXJkKGlucHV0LCBncmFkT3V0cHV0LCBscik7XHJcblxyXG4gICAgICB0b3RhbExvc3MgKz0gbG9zcztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG90YWxMb3NzIC8gYmF0Y2guaW5wdXRzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRpb24gcGFzc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdmFsaWRhdGUoYmF0Y2hlczogVHJhaW5pbmdCYXRjaFtdKTogbnVtYmVyIHtcclxuICAgIGxldCB0b3RhbExvc3MgPSAwO1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiYXRjaC5pbnB1dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBvdXRwdXQgPSB0aGlzLmFkYXB0ZXIuZm9yd2FyZChiYXRjaC5pbnB1dHNbaV0pO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGJhdGNoLnRhcmdldHNbaV07XHJcblxyXG4gICAgICAgIGxldCBsb3NzID0gMDtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG91dHB1dC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgY29uc3QgZGlmZiA9IG91dHB1dFtqXSAtICh0YXJnZXRbal0gfHwgMCk7XHJcbiAgICAgICAgICBsb3NzICs9IGRpZmYgKiBkaWZmO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0b3RhbExvc3MgKz0gbG9zcyAvIG91dHB1dC5sZW5ndGg7XHJcbiAgICAgICAgY291bnQrKztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb3VudCA+IDAgPyB0b3RhbExvc3MgLyBjb3VudCA6IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlIGNoZWNrcG9pbnRcclxuICAgKi9cclxuICBwcml2YXRlIHNhdmVDaGVja3BvaW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja3BvaW50cy5wdXNoKHtcclxuICAgICAgZXBvY2g6IHRoaXMuY3VycmVudEVwb2NoLFxyXG4gICAgICBzdGVwOiB0aGlzLmN1cnJlbnRTdGVwLFxyXG4gICAgICBsb3NzOiB0aGlzLm1ldHJpY3MuYXZnTG9zcygxMDApLFxyXG4gICAgICB3ZWlnaHRzOiB0aGlzLmFkYXB0ZXIudG9KU09OKCksXHJcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBjaGVja3BvaW50XHJcbiAgICovXHJcbiAgbG9hZENoZWNrcG9pbnQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hlY2twb2ludCA9IHRoaXMuY2hlY2twb2ludHNbaW5kZXhdO1xyXG4gICAgaWYgKCFjaGVja3BvaW50KSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5hZGFwdGVyID0gTG9yYUFkYXB0ZXIuZnJvbUpTT04oY2hlY2twb2ludC53ZWlnaHRzKTtcclxuICAgIHRoaXMuY3VycmVudEVwb2NoID0gY2hlY2twb2ludC5lcG9jaDtcclxuICAgIHRoaXMuY3VycmVudFN0ZXAgPSBjaGVja3BvaW50LnN0ZXA7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBjdXJyZW50IG1ldHJpY3NcclxuICAgKi9cclxuICBnZXRNZXRyaWNzKCk6IFRyYWluaW5nTWV0cmljcyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlcG9jaDogdGhpcy5jdXJyZW50RXBvY2gsXHJcbiAgICAgIHN0ZXA6IHRoaXMuY3VycmVudFN0ZXAsXHJcbiAgICAgIHRyYWluTG9zczogdGhpcy5tZXRyaWNzLmF2Z0xvc3MoMTAwKSxcclxuICAgICAgdmFsTG9zczogdGhpcy5tZXRyaWNzLmF2Z1ZhbExvc3MoMTApLFxyXG4gICAgICBsZWFybmluZ1JhdGU6IHRoaXMuc2NoZWR1bGVyPy5nZXRMUigpIHx8IHRoaXMuY29uZmlnLmxlYXJuaW5nUmF0ZSxcclxuICAgICAgZ3JhZE5vcm06IDAsXHJcbiAgICAgIHN0ZXBzUGVyU2Vjb25kOiB0aGlzLm1ldHJpY3Muc3RlcHNQZXJTZWNvbmQoKSxcclxuICAgICAgZXRhU2Vjb25kczogdGhpcy5tZXRyaWNzLmV0YShcclxuICAgICAgICAodGhpcy5jb25maWcuZXBvY2hzIC0gdGhpcy5jdXJyZW50RXBvY2gpICogdGhpcy5iYXRjaGVzLmxlbmd0aFxyXG4gICAgICApLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBhZGFwdGVyXHJcbiAgICovXHJcbiAgZ2V0QWRhcHRlcigpOiBMb3JhQWRhcHRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IEVXQyBtYW5hZ2VyXHJcbiAgICovXHJcbiAgZ2V0RXdjTWFuYWdlcigpOiBFd2NNYW5hZ2VyIHtcclxuICAgIHJldHVybiB0aGlzLmV3Y01hbmFnZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgY2hlY2twb2ludHNcclxuICAgKi9cclxuICBnZXRDaGVja3BvaW50cygpOiBDaGVja3BvaW50W10ge1xyXG4gICAgcmV0dXJuIFsuLi50aGlzLmNoZWNrcG9pbnRzXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHBpcGVsaW5lXHJcbiAgICovXHJcbiAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhdGNoZXMgPSBbXTtcclxuICAgIHRoaXMuY2hlY2twb2ludHMgPSBbXTtcclxuICAgIHRoaXMuY3VycmVudEVwb2NoID0gMDtcclxuICAgIHRoaXMuY3VycmVudFN0ZXAgPSAwO1xyXG4gICAgdGhpcy5iZXN0VmFsTG9zcyA9IEluZmluaXR5O1xyXG4gICAgdGhpcy5wYXRpZW5jZUNvdW50ZXIgPSAwO1xyXG4gICAgdGhpcy5tZXRyaWNzLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFkYXB0ZXIucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2h1ZmZsZUJhdGNoZXMoKTogVHJhaW5pbmdCYXRjaFtdIHtcclxuICAgIGNvbnN0IHNodWZmbGVkID0gWy4uLnRoaXMuYmF0Y2hlc107XHJcbiAgICBmb3IgKGxldCBpID0gc2h1ZmZsZWQubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XHJcbiAgICAgIFtzaHVmZmxlZFtpXSwgc2h1ZmZsZWRbal1dID0gW3NodWZmbGVkW2pdLCBzaHVmZmxlZFtpXV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2h1ZmZsZWQ7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVHJhaW5pbmcgRmFjdG9yeVxyXG4gKlxyXG4gKiBDcmVhdGUgcHJlLWNvbmZpZ3VyZWQgdHJhaW5pbmcgcGlwZWxpbmVzIGZvciBjb21tb24gc2NlbmFyaW9zLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRyYWluaW5nRmFjdG9yeSB7XHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBxdWljayBmaW5lLXR1bmluZ1xyXG4gICAqL1xyXG4gIHN0YXRpYyBxdWlja0ZpbmV0dW5lKCk6IFRyYWluaW5nUGlwZWxpbmUge1xyXG4gICAgcmV0dXJuIG5ldyBUcmFpbmluZ1BpcGVsaW5lKHtcclxuICAgICAgbGVhcm5pbmdSYXRlOiAwLjAxLFxyXG4gICAgICBlcG9jaHM6IDMsXHJcbiAgICAgIGJhdGNoU2l6ZTogMTYsXHJcbiAgICAgIHNjaGVkdWxlcjogJ2NvbnN0YW50JyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBkZWVwIHRyYWluaW5nXHJcbiAgICovXHJcbiAgc3RhdGljIGRlZXBUcmFpbmluZygpOiBUcmFpbmluZ1BpcGVsaW5lIHtcclxuICAgIHJldHVybiBuZXcgVHJhaW5pbmdQaXBlbGluZSh7XHJcbiAgICAgIGxlYXJuaW5nUmF0ZTogMC4wMDEsXHJcbiAgICAgIGVwb2NoczogNTAsXHJcbiAgICAgIGJhdGNoU2l6ZTogMzIsXHJcbiAgICAgIHNjaGVkdWxlcjogJ3dhcm11cCcsXHJcbiAgICAgIHdhcm11cFN0ZXBzOiA1MDAsXHJcbiAgICAgIGVhcmx5U3RvcHBpbmdQYXRpZW5jZTogNSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBjb250aW51YWwgbGVhcm5pbmdcclxuICAgKi9cclxuICBzdGF0aWMgY29udGludWFsTGVhcm5pbmcoZXdjTGFtYmRhOiBudW1iZXIgPSA1MDAwKTogVHJhaW5pbmdQaXBlbGluZSB7XHJcbiAgICByZXR1cm4gbmV3IFRyYWluaW5nUGlwZWxpbmUoe1xyXG4gICAgICBsZWFybmluZ1JhdGU6IDAuMDAwNSxcclxuICAgICAgZXBvY2hzOiAxMCxcclxuICAgICAgYmF0Y2hTaXplOiAxNixcclxuICAgICAgc2NoZWR1bGVyOiAnY29zaW5lJyxcclxuICAgICAgZXdjTGFtYmRhLFxyXG4gICAgICBlYXJseVN0b3BwaW5nUGF0aWVuY2U6IDEwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgcGlwZWxpbmUgZm9yIGZlZGVyYXRlZCBhZ2dyZWdhdGlvblxyXG4gICAqL1xyXG4gIHN0YXRpYyBmZWRlcmF0ZWRBZ2dyZWdhdGlvbigpOiBUcmFpbmluZ1BpcGVsaW5lIHtcclxuICAgIHJldHVybiBuZXcgVHJhaW5pbmdQaXBlbGluZSh7XHJcbiAgICAgIGxlYXJuaW5nUmF0ZTogMC4wMDAxLFxyXG4gICAgICBlcG9jaHM6IDUsXHJcbiAgICAgIGJhdGNoU2l6ZTogNjQsXHJcbiAgICAgIHNjaGVkdWxlcjogJ2xpbmVhcicsXHJcbiAgICAgIGV3Y0xhbWJkYTogMjAwMCxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
523
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW5pbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhaW5pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBNkI7SUFDeEQsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLEVBQUU7SUFDYixNQUFNLEVBQUUsRUFBRTtJQUNWLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFdBQVcsRUFBRSxHQUFHO0lBQ2hCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFlBQVksRUFBRSxHQUFHO0lBQ2pCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIsa0JBQWtCLEVBQUUsQ0FBQztJQUNyQixTQUFTLEVBQUUsSUFBSTtJQUNmLGVBQWUsRUFBRSxHQUFHO0NBQ3JCLENBQUM7QUFzRUYseUVBQXlFO0FBQ3pFLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFNdEIsWUFBWSxNQUFnQyxFQUFFLFVBQWtCO1FBSHhELGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBSTlCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsUUFBUSxJQUFJ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O1lBQ3BCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFLEVBQUU7WUFDYixTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTO1lBQ1QscUJBQXFCLEVBQUUsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CO1FBQ3pCLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQztZQUMxQixZQUFZLEVBQUUsTUFBTTtZQUNwQixNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMsRUFBRSxFQUFFO1lBQ2IsU0FBUyxFQUFFLFFBQVE7WUFDbkIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFpbmluZyBQaXBlbGluZSBmb3IgU09OQVxuICpcbiAqIENvbXByZWhlbnNpdmUgdHJhaW5pbmcgaW5mcmFzdHJ1Y3R1cmUgd2l0aCBtZXRyaWNzIHRyYWNraW5nLFxuICogbGVhcm5pbmcgcmF0ZSBzY2hlZHVsaW5nLCBhbmQgY2hlY2twb2ludCBtYW5hZ2VtZW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBUcmFpbmluZ1BpcGVsaW5lLCBUcmFpbmluZ0NvbmZpZyB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IHBpcGVsaW5lID0gbmV3IFRyYWluaW5nUGlwZWxpbmUoe1xuICogICBsZWFybmluZ1JhdGU6IDAuMDAxLFxuICogICBiYXRjaFNpemU6IDMyLFxuICogICBlcG9jaHM6IDEwLFxuICogfSk7XG4gKlxuICogLy8gQWRkIHRyYWluaW5nIGRhdGFcbiAqIHBpcGVsaW5lLmFkZEJhdGNoKGlucHV0cywgdGFyZ2V0cywgcXVhbGl0aWVzKTtcbiAqXG4gKiAvLyBSdW4gdHJhaW5pbmdcbiAqIGNvbnN0IHJlc3VsdCA9IHBpcGVsaW5lLnRyYWluKCk7XG4gKiBjb25zb2xlLmxvZyhgRmluYWwgbG9zczogJHtyZXN1bHQuZmluYWxMb3NzfWApO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgd3JpdGVGaWxlU3luYywgcmVhZEZpbGVTeW5jLCBta2RpclN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBFbWJlZGRpbmcsIFRyYWluaW5nQ29uZmlnLCBUcmFpbmluZ1Jlc3VsdCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTG9yYUFkYXB0ZXIgfSBmcm9tICcuL2xvcmEnO1xuaW1wb3J0IHsgRXdjTWFuYWdlciB9IGZyb20gJy4vc29uYSc7XG5cbi8qKlxuICogRGVmYXVsdCB0cmFpbmluZyBjb25maWdcbiAqL1xuY29uc3QgREVGQVVMVF9UUkFJTklOR19DT05GSUc6IFJlcXVpcmVkPFRyYWluaW5nQ29uZmlnPiA9IHtcbiAgbGVhcm5pbmdSYXRlOiAwLjAwMSxcbiAgYmF0Y2hTaXplOiAzMixcbiAgZXBvY2hzOiAxMCxcbiAgc2NoZWR1bGVyOiAnY29zaW5lJyxcbiAgd2FybXVwU3RlcHM6IDEwMCxcbiAgd2VpZ2h0RGVjYXk6IDAuMDEsXG4gIGdyYWRpZW50Q2xpcDogMS4wLFxuICBlYXJseVN0b3BwaW5nUGF0aWVuY2U6IDMsXG4gIGNoZWNrcG9pbnRJbnRlcnZhbDogMSxcbiAgZXdjTGFtYmRhOiAyMDAwLFxuICB2YWxpZGF0aW9uU3BsaXQ6IDAuMSxcbn07XG5cbi8qKlxuICogVHJhaW5pbmcgbWV0cmljc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nTWV0cmljcyB7XG4gIC8qKiBDdXJyZW50IGVwb2NoICovXG4gIGVwb2NoOiBudW1iZXI7XG4gIC8qKiBDdXJyZW50IHN0ZXAgKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogVHJhaW5pbmcgbG9zcyAqL1xuICB0cmFpbkxvc3M6IG51bWJlcjtcbiAgLyoqIFZhbGlkYXRpb24gbG9zcyAqL1xuICB2YWxMb3NzOiBudW1iZXI7XG4gIC8qKiBMZWFybmluZyByYXRlICovXG4gIGxlYXJuaW5nUmF0ZTogbnVtYmVyO1xuICAvKiogR3JhZGllbnQgbm9ybSAqL1xuICBncmFkTm9ybTogbnVtYmVyO1xuICAvKiogU3RlcHMgcGVyIHNlY29uZCAqL1xuICBzdGVwc1BlclNlY29uZDogbnVtYmVyO1xuICAvKiogRVRBIGluIHNlY29uZHMgKi9cbiAgZXRhU2Vjb25kczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRyYWluaW5nIGRhdGEgYmF0Y2hcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ0JhdGNoIHtcbiAgLyoqIElucHV0IGVtYmVkZGluZ3MgKi9cbiAgaW5wdXRzOiBFbWJlZGRpbmdbXTtcbiAgLyoqIFRhcmdldCBvdXRwdXRzICovXG4gIHRhcmdldHM6IEVtYmVkZGluZ1tdO1xuICAvKiogUXVhbGl0eSBzY29yZXMgKi9cbiAgcXVhbGl0aWVzOiBudW1iZXJbXTtcbn1cblxuLyoqXG4gKiBDaGVja3BvaW50IGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja3BvaW50IHtcbiAgLyoqIEVwb2NoIG51bWJlciAqL1xuICBlcG9jaDogbnVtYmVyO1xuICAvKiogU3RlcCBudW1iZXIgKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogVHJhaW5pbmcgbG9zcyBhdCBjaGVja3BvaW50ICovXG4gIGxvc3M6IG51bWJlcjtcbiAgLyoqIE1vZGVsIHdlaWdodHMgKHNlcmlhbGl6ZWQpICovXG4gIHdlaWdodHM6IHN0cmluZztcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBzYXZlQ2hlY2twb2ludCgpIGNhbGwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2twb2ludFNhdmVSZXN1bHQge1xuICAvKiogSW5kZXggb2YgdGhlIGNoZWNrcG9pbnQgaW4gdGhlIGluLW1lbW9yeSBjaGVja3BvaW50IGxpc3QgKi9cbiAgaW5kZXg6IG51bWJlcjtcbiAgLyoqIEVwb2NoIHRoZSBjaGVja3BvaW50IGNhcHR1cmVkICovXG4gIGVwb2NoOiBudW1iZXI7XG4gIC8qKiBTdGVwIHRoZSBjaGVja3BvaW50IGNhcHR1cmVkICovXG4gIHN0ZXA6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGxvc3MgYXQgY2hlY2twb2ludCB0aW1lICovXG4gIGxvc3M6IG51bWJlcjtcbiAgLyoqIEFic29sdXRlIG9yIGFzLWdpdmVuIGZpbGUgcGF0aCwgd2hlbiBwZXJzaXN0ZWQgdG8gZGlzayAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKiogU2VyaWFsaXplZCBzaXplIGluIGJ5dGVzLCB3aGVuIHBlcnNpc3RlZCB0byBkaXNrICovXG4gIGJ5dGVzPzogbnVtYmVyO1xufVxuXG4vKiogT24tZGlzayBjaGVja3BvaW50IGVudmVsb3BlICh2ZXJzaW9uZWQgZm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eSkuICovXG5jb25zdCBDSEVDS1BPSU5UX0ZPUk1BVF9WRVJTSU9OID0gMTtcblxuLyoqXG4gKiBMZWFybmluZyBSYXRlIFNjaGVkdWxlclxuICovXG5leHBvcnQgY2xhc3MgTFJTY2hlZHVsZXIge1xuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8VHJhaW5pbmdDb25maWc+O1xuICBwcml2YXRlIGluaXRpYWxMUjogbnVtYmVyO1xuICBwcml2YXRlIGN1cnJlbnRTdGVwOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIHRvdGFsU3RlcHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlcXVpcmVkPFRyYWluaW5nQ29uZmlnPiwgdG90YWxTdGVwczogbnVtYmVyKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0aWFsTFIgPSBjb25maWcubGVhcm5pbmdSYXRlO1xuICAgIHRoaXMudG90YWxTdGVwcyA9IHRvdGFsU3RlcHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxlYXJuaW5nIHJhdGUgZm9yIGN1cnJlbnQgc3RlcFxuICAgKi9cbiAgZ2V0TFIoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnLnNjaGVkdWxlcikge1xuICAgICAgY2FzZSAnY29uc3RhbnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTFI7XG5cbiAgICAgIGNhc2UgJ2xpbmVhcic6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqICgxIC0gdGhpcy5jdXJyZW50U3RlcCAvIHRoaXMudG90YWxTdGVwcyk7XG5cbiAgICAgIGNhc2UgJ2Nvc2luZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqIDAuNSAqICgxICsgTWF0aC5jb3MoTWF0aC5QSSAqIHRoaXMuY3VycmVudFN0ZXAgLyB0aGlzLnRvdGFsU3RlcHMpKTtcblxuICAgICAgY2FzZSAnd2FybXVwJzpcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXAgPCB0aGlzLmNvbmZpZy53YXJtdXBTdGVwcykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUiAqICh0aGlzLmN1cnJlbnRTdGVwIC8gdGhpcy5jb25maWcud2FybXVwU3RlcHMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvc2luZSBkZWNheSBhZnRlciB3YXJtdXBcbiAgICAgICAgY29uc3QgZGVjYXlTdGVwcyA9IHRoaXMudG90YWxTdGVwcyAtIHRoaXMuY29uZmlnLndhcm11cFN0ZXBzO1xuICAgICAgICBjb25zdCBkZWNheVByb2dyZXNzID0gKHRoaXMuY3VycmVudFN0ZXAgLSB0aGlzLmNvbmZpZy53YXJtdXBTdGVwcykgLyBkZWNheVN0ZXBzO1xuICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTFIgKiAwLjUgKiAoMSArIE1hdGguY29zKE1hdGguUEkgKiBkZWNheVByb2dyZXNzKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxMUjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RlcCB0aGUgc2NoZWR1bGVyXG4gICAqL1xuICBzdGVwKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFN0ZXArKztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBzY2hlZHVsZXJcbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSAwO1xuICB9XG59XG5cbi8qKlxuICogVHJhaW5pbmcgTWV0cmljcyBUcmFja2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBNZXRyaWNzVHJhY2tlciB7XG4gIHByaXZhdGUgbG9zc0hpc3Rvcnk6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgdmFsTG9zc0hpc3Rvcnk6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgZ3JhZE5vcm1IaXN0b3J5OiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIHN0YXJ0VGltZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBzdGVwVGltZXM6IG51bWJlcltdID0gW107XG5cbiAgLyoqXG4gICAqIFJlY29yZCB0cmFpbmluZyBsb3NzXG4gICAqL1xuICByZWNvcmRMb3NzKGxvc3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubG9zc0hpc3RvcnkucHVzaChsb3NzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgdmFsaWRhdGlvbiBsb3NzXG4gICAqL1xuICByZWNvcmRWYWxMb3NzKGxvc3M6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmFsTG9zc0hpc3RvcnkucHVzaChsb3NzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgZ3JhZGllbnQgbm9ybVxuICAgKi9cbiAgcmVjb3JkR3JhZE5vcm0obm9ybTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5ncmFkTm9ybUhpc3RvcnkucHVzaChub3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmQgc3RlcCB0aW1lXG4gICAqL1xuICByZWNvcmRTdGVwVGltZShtczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwVGltZXMucHVzaChtcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGF2ZXJhZ2UgbG9zcyBvdmVyIGxhc3QgTiBzdGVwc1xuICAgKi9cbiAgYXZnTG9zcyhuOiBudW1iZXIgPSAxMDApOiBudW1iZXIge1xuICAgIGNvbnN0IHJlY2VudCA9IHRoaXMubG9zc0hpc3Rvcnkuc2xpY2UoLW4pO1xuICAgIHJldHVybiByZWNlbnQubGVuZ3RoID4gMCA/IHJlY2VudC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIHJlY2VudC5sZW5ndGggOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhdmVyYWdlIHZhbGlkYXRpb24gbG9zc1xuICAgKi9cbiAgYXZnVmFsTG9zcyhuOiBudW1iZXIgPSAxMCk6IG51bWJlciB7XG4gICAgY29uc3QgcmVjZW50ID0gdGhpcy52YWxMb3NzSGlzdG9yeS5zbGljZSgtbik7XG4gICAgcmV0dXJuIHJlY2VudC5sZW5ndGggPiAwID8gcmVjZW50LnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gcmVjZW50Lmxlbmd0aCA6IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHN0ZXBzIHBlciBzZWNvbmRcbiAgICovXG4gIHN0ZXBzUGVyU2Vjb25kKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc3RlcFRpbWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgY29uc3QgYXZnU3RlcFRpbWUgPSB0aGlzLnN0ZXBUaW1lcy5zbGljZSgtMTAwKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIE1hdGgubWluKHRoaXMuc3RlcFRpbWVzLmxlbmd0aCwgMTAwKTtcbiAgICByZXR1cm4gYXZnU3RlcFRpbWUgPiAwID8gMTAwMCAvIGF2Z1N0ZXBUaW1lIDogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgRVRBIGluIHNlY29uZHNcbiAgICovXG4gIGV0YShyZW1haW5pbmdTdGVwczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzcHMgPSB0aGlzLnN0ZXBzUGVyU2Vjb25kKCk7XG4gICAgcmV0dXJuIHNwcyA+IDAgPyByZW1haW5pbmdTdGVwcyAvIHNwcyA6IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGJlc3QgdmFsaWRhdGlvbiBsb3NzXG4gICAqL1xuICBiZXN0VmFsTG9zcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZhbExvc3NIaXN0b3J5Lmxlbmd0aCA+IDAgPyBNYXRoLm1pbiguLi50aGlzLnZhbExvc3NIaXN0b3J5KSA6IEluZmluaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0b3RhbCBkdXJhdGlvblxuICAgKi9cbiAgZHVyYXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgbG9zcyBoaXN0b3J5XG4gICAqL1xuICBnZXRMb3NzSGlzdG9yeSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmxvc3NIaXN0b3J5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHZhbGlkYXRpb24gbG9zcyBoaXN0b3J5XG4gICAqL1xuICBnZXRWYWxMb3NzSGlzdG9yeSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnZhbExvc3NIaXN0b3J5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0cmFja2VyXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvc3NIaXN0b3J5ID0gW107XG4gICAgdGhpcy52YWxMb3NzSGlzdG9yeSA9IFtdO1xuICAgIHRoaXMuZ3JhZE5vcm1IaXN0b3J5ID0gW107XG4gICAgdGhpcy5zdGVwVGltZXMgPSBbXTtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUcmFpbmluZyBQaXBlbGluZVxuICpcbiAqIEZ1bGwgdHJhaW5pbmcgaW5mcmFzdHJ1Y3R1cmUgZm9yIFNPTkEgbW9kZWxzLlxuICovXG5leHBvcnQgY2xhc3MgVHJhaW5pbmdQaXBlbGluZSB7XG4gIHByaXZhdGUgY29uZmlnOiBSZXF1aXJlZDxUcmFpbmluZ0NvbmZpZz47XG4gIHByaXZhdGUgYWRhcHRlcjogTG9yYUFkYXB0ZXI7XG4gIHByaXZhdGUgZXdjTWFuYWdlcjogRXdjTWFuYWdlcjtcbiAgcHJpdmF0ZSBtZXRyaWNzOiBNZXRyaWNzVHJhY2tlcjtcbiAgcHJpdmF0ZSBzY2hlZHVsZXI6IExSU2NoZWR1bGVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYmF0Y2hlczogVHJhaW5pbmdCYXRjaFtdID0gW107XG4gIHByaXZhdGUgY2hlY2twb2ludHM6IENoZWNrcG9pbnRbXSA9IFtdO1xuICBwcml2YXRlIGN1cnJlbnRFcG9jaDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBjdXJyZW50U3RlcDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBiZXN0VmFsTG9zczogbnVtYmVyID0gSW5maW5pdHk7XG4gIHByaXZhdGUgcGF0aWVuY2VDb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFRyYWluaW5nQ29uZmlnLCBhZGFwdGVyPzogTG9yYUFkYXB0ZXIpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9UUkFJTklOR19DT05GSUcsIC4uLmNvbmZpZyB9O1xuICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgfHwgbmV3IExvcmFBZGFwdGVyKHsgcmFuazogOCB9KTtcbiAgICB0aGlzLmV3Y01hbmFnZXIgPSBuZXcgRXdjTWFuYWdlcih0aGlzLmNvbmZpZy5ld2NMYW1iZGEpO1xuICAgIHRoaXMubWV0cmljcyA9IG5ldyBNZXRyaWNzVHJhY2tlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0cmFpbmluZyBiYXRjaFxuICAgKi9cbiAgYWRkQmF0Y2goaW5wdXRzOiBFbWJlZGRpbmdbXSwgdGFyZ2V0czogRW1iZWRkaW5nW10sIHF1YWxpdGllczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmJhdGNoZXMucHVzaCh7IGlucHV0cywgdGFyZ2V0cywgcXVhbGl0aWVzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0cmFpbmluZyBkYXRhXG4gICAqL1xuICBhZGREYXRhKGRhdGE6IEFycmF5PHsgaW5wdXQ6IEVtYmVkZGluZzsgdGFyZ2V0OiBFbWJlZGRpbmc7IHF1YWxpdHk6IG51bWJlciB9Pik6IHZvaWQge1xuICAgIC8vIEdyb3VwIGludG8gYmF0Y2hlc1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gdGhpcy5jb25maWcuYmF0Y2hTaXplKSB7XG4gICAgICBjb25zdCBiYXRjaCA9IGRhdGEuc2xpY2UoaSwgaSArIHRoaXMuY29uZmlnLmJhdGNoU2l6ZSk7XG4gICAgICB0aGlzLmFkZEJhdGNoKFxuICAgICAgICBiYXRjaC5tYXAoZCA9PiBkLmlucHV0KSxcbiAgICAgICAgYmF0Y2gubWFwKGQgPT4gZC50YXJnZXQpLFxuICAgICAgICBiYXRjaC5tYXAoZCA9PiBkLnF1YWxpdHkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gdHJhaW5pbmdcbiAgICovXG4gIHRyYWluKCk6IFRyYWluaW5nUmVzdWx0IHtcbiAgICBjb25zdCB0b3RhbFN0ZXBzID0gdGhpcy5iYXRjaGVzLmxlbmd0aCAqIHRoaXMuY29uZmlnLmVwb2NocztcbiAgICB0aGlzLnNjaGVkdWxlciA9IG5ldyBMUlNjaGVkdWxlcih0aGlzLmNvbmZpZywgdG90YWxTdGVwcyk7XG4gICAgdGhpcy5tZXRyaWNzLnJlc2V0KCk7XG4gICAgdGhpcy5hZGFwdGVyLnN0YXJ0VHJhaW5pbmcodGhpcy5jb25maWcubGVhcm5pbmdSYXRlKTtcblxuICAgIGxldCBlYXJseVN0b3BwZWQgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGVwb2NoID0gMDsgZXBvY2ggPCB0aGlzLmNvbmZpZy5lcG9jaHM7IGVwb2NoKyspIHtcbiAgICAgIHRoaXMuY3VycmVudEVwb2NoID0gZXBvY2g7XG5cbiAgICAgIC8vIFNodWZmbGUgYmF0Y2hlc1xuICAgICAgY29uc3Qgc2h1ZmZsZWRCYXRjaGVzID0gdGhpcy5zaHVmZmxlQmF0Y2hlcygpO1xuXG4gICAgICAvLyBTcGxpdCBpbnRvIHRyYWluL3ZhbFxuICAgICAgY29uc3QgdmFsU2l6ZSA9IE1hdGguZmxvb3Ioc2h1ZmZsZWRCYXRjaGVzLmxlbmd0aCAqIHRoaXMuY29uZmlnLnZhbGlkYXRpb25TcGxpdCk7XG4gICAgICBjb25zdCB0cmFpbkJhdGNoZXMgPSBzaHVmZmxlZEJhdGNoZXMuc2xpY2UodmFsU2l6ZSk7XG4gICAgICBjb25zdCB2YWxCYXRjaGVzID0gc2h1ZmZsZWRCYXRjaGVzLnNsaWNlKDAsIHZhbFNpemUpO1xuXG4gICAgICAvLyBUcmFpbmluZyBlcG9jaFxuICAgICAgZm9yIChjb25zdCBiYXRjaCBvZiB0cmFpbkJhdGNoZXMpIHtcbiAgICAgICAgY29uc3Qgc3RlcFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgbG9zcyA9IHRoaXMudHJhaW5TdGVwKGJhdGNoKTtcbiAgICAgICAgdGhpcy5tZXRyaWNzLnJlY29yZExvc3MobG9zcyk7XG4gICAgICAgIHRoaXMubWV0cmljcy5yZWNvcmRTdGVwVGltZShEYXRlLm5vdygpIC0gc3RlcFN0YXJ0KTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZXIuc3RlcCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwKys7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRpb25cbiAgICAgIGlmICh2YWxCYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdmFsTG9zcyA9IHRoaXMudmFsaWRhdGUodmFsQmF0Y2hlcyk7XG4gICAgICAgIHRoaXMubWV0cmljcy5yZWNvcmRWYWxMb3NzKHZhbExvc3MpO1xuXG4gICAgICAgIC8vIEVhcmx5IHN0b3BwaW5nXG4gICAgICAgIGlmICh2YWxMb3NzIDwgdGhpcy5iZXN0VmFsTG9zcykge1xuICAgICAgICAgIHRoaXMuYmVzdFZhbExvc3MgPSB2YWxMb3NzO1xuICAgICAgICAgIHRoaXMucGF0aWVuY2VDb3VudGVyID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBhdGllbmNlQ291bnRlcisrO1xuICAgICAgICAgIGlmICh0aGlzLnBhdGllbmNlQ291bnRlciA+PSB0aGlzLmNvbmZpZy5lYXJseVN0b3BwaW5nUGF0aWVuY2UpIHtcbiAgICAgICAgICAgIGVhcmx5U3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2twb2ludFxuICAgICAgaWYgKChlcG9jaCArIDEpICUgdGhpcy5jb25maWcuY2hlY2twb2ludEludGVydmFsID09PSAwKSB7XG4gICAgICAgIHRoaXMuc2F2ZUNoZWNrcG9pbnQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFkYXB0ZXIuZW5kVHJhaW5pbmcoKTtcblxuICAgIC8vIFJlZ2lzdGVyIHdpdGggRVdDIGZvciBjb250aW51YWwgbGVhcm5pbmdcbiAgICBjb25zdCB3ZWlnaHRzID0gdGhpcy5hZGFwdGVyLm1lcmdlKCkuZmxhdCgpO1xuICAgIHRoaXMuZXdjTWFuYWdlci5yZWdpc3RlclRhc2soYHRhc2stJHtEYXRlLm5vdygpfWAsIHdlaWdodHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVwb2NoczogdGhpcy5jdXJyZW50RXBvY2ggKyAxLFxuICAgICAgc3RlcHM6IHRoaXMuY3VycmVudFN0ZXAsXG4gICAgICBmaW5hbExvc3M6IHRoaXMubWV0cmljcy5hdmdMb3NzKDEwMCksXG4gICAgICBiZXN0VmFsTG9zczogdGhpcy5iZXN0VmFsTG9zcyxcbiAgICAgIGR1cmF0aW9uTXM6IHRoaXMubWV0cmljcy5kdXJhdGlvbigpLFxuICAgICAgbG9zc0hpc3Rvcnk6IHRoaXMubWV0cmljcy5nZXRMb3NzSGlzdG9yeSgpLFxuICAgICAgdmFsTG9zc0hpc3Rvcnk6IHRoaXMubWV0cmljcy5nZXRWYWxMb3NzSGlzdG9yeSgpLFxuICAgICAgZWFybHlTdG9wcGVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2luZ2xlIHRyYWluaW5nIHN0ZXBcbiAgICovXG4gIHByaXZhdGUgdHJhaW5TdGVwKGJhdGNoOiBUcmFpbmluZ0JhdGNoKTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWxMb3NzID0gMDtcbiAgICBjb25zdCBsciA9IHRoaXMuc2NoZWR1bGVyPy5nZXRMUigpIHx8IHRoaXMuY29uZmlnLmxlYXJuaW5nUmF0ZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmF0Y2guaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IGJhdGNoLmlucHV0c1tpXTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGJhdGNoLnRhcmdldHNbaV07XG4gICAgICBjb25zdCBxdWFsaXR5ID0gYmF0Y2gucXVhbGl0aWVzW2ldO1xuXG4gICAgICAvLyBGb3J3YXJkIHBhc3NcbiAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuYWRhcHRlci5mb3J3YXJkKGlucHV0KTtcblxuICAgICAgLy8gQ29tcHV0ZSBsb3NzIChNU0Ugd2VpZ2h0ZWQgYnkgcXVhbGl0eSlcbiAgICAgIGNvbnN0IGdyYWRPdXRwdXQ6IG51bWJlcltdID0gW107XG4gICAgICBsZXQgbG9zcyA9IDA7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG91dHB1dC5sZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCBkaWZmID0gb3V0cHV0W2pdIC0gKHRhcmdldFtqXSB8fCAwKTtcbiAgICAgICAgbG9zcyArPSBkaWZmICogZGlmZjtcbiAgICAgICAgZ3JhZE91dHB1dC5wdXNoKDIgKiBkaWZmICogcXVhbGl0eSk7IC8vIFF1YWxpdHktd2VpZ2h0ZWQgZ3JhZGllbnRcbiAgICAgIH1cbiAgICAgIGxvc3MgPSAobG9zcyAvIG91dHB1dC5sZW5ndGgpICogcXVhbGl0eTtcblxuICAgICAgLy8gQWRkIEVXQyBwZW5hbHR5XG4gICAgICBjb25zdCBld2NQZW5hbHR5ID0gdGhpcy5ld2NNYW5hZ2VyLmNvbXB1dGVQZW5hbHR5KHRoaXMuYWRhcHRlci5tZXJnZSgpLmZsYXQoKSk7XG4gICAgICBsb3NzICs9IGV3Y1BlbmFsdHkgKiAwLjAwMTtcblxuICAgICAgLy8gQmFja3dhcmQgcGFzc1xuICAgICAgdGhpcy5hZGFwdGVyLmJhY2t3YXJkKGlucHV0LCBncmFkT3V0cHV0LCBscik7XG5cbiAgICAgIHRvdGFsTG9zcyArPSBsb3NzO1xuICAgIH1cblxuICAgIHJldHVybiB0b3RhbExvc3MgLyBiYXRjaC5pbnB1dHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRpb24gcGFzc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZShiYXRjaGVzOiBUcmFpbmluZ0JhdGNoW10pOiBudW1iZXIge1xuICAgIGxldCB0b3RhbExvc3MgPSAwO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmF0Y2guaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuYWRhcHRlci5mb3J3YXJkKGJhdGNoLmlucHV0c1tpXSk7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGJhdGNoLnRhcmdldHNbaV07XG5cbiAgICAgICAgbGV0IGxvc3MgPSAwO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG91dHB1dC5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBvdXRwdXRbal0gLSAodGFyZ2V0W2pdIHx8IDApO1xuICAgICAgICAgIGxvc3MgKz0gZGlmZiAqIGRpZmY7XG4gICAgICAgIH1cbiAgICAgICAgdG90YWxMb3NzICs9IGxvc3MgLyBvdXRwdXQubGVuZ3RoO1xuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb3VudCA+IDAgPyB0b3RhbExvc3MgLyBjb3VudCA6IDA7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhIGNoZWNrcG9pbnQuXG4gICAqXG4gICAqIEFsd2F5cyByZWNvcmRzIHRoZSBjaGVja3BvaW50IGluIHRoZSBpbi1tZW1vcnkgbGlzdCAodGhlIGJlaGF2aW9yIHRoZVxuICAgKiB0cmFpbmluZyBsb29wIHJlbGllcyBvbikuIFdoZW4gYHBhdGhgIGlzIGdpdmVuLCBhZGRpdGlvbmFsbHkgcGVyc2lzdHNcbiAgICogdGhlIGNoZWNrcG9pbnQgdG8gZGlzayBhcyB2ZXJzaW9uZWQgSlNPTiDigJQgYmVmb3JlIHYyLjUuNyB0aGlzIG1ldGhvZFxuICAgKiB3YXMgcHJpdmF0ZSwgaWdub3JlZCBhbnkgYXJndW1lbnQsIGFuZCBuZXZlciB3cm90ZSBhIGZpbGUsIHNvIGNhbGxlcnNcbiAgICogcGFzc2luZyBhIHBhdGggZ290IGB1bmRlZmluZWRgIGJhY2sgYW5kIHplcm8gYnl0ZXMgb24gZGlzay5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggT3B0aW9uYWwgZmlsZSBwYXRoOyBwYXJlbnQgZGlyZWN0b3JpZXMgYXJlIGNyZWF0ZWQuXG4gICAqIEByZXR1cm5zIFdoZXJlIHRoZSBjaGVja3BvaW50IHdlbnQg4oCUIGluLW1lbW9yeSBpbmRleCwgYW5kIGZpbGVcbiAgICogICAgICAgICAgcGF0aCArIGJ5dGUgc2l6ZSB3aGVuIHBlcnNpc3RlZC5cbiAgICovXG4gIHNhdmVDaGVja3BvaW50KHBhdGg/OiBzdHJpbmcpOiBDaGVja3BvaW50U2F2ZVJlc3VsdCB7XG4gICAgY29uc3QgY2hlY2twb2ludDogQ2hlY2twb2ludCA9IHtcbiAgICAgIGVwb2NoOiB0aGlzLmN1cnJlbnRFcG9jaCxcbiAgICAgIHN0ZXA6IHRoaXMuY3VycmVudFN0ZXAsXG4gICAgICBsb3NzOiB0aGlzLm1ldHJpY3MuYXZnTG9zcygxMDApLFxuICAgICAgd2VpZ2h0czogdGhpcy5hZGFwdGVyLnRvSlNPTigpLFxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgIH07XG4gICAgdGhpcy5jaGVja3BvaW50cy5wdXNoKGNoZWNrcG9pbnQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBDaGVja3BvaW50U2F2ZVJlc3VsdCA9IHtcbiAgICAgIGluZGV4OiB0aGlzLmNoZWNrcG9pbnRzLmxlbmd0aCAtIDEsXG4gICAgICBlcG9jaDogY2hlY2twb2ludC5lcG9jaCxcbiAgICAgIHN0ZXA6IGNoZWNrcG9pbnQuc3RlcCxcbiAgICAgIGxvc3M6IGNoZWNrcG9pbnQubG9zcyxcbiAgICB9O1xuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIGNvbnN0IGVudmVsb3BlID0ge1xuICAgICAgICBmb3JtYXQ6ICdydXZsbG0tY2hlY2twb2ludCcsXG4gICAgICAgIHZlcnNpb246IENIRUNLUE9JTlRfRk9STUFUX1ZFUlNJT04sXG4gICAgICAgIC4uLmNoZWNrcG9pbnQsXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKTtcbiAgICAgIG1rZGlyU3luYyhkaXJuYW1lKHBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHdyaXRlRmlsZVN5bmMocGF0aCwgc2VyaWFsaXplZCwgJ3V0Zi04Jyk7XG4gICAgICByZXN1bHQucGF0aCA9IHBhdGg7XG4gICAgICByZXN1bHQuYnl0ZXMgPSBCdWZmZXIuYnl0ZUxlbmd0aChzZXJpYWxpemVkLCAndXRmLTgnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBjaGVja3BvaW50IOKAlCBieSBpbi1tZW1vcnkgaW5kZXgsIG9yIGZyb20gYSBmaWxlIHByZXZpb3VzbHlcbiAgICogd3JpdHRlbiBieSBgc2F2ZUNoZWNrcG9pbnQocGF0aClgLlxuICAgKi9cbiAgbG9hZENoZWNrcG9pbnQoaW5kZXhPclBhdGg6IG51bWJlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBjaGVja3BvaW50OiBDaGVja3BvaW50IHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHR5cGVvZiBpbmRleE9yUGF0aCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNoZWNrcG9pbnQgPSB0aGlzLmNoZWNrcG9pbnRzW2luZGV4T3JQYXRoXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoaW5kZXhPclBhdGgsICd1dGYtOCcpKTtcbiAgICAgICAgaWYgKHBhcnNlZD8uZm9ybWF0ICE9PSAncnV2bGxtLWNoZWNrcG9pbnQnIHx8IHR5cGVvZiBwYXJzZWQud2VpZ2h0cyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2hlY2twb2ludCA9IHBhcnNlZCBhcyBDaGVja3BvaW50O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjaGVja3BvaW50KSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLmFkYXB0ZXIgPSBMb3JhQWRhcHRlci5mcm9tSlNPTihjaGVja3BvaW50LndlaWdodHMpO1xuICAgIHRoaXMuY3VycmVudEVwb2NoID0gY2hlY2twb2ludC5lcG9jaDtcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gY2hlY2twb2ludC5zdGVwO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IG1ldHJpY3NcbiAgICovXG4gIGdldE1ldHJpY3MoKTogVHJhaW5pbmdNZXRyaWNzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXBvY2g6IHRoaXMuY3VycmVudEVwb2NoLFxuICAgICAgc3RlcDogdGhpcy5jdXJyZW50U3RlcCxcbiAgICAgIHRyYWluTG9zczogdGhpcy5tZXRyaWNzLmF2Z0xvc3MoMTAwKSxcbiAgICAgIHZhbExvc3M6IHRoaXMubWV0cmljcy5hdmdWYWxMb3NzKDEwKSxcbiAgICAgIGxlYXJuaW5nUmF0ZTogdGhpcy5zY2hlZHVsZXI/LmdldExSKCkgfHwgdGhpcy5jb25maWcubGVhcm5pbmdSYXRlLFxuICAgICAgZ3JhZE5vcm06IDAsXG4gICAgICBzdGVwc1BlclNlY29uZDogdGhpcy5tZXRyaWNzLnN0ZXBzUGVyU2Vjb25kKCksXG4gICAgICBldGFTZWNvbmRzOiB0aGlzLm1ldHJpY3MuZXRhKFxuICAgICAgICAodGhpcy5jb25maWcuZXBvY2hzIC0gdGhpcy5jdXJyZW50RXBvY2gpICogdGhpcy5iYXRjaGVzLmxlbmd0aFxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhZGFwdGVyXG4gICAqL1xuICBnZXRBZGFwdGVyKCk6IExvcmFBZGFwdGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBFV0MgbWFuYWdlclxuICAgKi9cbiAgZ2V0RXdjTWFuYWdlcigpOiBFd2NNYW5hZ2VyIHtcbiAgICByZXR1cm4gdGhpcy5ld2NNYW5hZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjaGVja3BvaW50c1xuICAgKi9cbiAgZ2V0Q2hlY2twb2ludHMoKTogQ2hlY2twb2ludFtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuY2hlY2twb2ludHNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHBpcGVsaW5lXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhdGNoZXMgPSBbXTtcbiAgICB0aGlzLmNoZWNrcG9pbnRzID0gW107XG4gICAgdGhpcy5jdXJyZW50RXBvY2ggPSAwO1xuICAgIHRoaXMuY3VycmVudFN0ZXAgPSAwO1xuICAgIHRoaXMuYmVzdFZhbExvc3MgPSBJbmZpbml0eTtcbiAgICB0aGlzLnBhdGllbmNlQ291bnRlciA9IDA7XG4gICAgdGhpcy5tZXRyaWNzLnJlc2V0KCk7XG4gICAgdGhpcy5hZGFwdGVyLnJlc2V0KCk7XG4gIH1cblxuICBwcml2YXRlIHNodWZmbGVCYXRjaGVzKCk6IFRyYWluaW5nQmF0Y2hbXSB7XG4gICAgY29uc3Qgc2h1ZmZsZWQgPSBbLi4udGhpcy5iYXRjaGVzXTtcbiAgICBmb3IgKGxldCBpID0gc2h1ZmZsZWQubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xuICAgICAgY29uc3QgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChpICsgMSkpO1xuICAgICAgW3NodWZmbGVkW2ldLCBzaHVmZmxlZFtqXV0gPSBbc2h1ZmZsZWRbal0sIHNodWZmbGVkW2ldXTtcbiAgICB9XG4gICAgcmV0dXJuIHNodWZmbGVkO1xuICB9XG59XG5cbi8qKlxuICogVHJhaW5pbmcgRmFjdG9yeVxuICpcbiAqIENyZWF0ZSBwcmUtY29uZmlndXJlZCB0cmFpbmluZyBwaXBlbGluZXMgZm9yIGNvbW1vbiBzY2VuYXJpb3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBUcmFpbmluZ0ZhY3Rvcnkge1xuICAvKipcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBxdWljayBmaW5lLXR1bmluZ1xuICAgKi9cbiAgc3RhdGljIHF1aWNrRmluZXR1bmUoKTogVHJhaW5pbmdQaXBlbGluZSB7XG4gICAgcmV0dXJuIG5ldyBUcmFpbmluZ1BpcGVsaW5lKHtcbiAgICAgIGxlYXJuaW5nUmF0ZTogMC4wMSxcbiAgICAgIGVwb2NoczogMyxcbiAgICAgIGJhdGNoU2l6ZTogMTYsXG4gICAgICBzY2hlZHVsZXI6ICdjb25zdGFudCcsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBkZWVwIHRyYWluaW5nXG4gICAqL1xuICBzdGF0aWMgZGVlcFRyYWluaW5nKCk6IFRyYWluaW5nUGlwZWxpbmUge1xuICAgIHJldHVybiBuZXcgVHJhaW5pbmdQaXBlbGluZSh7XG4gICAgICBsZWFybmluZ1JhdGU6IDAuMDAxLFxuICAgICAgZXBvY2hzOiA1MCxcbiAgICAgIGJhdGNoU2l6ZTogMzIsXG4gICAgICBzY2hlZHVsZXI6ICd3YXJtdXAnLFxuICAgICAgd2FybXVwU3RlcHM6IDUwMCxcbiAgICAgIGVhcmx5U3RvcHBpbmdQYXRpZW5jZTogNSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgcGlwZWxpbmUgZm9yIGNvbnRpbnVhbCBsZWFybmluZ1xuICAgKi9cbiAgc3RhdGljIGNvbnRpbnVhbExlYXJuaW5nKGV3Y0xhbWJkYTogbnVtYmVyID0gNTAwMCk6IFRyYWluaW5nUGlwZWxpbmUge1xuICAgIHJldHVybiBuZXcgVHJhaW5pbmdQaXBlbGluZSh7XG4gICAgICBsZWFybmluZ1JhdGU6IDAuMDAwNSxcbiAgICAgIGVwb2NoczogMTAsXG4gICAgICBiYXRjaFNpemU6IDE2LFxuICAgICAgc2NoZWR1bGVyOiAnY29zaW5lJyxcbiAgICAgIGV3Y0xhbWJkYSxcbiAgICAgIGVhcmx5U3RvcHBpbmdQYXRpZW5jZTogMTAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHBpcGVsaW5lIGZvciBmZWRlcmF0ZWQgYWdncmVnYXRpb25cbiAgICovXG4gIHN0YXRpYyBmZWRlcmF0ZWRBZ2dyZWdhdGlvbigpOiBUcmFpbmluZ1BpcGVsaW5lIHtcbiAgICByZXR1cm4gbmV3IFRyYWluaW5nUGlwZWxpbmUoe1xuICAgICAgbGVhcm5pbmdSYXRlOiAwLjAwMDEsXG4gICAgICBlcG9jaHM6IDUsXG4gICAgICBiYXRjaFNpemU6IDY0LFxuICAgICAgc2NoZWR1bGVyOiAnbGluZWFyJyxcbiAgICAgIGV3Y0xhbWJkYTogMjAwMCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/dist/esm/types.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* RuvLLM Type Definitions
|
|
3
3
|
*/
|
|
4
4
|
export {};
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogUnV2TExNIFR5cGUgRGVmaW5pdGlvbnNcclxuICovXHJcblxyXG4vKipcclxuICogQ29uZmlndXJhdGlvbiBmb3IgUnV2TExNIGVuZ2luZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSdXZMTE1Db25maWcge1xyXG4gIC8qKiBFbWJlZGRpbmcgZGltZW5zaW9uIChkZWZhdWx0OiA3NjgpICovXHJcbiAgZW1iZWRkaW5nRGltPzogbnVtYmVyO1xyXG4gIC8qKiBSb3V0ZXIgaGlkZGVuIGRpbWVuc2lvbiAoZGVmYXVsdDogMTI4KSAqL1xyXG4gIHJvdXRlckhpZGRlbkRpbT86IG51bWJlcjtcclxuICAvKiogSE5TVyBNIHBhcmFtZXRlciAoZGVmYXVsdDogMTYpICovXHJcbiAgaG5zd00/OiBudW1iZXI7XHJcbiAgLyoqIEhOU1cgZWZfY29uc3RydWN0aW9uIChkZWZhdWx0OiAxMDApICovXHJcbiAgaG5zd0VmQ29uc3RydWN0aW9uPzogbnVtYmVyO1xyXG4gIC8qKiBITlNXIGVmX3NlYXJjaCAoZGVmYXVsdDogNjQpICovXHJcbiAgaG5zd0VmU2VhcmNoPzogbnVtYmVyO1xyXG4gIC8qKiBFbmFibGUgbGVhcm5pbmcgKGRlZmF1bHQ6IHRydWUpICovXHJcbiAgbGVhcm5pbmdFbmFibGVkPzogYm9vbGVhbjtcclxuICAvKiogUXVhbGl0eSB0aHJlc2hvbGQgZm9yIGxlYXJuaW5nIChkZWZhdWx0OiAwLjcpICovXHJcbiAgcXVhbGl0eVRocmVzaG9sZD86IG51bWJlcjtcclxuICAvKiogRVdDIGxhbWJkYSAoZGVmYXVsdDogMjAwMCkgKi9cclxuICBld2NMYW1iZGE/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZW5lcmF0aW9uIGNvbmZpZ3VyYXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGlvbkNvbmZpZyB7XHJcbiAgLyoqIE1heGltdW0gdG9rZW5zIHRvIGdlbmVyYXRlICovXHJcbiAgbWF4VG9rZW5zPzogbnVtYmVyO1xyXG4gIC8qKiBUZW1wZXJhdHVyZSBmb3Igc2FtcGxpbmcgKDAuMCAtIDIuMCkgKi9cclxuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcclxuICAvKiogVG9wLXAgbnVjbGV1cyBzYW1wbGluZyAoMC4wIC0gMS4wKSAqL1xyXG4gIHRvcFA/OiBudW1iZXI7XHJcbiAgLyoqIFRvcC1rIHNhbXBsaW5nICovXHJcbiAgdG9wSz86IG51bWJlcjtcclxuICAvKiogUmVwZXRpdGlvbiBwZW5hbHR5ICovXHJcbiAgcmVwZXRpdGlvblBlbmFsdHk/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBRdWVyeSByZXNwb25zZSBmcm9tIHRoZSBMTE1cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSZXNwb25zZSB7XHJcbiAgLyoqIEdlbmVyYXRlZCB0ZXh0ICovXHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIC8qKiBDb25maWRlbmNlIHNjb3JlICgwLjAgLSAxLjApICovXHJcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xyXG4gIC8qKiBTZWxlY3RlZCBtb2RlbCAqL1xyXG4gIG1vZGVsOiBzdHJpbmc7XHJcbiAgLyoqIENvbnRleHQgc2l6ZSB1c2VkICovXHJcbiAgY29udGV4dFNpemU6IG51bWJlcjtcclxuICAvKiogTGF0ZW5jeSBpbiBtaWxsaXNlY29uZHMgKi9cclxuICBsYXRlbmN5TXM6IG51bWJlcjtcclxuICAvKiogUmVxdWVzdCBJRCBmb3IgZmVlZGJhY2sgKi9cclxuICByZXF1ZXN0SWQ6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJvdXRpbmcgZGVjaXNpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ0RlY2lzaW9uIHtcclxuICAvKiogU2VsZWN0ZWQgbW9kZWwgc2l6ZSAqL1xyXG4gIG1vZGVsOiBNb2RlbFNpemU7XHJcbiAgLyoqIFJlY29tbWVuZGVkIGNvbnRleHQgc2l6ZSAqL1xyXG4gIGNvbnRleHRTaXplOiBudW1iZXI7XHJcbiAgLyoqIFRlbXBlcmF0dXJlICovXHJcbiAgdGVtcGVyYXR1cmU6IG51bWJlcjtcclxuICAvKiogVG9wLXAgKi9cclxuICB0b3BQOiBudW1iZXI7XHJcbiAgLyoqIENvbmZpZGVuY2UgKi9cclxuICBjb25maWRlbmNlOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNZW1vcnkgc2VhcmNoIHJlc3VsdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlSZXN1bHQge1xyXG4gIC8qKiBOb2RlIElEICovXHJcbiAgaWQ6IG51bWJlcjtcclxuICAvKiogU2ltaWxhcml0eSBzY29yZSAqL1xyXG4gIHNjb3JlOiBudW1iZXI7XHJcbiAgLyoqIENvbnRlbnQgdGV4dCAqL1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICAvKiogTWV0YWRhdGEgKi9cclxuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFbmdpbmUgc3RhdGlzdGljc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSdXZMTE1TdGF0cyB7XHJcbiAgLyoqIFRvdGFsIHF1ZXJpZXMgcHJvY2Vzc2VkICovXHJcbiAgdG90YWxRdWVyaWVzOiBudW1iZXI7XHJcbiAgLyoqIE1lbW9yeSBub2RlcyBzdG9yZWQgKi9cclxuICBtZW1vcnlOb2RlczogbnVtYmVyO1xyXG4gIC8qKiBQYXR0ZXJucyBsZWFybmVkICovXHJcbiAgcGF0dGVybnNMZWFybmVkOiBudW1iZXI7XHJcbiAgLyoqIEF2ZXJhZ2UgbGF0ZW5jeSBpbiBtcyAqL1xyXG4gIGF2Z0xhdGVuY3lNczogbnVtYmVyO1xyXG4gIC8qKiBDYWNoZSBoaXQgcmF0ZSAoMC4wIC0gMS4wKSAqL1xyXG4gIGNhY2hlSGl0UmF0ZTogbnVtYmVyO1xyXG4gIC8qKiBSb3V0ZXIgYWNjdXJhY3kgKDAuMCAtIDEuMCkgKi9cclxuICByb3V0ZXJBY2N1cmFjeTogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogTW9kZWwgc2l6ZSBvcHRpb25zXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBNb2RlbFNpemUgPSAnTTM1MCcgfCAnTTcwMCcgfCAnQjFfMicgfCAnQjJfNic7XHJcblxyXG4vKipcclxuICogRmVlZGJhY2sgZm9yIGxlYXJuaW5nXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRiYWNrIHtcclxuICAvKiogUmVxdWVzdCBJRCBmcm9tIHF1ZXJ5IHJlc3BvbnNlICovXHJcbiAgcmVxdWVzdElkOiBzdHJpbmc7XHJcbiAgLyoqIFJhdGluZyAxLTUgKi9cclxuICByYXRpbmc6IG51bWJlcjtcclxuICAvKiogT3B0aW9uYWwgY29ycmVjdGlvbiB0ZXh0ICovXHJcbiAgY29ycmVjdGlvbj86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFNlc3Npb24gZm9yIG11bHRpLXR1cm4gY29udmVyc2F0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uIHtcclxuICAvKiogU2Vzc2lvbiBJRCAqL1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLyoqIENyZWF0ZWQgdGltZXN0YW1wICovXHJcbiAgY3JlYXRlZEF0OiBEYXRlO1xyXG4gIC8qKiBNZXNzYWdlcyBpbiBzZXNzaW9uICovXHJcbiAgbWVzc2FnZUNvdW50OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTSU1EIGNhcGFiaWxpdGllc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTaW1kQ2FwYWJpbGl0aWVzIHtcclxuICAvKiogSGFzIGFueSBTSU1EIHN1cHBvcnQgKi9cclxuICBoYXNTaW1kOiBib29sZWFuO1xyXG4gIC8qKiBBdmFpbGFibGUgU0lNRCBpbnN0cnVjdGlvbnMgKi9cclxuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG4vKipcclxuICogRW1iZWRkaW5nIHJlc3VsdFxyXG4gKi9cclxuZXhwb3J0IHR5cGUgRW1iZWRkaW5nID0gbnVtYmVyW107XHJcblxyXG4vKipcclxuICogQmF0Y2ggcXVlcnkgcmVxdWVzdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBCYXRjaFF1ZXJ5UmVxdWVzdCB7XHJcbiAgLyoqIFF1ZXJpZXMgdG8gcHJvY2VzcyAqL1xyXG4gIHF1ZXJpZXM6IHN0cmluZ1tdO1xyXG4gIC8qKiBPcHRpb25hbCBnZW5lcmF0aW9uIGNvbmZpZyAqL1xyXG4gIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCYXRjaCBxdWVyeSByZXNwb25zZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBCYXRjaFF1ZXJ5UmVzcG9uc2Uge1xyXG4gIC8qKiBSZXNwb25zZXMgZm9yIGVhY2ggcXVlcnkgKi9cclxuICByZXNwb25zZXM6IFF1ZXJ5UmVzcG9uc2VbXTtcclxuICAvKiogVG90YWwgcHJvY2Vzc2luZyB0aW1lIGluIG1zICovXHJcbiAgdG90YWxMYXRlbmN5TXM6IG51bWJlcjtcclxufVxyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gU09OQSBMZWFybmluZyBUeXBlc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLyoqXHJcbiAqIFNPTkEgQ29uZmlndXJhdGlvbiBmb3IgYWRhcHRpdmUgbGVhcm5pbmdcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU29uYUNvbmZpZyB7XHJcbiAgLyoqIEVuYWJsZSBpbnN0YW50IGxvb3AgKHJlYWwtdGltZSBsZWFybmluZykgKi9cclxuICBpbnN0YW50TG9vcEVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBFbmFibGUgYmFja2dyb3VuZCBsb29wIChiYXRjaCBsZWFybmluZykgKi9cclxuICBiYWNrZ3JvdW5kTG9vcEVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBMZWFybmluZyByYXRlIGZvciBMb1JBIGFkYXB0ZXJzICovXHJcbiAgbG9yYUxlYXJuaW5nUmF0ZT86IG51bWJlcjtcclxuICAvKiogTG9SQSByYW5rIChsb3dlciA9IGZhc3RlciwgaGlnaGVyID0gbW9yZSBjYXBhY2l0eSkgKi9cclxuICBsb3JhUmFuaz86IG51bWJlcjtcclxuICAvKiogRVdDIGxhbWJkYSBmb3IgbWVtb3J5IHByb3RlY3Rpb24gKi9cclxuICBld2NMYW1iZGE/OiBudW1iZXI7XHJcbiAgLyoqIE1heCB0cmFqZWN0b3J5IGJ1ZmZlciBzaXplICovXHJcbiAgbWF4VHJhamVjdG9yeVNpemU/OiBudW1iZXI7XHJcbiAgLyoqIFBhdHRlcm4gc2ltaWxhcml0eSB0aHJlc2hvbGQgKi9cclxuICBwYXR0ZXJuVGhyZXNob2xkPzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogTGVhcm5pbmcgc2lnbmFsIGZyb20gdXNlciBmZWVkYmFja1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBMZWFybmluZ1NpZ25hbCB7XHJcbiAgLyoqIFJlcXVlc3QgSUQgKi9cclxuICByZXF1ZXN0SWQ6IHN0cmluZztcclxuICAvKiogUXVhbGl0eSBzY29yZSAoMC0xKSAqL1xyXG4gIHF1YWxpdHk6IG51bWJlcjtcclxuICAvKiogU2lnbmFsIHR5cGUgKi9cclxuICB0eXBlOiBTaWduYWxUeXBlO1xyXG4gIC8qKiBPcHRpb25hbCBjb3JyZWN0aW9uICovXHJcbiAgY29ycmVjdGlvbj86IHN0cmluZztcclxuICAvKiogVGltZXN0YW1wICovXHJcbiAgdGltZXN0YW1wOiBEYXRlO1xyXG59XHJcblxyXG4vKipcclxuICogU2lnbmFsIHR5cGVzIGZvciBsZWFybmluZ1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgU2lnbmFsVHlwZSA9ICdwb3NpdGl2ZScgfCAnbmVnYXRpdmUnIHwgJ2NvcnJlY3Rpb24nIHwgJ2ltcGxpY2l0JztcclxuXHJcbi8qKlxyXG4gKiBRdWVyeSB0cmFqZWN0b3J5IGZvciBsZWFybmluZ1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVRyYWplY3Rvcnkge1xyXG4gIC8qKiBUcmFqZWN0b3J5IElEICovXHJcbiAgaWQ6IHN0cmluZztcclxuICAvKiogU3RlcHMgaW4gdGhlIHRyYWplY3RvcnkgKi9cclxuICBzdGVwczogVHJhamVjdG9yeVN0ZXBbXTtcclxuICAvKiogRmluYWwgb3V0Y29tZSAqL1xyXG4gIG91dGNvbWU6IFRyYWplY3RvcnlPdXRjb21lO1xyXG4gIC8qKiBUb3RhbCBkdXJhdGlvbiAqL1xyXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNpbmdsZSBzdGVwIGluIGEgdHJhamVjdG9yeVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBUcmFqZWN0b3J5U3RlcCB7XHJcbiAgLyoqIFN0ZXAgdHlwZSAqL1xyXG4gIHR5cGU6ICdxdWVyeScgfCAncm91dGUnIHwgJ2dlbmVyYXRlJyB8ICdtZW1vcnknIHwgJ2ZlZWRiYWNrJztcclxuICAvKiogSW5wdXQgZGF0YSAqL1xyXG4gIGlucHV0OiBzdHJpbmc7XHJcbiAgLyoqIE91dHB1dCBkYXRhICovXHJcbiAgb3V0cHV0OiBzdHJpbmc7XHJcbiAgLyoqIER1cmF0aW9uIG9mIHRoaXMgc3RlcCAqL1xyXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcclxuICAvKiogQ29uZmlkZW5jZSBhdCB0aGlzIHN0ZXAgKi9cclxuICBjb25maWRlbmNlOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmFqZWN0b3J5IG91dGNvbWVcclxuICovXHJcbmV4cG9ydCB0eXBlIFRyYWplY3RvcnlPdXRjb21lID0gJ3N1Y2Nlc3MnIHwgJ3BhcnRpYWwnIHwgJ2ZhaWx1cmUnIHwgJ3Vua25vd24nO1xyXG5cclxuLyoqXHJcbiAqIExlYXJuZWQgcGF0dGVybiBmcm9tIFJlYXNvbmluZ0JhbmtcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGVhcm5lZFBhdHRlcm4ge1xyXG4gIC8qKiBQYXR0ZXJuIElEICovXHJcbiAgaWQ6IHN0cmluZztcclxuICAvKiogUGF0dGVybiB0eXBlICovXHJcbiAgdHlwZTogUGF0dGVyblR5cGU7XHJcbiAgLyoqIFBhdHRlcm4gZW1iZWRkaW5nICovXHJcbiAgZW1iZWRkaW5nOiBFbWJlZGRpbmc7XHJcbiAgLyoqIFN1Y2Nlc3MgcmF0ZSAoMC0xKSAqL1xyXG4gIHN1Y2Nlc3NSYXRlOiBudW1iZXI7XHJcbiAgLyoqIFRpbWVzIHVzZWQgKi9cclxuICB1c2VDb3VudDogbnVtYmVyO1xyXG4gIC8qKiBMYXN0IHVzZWQgdGltZXN0YW1wICovXHJcbiAgbGFzdFVzZWQ6IERhdGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUeXBlcyBvZiBsZWFybmVkIHBhdHRlcm5zXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBQYXR0ZXJuVHlwZSA9XHJcbiAgfCAncXVlcnlfcmVzcG9uc2UnICAgICAgLy8gUSZBIHBhdHRlcm5cclxuICB8ICdyb3V0aW5nJyAgICAgICAgICAgICAvLyBSb3V0aW5nIGRlY2lzaW9uIHBhdHRlcm5cclxuICB8ICdjb250ZXh0X3JldHJpZXZhbCcgICAvLyBNZW1vcnkgcmV0cmlldmFsIHBhdHRlcm5cclxuICB8ICdjb3JyZWN0aW9uJyAgICAgICAgICAvLyBVc2VyIGNvcnJlY3Rpb24gcGF0dGVyblxyXG4gIHwgJ2Fic3RyYWN0aW9uJzsgICAgICAgIC8vIENvbXByZXNzZWQgY29uY2VwdFxyXG5cclxuLyoqXHJcbiAqIExvUkEgYWRhcHRlciBjb25maWd1cmF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExvUkFDb25maWcge1xyXG4gIC8qKiBBZGFwdGVyIHJhbmsgKDQsIDgsIDE2LCAzMikgKi9cclxuICByYW5rOiBudW1iZXI7XHJcbiAgLyoqIEFscGhhIHNjYWxpbmcgZmFjdG9yICovXHJcbiAgYWxwaGE6IG51bWJlcjtcclxuICAvKiogRHJvcG91dCByYXRlICovXHJcbiAgZHJvcG91dDogbnVtYmVyO1xyXG4gIC8qKiBUYXJnZXQgbW9kdWxlcyB0byBhZGFwdCAqL1xyXG4gIHRhcmdldE1vZHVsZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG4vKipcclxuICogRVdDIChFbGFzdGljIFdlaWdodCBDb25zb2xpZGF0aW9uKSBzdGF0c1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBFd2NTdGF0cyB7XHJcbiAgLyoqIE51bWJlciBvZiB0YXNrcyBsZWFybmVkICovXHJcbiAgdGFza3NMZWFybmVkOiBudW1iZXI7XHJcbiAgLyoqIEZpc2hlciBpbmZvcm1hdGlvbiBjb21wdXRlZCAqL1xyXG4gIGZpc2hlckNvbXB1dGVkOiBib29sZWFuO1xyXG4gIC8qKiBNZW1vcnkgcHJvdGVjdGlvbiBzdHJlbmd0aCAqL1xyXG4gIHByb3RlY3Rpb25TdHJlbmd0aDogbnVtYmVyO1xyXG4gIC8qKiBFc3RpbWF0ZWQgZm9yZ2V0dGluZyByYXRlICovXHJcbiAgZm9yZ2V0dGluZ1JhdGU6IG51bWJlcjtcclxufVxyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gU2Vzc2lvbiAmIENvbnZlcnNhdGlvbiBUeXBlc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLyoqXHJcbiAqIEV4dGVuZGVkIHNlc3Npb24gd2l0aCBjb252ZXJzYXRpb24gaGlzdG9yeVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb25TZXNzaW9uIGV4dGVuZHMgU2Vzc2lvbiB7XHJcbiAgLyoqIENvbnZlcnNhdGlvbiBtZXNzYWdlcyAqL1xyXG4gIG1lc3NhZ2VzOiBDb252ZXJzYXRpb25NZXNzYWdlW107XHJcbiAgLyoqIFNlc3Npb24gY29udGV4dCAoYWNjdW11bGF0ZWQpICovXHJcbiAgY29udGV4dDogc3RyaW5nW107XHJcbiAgLyoqIEFjdGl2ZSBtZW1vcnkgSURzICovXHJcbiAgYWN0aXZlTWVtb3J5SWRzOiBudW1iZXJbXTtcclxuICAvKiogU2Vzc2lvbiBtZXRhZGF0YSAqL1xyXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNpbmdsZSBtZXNzYWdlIGluIGNvbnZlcnNhdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb25NZXNzYWdlIHtcclxuICAvKiogTWVzc2FnZSByb2xlICovXHJcbiAgcm9sZTogJ3VzZXInIHwgJ2Fzc2lzdGFudCcgfCAnc3lzdGVtJztcclxuICAvKiogTWVzc2FnZSBjb250ZW50ICovXHJcbiAgY29udGVudDogc3RyaW5nO1xyXG4gIC8qKiBUaW1lc3RhbXAgKi9cclxuICB0aW1lc3RhbXA6IERhdGU7XHJcbiAgLyoqIEFzc29jaWF0ZWQgcmVxdWVzdCBJRCAoaWYgYXNzaXN0YW50KSAqL1xyXG4gIHJlcXVlc3RJZD86IHN0cmluZztcclxufVxyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gU3RyZWFtaW5nIFR5cGVzXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4vKipcclxuICogU3RyZWFtaW5nIHJlc3BvbnNlIGNodW5rXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbUNodW5rIHtcclxuICAvKiogQ2h1bmsgdGV4dCAqL1xyXG4gIHRleHQ6IHN0cmluZztcclxuICAvKiogSXMgZmluYWwgY2h1bmsgKi9cclxuICBkb25lOiBib29sZWFuO1xyXG4gIC8qKiBUb2tlbiBjb3VudCBzbyBmYXIgKi9cclxuICB0b2tlbkNvdW50OiBudW1iZXI7XHJcbiAgLyoqIEN1bXVsYXRpdmUgbGF0ZW5jeSAqL1xyXG4gIGxhdGVuY3lNczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogU3RyZWFtIG9wdGlvbnNcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtT3B0aW9ucyBleHRlbmRzIEdlbmVyYXRpb25Db25maWcge1xyXG4gIC8qKiBDYWxsYmFjayBmb3IgZWFjaCBjaHVuayAqL1xyXG4gIG9uQ2h1bms/OiAoY2h1bms6IFN0cmVhbUNodW5rKSA9PiB2b2lkO1xyXG4gIC8qKiBDYWxsYmFjayBvbiBjb21wbGV0aW9uICovXHJcbiAgb25Db21wbGV0ZT86IChyZXNwb25zZTogUXVlcnlSZXNwb25zZSkgPT4gdm9pZDtcclxuICAvKiogQ2FsbGJhY2sgb24gZXJyb3IgKi9cclxuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcclxufVxyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gQ29tcHJlc3Npb24gJiBBcmNoaXZhbCBUeXBlc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLyoqXHJcbiAqIE1lbW9yeSBjb21wcmVzc2lvbiByZXN1bHRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHJlc3Npb25SZXN1bHQge1xyXG4gIC8qKiBOb2RlcyBjb21wcmVzc2VkICovXHJcbiAgbm9kZXNDb21wcmVzc2VkOiBudW1iZXI7XHJcbiAgLyoqIE5vZGVzIGFyY2hpdmVkICovXHJcbiAgbm9kZXNBcmNoaXZlZDogbnVtYmVyO1xyXG4gIC8qKiBDb25jZXB0cyBjcmVhdGVkICovXHJcbiAgY29uY2VwdHNDcmVhdGVkOiBudW1iZXI7XHJcbiAgLyoqIE1lbW9yeSBzYXZlZCAoYnl0ZXMpICovXHJcbiAgbWVtb3J5U2F2ZWQ6IG51bWJlcjtcclxuICAvKiogRHVyYXRpb24gKi9cclxuICBkdXJhdGlvbk1zOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcmNoaXZlIHF1ZXJ5IHJlc3VsdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBBcmNoaXZlUmVzdWx0IHtcclxuICAvKiogQXJjaGl2ZWQgbm9kZSBJRCAqL1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgLyoqIE9yaWdpbmFsIGNvbnRlbnQgKGlmIGF2YWlsYWJsZSkgKi9cclxuICBjb250ZW50Pzogc3RyaW5nO1xyXG4gIC8qKiBDb25jZXB0IGl0IGJlbG9uZ3MgdG8gKi9cclxuICBjb25jZXB0SWQ/OiBzdHJpbmc7XHJcbiAgLyoqIEFyY2hpdmUgdGltZXN0YW1wICovXHJcbiAgYXJjaGl2ZWRBdDogRGF0ZTtcclxufVxyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gQXR0ZW50aW9uIFR5cGVzXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4vKipcclxuICogQXR0ZW50aW9uIHdlaWdodHMgZm9yIGludGVycHJldGFiaWxpdHlcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXR0ZW50aW9uV2VpZ2h0cyB7XHJcbiAgLyoqIFF1ZXJ5LWtleSBhdHRlbnRpb24gc2NvcmVzICovXHJcbiAgc2NvcmVzOiBudW1iZXJbXVtdO1xyXG4gIC8qKiBIZWFkIGluZGV4ICovXHJcbiAgaGVhZEluZGV4OiBudW1iZXI7XHJcbiAgLyoqIExheWVyIGluZGV4ICovXHJcbiAgbGF5ZXJJbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogQXR0ZW50aW9uIGFuYWx5c2lzIHJlc3VsdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBBdHRlbnRpb25BbmFseXNpcyB7XHJcbiAgLyoqIE1vc3QgYXR0ZW5kZWQgdG9rZW5zICovXHJcbiAgdG9wQXR0ZW5kZWQ6IEFycmF5PHsgdG9rZW46IHN0cmluZzsgd2VpZ2h0OiBudW1iZXIgfT47XHJcbiAgLyoqIEF0dGVudGlvbiBlbnRyb3B5ICh1bmNlcnRhaW50eSkgKi9cclxuICBlbnRyb3B5OiBudW1iZXI7XHJcbiAgLyoqIEZvY3VzIHNjb3JlICgwLTEsIGhpZ2hlciA9IG1vcmUgZm9jdXNlZCkgKi9cclxuICBmb2N1c1Njb3JlOiBudW1iZXI7XHJcbn1cclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIEZlZGVyYXRlZCBMZWFybmluZyBUeXBlc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLyoqXHJcbiAqIEZlZGVyYXRlZCBsZWFybmluZyBjb25maWd1cmF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEZlZGVyYXRlZENvbmZpZyB7XHJcbiAgLyoqIEhpZGRlbiBkaW1lbnNpb24gZm9yIGVtYmVkZGluZ3MgKi9cclxuICBoaWRkZW5EaW0/OiBudW1iZXI7XHJcbiAgLyoqIEVtYmVkZGluZyBkaW1lbnNpb24gKi9cclxuICBlbWJlZGRpbmdEaW0/OiBudW1iZXI7XHJcbiAgLyoqIE1pY3JvLUxvUkEgcmFuayAqL1xyXG4gIG1pY3JvTG9yYVJhbms/OiBudW1iZXI7XHJcbiAgLyoqIEJhc2UgTG9SQSByYW5rICovXHJcbiAgYmFzZUxvcmFSYW5rPzogbnVtYmVyO1xyXG4gIC8qKiBUcmFqZWN0b3J5IGJ1ZmZlciBjYXBhY2l0eSAqL1xyXG4gIHRyYWplY3RvcnlDYXBhY2l0eT86IG51bWJlcjtcclxuICAvKiogUGF0dGVybiBjbHVzdGVyIGNvdW50ICovXHJcbiAgcGF0dGVybkNsdXN0ZXJzPzogbnVtYmVyO1xyXG4gIC8qKiBFV0MgbGFtYmRhIGZvciByZWd1bGFyaXphdGlvbiAqL1xyXG4gIGV3Y0xhbWJkYT86IG51bWJlcjtcclxuICAvKiogUXVhbGl0eSB0aHJlc2hvbGQgZm9yIGFjY2VwdGluZyB0cmFqZWN0b3JpZXMgKi9cclxuICBxdWFsaXR5VGhyZXNob2xkPzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogVHJhamVjdG9yeSBleHBvcnQgZm9yIGZlZGVyYXRpb25cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhamVjdG9yeUV4cG9ydCB7XHJcbiAgLyoqIFF1ZXJ5IGVtYmVkZGluZyAqL1xyXG4gIGVtYmVkZGluZzogRW1iZWRkaW5nO1xyXG4gIC8qKiBRdWFsaXR5IHNjb3JlICovXHJcbiAgcXVhbGl0eTogbnVtYmVyO1xyXG4gIC8qKiBNb2RlbCByb3V0ZSAoaWYgYW55KSAqL1xyXG4gIHJvdXRlPzogc3RyaW5nO1xyXG4gIC8qKiBDb250ZXh0IGlkZW50aWZpZXJzICovXHJcbiAgY29udGV4dDogc3RyaW5nW107XHJcbiAgLyoqIFRpbWVzdGFtcCAqL1xyXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogQWdlbnQgZXhwb3J0IHN0YXRpc3RpY3NcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFeHBvcnRTdGF0cyB7XHJcbiAgLyoqIFRvdGFsIHRyYWplY3RvcmllcyBwcm9jZXNzZWQgKi9cclxuICB0b3RhbFRyYWplY3RvcmllczogbnVtYmVyO1xyXG4gIC8qKiBBdmVyYWdlIHF1YWxpdHkgKi9cclxuICBhdmdRdWFsaXR5OiBudW1iZXI7XHJcbiAgLyoqIFBhdHRlcm5zIGxlYXJuZWQgbG9jYWxseSAqL1xyXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogRXhwb3J0ZWQgc3RhdGUgZnJvbSBhbiBlcGhlbWVyYWwgYWdlbnRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFeHBvcnQge1xyXG4gIC8qKiBBZ2VudCBpZGVudGlmaWVyICovXHJcbiAgYWdlbnRJZDogc3RyaW5nO1xyXG4gIC8qKiBFeHBvcnRlZCB0cmFqZWN0b3JpZXMgKi9cclxuICB0cmFqZWN0b3JpZXM6IFRyYWplY3RvcnlFeHBvcnRbXTtcclxuICAvKiogQWdlbnQgc3RhdGlzdGljcyAqL1xyXG4gIHN0YXRzOiBBZ2VudEV4cG9ydFN0YXRzO1xyXG4gIC8qKiBTZXNzaW9uIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyAqL1xyXG4gIHNlc3Npb25EdXJhdGlvbk1zOiBudW1iZXI7XHJcbiAgLyoqIEV4cG9ydCB0aW1lc3RhbXAgKi9cclxuICB0aW1lc3RhbXA6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFnZW50IGNvbnRyaWJ1dGlvbiByZWNvcmRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDb250cmlidXRpb24ge1xyXG4gIC8qKiBOdW1iZXIgb2YgdHJhamVjdG9yaWVzIGNvbnRyaWJ1dGVkICovXHJcbiAgdHJhamVjdG9yeUNvdW50OiBudW1iZXI7XHJcbiAgLyoqIEF2ZXJhZ2UgcXVhbGl0eSBvZiBjb250cmlidXRpb25zICovXHJcbiAgYXZnUXVhbGl0eTogbnVtYmVyO1xyXG4gIC8qKiBDb250cmlidXRpb24gdGltZXN0YW1wICovXHJcbiAgdGltZXN0YW1wOiBudW1iZXI7XHJcbiAgLyoqIFNlc3Npb24gZHVyYXRpb24gKi9cclxuICBzZXNzaW9uRHVyYXRpb25NczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzdWx0IG9mIGFnZ3JlZ2F0aW5nIGFuIGFnZW50IGV4cG9ydFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGlvblJlc3VsdCB7XHJcbiAgLyoqIEFnZW50IElEIHRoYXQgd2FzIGFnZ3JlZ2F0ZWQgKi9cclxuICBhZ2VudElkOiBzdHJpbmc7XHJcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgYWNjZXB0ZWQgKi9cclxuICB0cmFqZWN0b3JpZXNBY2NlcHRlZDogbnVtYmVyO1xyXG4gIC8qKiBOdW1iZXIgb2YgdHJhamVjdG9yaWVzIHJlamVjdGVkIChiZWxvdyBxdWFsaXR5IHRocmVzaG9sZCkgKi9cclxuICB0cmFqZWN0b3JpZXNSZWplY3RlZDogbnVtYmVyO1xyXG4gIC8qKiBXaGV0aGVyIGNvbnNvbGlkYXRpb24gd2FzIHRyaWdnZXJlZCAqL1xyXG4gIGNvbnNvbGlkYXRlZDogYm9vbGVhbjtcclxuICAvKiogVG90YWwgbnVtYmVyIG9mIGNvbnRyaWJ1dGluZyBhZ2VudHMgKi9cclxuICB0b3RhbEFnZW50czogbnVtYmVyO1xyXG4gIC8qKiBUb3RhbCB0cmFqZWN0b3JpZXMgaW4gY29vcmRpbmF0b3IgKi9cclxuICB0b3RhbFRyYWplY3RvcmllczogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogQ29vcmRpbmF0b3Igc3RhdGlzdGljc1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb29yZGluYXRvclN0YXRzIHtcclxuICAvKiogQ29vcmRpbmF0b3IgaWRlbnRpZmllciAqL1xyXG4gIGNvb3JkaW5hdG9ySWQ6IHN0cmluZztcclxuICAvKiogTnVtYmVyIG9mIGNvbnRyaWJ1dGluZyBhZ2VudHMgKi9cclxuICB0b3RhbEFnZW50czogbnVtYmVyO1xyXG4gIC8qKiBUb3RhbCB0cmFqZWN0b3JpZXMgYWdncmVnYXRlZCAqL1xyXG4gIHRvdGFsVHJhamVjdG9yaWVzOiBudW1iZXI7XHJcbiAgLyoqIFBhdHRlcm5zIGxlYXJuZWQgKi9cclxuICBwYXR0ZXJuc0xlYXJuZWQ6IG51bWJlcjtcclxuICAvKiogQXZlcmFnZSBxdWFsaXR5IGFjcm9zcyBhbGwgY29udHJpYnV0aW9ucyAqL1xyXG4gIGF2Z1F1YWxpdHk6IG51bWJlcjtcclxuICAvKiogUXVhbGl0eSB0aHJlc2hvbGQgKi9cclxuICBxdWFsaXR5VGhyZXNob2xkOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGZWRlcmF0ZWQgbGVhcm5pbmcgdG9wb2xvZ3lcclxuICovXHJcbmV4cG9ydCB0eXBlIEZlZGVyYXRlZFRvcG9sb2d5ID1cclxuICB8ICdzdGFyJyAgICAgICAgICAgLy8gQWdlbnRzIOKGkiBDZW50cmFsIENvb3JkaW5hdG9yXHJcbiAgfCAnaGllcmFyY2hpY2FsJyAgIC8vIEFnZW50cyDihpIgUmVnaW9uYWwg4oaSIEdsb2JhbFxyXG4gIHwgJ3BlZXItdG8tcGVlcic7ICAvLyBBZ2VudHMgc2hhcmUgZGlyZWN0bHlcclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIFRyYWluaW5nIFBpcGVsaW5lIFR5cGVzXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4vKipcclxuICogVHJhaW5pbmcgY29uZmlndXJhdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ0NvbmZpZyB7XHJcbiAgLyoqIEluaXRpYWwgbGVhcm5pbmcgcmF0ZSAqL1xyXG4gIGxlYXJuaW5nUmF0ZT86IG51bWJlcjtcclxuICAvKiogQmF0Y2ggc2l6ZSAqL1xyXG4gIGJhdGNoU2l6ZT86IG51bWJlcjtcclxuICAvKiogTnVtYmVyIG9mIGVwb2NocyAqL1xyXG4gIGVwb2Nocz86IG51bWJlcjtcclxuICAvKiogTGVhcm5pbmcgcmF0ZSBzY2hlZHVsZXIgKi9cclxuICBzY2hlZHVsZXI/OiAnY29uc3RhbnQnIHwgJ2xpbmVhcicgfCAnY29zaW5lJyB8ICd3YXJtdXAnO1xyXG4gIC8qKiBXYXJtdXAgc3RlcHMgKGZvciB3YXJtdXAgc2NoZWR1bGVyKSAqL1xyXG4gIHdhcm11cFN0ZXBzPzogbnVtYmVyO1xyXG4gIC8qKiBXZWlnaHQgZGVjYXkgKi9cclxuICB3ZWlnaHREZWNheT86IG51bWJlcjtcclxuICAvKiogR3JhZGllbnQgY2xpcHBpbmcgdGhyZXNob2xkICovXHJcbiAgZ3JhZGllbnRDbGlwPzogbnVtYmVyO1xyXG4gIC8qKiBFYXJseSBzdG9wcGluZyBwYXRpZW5jZSAqL1xyXG4gIGVhcmx5U3RvcHBpbmdQYXRpZW5jZT86IG51bWJlcjtcclxuICAvKiogQ2hlY2twb2ludCBpbnRlcnZhbCAoZXBvY2hzKSAqL1xyXG4gIGNoZWNrcG9pbnRJbnRlcnZhbD86IG51bWJlcjtcclxuICAvKiogRVdDIGxhbWJkYSBmb3IgY29udGludWFsIGxlYXJuaW5nICovXHJcbiAgZXdjTGFtYmRhPzogbnVtYmVyO1xyXG4gIC8qKiBWYWxpZGF0aW9uIHNwbGl0IHJhdGlvICovXHJcbiAgdmFsaWRhdGlvblNwbGl0PzogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICogVHJhaW5pbmcgbWV0cmljcyBzbmFwc2hvdFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ01ldHJpY3NTbmFwc2hvdCB7XHJcbiAgLyoqIEN1cnJlbnQgZXBvY2ggKi9cclxuICBlcG9jaDogbnVtYmVyO1xyXG4gIC8qKiBDdXJyZW50IHN0ZXAgKi9cclxuICBzdGVwOiBudW1iZXI7XHJcbiAgLyoqIFRyYWluaW5nIGxvc3MgKi9cclxuICB0cmFpbkxvc3M6IG51bWJlcjtcclxuICAvKiogVmFsaWRhdGlvbiBsb3NzICovXHJcbiAgdmFsTG9zczogbnVtYmVyO1xyXG4gIC8qKiBMZWFybmluZyByYXRlICovXHJcbiAgbGVhcm5pbmdSYXRlOiBudW1iZXI7XHJcbiAgLyoqIEdyYWRpZW50IG5vcm0gKi9cclxuICBncmFkTm9ybTogbnVtYmVyO1xyXG4gIC8qKiBTdGVwcyBwZXIgc2Vjb25kICovXHJcbiAgc3RlcHNQZXJTZWNvbmQ6IG51bWJlcjtcclxuICAvKiogRVRBIGluIHNlY29uZHMgKi9cclxuICBldGFTZWNvbmRzOiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmFpbmluZyByZXN1bHRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdSZXN1bHQge1xyXG4gIC8qKiBUb3RhbCBlcG9jaHMgY29tcGxldGVkICovXHJcbiAgZXBvY2hzOiBudW1iZXI7XHJcbiAgLyoqIFRvdGFsIHN0ZXBzIGNvbXBsZXRlZCAqL1xyXG4gIHN0ZXBzOiBudW1iZXI7XHJcbiAgLyoqIEZpbmFsIHRyYWluaW5nIGxvc3MgKi9cclxuICBmaW5hbExvc3M6IG51bWJlcjtcclxuICAvKiogQmVzdCB2YWxpZGF0aW9uIGxvc3MgKi9cclxuICBiZXN0VmFsTG9zczogbnVtYmVyO1xyXG4gIC8qKiBUcmFpbmluZyBkdXJhdGlvbiBpbiBtcyAqL1xyXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcclxuICAvKiogTG9zcyBoaXN0b3J5ICovXHJcbiAgbG9zc0hpc3Rvcnk6IG51bWJlcltdO1xyXG4gIC8qKiBWYWxpZGF0aW9uIGxvc3MgaGlzdG9yeSAqL1xyXG4gIHZhbExvc3NIaXN0b3J5OiBudW1iZXJbXTtcclxuICAvKiogRWFybHkgc3RvcHBlZCAqL1xyXG4gIGVhcmx5U3RvcHBlZDogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyYWluaW5nIGNoZWNrcG9pbnRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdDaGVja3BvaW50IHtcclxuICAvKiogRXBvY2ggbnVtYmVyICovXHJcbiAgZXBvY2g6IG51bWJlcjtcclxuICAvKiogU3RlcCBudW1iZXIgKi9cclxuICBzdGVwOiBudW1iZXI7XHJcbiAgLyoqIFRyYWluaW5nIGxvc3MgYXQgY2hlY2twb2ludCAqL1xyXG4gIGxvc3M6IG51bWJlcjtcclxuICAvKiogTW9kZWwgd2VpZ2h0cyAoc2VyaWFsaXplZCkgKi9cclxuICB3ZWlnaHRzOiBzdHJpbmc7XHJcbiAgLyoqIFRpbWVzdGFtcCAqL1xyXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xyXG59XHJcblxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBFeHBvcnQvU2VyaWFsaXphdGlvbiBUeXBlc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLyoqXHJcbiAqIEV4cG9ydCBmb3JtYXQgb3B0aW9uc1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgRXhwb3J0Rm9ybWF0ID0gJ3NhZmV0ZW5zb3JzJyB8ICdqc29uJyB8ICdiaW5hcnknIHwgJ29ubngnO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG1ldGFkYXRhIGZvciBleHBvcnRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxNZXRhZGF0YSB7XHJcbiAgLyoqIE1vZGVsIG5hbWUgKi9cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIE1vZGVsIHZlcnNpb24gKi9cclxuICB2ZXJzaW9uOiBzdHJpbmc7XHJcbiAgLyoqIEFyY2hpdGVjdHVyZSB0eXBlICovXHJcbiAgYXJjaGl0ZWN0dXJlOiBzdHJpbmc7XHJcbiAgLyoqIFRyYWluaW5nIGluZm8gKi9cclxuICB0cmFpbmluZz86IHtcclxuICAgIHN0ZXBzOiBudW1iZXI7XHJcbiAgICBsb3NzOiBudW1iZXI7XHJcbiAgICBsZWFybmluZ1JhdGU6IG51bWJlcjtcclxuICB9O1xyXG4gIC8qKiBDdXN0b20gbWV0YWRhdGEgKi9cclxuICBjdXN0b20/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcclxufVxyXG4iXX0=
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJ1dkxMTSBUeXBlIERlZmluaXRpb25zXG4gKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBSdXZMTE0gZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnV2TExNQ29uZmlnIHtcbiAgLyoqIEVtYmVkZGluZyBkaW1lbnNpb24gKGRlZmF1bHQ6IDc2OCkgKi9cbiAgZW1iZWRkaW5nRGltPzogbnVtYmVyO1xuICAvKiogUm91dGVyIGhpZGRlbiBkaW1lbnNpb24gKGRlZmF1bHQ6IDEyOCkgKi9cbiAgcm91dGVySGlkZGVuRGltPzogbnVtYmVyO1xuICAvKiogSE5TVyBNIHBhcmFtZXRlciAoZGVmYXVsdDogMTYpICovXG4gIGhuc3dNPzogbnVtYmVyO1xuICAvKiogSE5TVyBlZl9jb25zdHJ1Y3Rpb24gKGRlZmF1bHQ6IDEwMCkgKi9cbiAgaG5zd0VmQ29uc3RydWN0aW9uPzogbnVtYmVyO1xuICAvKiogSE5TVyBlZl9zZWFyY2ggKGRlZmF1bHQ6IDY0KSAqL1xuICBobnN3RWZTZWFyY2g/OiBudW1iZXI7XG4gIC8qKiBFbmFibGUgbGVhcm5pbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIGxlYXJuaW5nRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBRdWFsaXR5IHRocmVzaG9sZCBmb3IgbGVhcm5pbmcgKGRlZmF1bHQ6IDAuNykgKi9cbiAgcXVhbGl0eVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgKGRlZmF1bHQ6IDIwMDApICovXG4gIGV3Y0xhbWJkYT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHZW5lcmF0aW9uIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0aW9uQ29uZmlnIHtcbiAgLyoqIE1heGltdW0gdG9rZW5zIHRvIGdlbmVyYXRlICovXG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgLyoqIFRlbXBlcmF0dXJlIGZvciBzYW1wbGluZyAoMC4wIC0gMi4wKSAqL1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgLyoqIFRvcC1wIG51Y2xldXMgc2FtcGxpbmcgKDAuMCAtIDEuMCkgKi9cbiAgdG9wUD86IG51bWJlcjtcbiAgLyoqIFRvcC1rIHNhbXBsaW5nICovXG4gIHRvcEs/OiBudW1iZXI7XG4gIC8qKiBSZXBldGl0aW9uIHBlbmFsdHkgKi9cbiAgcmVwZXRpdGlvblBlbmFsdHk/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUXVlcnkgcmVzcG9uc2UgZnJvbSB0aGUgTExNXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSZXNwb25zZSB7XG4gIC8qKiBHZW5lcmF0ZWQgdGV4dCAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBDb25maWRlbmNlIHNjb3JlICgwLjAgLSAxLjApICovXG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgLyoqIFNlbGVjdGVkIG1vZGVsICovXG4gIG1vZGVsOiBzdHJpbmc7XG4gIC8qKiBDb250ZXh0IHNpemUgdXNlZCAqL1xuICBjb250ZXh0U2l6ZTogbnVtYmVyO1xuICAvKiogTGF0ZW5jeSBpbiBtaWxsaXNlY29uZHMgKi9cbiAgbGF0ZW5jeU1zOiBudW1iZXI7XG4gIC8qKiBSZXF1ZXN0IElEIGZvciBmZWVkYmFjayAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSb3V0aW5nIGRlY2lzaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ0RlY2lzaW9uIHtcbiAgLyoqIFNlbGVjdGVkIG1vZGVsIHNpemUgKi9cbiAgbW9kZWw6IE1vZGVsU2l6ZTtcbiAgLyoqIFJlY29tbWVuZGVkIGNvbnRleHQgc2l6ZSAqL1xuICBjb250ZXh0U2l6ZTogbnVtYmVyO1xuICAvKiogVGVtcGVyYXR1cmUgKi9cbiAgdGVtcGVyYXR1cmU6IG51bWJlcjtcbiAgLyoqIFRvcC1wICovXG4gIHRvcFA6IG51bWJlcjtcbiAgLyoqIENvbmZpZGVuY2UgKi9cbiAgY29uZmlkZW5jZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1lbW9yeSBzZWFyY2ggcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5UmVzdWx0IHtcbiAgLyoqIE5vZGUgSUQgKi9cbiAgaWQ6IG51bWJlcjtcbiAgLyoqIFNpbWlsYXJpdHkgc2NvcmUgKi9cbiAgc2NvcmU6IG51bWJlcjtcbiAgLyoqIENvbnRlbnQgdGV4dCAqL1xuICBjb250ZW50OiBzdHJpbmc7XG4gIC8qKiBNZXRhZGF0YSAqL1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogRW5naW5lIHN0YXRpc3RpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdXZMTE1TdGF0cyB7XG4gIC8qKiBUb3RhbCBxdWVyaWVzIHByb2Nlc3NlZCAqL1xuICB0b3RhbFF1ZXJpZXM6IG51bWJlcjtcbiAgLyoqIE1lbW9yeSBub2RlcyBzdG9yZWQgKi9cbiAgbWVtb3J5Tm9kZXM6IG51bWJlcjtcbiAgLyoqIFBhdHRlcm5zIGxlYXJuZWQgKi9cbiAgcGF0dGVybnNMZWFybmVkOiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIGxhdGVuY3kgaW4gbXMgKi9cbiAgYXZnTGF0ZW5jeU1zOiBudW1iZXI7XG4gIC8qKiBDYWNoZSBoaXQgcmF0ZSAoMC4wIC0gMS4wKSAqL1xuICBjYWNoZUhpdFJhdGU6IG51bWJlcjtcbiAgLyoqIFJvdXRlciBhY2N1cmFjeSAoMC4wIC0gMS4wKSAqL1xuICByb3V0ZXJBY2N1cmFjeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1vZGVsIHNpemUgb3B0aW9uc1xuICovXG5leHBvcnQgdHlwZSBNb2RlbFNpemUgPSAnTTM1MCcgfCAnTTcwMCcgfCAnQjFfMicgfCAnQjJfNic7XG5cbi8qKlxuICogRmVlZGJhY2sgZm9yIGxlYXJuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVlZGJhY2sge1xuICAvKiogUmVxdWVzdCBJRCBmcm9tIHF1ZXJ5IHJlc3BvbnNlICovXG4gIHJlcXVlc3RJZDogc3RyaW5nO1xuICAvKiogUmF0aW5nIDEtNSAqL1xuICByYXRpbmc6IG51bWJlcjtcbiAgLyoqIE9wdGlvbmFsIGNvcnJlY3Rpb24gdGV4dCAqL1xuICBjb3JyZWN0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlc3Npb24gZm9yIG11bHRpLXR1cm4gY29udmVyc2F0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb24ge1xuICAvKiogU2Vzc2lvbiBJRCAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogQ3JlYXRlZCB0aW1lc3RhbXAgKi9cbiAgY3JlYXRlZEF0OiBEYXRlO1xuICAvKiogTWVzc2FnZXMgaW4gc2Vzc2lvbiAqL1xuICBtZXNzYWdlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTSU1EIGNhcGFiaWxpdGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpbWRDYXBhYmlsaXRpZXMge1xuICAvKiogSGFzIGFueSBTSU1EIHN1cHBvcnQgKi9cbiAgaGFzU2ltZDogYm9vbGVhbjtcbiAgLyoqIEF2YWlsYWJsZSBTSU1EIGluc3RydWN0aW9ucyAqL1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVtYmVkZGluZyByZXN1bHRcbiAqL1xuZXhwb3J0IHR5cGUgRW1iZWRkaW5nID0gbnVtYmVyW107XG5cbi8qKlxuICogQmF0Y2ggcXVlcnkgcmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhdGNoUXVlcnlSZXF1ZXN0IHtcbiAgLyoqIFF1ZXJpZXMgdG8gcHJvY2VzcyAqL1xuICBxdWVyaWVzOiBzdHJpbmdbXTtcbiAgLyoqIE9wdGlvbmFsIGdlbmVyYXRpb24gY29uZmlnICovXG4gIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWc7XG59XG5cbi8qKlxuICogQmF0Y2ggcXVlcnkgcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXRjaFF1ZXJ5UmVzcG9uc2Uge1xuICAvKiogUmVzcG9uc2VzIGZvciBlYWNoIHF1ZXJ5ICovXG4gIHJlc3BvbnNlczogUXVlcnlSZXNwb25zZVtdO1xuICAvKiogVG90YWwgcHJvY2Vzc2luZyB0aW1lIGluIG1zICovXG4gIHRvdGFsTGF0ZW5jeU1zOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTT05BIExlYXJuaW5nIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNPTkEgQ29uZmlndXJhdGlvbiBmb3IgYWRhcHRpdmUgbGVhcm5pbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb25hQ29uZmlnIHtcbiAgLyoqIEVuYWJsZSBpbnN0YW50IGxvb3AgKHJlYWwtdGltZSBsZWFybmluZykgKi9cbiAgaW5zdGFudExvb3BFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBiYWNrZ3JvdW5kIGxvb3AgKGJhdGNoIGxlYXJuaW5nKSAqL1xuICBiYWNrZ3JvdW5kTG9vcEVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTGVhcm5pbmcgcmF0ZSBmb3IgTG9SQSBhZGFwdGVycyAqL1xuICBsb3JhTGVhcm5pbmdSYXRlPzogbnVtYmVyO1xuICAvKiogTG9SQSByYW5rIChsb3dlciA9IGZhc3RlciwgaGlnaGVyID0gbW9yZSBjYXBhY2l0eSkgKi9cbiAgbG9yYVJhbms/OiBudW1iZXI7XG4gIC8qKiBFV0MgbGFtYmRhIGZvciBtZW1vcnkgcHJvdGVjdGlvbiAqL1xuICBld2NMYW1iZGE/OiBudW1iZXI7XG4gIC8qKiBNYXggdHJhamVjdG9yeSBidWZmZXIgc2l6ZSAqL1xuICBtYXhUcmFqZWN0b3J5U2l6ZT86IG51bWJlcjtcbiAgLyoqIFBhdHRlcm4gc2ltaWxhcml0eSB0aHJlc2hvbGQgKi9cbiAgcGF0dGVyblRocmVzaG9sZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBMZWFybmluZyBzaWduYWwgZnJvbSB1c2VyIGZlZWRiYWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVhcm5pbmdTaWduYWwge1xuICAvKiogUmVxdWVzdCBJRCAqL1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgLyoqIFF1YWxpdHkgc2NvcmUgKDAtMSkgKi9cbiAgcXVhbGl0eTogbnVtYmVyO1xuICAvKiogU2lnbmFsIHR5cGUgKi9cbiAgdHlwZTogU2lnbmFsVHlwZTtcbiAgLyoqIE9wdGlvbmFsIGNvcnJlY3Rpb24gKi9cbiAgY29ycmVjdGlvbj86IHN0cmluZztcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IERhdGU7XG59XG5cbi8qKlxuICogU2lnbmFsIHR5cGVzIGZvciBsZWFybmluZ1xuICovXG5leHBvcnQgdHlwZSBTaWduYWxUeXBlID0gJ3Bvc2l0aXZlJyB8ICduZWdhdGl2ZScgfCAnY29ycmVjdGlvbicgfCAnaW1wbGljaXQnO1xuXG4vKipcbiAqIFF1ZXJ5IHRyYWplY3RvcnkgZm9yIGxlYXJuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUcmFqZWN0b3J5IHtcbiAgLyoqIFRyYWplY3RvcnkgSUQgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFN0ZXBzIGluIHRoZSB0cmFqZWN0b3J5ICovXG4gIHN0ZXBzOiBUcmFqZWN0b3J5U3RlcFtdO1xuICAvKiogRmluYWwgb3V0Y29tZSAqL1xuICBvdXRjb21lOiBUcmFqZWN0b3J5T3V0Y29tZTtcbiAgLyoqIFRvdGFsIGR1cmF0aW9uICovXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTaW5nbGUgc3RlcCBpbiBhIHRyYWplY3RvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFqZWN0b3J5U3RlcCB7XG4gIC8qKiBTdGVwIHR5cGUgKi9cbiAgdHlwZTogJ3F1ZXJ5JyB8ICdyb3V0ZScgfCAnZ2VuZXJhdGUnIHwgJ21lbW9yeScgfCAnZmVlZGJhY2snO1xuICAvKiogSW5wdXQgZGF0YSAqL1xuICBpbnB1dDogc3RyaW5nO1xuICAvKiogT3V0cHV0IGRhdGEgKi9cbiAgb3V0cHV0OiBzdHJpbmc7XG4gIC8qKiBEdXJhdGlvbiBvZiB0aGlzIHN0ZXAgKi9cbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICAvKiogQ29uZmlkZW5jZSBhdCB0aGlzIHN0ZXAgKi9cbiAgY29uZmlkZW5jZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRyYWplY3Rvcnkgb3V0Y29tZVxuICovXG5leHBvcnQgdHlwZSBUcmFqZWN0b3J5T3V0Y29tZSA9ICdzdWNjZXNzJyB8ICdwYXJ0aWFsJyB8ICdmYWlsdXJlJyB8ICd1bmtub3duJztcblxuLyoqXG4gKiBMZWFybmVkIHBhdHRlcm4gZnJvbSBSZWFzb25pbmdCYW5rXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGVhcm5lZFBhdHRlcm4ge1xuICAvKiogUGF0dGVybiBJRCAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogUGF0dGVybiB0eXBlICovXG4gIHR5cGU6IFBhdHRlcm5UeXBlO1xuICAvKiogUGF0dGVybiBlbWJlZGRpbmcgKi9cbiAgZW1iZWRkaW5nOiBFbWJlZGRpbmc7XG4gIC8qKiBTdWNjZXNzIHJhdGUgKDAtMSkgKi9cbiAgc3VjY2Vzc1JhdGU6IG51bWJlcjtcbiAgLyoqIFRpbWVzIHVzZWQgKi9cbiAgdXNlQ291bnQ6IG51bWJlcjtcbiAgLyoqIExhc3QgdXNlZCB0aW1lc3RhbXAgKi9cbiAgbGFzdFVzZWQ6IERhdGU7XG59XG5cbi8qKlxuICogVHlwZXMgb2YgbGVhcm5lZCBwYXR0ZXJuc1xuICovXG5leHBvcnQgdHlwZSBQYXR0ZXJuVHlwZSA9XG4gIHwgJ3F1ZXJ5X3Jlc3BvbnNlJyAgICAgIC8vIFEmQSBwYXR0ZXJuXG4gIHwgJ3JvdXRpbmcnICAgICAgICAgICAgIC8vIFJvdXRpbmcgZGVjaXNpb24gcGF0dGVyblxuICB8ICdjb250ZXh0X3JldHJpZXZhbCcgICAvLyBNZW1vcnkgcmV0cmlldmFsIHBhdHRlcm5cbiAgfCAnY29ycmVjdGlvbicgICAgICAgICAgLy8gVXNlciBjb3JyZWN0aW9uIHBhdHRlcm5cbiAgfCAnYWJzdHJhY3Rpb24nOyAgICAgICAgLy8gQ29tcHJlc3NlZCBjb25jZXB0XG5cbi8qKlxuICogTG9SQSBhZGFwdGVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb1JBQ29uZmlnIHtcbiAgLyoqIEFkYXB0ZXIgcmFuayAoNCwgOCwgMTYsIDMyKSAqL1xuICByYW5rOiBudW1iZXI7XG4gIC8qKiBBbHBoYSBzY2FsaW5nIGZhY3RvciAqL1xuICBhbHBoYTogbnVtYmVyO1xuICAvKiogRHJvcG91dCByYXRlICovXG4gIGRyb3BvdXQ6IG51bWJlcjtcbiAgLyoqIFRhcmdldCBtb2R1bGVzIHRvIGFkYXB0ICovXG4gIHRhcmdldE1vZHVsZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEVXQyAoRWxhc3RpYyBXZWlnaHQgQ29uc29saWRhdGlvbikgc3RhdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFd2NTdGF0cyB7XG4gIC8qKiBOdW1iZXIgb2YgdGFza3MgbGVhcm5lZCAqL1xuICB0YXNrc0xlYXJuZWQ6IG51bWJlcjtcbiAgLyoqIEZpc2hlciBpbmZvcm1hdGlvbiBjb21wdXRlZCAqL1xuICBmaXNoZXJDb21wdXRlZDogYm9vbGVhbjtcbiAgLyoqIE1lbW9yeSBwcm90ZWN0aW9uIHN0cmVuZ3RoICovXG4gIHByb3RlY3Rpb25TdHJlbmd0aDogbnVtYmVyO1xuICAvKiogRXN0aW1hdGVkIGZvcmdldHRpbmcgcmF0ZSAqL1xuICBmb3JnZXR0aW5nUmF0ZTogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2Vzc2lvbiAmIENvbnZlcnNhdGlvbiBUeXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeHRlbmRlZCBzZXNzaW9uIHdpdGggY29udmVyc2F0aW9uIGhpc3RvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb25TZXNzaW9uIGV4dGVuZHMgU2Vzc2lvbiB7XG4gIC8qKiBDb252ZXJzYXRpb24gbWVzc2FnZXMgKi9cbiAgbWVzc2FnZXM6IENvbnZlcnNhdGlvbk1lc3NhZ2VbXTtcbiAgLyoqIFNlc3Npb24gY29udGV4dCAoYWNjdW11bGF0ZWQpICovXG4gIGNvbnRleHQ6IHN0cmluZ1tdO1xuICAvKiogQWN0aXZlIG1lbW9yeSBJRHMgKi9cbiAgYWN0aXZlTWVtb3J5SWRzOiBudW1iZXJbXTtcbiAgLyoqIFNlc3Npb24gbWV0YWRhdGEgKi9cbiAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFNpbmdsZSBtZXNzYWdlIGluIGNvbnZlcnNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbk1lc3NhZ2Uge1xuICAvKiogTWVzc2FnZSByb2xlICovXG4gIHJvbGU6ICd1c2VyJyB8ICdhc3Npc3RhbnQnIHwgJ3N5c3RlbSc7XG4gIC8qKiBNZXNzYWdlIGNvbnRlbnQgKi9cbiAgY29udGVudDogc3RyaW5nO1xuICAvKiogVGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogRGF0ZTtcbiAgLyoqIEFzc29jaWF0ZWQgcmVxdWVzdCBJRCAoaWYgYXNzaXN0YW50KSAqL1xuICByZXF1ZXN0SWQ/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTdHJlYW1pbmcgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU3RyZWFtaW5nIHJlc3BvbnNlIGNodW5rXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtQ2h1bmsge1xuICAvKiogQ2h1bmsgdGV4dCAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBJcyBmaW5hbCBjaHVuayAqL1xuICBkb25lOiBib29sZWFuO1xuICAvKiogVG9rZW4gY291bnQgc28gZmFyICovXG4gIHRva2VuQ291bnQ6IG51bWJlcjtcbiAgLyoqIEN1bXVsYXRpdmUgbGF0ZW5jeSAqL1xuICBsYXRlbmN5TXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTdHJlYW0gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbU9wdGlvbnMgZXh0ZW5kcyBHZW5lcmF0aW9uQ29uZmlnIHtcbiAgLyoqIENhbGxiYWNrIGZvciBlYWNoIGNodW5rICovXG4gIG9uQ2h1bms/OiAoY2h1bms6IFN0cmVhbUNodW5rKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgb24gY29tcGxldGlvbiAqL1xuICBvbkNvbXBsZXRlPzogKHJlc3BvbnNlOiBRdWVyeVJlc3BvbnNlKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgb24gZXJyb3IgKi9cbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wcmVzc2lvbiAmIEFyY2hpdmFsIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE1lbW9yeSBjb21wcmVzc2lvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wcmVzc2lvblJlc3VsdCB7XG4gIC8qKiBOb2RlcyBjb21wcmVzc2VkICovXG4gIG5vZGVzQ29tcHJlc3NlZDogbnVtYmVyO1xuICAvKiogTm9kZXMgYXJjaGl2ZWQgKi9cbiAgbm9kZXNBcmNoaXZlZDogbnVtYmVyO1xuICAvKiogQ29uY2VwdHMgY3JlYXRlZCAqL1xuICBjb25jZXB0c0NyZWF0ZWQ6IG51bWJlcjtcbiAgLyoqIE1lbW9yeSBzYXZlZCAoYnl0ZXMpICovXG4gIG1lbW9yeVNhdmVkOiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiAqL1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG59XG5cbi8qKlxuICogQXJjaGl2ZSBxdWVyeSByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcmNoaXZlUmVzdWx0IHtcbiAgLyoqIEFyY2hpdmVkIG5vZGUgSUQgKi9cbiAgaWQ6IG51bWJlcjtcbiAgLyoqIE9yaWdpbmFsIGNvbnRlbnQgKGlmIGF2YWlsYWJsZSkgKi9cbiAgY29udGVudD86IHN0cmluZztcbiAgLyoqIENvbmNlcHQgaXQgYmVsb25ncyB0byAqL1xuICBjb25jZXB0SWQ/OiBzdHJpbmc7XG4gIC8qKiBBcmNoaXZlIHRpbWVzdGFtcCAqL1xuICBhcmNoaXZlZEF0OiBEYXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXR0ZW50aW9uIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEF0dGVudGlvbiB3ZWlnaHRzIGZvciBpbnRlcnByZXRhYmlsaXR5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0ZW50aW9uV2VpZ2h0cyB7XG4gIC8qKiBRdWVyeS1rZXkgYXR0ZW50aW9uIHNjb3JlcyAqL1xuICBzY29yZXM6IG51bWJlcltdW107XG4gIC8qKiBIZWFkIGluZGV4ICovXG4gIGhlYWRJbmRleDogbnVtYmVyO1xuICAvKiogTGF5ZXIgaW5kZXggKi9cbiAgbGF5ZXJJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEF0dGVudGlvbiBhbmFseXNpcyByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdHRlbnRpb25BbmFseXNpcyB7XG4gIC8qKiBNb3N0IGF0dGVuZGVkIHRva2VucyAqL1xuICB0b3BBdHRlbmRlZDogQXJyYXk8eyB0b2tlbjogc3RyaW5nOyB3ZWlnaHQ6IG51bWJlciB9PjtcbiAgLyoqIEF0dGVudGlvbiBlbnRyb3B5ICh1bmNlcnRhaW50eSkgKi9cbiAgZW50cm9weTogbnVtYmVyO1xuICAvKiogRm9jdXMgc2NvcmUgKDAtMSwgaGlnaGVyID0gbW9yZSBmb2N1c2VkKSAqL1xuICBmb2N1c1Njb3JlOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGZWRlcmF0ZWQgTGVhcm5pbmcgVHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRmVkZXJhdGVkIGxlYXJuaW5nIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGZWRlcmF0ZWRDb25maWcge1xuICAvKiogSGlkZGVuIGRpbWVuc2lvbiBmb3IgZW1iZWRkaW5ncyAqL1xuICBoaWRkZW5EaW0/OiBudW1iZXI7XG4gIC8qKiBFbWJlZGRpbmcgZGltZW5zaW9uICovXG4gIGVtYmVkZGluZ0RpbT86IG51bWJlcjtcbiAgLyoqIE1pY3JvLUxvUkEgcmFuayAqL1xuICBtaWNyb0xvcmFSYW5rPzogbnVtYmVyO1xuICAvKiogQmFzZSBMb1JBIHJhbmsgKi9cbiAgYmFzZUxvcmFSYW5rPzogbnVtYmVyO1xuICAvKiogVHJhamVjdG9yeSBidWZmZXIgY2FwYWNpdHkgKi9cbiAgdHJhamVjdG9yeUNhcGFjaXR5PzogbnVtYmVyO1xuICAvKiogUGF0dGVybiBjbHVzdGVyIGNvdW50ICovXG4gIHBhdHRlcm5DbHVzdGVycz86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgZm9yIHJlZ3VsYXJpemF0aW9uICovXG4gIGV3Y0xhbWJkYT86IG51bWJlcjtcbiAgLyoqIFF1YWxpdHkgdGhyZXNob2xkIGZvciBhY2NlcHRpbmcgdHJhamVjdG9yaWVzICovXG4gIHF1YWxpdHlUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhamVjdG9yeSBleHBvcnQgZm9yIGZlZGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFqZWN0b3J5RXhwb3J0IHtcbiAgLyoqIFF1ZXJ5IGVtYmVkZGluZyAqL1xuICBlbWJlZGRpbmc6IEVtYmVkZGluZztcbiAgLyoqIFF1YWxpdHkgc2NvcmUgKi9cbiAgcXVhbGl0eTogbnVtYmVyO1xuICAvKiogTW9kZWwgcm91dGUgKGlmIGFueSkgKi9cbiAgcm91dGU/OiBzdHJpbmc7XG4gIC8qKiBDb250ZXh0IGlkZW50aWZpZXJzICovXG4gIGNvbnRleHQ6IHN0cmluZ1tdO1xuICAvKiogVGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEFnZW50IGV4cG9ydCBzdGF0aXN0aWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFeHBvcnRTdGF0cyB7XG4gIC8qKiBUb3RhbCB0cmFqZWN0b3JpZXMgcHJvY2Vzc2VkICovXG4gIHRvdGFsVHJhamVjdG9yaWVzOiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIHF1YWxpdHkgKi9cbiAgYXZnUXVhbGl0eTogbnVtYmVyO1xuICAvKiogUGF0dGVybnMgbGVhcm5lZCBsb2NhbGx5ICovXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV4cG9ydGVkIHN0YXRlIGZyb20gYW4gZXBoZW1lcmFsIGFnZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRFeHBvcnQge1xuICAvKiogQWdlbnQgaWRlbnRpZmllciAqL1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIC8qKiBFeHBvcnRlZCB0cmFqZWN0b3JpZXMgKi9cbiAgdHJhamVjdG9yaWVzOiBUcmFqZWN0b3J5RXhwb3J0W107XG4gIC8qKiBBZ2VudCBzdGF0aXN0aWNzICovXG4gIHN0YXRzOiBBZ2VudEV4cG9ydFN0YXRzO1xuICAvKiogU2Vzc2lvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgKi9cbiAgc2Vzc2lvbkR1cmF0aW9uTXM6IG51bWJlcjtcbiAgLyoqIEV4cG9ydCB0aW1lc3RhbXAgKi9cbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbi8qKlxuICogQWdlbnQgY29udHJpYnV0aW9uIHJlY29yZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50Q29udHJpYnV0aW9uIHtcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgY29udHJpYnV0ZWQgKi9cbiAgdHJhamVjdG9yeUNvdW50OiBudW1iZXI7XG4gIC8qKiBBdmVyYWdlIHF1YWxpdHkgb2YgY29udHJpYnV0aW9ucyAqL1xuICBhdmdRdWFsaXR5OiBudW1iZXI7XG4gIC8qKiBDb250cmlidXRpb24gdGltZXN0YW1wICovXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogU2Vzc2lvbiBkdXJhdGlvbiAqL1xuICBzZXNzaW9uRHVyYXRpb25NczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhZ2dyZWdhdGluZyBhbiBhZ2VudCBleHBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGlvblJlc3VsdCB7XG4gIC8qKiBBZ2VudCBJRCB0aGF0IHdhcyBhZ2dyZWdhdGVkICovXG4gIGFnZW50SWQ6IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgYWNjZXB0ZWQgKi9cbiAgdHJhamVjdG9yaWVzQWNjZXB0ZWQ6IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiB0cmFqZWN0b3JpZXMgcmVqZWN0ZWQgKGJlbG93IHF1YWxpdHkgdGhyZXNob2xkKSAqL1xuICB0cmFqZWN0b3JpZXNSZWplY3RlZDogbnVtYmVyO1xuICAvKiogV2hldGhlciBjb25zb2xpZGF0aW9uIHdhcyB0cmlnZ2VyZWQgKi9cbiAgY29uc29saWRhdGVkOiBib29sZWFuO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIGNvbnRyaWJ1dGluZyBhZ2VudHMgKi9cbiAgdG90YWxBZ2VudHM6IG51bWJlcjtcbiAgLyoqIFRvdGFsIHRyYWplY3RvcmllcyBpbiBjb29yZGluYXRvciAqL1xuICB0b3RhbFRyYWplY3RvcmllczogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvb3JkaW5hdG9yIHN0YXRpc3RpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb29yZGluYXRvclN0YXRzIHtcbiAgLyoqIENvb3JkaW5hdG9yIGlkZW50aWZpZXIgKi9cbiAgY29vcmRpbmF0b3JJZDogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIGNvbnRyaWJ1dGluZyBhZ2VudHMgKi9cbiAgdG90YWxBZ2VudHM6IG51bWJlcjtcbiAgLyoqIFRvdGFsIHRyYWplY3RvcmllcyBhZ2dyZWdhdGVkICovXG4gIHRvdGFsVHJhamVjdG9yaWVzOiBudW1iZXI7XG4gIC8qKiBQYXR0ZXJucyBsZWFybmVkICovXG4gIHBhdHRlcm5zTGVhcm5lZDogbnVtYmVyO1xuICAvKiogQXZlcmFnZSBxdWFsaXR5IGFjcm9zcyBhbGwgY29udHJpYnV0aW9ucyAqL1xuICBhdmdRdWFsaXR5OiBudW1iZXI7XG4gIC8qKiBRdWFsaXR5IHRocmVzaG9sZCAqL1xuICBxdWFsaXR5VGhyZXNob2xkOiBudW1iZXI7XG59XG5cbi8qKlxuICogRmVkZXJhdGVkIGxlYXJuaW5nIHRvcG9sb2d5XG4gKi9cbmV4cG9ydCB0eXBlIEZlZGVyYXRlZFRvcG9sb2d5ID1cbiAgfCAnc3RhcicgICAgICAgICAgIC8vIEFnZW50cyDihpIgQ2VudHJhbCBDb29yZGluYXRvclxuICB8ICdoaWVyYXJjaGljYWwnICAgLy8gQWdlbnRzIOKGkiBSZWdpb25hbCDihpIgR2xvYmFsXG4gIHwgJ3BlZXItdG8tcGVlcic7ICAvLyBBZ2VudHMgc2hhcmUgZGlyZWN0bHlcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRyYWluaW5nIFBpcGVsaW5lIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFRyYWluaW5nIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ0NvbmZpZyB7XG4gIC8qKiBJbml0aWFsIGxlYXJuaW5nIHJhdGUgKi9cbiAgbGVhcm5pbmdSYXRlPzogbnVtYmVyO1xuICAvKiogQmF0Y2ggc2l6ZSAqL1xuICBiYXRjaFNpemU/OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgZXBvY2hzICovXG4gIGVwb2Nocz86IG51bWJlcjtcbiAgLyoqIExlYXJuaW5nIHJhdGUgc2NoZWR1bGVyICovXG4gIHNjaGVkdWxlcj86ICdjb25zdGFudCcgfCAnbGluZWFyJyB8ICdjb3NpbmUnIHwgJ3dhcm11cCc7XG4gIC8qKiBXYXJtdXAgc3RlcHMgKGZvciB3YXJtdXAgc2NoZWR1bGVyKSAqL1xuICB3YXJtdXBTdGVwcz86IG51bWJlcjtcbiAgLyoqIFdlaWdodCBkZWNheSAqL1xuICB3ZWlnaHREZWNheT86IG51bWJlcjtcbiAgLyoqIEdyYWRpZW50IGNsaXBwaW5nIHRocmVzaG9sZCAqL1xuICBncmFkaWVudENsaXA/OiBudW1iZXI7XG4gIC8qKiBFYXJseSBzdG9wcGluZyBwYXRpZW5jZSAqL1xuICBlYXJseVN0b3BwaW5nUGF0aWVuY2U/OiBudW1iZXI7XG4gIC8qKiBDaGVja3BvaW50IGludGVydmFsIChlcG9jaHMpICovXG4gIGNoZWNrcG9pbnRJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqIEVXQyBsYW1iZGEgZm9yIGNvbnRpbnVhbCBsZWFybmluZyAqL1xuICBld2NMYW1iZGE/OiBudW1iZXI7XG4gIC8qKiBWYWxpZGF0aW9uIHNwbGl0IHJhdGlvICovXG4gIHZhbGlkYXRpb25TcGxpdD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyBtZXRyaWNzIHNuYXBzaG90XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdNZXRyaWNzU25hcHNob3Qge1xuICAvKiogQ3VycmVudCBlcG9jaCAqL1xuICBlcG9jaDogbnVtYmVyO1xuICAvKiogQ3VycmVudCBzdGVwICovXG4gIHN0ZXA6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGxvc3MgKi9cbiAgdHJhaW5Mb3NzOiBudW1iZXI7XG4gIC8qKiBWYWxpZGF0aW9uIGxvc3MgKi9cbiAgdmFsTG9zczogbnVtYmVyO1xuICAvKiogTGVhcm5pbmcgcmF0ZSAqL1xuICBsZWFybmluZ1JhdGU6IG51bWJlcjtcbiAgLyoqIEdyYWRpZW50IG5vcm0gKi9cbiAgZ3JhZE5vcm06IG51bWJlcjtcbiAgLyoqIFN0ZXBzIHBlciBzZWNvbmQgKi9cbiAgc3RlcHNQZXJTZWNvbmQ6IG51bWJlcjtcbiAgLyoqIEVUQSBpbiBzZWNvbmRzICovXG4gIGV0YVNlY29uZHM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFpbmluZ1Jlc3VsdCB7XG4gIC8qKiBUb3RhbCBlcG9jaHMgY29tcGxldGVkICovXG4gIGVwb2NoczogbnVtYmVyO1xuICAvKiogVG90YWwgc3RlcHMgY29tcGxldGVkICovXG4gIHN0ZXBzOiBudW1iZXI7XG4gIC8qKiBGaW5hbCB0cmFpbmluZyBsb3NzICovXG4gIGZpbmFsTG9zczogbnVtYmVyO1xuICAvKiogQmVzdCB2YWxpZGF0aW9uIGxvc3MgKi9cbiAgYmVzdFZhbExvc3M6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGR1cmF0aW9uIGluIG1zICovXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgLyoqIExvc3MgaGlzdG9yeSAqL1xuICBsb3NzSGlzdG9yeTogbnVtYmVyW107XG4gIC8qKiBWYWxpZGF0aW9uIGxvc3MgaGlzdG9yeSAqL1xuICB2YWxMb3NzSGlzdG9yeTogbnVtYmVyW107XG4gIC8qKiBFYXJseSBzdG9wcGVkICovXG4gIGVhcmx5U3RvcHBlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyBjaGVja3BvaW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdDaGVja3BvaW50IHtcbiAgLyoqIEVwb2NoIG51bWJlciAqL1xuICBlcG9jaDogbnVtYmVyO1xuICAvKiogU3RlcCBudW1iZXIgKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogVHJhaW5pbmcgbG9zcyBhdCBjaGVja3BvaW50ICovXG4gIGxvc3M6IG51bWJlcjtcbiAgLyoqIE1vZGVsIHdlaWdodHMgKHNlcmlhbGl6ZWQpICovXG4gIHdlaWdodHM6IHN0cmluZztcbiAgLyoqIFRpbWVzdGFtcCAqL1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEV4cG9ydC9TZXJpYWxpemF0aW9uIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEV4cG9ydCBmb3JtYXQgb3B0aW9uc1xuICovXG5leHBvcnQgdHlwZSBFeHBvcnRGb3JtYXQgPSAnc2FmZXRlbnNvcnMnIHwgJ2pzb24nIHwgJ2JpbmFyeScgfCAnb25ueCc7XG5cbi8qKlxuICogTW9kZWwgbWV0YWRhdGEgZm9yIGV4cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsTWV0YWRhdGEge1xuICAvKiogTW9kZWwgbmFtZSAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBNb2RlbCB2ZXJzaW9uICovXG4gIHZlcnNpb246IHN0cmluZztcbiAgLyoqIEFyY2hpdGVjdHVyZSB0eXBlICovXG4gIGFyY2hpdGVjdHVyZTogc3RyaW5nO1xuICAvKiogVHJhaW5pbmcgaW5mbyAqL1xuICB0cmFpbmluZz86IHtcbiAgICBzdGVwczogbnVtYmVyO1xuICAgIGxvc3M6IG51bWJlcjtcbiAgICBsZWFybmluZ1JhdGU6IG51bWJlcjtcbiAgfTtcbiAgLyoqIEN1c3RvbSBtZXRhZGF0YSAqL1xuICBjdXN0b20/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cbiJdfQ==
|