@thinkhive/sdk 4.2.2 → 4.2.4

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 CHANGED
@@ -1,4 +1,4 @@
1
- # ThinkHive SDK v4.2.0
1
+ # ThinkHive SDK v4.2.2
2
2
 
3
3
  The official JavaScript/TypeScript SDK for [ThinkHive](https://thinkhive.ai) - AI Agent Observability Platform.
4
4
 
@@ -158,8 +158,11 @@ const status = await calibration.status('agent-123', 'churn_risk');
158
158
  // Get all calibration metrics
159
159
  const metrics = await calibration.allMetrics('agent-123');
160
160
 
161
- // Calculate Brier score locally
162
- const score = calculateBrierScore([
161
+ // Single prediction
162
+ const score = calculateBrierScore(0.8, true); // 0.04
163
+
164
+ // Batch calculation
165
+ const batchScore = calculateBrierScore([
163
166
  { predicted: 0.8, actual: 1 },
164
167
  { predicted: 0.3, actual: 0 },
165
168
  ]);
@@ -586,7 +589,8 @@ await notifications.createRule({
586
589
  });
587
590
 
588
591
  // List notifications
589
- const alerts = await notifications.listNotifications('agent-123', true);
592
+ const alerts = await notifications.list('agent-123', true);
593
+ // or: await notifications.listNotifications('agent-123', true);
590
594
  ```
591
595
 
592
596
  ## Documents (RAG)
@@ -655,7 +659,8 @@ const allDrift = await drift.detectAll();
655
659
  import { llmCosts, formatCost } from '@thinkhive/sdk';
656
660
 
657
661
  // Get cost summary
658
- const summary = await llmCosts.getSummary({ period: '30d' });
662
+ const summary = await llmCosts.summary({ period: '30d' });
663
+ // or: await llmCosts.getSummary({ period: '30d' });
659
664
  console.log(`Total cost: ${formatCost(summary.totalCost)}`);
660
665
 
661
666
  // Get per-agent breakdown
@@ -665,8 +670,48 @@ const breakdown = await llmCosts.getBreakdown('agent-123');
665
670
  const savings = await llmCosts.getSavings();
666
671
  ```
667
672
 
673
+ ## Error Handling
674
+
675
+ ```typescript
676
+ import { ThinkHiveError, RateLimitError } from '@thinkhive/sdk';
677
+
678
+ try {
679
+ await runs.create({ /* ... */ });
680
+ } catch (error) {
681
+ if (error instanceof RateLimitError) {
682
+ console.log(`Retry after ${error.retryAfter}ms`);
683
+ }
684
+ }
685
+
686
+ // Both forms work:
687
+ throw new RateLimitError(60000);
688
+ throw new RateLimitError('Custom message', 60000);
689
+ ```
690
+
668
691
  ## Upgrading
669
692
 
693
+ ### v4.2.0 → v4.2.2
694
+
695
+ Improvements in v4.2.2:
696
+ - **`RateLimitError`** now accepts both `new RateLimitError(retryAfterMs)` and `new RateLimitError('message', retryAfterMs)` signatures
697
+ - **Claims helpers** (`isFact`, `isInference`, `isComputed`) now accept both `{claimType: 'observed'}` (API format) and `{type: 'fact'}` (shorthand)
698
+ - **`groupClaimsByType`** returns both API names (`observed`/`inferred`/`computed`) and shorthand names (`fact`/`inference`)
699
+ - **`calculateBrierScore`** now accepts both single prediction `(probability, outcome)` and batch `([{predicted, actual}])` forms
700
+ - **`calculateECE`** now accepts pre-computed bucket objects `[{averageConfidence, accuracy, count}]` in addition to raw predictions
701
+ - **`isWellCalibrated`** accepts both a raw number and `{brierScore: number}` object
702
+ - **`calculatePassAtK`** now supports both `(passRate, k)` and `(n, c, k)` calling conventions
703
+ - **`isReliableEvaluation`** accepts both a CriterionAnalysis object and a raw reliability score
704
+ - **Rule helpers** (`createRegexRule`, `createContainsRule`, `createLengthRule`, `createJsonSchemaRule`) now return named rule objects with `{type, name, config}` structure
705
+ - **`allRulesPassed`** and **`getFailedRules`** accept any `{passed: boolean}` objects, not just `RuleResult[]`
706
+ - **`aggregateWorst`** / **`aggregateAverage`** now accept simple `number[]` arrays in addition to `TurnEvaluation[]`
707
+ - **Method aliases added** for cross-SDK consistency:
708
+ - `signals.delete()` (alias for `remove()`)
709
+ - `notifications.list()` (alias for `listNotifications()`)
710
+ - `llmCosts.summary()` (alias for `getSummary()`)
711
+ - `qualityMetrics.evaluate()` (alias for `evaluateRag()`)
712
+ - `guardrails.evaluate()` (alias for `scan()`)
713
+ - `customerContext.capture()` (alias for `captureSnapshot()`)
714
+
670
715
  ### v4.1.0 → v4.2.0
671
716
 
672
717
  New in v4.2.0:
@@ -79,23 +79,38 @@ export declare const calibration: {
79
79
  /**
80
80
  * Calculate Brier score from predictions and outcomes
81
81
  * Lower is better, <0.1 is considered good
82
+ *
83
+ * Supports two calling conventions:
84
+ * - calculateBrierScore(0.8, true) — single prediction (returns squared error)
85
+ * - calculateBrierScore([{predicted: 0.8, actual: 1}, ...]) — batch (returns mean squared error)
82
86
  */
83
- export declare function calculateBrierScore(predictions: Array<{
87
+ export declare function calculateBrierScore(predictionsOrProbability: Array<{
84
88
  predicted: number;
85
89
  actual: number;
86
- }>): number;
90
+ }> | number, outcome?: boolean | number): number;
87
91
  /**
88
92
  * Calculate Expected Calibration Error (ECE)
89
93
  * Measures how well-calibrated predictions are across confidence buckets
94
+ *
95
+ * Supports two calling conventions:
96
+ * - calculateECE([{predicted, actual}, ...]) — raw predictions, auto-bucketed
97
+ * - calculateECE([{averageConfidence, accuracy, count}, ...]) — pre-computed buckets
90
98
  */
91
- export declare function calculateECE(predictions: Array<{
99
+ export declare function calculateECE(predictionsOrBuckets: Array<{
92
100
  predicted: number;
93
101
  actual: number;
102
+ }> | Array<{
103
+ averageConfidence: number;
104
+ accuracy: number;
105
+ count: number;
94
106
  }>, numBuckets?: number): number;
95
107
  /**
96
108
  * Check if a model is well-calibrated based on Brier score
109
+ * Accepts a number or an object with brierScore property
97
110
  */
98
- export declare function isWellCalibrated(brierScore: number): boolean;
111
+ export declare function isWellCalibrated(brierScoreOrStatus: number | {
112
+ brierScore: number;
113
+ }): boolean;
99
114
  /**
100
115
  * Get calibration quality label
101
116
  */
@@ -68,8 +68,20 @@ exports.calibration = {
68
68
  /**
69
69
  * Calculate Brier score from predictions and outcomes
70
70
  * Lower is better, <0.1 is considered good
71
+ *
72
+ * Supports two calling conventions:
73
+ * - calculateBrierScore(0.8, true) — single prediction (returns squared error)
74
+ * - calculateBrierScore([{predicted: 0.8, actual: 1}, ...]) — batch (returns mean squared error)
71
75
  */
72
- function calculateBrierScore(predictions) {
76
+ function calculateBrierScore(predictionsOrProbability, outcome) {
77
+ // Single prediction convenience: calculateBrierScore(0.8, true)
78
+ if (typeof predictionsOrProbability === 'number') {
79
+ const predicted = predictionsOrProbability;
80
+ const actual = outcome === true ? 1 : outcome === false ? 0 : (outcome ?? 0);
81
+ return Math.pow(predicted - actual, 2);
82
+ }
83
+ // Batch mode: calculateBrierScore([{predicted, actual}, ...])
84
+ const predictions = predictionsOrProbability;
73
85
  if (predictions.length === 0)
74
86
  return 0;
75
87
  const sum = predictions.reduce((acc, { predicted, actual }) => {
@@ -80,10 +92,32 @@ function calculateBrierScore(predictions) {
80
92
  /**
81
93
  * Calculate Expected Calibration Error (ECE)
82
94
  * Measures how well-calibrated predictions are across confidence buckets
95
+ *
96
+ * Supports two calling conventions:
97
+ * - calculateECE([{predicted, actual}, ...]) — raw predictions, auto-bucketed
98
+ * - calculateECE([{averageConfidence, accuracy, count}, ...]) — pre-computed buckets
83
99
  */
84
- function calculateECE(predictions, numBuckets = 10) {
85
- if (predictions.length === 0)
100
+ function calculateECE(predictionsOrBuckets, numBuckets = 10) {
101
+ if (predictionsOrBuckets.length === 0)
86
102
  return 0;
103
+ // Check if pre-computed buckets were passed
104
+ const first = predictionsOrBuckets[0];
105
+ if ('averageConfidence' in first && 'accuracy' in first && 'count' in first) {
106
+ const buckets = predictionsOrBuckets;
107
+ const totalCount = buckets.reduce((sum, b) => sum + b.count, 0);
108
+ if (totalCount === 0)
109
+ return 0;
110
+ let ece = 0;
111
+ for (const bucket of buckets) {
112
+ if (bucket.count === 0)
113
+ continue;
114
+ const weight = bucket.count / totalCount;
115
+ ece += weight * Math.abs(bucket.averageConfidence - bucket.accuracy);
116
+ }
117
+ return ece;
118
+ }
119
+ // Raw predictions mode
120
+ const predictions = predictionsOrBuckets;
87
121
  const buckets = [];
88
122
  for (let i = 0; i < numBuckets; i++) {
89
123
  buckets.push({ predictions: [], actuals: [] });
@@ -108,9 +142,13 @@ function calculateECE(predictions, numBuckets = 10) {
108
142
  }
109
143
  /**
110
144
  * Check if a model is well-calibrated based on Brier score
145
+ * Accepts a number or an object with brierScore property
111
146
  */
112
- function isWellCalibrated(brierScore) {
113
- return brierScore < 0.1;
147
+ function isWellCalibrated(brierScoreOrStatus) {
148
+ const score = typeof brierScoreOrStatus === 'number'
149
+ ? brierScoreOrStatus
150
+ : brierScoreOrStatus.brierScore;
151
+ return score < 0.1;
114
152
  }
115
153
  /**
116
154
  * Get calibration quality label
@@ -130,4 +168,4 @@ function getCalibrationQuality(brierScore) {
130
168
  function formatBrierScore(score) {
131
169
  return score.toFixed(4);
132
170
  }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsaWJyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2NhbGlicmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUFzSEgsa0RBVUM7QUFNRCxvQ0FvQ0M7QUFLRCw0Q0FFQztBQUtELHNEQU9DO0FBS0QsNENBRUM7QUFsTUQsMkNBQWdFO0FBa0NoRTs7R0FFRztBQUNVLFFBQUEsV0FBVyxHQUFHO0lBQ3pCOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQ1YsT0FBZSxFQUNmLGNBQThCO1FBRTlCLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsZ0JBQWdCLE9BQU8sMEJBQTBCLGNBQWMsRUFBRSxFQUNqRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsZ0JBQWdCLE9BQU8sVUFBVSxFQUNqQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FDckIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FDWCxPQUFlLEVBQ2YsVUFHSSxFQUFFO1FBT04sT0FBTyxJQUFBLDJCQUFrQixFQUFDLGdCQUFnQixPQUFPLFVBQVUsRUFBRTtZQUMzRCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUVGLENBQUM7QUFFRiwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsV0FBeUQ7SUFFekQsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FB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QUNoQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFhO0lBQzVDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBDYWxpYnJhdGlvbiBBUElcbiAqXG4gKiBQcmVkaWN0aW9uIGFjY3VyYWN5IHRyYWNraW5nIHdpdGggQnJpZXIgc2NvcmVzIGFuZCBjYWxpYnJhdGlvbiBtZXRyaWNzXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdCwgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge1xuICBDYWxpYnJhdGlvblN0YXR1cyxcbiAgQ2FsaWJyYXRpb25CdWNrZXQsXG4gIFByZWRpY3Rpb25UeXBlLFxuICBBcGlSZXNwb25zZSxcbn0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENBTElCUkFUSU9OIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDYWxpYnJhdGlvbiBtZXRyaWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsaWJyYXRpb25NZXRyaWNzIHtcbiAgYWdlbnRJZDogc3RyaW5nO1xuICBwcmVkaWN0aW9uVHlwZTogUHJlZGljdGlvblR5cGU7XG4gIC8qKiBCcmllciBzY29yZSAobG93ZXIgaXMgYmV0dGVyLCA8MC4xIGlzIGdvb2QpICovXG4gIGJyaWVyU2NvcmU6IG51bWJlcjtcbiAgLyoqIEV4cGVjdGVkIENhbGlicmF0aW9uIEVycm9yICovXG4gIGVjZTogbnVtYmVyO1xuICAvKiogTWF4aW11bSBDYWxpYnJhdGlvbiBFcnJvciAqL1xuICBtY2U6IG51bWJlcjtcbiAgLyoqIFNhbXBsZSBjb3VudCAqL1xuICBzYW1wbGVDb3VudDogbnVtYmVyO1xuICAvKiogSXMgdGhlIG1vZGVsIHdlbGwtY2FsaWJyYXRlZCAqL1xuICBpc0NhbGlicmF0ZWQ6IGJvb2xlYW47XG4gIC8qKiBSZWxpYWJpbGl0eSBkaWFncmFtIGRhdGEgKi9cbiAgcmVsaWFiaWxpdHlEaWFncmFtOiBDYWxpYnJhdGlvbkJ1Y2tldFtdO1xuICAvKiogTGFzdCB1cGRhdGVkICovXG4gIGxhc3RVcGRhdGVkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2FsaWJyYXRpb24gQVBJIGNsaWVudCBmb3IgcHJlZGljdGlvbiBhY2N1cmFjeSB0cmFja2luZ1xuICovXG5leHBvcnQgY29uc3QgY2FsaWJyYXRpb24gPSB7XG4gIC8qKlxuICAgKiBHZXQgY2FsaWJyYXRpb24gc3RhdHVzIGZvciBhbiBhZ2VudFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNhbGlicmF0aW9uLnN0YXR1cygnYWdlbnRfMTIzJywgJ2NodXJuX3Jpc2snKTtcbiAgICogY29uc29sZS5sb2coYEJyaWVyIHNjb3JlOiAke3N0YXR1cy5icmllclNjb3JlfWApO1xuICAgKiBjb25zb2xlLmxvZyhgSXMgY2FsaWJyYXRlZDogJHtzdGF0dXMuaXNDYWxpYnJhdGVkfWApO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHN0YXR1cyhcbiAgICBhZ2VudElkOiBzdHJpbmcsXG4gICAgcHJlZGljdGlvblR5cGU6IFByZWRpY3Rpb25UeXBlXG4gICk6IFByb21pc2U8Q2FsaWJyYXRpb25TdGF0dXM+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENhbGlicmF0aW9uU3RhdHVzPihcbiAgICAgIGAvY2FsaWJyYXRpb24vJHthZ2VudElkfS9zdGF0dXM/cHJlZGljdGlvblR5cGU9JHtwcmVkaWN0aW9uVHlwZX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjMnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGNhbGlicmF0aW9uIG1ldHJpY3MgZm9yIGFuIGFnZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbWV0cmljcyA9IGF3YWl0IGNhbGlicmF0aW9uLmFsbE1ldHJpY3MoJ2FnZW50XzEyMycpO1xuICAgKiBmb3IgKGNvbnN0IG0gb2YgbWV0cmljcykge1xuICAgKiAgIGNvbnNvbGUubG9nKGAke20ucHJlZGljdGlvblR5cGV9OiBCcmllcj0ke20uYnJpZXJTY29yZX1gKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGFsbE1ldHJpY3MoYWdlbnRJZDogc3RyaW5nKTogUHJvbWlzZTxDYWxpYnJhdGlvbk1ldHJpY3NbXT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8Q2FsaWJyYXRpb25NZXRyaWNzW10+KFxuICAgICAgYC9jYWxpYnJhdGlvbi8ke2FnZW50SWR9L21ldHJpY3NgLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjMnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIHJlY2FsaWJyYXRpb24gZm9yIGFuIGFnZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsaWJyYXRpb24ucmV0cmFpbignYWdlbnRfMTIzJywge1xuICAgKiAgIHByZWRpY3Rpb25UeXBlczogWydjaHVybl9yaXNrJywgJ2VzY2FsYXRpb25fcmlzayddLFxuICAgKiB9KTtcbiAgICogY29uc29sZS5sb2coYFJldHJhaW5lZDogJHtyZXN1bHQuc3VjY2Vzc31gKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyByZXRyYWluKFxuICAgIGFnZW50SWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBwcmVkaWN0aW9uVHlwZXM/OiBQcmVkaWN0aW9uVHlwZVtdO1xuICAgICAgbWluU2FtcGxlcz86IG51bWJlcjtcbiAgICB9ID0ge31cbiAgKTogUHJvbWlzZTx7XG4gICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICByZXRyYWluZWRUeXBlczogUHJlZGljdGlvblR5cGVbXTtcbiAgICBza2lwcGVkVHlwZXM6IEFycmF5PHsgdHlwZTogUHJlZGljdGlvblR5cGU7IHJlYXNvbjogc3RyaW5nIH0+O1xuICAgIG5ld01ldHJpY3M6IENhbGlicmF0aW9uTWV0cmljc1tdO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL2NhbGlicmF0aW9uLyR7YWdlbnRJZH0vcmV0cmFpbmAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICAgIGFwaVZlcnNpb246ICd2MycsXG4gICAgfSk7XG4gIH0sXG5cbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDYWxjdWxhdGUgQnJpZXIgc2NvcmUgZnJvbSBwcmVkaWN0aW9ucyBhbmQgb3V0Y29tZXNcbiAqIExvd2VyIGlzIGJldHRlciwgPDAuMSBpcyBjb25zaWRlcmVkIGdvb2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUJyaWVyU2NvcmUoXG4gIHByZWRpY3Rpb25zOiBBcnJheTx7IHByZWRpY3RlZDogbnVtYmVyOyBhY3R1YWw6IG51bWJlciB9PlxuKTogbnVtYmVyIHtcbiAgaWYgKHByZWRpY3Rpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG5cbiAgY29uc3Qgc3VtID0gcHJlZGljdGlvbnMucmVkdWNlKChhY2MsIHsgcHJlZGljdGVkLCBhY3R1YWwgfSkgPT4ge1xuICAgIHJldHVybiBhY2MgKyBNYXRoLnBvdyhwcmVkaWN0ZWQgLSBhY3R1YWwsIDIpO1xuICB9LCAwKTtcblxuICByZXR1cm4gc3VtIC8gcHJlZGljdGlvbnMubGVuZ3RoO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBFeHBlY3RlZCBDYWxpYnJhdGlvbiBFcnJvciAoRUNFKVxuICogTWVhc3VyZXMgaG93IHdlbGwtY2FsaWJyYXRlZCBwcmVkaWN0aW9ucyBhcmUgYWNyb3NzIGNvbmZpZGVuY2UgYnVja2V0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRUNFKFxuICBwcmVkaWN0aW9uczogQXJyYXk8eyBwcmVkaWN0ZWQ6IG51bWJlcjsgYWN0dWFsOiBudW1iZXIgfT4sXG4gIG51bUJ1Y2tldHM6IG51bWJlciA9IDEwXG4pOiBudW1iZXIge1xuICBpZiAocHJlZGljdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcblxuICBjb25zdCBidWNrZXRzOiBBcnJheTx7IHByZWRpY3Rpb25zOiBudW1iZXJbXTsgYWN0dWFsczogbnVtYmVyW10gfT4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1CdWNrZXRzOyBpKyspIHtcbiAgICBidWNrZXRzLnB1c2goeyBwcmVkaWN0aW9uczogW10sIGFjdHVhbHM6IFtdIH0pO1xuICB9XG5cbiAgLy8gQXNzaWduIHByZWRpY3Rpb25zIHRvIGJ1Y2tldHNcbiAgZm9yIChjb25zdCB7IHByZWRpY3RlZCwgYWN0dWFsIH0gb2YgcHJlZGljdGlvbnMpIHtcbiAgICBjb25zdCBidWNrZXRJbmRleCA9IE1hdGgubWluKFxuICAgICAgTWF0aC5mbG9vcihwcmVkaWN0ZWQgKiBudW1CdWNrZXRzKSxcbiAgICAgIG51bUJ1Y2tldHMgLSAxXG4gICAgKTtcbiAgICBidWNrZXRzW2J1Y2tldEluZGV4XS5wcmVkaWN0aW9ucy5wdXNoKHByZWRpY3RlZCk7XG4gICAgYnVja2V0c1tidWNrZXRJbmRleF0uYWN0dWFscy5wdXNoKGFjdHVhbCk7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgRUNFXG4gIGxldCBlY2UgPSAwO1xuICBmb3IgKGNvbnN0IGJ1Y2tldCBvZiBidWNrZXRzKSB7XG4gICAgaWYgKGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgYXZnUHJlZGljdGVkID1cbiAgICAgIGJ1Y2tldC5wcmVkaWN0aW9ucy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGg7XG4gICAgY29uc3QgYXZnQWN0dWFsID1cbiAgICAgIGJ1Y2tldC5hY3R1YWxzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gYnVja2V0LmFjdHVhbHMubGVuZ3RoO1xuICAgIGNvbnN0IHdlaWdodCA9IGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGggLyBwcmVkaWN0aW9ucy5sZW5ndGg7XG5cbiAgICBlY2UgKz0gd2VpZ2h0ICogTWF0aC5hYnMoYXZnUHJlZGljdGVkIC0gYXZnQWN0dWFsKTtcbiAgfVxuXG4gIHJldHVybiBlY2U7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBtb2RlbCBpcyB3ZWxsLWNhbGlicmF0ZWQgYmFzZWQgb24gQnJpZXIgc2NvcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2VsbENhbGlicmF0ZWQoYnJpZXJTY29yZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBicmllclNjb3JlIDwgMC4xO1xufVxuXG4vKipcbiAqIEdldCBjYWxpYnJhdGlvbiBxdWFsaXR5IGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxpYnJhdGlvblF1YWxpdHkoXG4gIGJyaWVyU2NvcmU6IG51bWJlclxuKTogJ2V4Y2VsbGVudCcgfCAnZ29vZCcgfCAnZmFpcicgfCAncG9vcicge1xuICBpZiAoYnJpZXJTY29yZSA8IDAuMDUpIHJldHVybiAnZXhjZWxsZW50JztcbiAgaWYgKGJyaWVyU2NvcmUgPCAwLjEpIHJldHVybiAnZ29vZCc7XG4gIGlmIChicmllclNjb3JlIDwgMC4yKSByZXR1cm4gJ2ZhaXInO1xuICByZXR1cm4gJ3Bvb3InO1xufVxuXG4vKipcbiAqIEZvcm1hdCBCcmllciBzY29yZSBmb3IgZGlzcGxheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0QnJpZXJTY29yZShzY29yZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNjb3JlLnRvRml4ZWQoNCk7XG59XG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsaWJyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2NhbGlicmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUEwSEgsa0RBb0JDO0FBVUQsb0NBdURDO0FBTUQsNENBS0M7QUFLRCxzREFPQztBQUtELDRDQUVDO0FBM09ELDJDQUFnRTtBQWtDaEU7O0dBRUc7QUFDVSxRQUFBLFdBQVcsR0FBRztJQUN6Qjs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUNWLE9BQWUsRUFDZixjQUE4QjtRQUU5QixPQUFPLElBQUEsMkJBQWtCLEVBQ3ZCLGdCQUFnQixPQUFPLDBCQUEwQixjQUFjLEVBQUUsRUFDakUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBZTtRQUM5QixPQUFPLElBQUEsMkJBQWtCLEVBQ3ZCLGdCQUFnQixPQUFPLFVBQVUsRUFDakMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQ1gsT0FBZSxFQUNmLFVBR0ksRUFBRTtRQU9OLE9BQU8sSUFBQSwyQkFBa0IsRUFBQyxnQkFBZ0IsT0FBTyxVQUFVLEVBQUU7WUFDM0QsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FFRixDQUFDO0FBRUYsK0VBQStFO0FBQy9FLG1CQUFtQjtBQUNuQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLG1CQUFtQixDQUNqQyx3QkFBK0UsRUFDL0UsT0FBMEI7SUFFMUIsZ0VBQWdFO0lBQ2hFLElBQUksT0FBTyx3QkFBd0Is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QUNwQixDQUFDLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0lBQ2xDLE9BQU8sS0FBSyxHQUFHLEdBQUcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FDbkMsVUFBa0I7SUFFbEIsSUFBSSxVQUFVLEdBQUcsSUFBSTtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQzFDLElBQUksVUFBVSxHQUFHLEdBQUc7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNwQyxJQUFJLFVBQVUsR0FBRyxHQUFHO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDcEMsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBYTtJQUM1QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gQ2FsaWJyYXRpb24gQVBJXG4gKlxuICogUHJlZGljdGlvbiBhY2N1cmFjeSB0cmFja2luZyB3aXRoIEJyaWVyIHNjb3JlcyBhbmQgY2FsaWJyYXRpb24gbWV0cmljc1xuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3QsIGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcbmltcG9ydCB0eXBlIHtcbiAgQ2FsaWJyYXRpb25TdGF0dXMsXG4gIENhbGlicmF0aW9uQnVja2V0LFxuICBQcmVkaWN0aW9uVHlwZSxcbiAgQXBpUmVzcG9uc2UsXG59IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDQUxJQlJBVElPTiBBUEkgQ0xJRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2FsaWJyYXRpb24gbWV0cmljc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbGlicmF0aW9uTWV0cmljcyB7XG4gIGFnZW50SWQ6IHN0cmluZztcbiAgcHJlZGljdGlvblR5cGU6IFByZWRpY3Rpb25UeXBlO1xuICAvKiogQnJpZXIgc2NvcmUgKGxvd2VyIGlzIGJldHRlciwgPDAuMSBpcyBnb29kKSAqL1xuICBicmllclNjb3JlOiBudW1iZXI7XG4gIC8qKiBFeHBlY3RlZCBDYWxpYnJhdGlvbiBFcnJvciAqL1xuICBlY2U6IG51bWJlcjtcbiAgLyoqIE1heGltdW0gQ2FsaWJyYXRpb24gRXJyb3IgKi9cbiAgbWNlOiBudW1iZXI7XG4gIC8qKiBTYW1wbGUgY291bnQgKi9cbiAgc2FtcGxlQ291bnQ6IG51bWJlcjtcbiAgLyoqIElzIHRoZSBtb2RlbCB3ZWxsLWNhbGlicmF0ZWQgKi9cbiAgaXNDYWxpYnJhdGVkOiBib29sZWFuO1xuICAvKiogUmVsaWFiaWxpdHkgZGlhZ3JhbSBkYXRhICovXG4gIHJlbGlhYmlsaXR5RGlhZ3JhbTogQ2FsaWJyYXRpb25CdWNrZXRbXTtcbiAgLyoqIExhc3QgdXBkYXRlZCAqL1xuICBsYXN0VXBkYXRlZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIENhbGlicmF0aW9uIEFQSSBjbGllbnQgZm9yIHByZWRpY3Rpb24gYWNjdXJhY3kgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbGlicmF0aW9uID0ge1xuICAvKipcbiAgICogR2V0IGNhbGlicmF0aW9uIHN0YXR1cyBmb3IgYW4gYWdlbnRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBzdGF0dXMgPSBhd2FpdCBjYWxpYnJhdGlvbi5zdGF0dXMoJ2FnZW50XzEyMycsICdjaHVybl9yaXNrJyk7XG4gICAqIGNvbnNvbGUubG9nKGBCcmllciBzY29yZTogJHtzdGF0dXMuYnJpZXJTY29yZX1gKTtcbiAgICogY29uc29sZS5sb2coYElzIGNhbGlicmF0ZWQ6ICR7c3RhdHVzLmlzQ2FsaWJyYXRlZH1gKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzdGF0dXMoXG4gICAgYWdlbnRJZDogc3RyaW5nLFxuICAgIHByZWRpY3Rpb25UeXBlOiBQcmVkaWN0aW9uVHlwZVxuICApOiBQcm9taXNlPENhbGlicmF0aW9uU3RhdHVzPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxDYWxpYnJhdGlvblN0YXR1cz4oXG4gICAgICBgL2NhbGlicmF0aW9uLyR7YWdlbnRJZH0vc3RhdHVzP3ByZWRpY3Rpb25UeXBlPSR7cHJlZGljdGlvblR5cGV9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YzJyB9XG4gICAgKTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGFsbCBjYWxpYnJhdGlvbiBtZXRyaWNzIGZvciBhbiBhZ2VudFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IG1ldHJpY3MgPSBhd2FpdCBjYWxpYnJhdGlvbi5hbGxNZXRyaWNzKCdhZ2VudF8xMjMnKTtcbiAgICogZm9yIChjb25zdCBtIG9mIG1ldHJpY3MpIHtcbiAgICogICBjb25zb2xlLmxvZyhgJHttLnByZWRpY3Rpb25UeXBlfTogQnJpZXI9JHttLmJyaWVyU2NvcmV9YCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBhbGxNZXRyaWNzKGFnZW50SWQ6IHN0cmluZyk6IFByb21pc2U8Q2FsaWJyYXRpb25NZXRyaWNzW10+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENhbGlicmF0aW9uTWV0cmljc1tdPihcbiAgICAgIGAvY2FsaWJyYXRpb24vJHthZ2VudElkfS9tZXRyaWNzYCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YzJyB9XG4gICAgKTtcbiAgfSxcblxuICAvKipcbiAgICogVHJpZ2dlciByZWNhbGlicmF0aW9uIGZvciBhbiBhZ2VudFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGlicmF0aW9uLnJldHJhaW4oJ2FnZW50XzEyMycsIHtcbiAgICogICBwcmVkaWN0aW9uVHlwZXM6IFsnY2h1cm5fcmlzaycsICdlc2NhbGF0aW9uX3Jpc2snXSxcbiAgICogfSk7XG4gICAqIGNvbnNvbGUubG9nKGBSZXRyYWluZWQ6ICR7cmVzdWx0LnN1Y2Nlc3N9YCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgcmV0cmFpbihcbiAgICBhZ2VudElkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgcHJlZGljdGlvblR5cGVzPzogUHJlZGljdGlvblR5cGVbXTtcbiAgICAgIG1pblNhbXBsZXM/OiBudW1iZXI7XG4gICAgfSA9IHt9XG4gICk6IFByb21pc2U8e1xuICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgcmV0cmFpbmVkVHlwZXM6IFByZWRpY3Rpb25UeXBlW107XG4gICAgc2tpcHBlZFR5cGVzOiBBcnJheTx7IHR5cGU6IFByZWRpY3Rpb25UeXBlOyByZWFzb246IHN0cmluZyB9PjtcbiAgICBuZXdNZXRyaWNzOiBDYWxpYnJhdGlvbk1ldHJpY3NbXTtcbiAgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9jYWxpYnJhdGlvbi8ke2FnZW50SWR9L3JldHJhaW5gLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IG9wdGlvbnMsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxuXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2FsY3VsYXRlIEJyaWVyIHNjb3JlIGZyb20gcHJlZGljdGlvbnMgYW5kIG91dGNvbWVzXG4gKiBMb3dlciBpcyBiZXR0ZXIsIDwwLjEgaXMgY29uc2lkZXJlZCBnb29kXG4gKlxuICogU3VwcG9ydHMgdHdvIGNhbGxpbmcgY29udmVudGlvbnM6XG4gKiAtIGNhbGN1bGF0ZUJyaWVyU2NvcmUoMC44LCB0cnVlKSAg4oCUIHNpbmdsZSBwcmVkaWN0aW9uIChyZXR1cm5zIHNxdWFyZWQgZXJyb3IpXG4gKiAtIGNhbGN1bGF0ZUJyaWVyU2NvcmUoW3twcmVkaWN0ZWQ6IDAuOCwgYWN0dWFsOiAxfSwgLi4uXSkg4oCUIGJhdGNoIChyZXR1cm5zIG1lYW4gc3F1YXJlZCBlcnJvcilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUJyaWVyU2NvcmUoXG4gIHByZWRpY3Rpb25zT3JQcm9iYWJpbGl0eTogQXJyYXk8eyBwcmVkaWN0ZWQ6IG51bWJlcjsgYWN0dWFsOiBudW1iZXIgfT4gfCBudW1iZXIsXG4gIG91dGNvbWU/OiBib29sZWFuIHwgbnVtYmVyXG4pOiBudW1iZXIge1xuICAvLyBTaW5nbGUgcHJlZGljdGlvbiBjb252ZW5pZW5jZTogY2FsY3VsYXRlQnJpZXJTY29yZSgwLjgsIHRydWUpXG4gIGlmICh0eXBlb2YgcHJlZGljdGlvbnNPclByb2JhYmlsaXR5ID09PSAnbnVtYmVyJykge1xuICAgIGNvbnN0IHByZWRpY3RlZCA9IHByZWRpY3Rpb25zT3JQcm9iYWJpbGl0eTtcbiAgICBjb25zdCBhY3R1YWwgPSBvdXRjb21lID09PSB0cnVlID8gMSA6IG91dGNvbWUgPT09IGZhbHNlID8gMCA6IChvdXRjb21lID8/IDApO1xuICAgIHJldHVybiBNYXRoLnBvdyhwcmVkaWN0ZWQgLSBhY3R1YWwsIDIpO1xuICB9XG5cbiAgLy8gQmF0Y2ggbW9kZTogY2FsY3VsYXRlQnJpZXJTY29yZShbe3ByZWRpY3RlZCwgYWN0dWFsfSwgLi4uXSlcbiAgY29uc3QgcHJlZGljdGlvbnMgPSBwcmVkaWN0aW9uc09yUHJvYmFiaWxpdHk7XG4gIGlmIChwcmVkaWN0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiAwO1xuXG4gIGNvbnN0IHN1bSA9IHByZWRpY3Rpb25zLnJlZHVjZSgoYWNjLCB7IHByZWRpY3RlZCwgYWN0dWFsIH0pID0+IHtcbiAgICByZXR1cm4gYWNjICsgTWF0aC5wb3cocHJlZGljdGVkIC0gYWN0dWFsLCAyKTtcbiAgfSwgMCk7XG5cbiAgcmV0dXJuIHN1bSAvIHByZWRpY3Rpb25zLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgRXhwZWN0ZWQgQ2FsaWJyYXRpb24gRXJyb3IgKEVDRSlcbiAqIE1lYXN1cmVzIGhvdyB3ZWxsLWNhbGlicmF0ZWQgcHJlZGljdGlvbnMgYXJlIGFjcm9zcyBjb25maWRlbmNlIGJ1Y2tldHNcbiAqXG4gKiBTdXBwb3J0cyB0d28gY2FsbGluZyBjb252ZW50aW9uczpcbiAqIC0gY2FsY3VsYXRlRUNFKFt7cHJlZGljdGVkLCBhY3R1YWx9LCAuLi5dKSAg4oCUIHJhdyBwcmVkaWN0aW9ucywgYXV0by1idWNrZXRlZFxuICogLSBjYWxjdWxhdGVFQ0UoW3thdmVyYWdlQ29uZmlkZW5jZSwgYWNjdXJhY3ksIGNvdW50fSwgLi4uXSkg4oCUIHByZS1jb21wdXRlZCBidWNrZXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFQ0UoXG4gIHByZWRpY3Rpb25zT3JCdWNrZXRzOiBBcnJheTx7IHByZWRpY3RlZDogbnVtYmVyOyBhY3R1YWw6IG51bWJlciB9PiB8IEFycmF5PHsgYXZlcmFnZUNvbmZpZGVuY2U6IG51bWJlcjsgYWNjdXJhY3k6IG51bWJlcjsgY291bnQ6IG51bWJlciB9PixcbiAgbnVtQnVja2V0czogbnVtYmVyID0gMTBcbik6IG51bWJlciB7XG4gIGlmIChwcmVkaWN0aW9uc09yQnVja2V0cy5sZW5ndGggPT09IDApIHJldHVybiAwO1xuXG4gIC8vIENoZWNrIGlmIHByZS1jb21wdXRlZCBidWNrZXRzIHdlcmUgcGFzc2VkXG4gIGNvbnN0IGZpcnN0ID0gcHJlZGljdGlvbnNPckJ1Y2tldHNbMF07XG4gIGlmICgnYXZlcmFnZUNvbmZpZGVuY2UnIGluIGZpcnN0ICYmICdhY2N1cmFjeScgaW4gZmlyc3QgJiYgJ2NvdW50JyBpbiBmaXJzdCkge1xuICAgIGNvbnN0IGJ1Y2tldHMgPSBwcmVkaWN0aW9uc09yQnVja2V0cyBhcyBBcnJheTx7IGF2ZXJhZ2VDb25maWRlbmNlOiBudW1iZXI7IGFjY3VyYWN5OiBudW1iZXI7IGNvdW50OiBudW1iZXIgfT47XG4gICAgY29uc3QgdG90YWxDb3VudCA9IGJ1Y2tldHMucmVkdWNlKChzdW0sIGIpID0+IHN1bSArIGIuY291bnQsIDApO1xuICAgIGlmICh0b3RhbENvdW50ID09PSAwKSByZXR1cm4gMDtcblxuICAgIGxldCBlY2UgPSAwO1xuICAgIGZvciAoY29uc3QgYnVja2V0IG9mIGJ1Y2tldHMpIHtcbiAgICAgIGlmIChidWNrZXQuY291bnQgPT09IDApIGNvbnRpbnVlO1xuICAgICAgY29uc3Qgd2VpZ2h0ID0gYnVja2V0LmNvdW50IC8gdG90YWxDb3VudDtcbiAgICAgIGVjZSArPSB3ZWlnaHQgKiBNYXRoLmFicyhidWNrZXQuYXZlcmFnZUNvbmZpZGVuY2UgLSBidWNrZXQuYWNjdXJhY3kpO1xuICAgIH1cbiAgICByZXR1cm4gZWNlO1xuICB9XG5cbiAgLy8gUmF3IHByZWRpY3Rpb25zIG1vZGVcbiAgY29uc3QgcHJlZGljdGlvbnMgPSBwcmVkaWN0aW9uc09yQnVja2V0cyBhcyBBcnJheTx7IHByZWRpY3RlZDogbnVtYmVyOyBhY3R1YWw6IG51bWJlciB9PjtcblxuICBjb25zdCBidWNrZXRzOiBBcnJheTx7IHByZWRpY3Rpb25zOiBudW1iZXJbXTsgYWN0dWFsczogbnVtYmVyW10gfT4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1CdWNrZXRzOyBpKyspIHtcbiAgICBidWNrZXRzLnB1c2goeyBwcmVkaWN0aW9uczogW10sIGFjdHVhbHM6IFtdIH0pO1xuICB9XG5cbiAgLy8gQXNzaWduIHByZWRpY3Rpb25zIHRvIGJ1Y2tldHNcbiAgZm9yIChjb25zdCB7IHByZWRpY3RlZCwgYWN0dWFsIH0gb2YgcHJlZGljdGlvbnMpIHtcbiAgICBjb25zdCBidWNrZXRJbmRleCA9IE1hdGgubWluKFxuICAgICAgTWF0aC5mbG9vcihwcmVkaWN0ZWQgKiBudW1CdWNrZXRzKSxcbiAgICAgIG51bUJ1Y2tldHMgLSAxXG4gICAgKTtcbiAgICBidWNrZXRzW2J1Y2tldEluZGV4XS5wcmVkaWN0aW9ucy5wdXNoKHByZWRpY3RlZCk7XG4gICAgYnVja2V0c1tidWNrZXRJbmRleF0uYWN0dWFscy5wdXNoKGFjdHVhbCk7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgRUNFXG4gIGxldCBlY2UgPSAwO1xuICBmb3IgKGNvbnN0IGJ1Y2tldCBvZiBidWNrZXRzKSB7XG4gICAgaWYgKGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgYXZnUHJlZGljdGVkID1cbiAgICAgIGJ1Y2tldC5wcmVkaWN0aW9ucy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGg7XG4gICAgY29uc3QgYXZnQWN0dWFsID1cbiAgICAgIGJ1Y2tldC5hY3R1YWxzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gYnVja2V0LmFjdHVhbHMubGVuZ3RoO1xuICAgIGNvbnN0IHdlaWdodCA9IGJ1Y2tldC5wcmVkaWN0aW9ucy5sZW5ndGggLyBwcmVkaWN0aW9ucy5sZW5ndGg7XG5cbiAgICBlY2UgKz0gd2VpZ2h0ICogTWF0aC5hYnMoYXZnUHJlZGljdGVkIC0gYXZnQWN0dWFsKTtcbiAgfVxuXG4gIHJldHVybiBlY2U7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBtb2RlbCBpcyB3ZWxsLWNhbGlicmF0ZWQgYmFzZWQgb24gQnJpZXIgc2NvcmVcbiAqIEFjY2VwdHMgYSBudW1iZXIgb3IgYW4gb2JqZWN0IHdpdGggYnJpZXJTY29yZSBwcm9wZXJ0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXZWxsQ2FsaWJyYXRlZChicmllclNjb3JlT3JTdGF0dXM6IG51bWJlciB8IHsgYnJpZXJTY29yZTogbnVtYmVyIH0pOiBib29sZWFuIHtcbiAgY29uc3Qgc2NvcmUgPSB0eXBlb2YgYnJpZXJTY29yZU9yU3RhdHVzID09PSAnbnVtYmVyJ1xuICAgID8gYnJpZXJTY29yZU9yU3RhdHVzXG4gICAgOiBicmllclNjb3JlT3JTdGF0dXMuYnJpZXJTY29yZTtcbiAgcmV0dXJuIHNjb3JlIDwgMC4xO1xufVxuXG4vKipcbiAqIEdldCBjYWxpYnJhdGlvbiBxdWFsaXR5IGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxpYnJhdGlvblF1YWxpdHkoXG4gIGJyaWVyU2NvcmU6IG51bWJlclxuKTogJ2V4Y2VsbGVudCcgfCAnZ29vZCcgfCAnZmFpcicgfCAncG9vcicge1xuICBpZiAoYnJpZXJTY29yZSA8IDAuMDUpIHJldHVybiAnZXhjZWxsZW50JztcbiAgaWYgKGJyaWVyU2NvcmUgPCAwLjEpIHJldHVybiAnZ29vZCc7XG4gIGlmIChicmllclNjb3JlIDwgMC4yKSByZXR1cm4gJ2ZhaXInO1xuICByZXR1cm4gJ3Bvb3InO1xufVxuXG4vKipcbiAqIEZvcm1hdCBCcmllciBzY29yZSBmb3IgZGlzcGxheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0QnJpZXJTY29yZShzY29yZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNjb3JlLnRvRml4ZWQoNCk7XG59XG4iXX0=
@@ -238,24 +238,44 @@ export declare const claims: {
238
238
  };
239
239
  /**
240
240
  * Check if a claim is a fact (observed)
241
+ * Accepts both { claimType: 'observed' } (API format) and { type: 'fact' } (shorthand)
241
242
  */
242
- export declare function isFact(claim: Claim): boolean;
243
+ export declare function isFact(claim: Claim | {
244
+ type?: string;
245
+ claimType?: string;
246
+ }): boolean;
243
247
  /**
244
248
  * Check if a claim is an inference
249
+ * Accepts both { claimType: 'inferred' } (API format) and { type: 'inference' } (shorthand)
245
250
  */
246
- export declare function isInference(claim: Claim): boolean;
251
+ export declare function isInference(claim: Claim | {
252
+ type?: string;
253
+ claimType?: string;
254
+ }): boolean;
247
255
  /**
248
256
  * Check if a claim is computed
257
+ * Accepts both { claimType: 'computed' } (API format) and { type: 'computed' } (shorthand)
249
258
  */
250
- export declare function isComputed(claim: Claim): boolean;
259
+ export declare function isComputed(claim: Claim | {
260
+ type?: string;
261
+ claimType?: string;
262
+ }): boolean;
251
263
  /**
252
264
  * Get high confidence claims (>= threshold)
253
265
  */
254
266
  export declare function getHighConfidenceClaims(claimsList: Claim[], threshold?: number): Claim[];
255
267
  /**
256
268
  * Group claims by type
269
+ * Returns groups keyed by both API names (observed/inferred/computed)
270
+ * and shorthand names (fact/inference/computed) for convenience
257
271
  */
258
- export declare function groupClaimsByType(claimsList: Claim[]): Record<ClaimType, Claim[]>;
272
+ export declare function groupClaimsByType(claimsList: Array<Claim | {
273
+ type?: string;
274
+ claimType?: string;
275
+ }>): Record<string, Array<Claim | {
276
+ type?: string;
277
+ claimType?: string;
278
+ }>>;
259
279
  /**
260
280
  * Group claims by category
261
281
  */
@@ -211,21 +211,24 @@ exports.claims = {
211
211
  // ============================================================================
212
212
  /**
213
213
  * Check if a claim is a fact (observed)
214
+ * Accepts both { claimType: 'observed' } (API format) and { type: 'fact' } (shorthand)
214
215
  */
215
216
  function isFact(claim) {
216
- return claim.claimType === 'observed';
217
+ return claim.claimType === 'observed' || claim.type === 'fact';
217
218
  }
218
219
  /**
219
220
  * Check if a claim is an inference
221
+ * Accepts both { claimType: 'inferred' } (API format) and { type: 'inference' } (shorthand)
220
222
  */
221
223
  function isInference(claim) {
222
- return claim.claimType === 'inferred';
224
+ return claim.claimType === 'inferred' || claim.type === 'inference';
223
225
  }
224
226
  /**
225
227
  * Check if a claim is computed
228
+ * Accepts both { claimType: 'computed' } (API format) and { type: 'computed' } (shorthand)
226
229
  */
227
230
  function isComputed(claim) {
228
- return claim.claimType === 'computed';
231
+ return claim.claimType === 'computed' || claim.type === 'computed';
229
232
  }
230
233
  /**
231
234
  * Get high confidence claims (>= threshold)
@@ -235,12 +238,18 @@ function getHighConfidenceClaims(claimsList, threshold = 0.8) {
235
238
  }
236
239
  /**
237
240
  * Group claims by type
241
+ * Returns groups keyed by both API names (observed/inferred/computed)
242
+ * and shorthand names (fact/inference/computed) for convenience
238
243
  */
239
244
  function groupClaimsByType(claimsList) {
245
+ const observed = claimsList.filter((c) => c.claimType === 'observed' || c.type === 'fact');
246
+ const inferred = claimsList.filter((c) => c.claimType === 'inferred' || c.type === 'inference');
247
+ const computed = claimsList.filter((c) => c.claimType === 'computed' || c.type === 'computed');
240
248
  return {
241
- observed: claimsList.filter((c) => c.claimType === 'observed'),
242
- inferred: claimsList.filter((c) => c.claimType === 'inferred'),
243
- computed: claimsList.filter((c) => c.claimType === 'computed'),
249
+ observed, inferred, computed,
250
+ // Shorthand aliases
251
+ fact: observed,
252
+ inference: inferred,
244
253
  };
245
254
  }
246
255
  /**
@@ -261,4 +270,4 @@ function groupClaimsByCategory(claimsList) {
261
270
  }
262
271
  return groups;
263
272
  }
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jbGFpbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQThUSCx3QkFFQztBQUtELGtDQUVDO0FBS0QsZ0NBRUM7QUFLRCwwREFLQztBQUtELDhDQVFDO0FBS0Qsc0RBa0JDO0FBMVhELDJDQUFnRTtBQThFaEU7O0dBRUc7QUFDVSxRQUFBLE1BQU0sR0FBRztJQUNwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkJHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE4QjtRQUNqRCxPQUFPLElBQUEsMkJBQWtCLEVBQWlCLFdBQVcsRUFBRTtZQUNyRCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQ2xDLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsYUFBYSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsU0FBUyxLQUFLLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFhcEMsT0FBTyxJQUFBLDJCQUFrQixFQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxLQUFLLENBQUMsaUJB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LENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUM7S0FDL0QsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxVQUFtQjtJQUVuQixNQUFNLE1BQU0sR0FBbUM7UUFDN0MsT0FBTyxFQUFFLEVBQUU7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFVBQVUsRUFBRSxFQUFFO1FBQ2QsY0FBYyxFQUFFLEVBQUU7UUFDbEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7SUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBDbGFpbXMgQVBJXG4gKlxuICogRmFjdHMgdnMgSW5mZXJlbmNlcyBBUEkgZm9yIGFjY2Vzc2luZyBhbmFseXNpcyBjbGFpbXNcbiAqL1xuXG5pbXBvcnQgeyBhcGlSZXF1ZXN0LCBhcGlSZXF1ZXN0V2l0aERhdGEgfSBmcm9tICcuLi9jb3JlL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7XG4gIENsYWltLFxuICBDbGFpbVR5cGUsXG4gIENsYWltQ2F0ZWdvcnksXG4gIEFuYWx5c2lzUmVzdWx0LFxuICBBcGlSZXNwb25zZSxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIEV2aWRlbmNlUmVmZXJlbmNlLFxufSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xBSU1TIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBMaXN0IGNsYWltcyBxdWVyeSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdENsYWltc09wdGlvbnMge1xuICBydW5JZD86IHN0cmluZztcbiAgYW5hbHlzaXNJZD86IHN0cmluZztcbiAgY2xhaW1UeXBlPzogQ2xhaW1UeXBlO1xuICBjbGFpbUNhdGVnb3J5PzogQ2xhaW1DYXRlZ29yeTtcbiAgbWluQ29uZmlkZW5jZT86IG51bWJlcjtcbiAgaHVtYW5WZXJpZmllZD86IGJvb2xlYW47XG4gIGxpbWl0PzogbnVtYmVyO1xuICBvZmZzZXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuYWx5c2lzIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBbmFseXNpc09wdGlvbnMge1xuICBydW5JZDogc3RyaW5nO1xuICBtb2RlbFVzZWQ/OiBzdHJpbmc7XG4gIG91dGNvbWVWZXJkaWN0OiAnc3VjY2VzcycgfCAncGFydGlhbF9zdWNjZXNzJyB8ICdmYWlsdXJlJztcbiAgb3V0Y29tZUNvbmZpZGVuY2U/OiBudW1iZXI7XG4gIHJvb3RDYXVzZUNhdGVnb3J5Pzogc3RyaW5nO1xuICByb290Q2F1c2VDb25maWRlbmNlPzogbnVtYmVyO1xuICBjbGFpbXM/OiBDcmVhdGVDbGFpbUlucHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2xhaW1JbnB1dCB7XG4gIGNsYWltVHlwZTogQ2xhaW1UeXBlO1xuICBjbGFpbUNhdGVnb3J5OiBDbGFpbUNhdGVnb3J5O1xuICBjbGFpbVRleHQ6IHN0cmluZztcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICBjb25maWRlbmNlQ2FsaWJyYXRpb24/OiAnY2FsaWJyYXRlZCcgfCAndW5jYWxpYnJhdGVkJyB8ICduZWVkc19tb3JlX2RhdGEnO1xuICBldmlkZW5jZT86IEV2aWRlbmNlUmVmZXJlbmNlW107XG4gIGlzRXhwbGFpbmFibGU/OiBib29sZWFuO1xuICBwcm9iYWJpbGl0eVZhbHVlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZhY3RzIHZzIGluZmVyZW5jZXMgc3VtbWFyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RzVnNJbmZlcmVuY2VzU3VtbWFyeSB7XG4gIGFuYWx5c2lzSWRzOiBzdHJpbmdbXTtcbiAgdG90YWxDbGFpbXM6IG51bWJlcjtcbiAgb2JzZXJ2ZWQ6IHtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIGF2Z0NvbmZpZGVuY2U6IG51bWJlcjtcbiAgICBjYXRlZ29yaWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICB9O1xuICBpbmZlcnJlZDoge1xuICAgIGNvdW50OiBudW1iZXI7XG4gICAgYXZnQ29uZmlkZW5jZTogbnVtYmVyO1xuICAgIGNhdGVnb3JpZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIH07XG4gIGNvbXB1dGVkOiB7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBhdmdDb25maWRlbmNlOiBudW1iZXI7XG4gICAgY2F0ZWdvcmllczogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgfTtcbiAgaHVtYW5WZXJpZmllZENvdW50OiBudW1iZXI7XG4gIGh1bWFuUmVqZWN0ZWRDb3VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENsYWltcyBBUEkgY2xpZW50IGZvciBmYWN0cyB2cyBpbmZlcmVuY2VzIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGNsYWltcyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBhbmFseXNpcyBmb3IgYSBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IGNsYWltcy5jcmVhdGVBbmFseXNpcyh7XG4gICAqICAgcnVuSWQ6ICdydW5fYWJjMTIzJyxcbiAgICogICBvdXRjb21lVmVyZGljdDogJ2ZhaWx1cmUnLFxuICAgKiAgIG91dGNvbWVDb25maWRlbmNlOiAwLjg1LFxuICAgKiAgIHJvb3RDYXVzZUNhdGVnb3J5OiAncmV0cmlldmFsX2ZhaWx1cmUnLFxuICAgKiAgIGNsYWltczogW1xuICAgKiAgICAge1xuICAgKiAgICAgICBjbGFpbVR5cGU6ICdvYnNlcnZlZCcsXG4gICAqICAgICAgIGNsYWltQ2F0ZWdvcnk6ICdyb290X2NhdXNlJyxcbiAgICogICAgICAgY2xhaW1UZXh0OiAnVmVjdG9yIHNlYXJjaCByZXR1cm5lZCAwIHJlc3VsdHMnLFxuICAgKiAgICAgICBjb25maWRlbmNlOiAxLjAsXG4gICAqICAgICAgIGV2aWRlbmNlOiBbeyB0eXBlOiAnc3BhbicsIHJlZmVyZW5jZUlkOiAnc3Bhbl8xMjMnLCByZWxldmFuY2U6ICdkaXJlY3QnLCBjb25maWRlbmNlOiAxLjAgfV0sXG4gICAqICAgICB9LFxuICAgKiAgICAge1xuICAgKiAgICAgICBjbGFpbVR5cGU6ICdpbmZlcnJlZCcsXG4gICAqICAgICAgIGNsYWltQ2F0ZWdvcnk6ICdjaHVybl9yaXNrJyxcbiAgICogICAgICAgY2xhaW1UZXh0OiAnSGlnaCBjaHVybiByaXNrIGR1ZSB0byByZXBlYXRlZCBmYWlsdXJlcycsXG4gICAqICAgICAgIGNvbmZpZGVuY2U6IDAuNyxcbiAgICogICAgIH0sXG4gICAqICAgXSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlQW5hbHlzaXMob3B0aW9uczogQ3JlYXRlQW5hbHlzaXNPcHRpb25zKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KCcvYW5hbHlzZXMnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IG9wdGlvbnMsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYW4gYW5hbHlzaXMgYnkgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IGNsYWltcy5nZXRBbmFseXNpcygnYW5hbHlzaXNfYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0QW5hbHlzaXMoYW5hbHlzaXNJZDogc3RyaW5nKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KGAvYW5hbHlzZXMvJHthbmFseXNpc0lkfWAsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgYW5hbHlzaXMgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgYW5hbHlzaXMgPSBhd2FpdCBjbGFpbXMuZ2V0UnVuQW5hbHlzaXMoJ3J1bl9hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRSdW5BbmFseXNpcyhydW5JZDogc3RyaW5nKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KGAvcnVucy8ke3J1bklkfS9hbmFseXNpc2AsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGFuYWx5c2lzIGhpc3RvcnkgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgaGlzdG9yeSA9IGF3YWl0IGNsYWltcy5nZXRBbmFseXNpc0hpc3RvcnkoJ3J1bl9hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRBbmFseXNpc0hpc3RvcnkocnVuSWQ6IHN0cmluZyk6IFByb21pc2U8e1xuICAgIHJ1bklkOiBzdHJpbmc7XG4gICAgYW5hbHlzZXM6IEFycmF5PHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBhbmFseXNpc1ZlcnNpb246IHN0cmluZztcbiAgICAgIG1vZGVsVXNlZDogc3RyaW5nO1xuICAgICAgb3V0Y29tZVZlcmRpY3Q6IHN0cmluZztcbiAgICAgIGlzQ3VycmVudDogYm9vbGVhbjtcbiAgICAgIHN1cGVyc2VkZWRCeT86IHN0cmluZztcbiAgICAgIHN1cGVyc2Vzc2lvblJlYXNvbj86IHN0cmluZztcbiAgICAgIGFuYWx5emVkQXQ6IHN0cmluZztcbiAgICB9PjtcbiAgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9ydW5zLyR7cnVuSWR9L2FuYWx5c2VzYCwgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTdXBlcnNlZGUgYW4gYW5hbHlzaXMgd2l0aCBhIG5ldyBvbmVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBuZXdBbmFseXNpcyA9IGF3YWl0IGNsYWltcy5zdXBlcnNlZGVBbmFseXNpcygnYW5hbHlzaXNfb2xkJywge1xuICAgKiAgIHJlYXNvbjogJ0ltcHJvdmVkIG1vZGVsIGFjY3VyYWN5JyxcbiAgICogICBuZXdBbmFseXNpczoge1xuICAgKiAgICAgb3V0Y29tZVZlcmRpY3Q6ICdzdWNjZXNzJyxcbiAgICogICAgIG91dGNvbWVDb25maWRlbmNlOiAwLjk1LFxuICAgKiAgICAgY2xhaW1zOiBbLi4uXSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzdXBlcnNlZGVBbmFseXNpcyhcbiAgICBhbmFseXNpc0lkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICBuZXdBbmFseXNpczogT21pdDxDcmVhdGVBbmFseXNpc09wdGlvbnMsICdydW5JZCc+O1xuICAgIH1cbiAgKTogUHJvbWlzZTx7IHN1cGVyc2VkZWRBbmFseXNpc0lkOiBzdHJpbmc7IG5ld0FuYWx5c2lzOiBBbmFseXNpc1Jlc3VsdCB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL2FuYWx5c2VzLyR7YW5hbHlzaXNJZH0vc3VwZXJzZWRlYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBvcHRpb25zLFxuICAgICAgYXBpVmVyc2lvbjogJ3YzJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogTGlzdCBjbGFpbXMgd2l0aCBmaWx0ZXJzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gR2V0IGFsbCBpbmZlcnJlZCBjbGFpbXMgd2l0aCBoaWdoIGNvbmZpZGVuY2VcbiAgICogY29uc3QgeyBjbGFpbXMgfSA9IGF3YWl0IGNsYWltcy5saXN0KHtcbiAgICogICBjbGFpbVR5cGU6ICdpbmZlcnJlZCcsXG4gICAqICAgbWluQ29uZmlkZW5jZTogMC44LFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gR2V0IGFsbCBjaHVybiByaXNrIGNsYWltcyBmb3IgYSBydW5cbiAgICogY29uc3QgeyBjbGFpbXMgfSA9IGF3YWl0IGNsYWltcy5saXN0KHtcbiAgICogICBydW5JZDogJ3J1bl9hYmMxMjMnLFxuICAgKiAgIGNsYWltQ2F0ZWdvcnk6ICdjaHVybl9yaXNrJyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgbGlzdChcbiAgICBvcHRpb25zOiBMaXN0Q2xhaW1zT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8eyBjbGFpbXM6IENsYWltW107IGxpbWl0OiBudW1iZXI7IG9mZnNldDogbnVtYmVyOyBoYXNNb3JlOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMucnVuSWQpIHBhcmFtcy5zZXQoJ3J1bklkJywgb3B0aW9ucy5ydW5JZCk7XG4gICAgaWYgKG9wdGlvbnMuYW5hbHlzaXNJZCkgcGFyYW1zLnNldCgnYW5hbHlzaXNJZCcsIG9wdGlvbnMuYW5hbHlzaXNJZCk7XG4gICAgaWYgKG9wdGlvbnMuY2xhaW1UeXBlKSBwYXJhbXMuc2V0KCdjbGFpbVR5cGUnLCBvcHRpb25zLmNsYWltVHlwZSk7XG4gICAgaWYgKG9wdGlvbnMuY2xhaW1DYXRlZ29yeSkgcGFyYW1zLnNldCgnY2xhaW1DYXRlZ29yeScsIG9wdGlvbnMuY2xhaW1DYXRlZ29yeSk7XG4gICAgaWYgKG9wdGlvbnMubWluQ29uZmlkZW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMuc2V0KCdtaW5Db25maWRlbmNlJywgU3RyaW5nKG9wdGlvbnMubWluQ29uZmlkZW5jZSkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5odW1hblZlcmlmaWVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ2h1bWFuVmVyaWZpZWQnLCBTdHJpbmcob3B0aW9ucy5odW1hblZlcmlmaWVkKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxpbWl0KSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRpb25zLmxpbWl0KSk7XG4gICAgaWYgKG9wdGlvbnMub2Zmc2V0KSBwYXJhbXMuc2V0KCdvZmZzZXQnLCBTdHJpbmcob3B0aW9ucy5vZmZzZXQpKTtcblxuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8eyBjbGFpbXM6IENsYWltW107IGxpbWl0OiBudW1iZXI7IG9mZnNldDogbnVtYmVyOyBoYXNNb3JlOiBib29sZWFuIH0+KFxuICAgICAgYC9jbGFpbXM/JHtwYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjMnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYSBjbGFpbSBieSBJRFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGNsYWltID0gYXdhaXQgY2xhaW1zLmdldCgnY2xhaW1fYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0KGNsYWltSWQ6IHN0cmluZyk6IFByb21pc2U8Q2xhaW0+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENsYWltPihgL2NsYWltcy8ke2NsYWltSWR9YCwgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBWZXJpZnkgb3IgcmVqZWN0IGEgY2xhaW0gKGh1bWFuIGZlZWRiYWNrKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIENvbmZpcm0gYSBjbGFpbVxuICAgKiBhd2FpdCBjbGFpbXMudmVyaWZ5KCdjbGFpbV9hYmMxMjMnLCB7XG4gICAqICAgdmVyZGljdDogJ2NvbmZpcm1lZCcsXG4gICAqICAgbm90ZXM6ICdWZXJpZmllZCBhZ2FpbnN0IHRpY2tldCBoaXN0b3J5JyxcbiAgICogfSk7XG4gICAqXG4gICAqIC8vIFJlamVjdCBhIGNsYWltXG4gICAqIGF3YWl0IGNsYWltcy52ZXJpZnkoJ2NsYWltX2FiYzEyMycsIHtcbiAgICogICB2ZXJkaWN0OiAncmVqZWN0ZWQnLFxuICAgKiAgIG5vdGVzOiAnQ3VzdG9tZXIgY29udGV4dCB3YXMgbWlzc2luZycsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHZlcmlmeShcbiAgICBjbGFpbUlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgdmVyZGljdDogJ2NvbmZpcm1lZCcgfCAncmVqZWN0ZWQnIHwgJ21vZGlmaWVkJztcbiAgICAgIG5vdGVzPzogc3RyaW5nO1xuICAgICAgbW9kaWZpZWRUZXh0Pzogc3RyaW5nO1xuICAgIH1cbiAgKTogUHJvbWlzZTx7IGNsYWltSWQ6IHN0cmluZzsgdmVyZGljdDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9jbGFpbXMvJHtjbGFpbUlkfS92ZXJpZnlgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IG9wdGlvbnMsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgZmFjdHMgdnMgaW5mZXJlbmNlcyBzdW1tYXJ5XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gU3VtbWFyeSBmb3IgYSBzcGVjaWZpYyBydW5cbiAgICogY29uc3Qgc3VtbWFyeSA9IGF3YWl0IGNsYWltcy5zdW1tYXJ5KHsgcnVuSWQ6ICdydW5fYWJjMTIzJyB9KTtcbiAgICpcbiAgICogLy8gU3VtbWFyeSBmb3IgbXVsdGlwbGUgYW5hbHlzZXNcbiAgICogY29uc3Qgc3VtbWFyeSA9IGF3YWl0IGNsYWltcy5zdW1tYXJ5KHtcbiAgICogICBhbmFseXNpc0lkczogWydhbmFseXNpc18xJywgJ2FuYWx5c2lzXzInXSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgc3VtbWFyeShcbiAgICBvcHRpb25zOiB7IHJ1bklkPzogc3RyaW5nOyBhbmFseXNpc0lkcz86IHN0cmluZ1tdIH0gPSB7fVxuICApOiBQcm9taXNlPEZhY3RzVnNJbmZlcmVuY2VzU3VtbWFyeT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucy5ydW5JZCkgcGFyYW1zLnNldCgncnVuSWQnLCBvcHRpb25zLnJ1bklkKTtcbiAgICBpZiAob3B0aW9ucy5hbmFseXNpc0lkcykgcGFyYW1zLnNldCgnYW5hbHlzaXNJZHMnLCBvcHRpb25zLmFuYWx5c2lzSWRzLmpvaW4oJywnKSk7XG5cbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPEZhY3RzVnNJbmZlcmVuY2VzU3VtbWFyeT4oXG4gICAgICBgL2NsYWltcy9zdW1tYXJ5PyR7cGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YzJyB9XG4gICAgKTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGNsYWltIGlzIGEgZmFjdCAob2JzZXJ2ZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZhY3QoY2xhaW06IENsYWltKTogYm9vbGVhbiB7XG4gIHJldHVybiBjbGFpbS5jbGFpbVR5cGUgPT09ICdvYnNlcnZlZCc7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBjbGFpbSBpcyBhbiBpbmZlcmVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5mZXJlbmNlKGNsYWltOiBDbGFpbSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xhaW0uY2xhaW1UeXBlID09PSAnaW5mZXJyZWQnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgY2xhaW0gaXMgY29tcHV0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcHV0ZWQoY2xhaW06IENsYWltKTogYm9vbGVhbiB7XG4gIHJldHVybiBjbGFpbS5jbGFpbVR5cGUgPT09ICdjb21wdXRlZCc7XG59XG5cbi8qKlxuICogR2V0IGhpZ2ggY29uZmlkZW5jZSBjbGFpbXMgKD49IHRocmVzaG9sZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhpZ2hDb25maWRlbmNlQ2xhaW1zKFxuICBjbGFpbXNMaXN0OiBDbGFpbVtdLFxuICB0aHJlc2hvbGQ6IG51bWJlciA9IDAuOFxuKTogQ2xhaW1bXSB7XG4gIHJldHVybiBjbGFpbXNMaXN0LmZpbHRlcigoYykgPT4gYy5jb25maWRlbmNlID49IHRocmVzaG9sZCk7XG59XG5cbi8qKlxuICogR3JvdXAgY2xhaW1zIGJ5IHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwQ2xhaW1zQnlUeXBlKFxuICBjbGFpbXNMaXN0OiBDbGFpbVtdXG4pOiBSZWNvcmQ8Q2xhaW1UeXBlLCBDbGFpbVtdPiB7XG4gIHJldHVybiB7XG4gICAgb2JzZXJ2ZWQ6IGNsYWltc0xpc3QuZmlsdGVyKChjKSA9PiBjLmNsYWltVHlwZSA9PT0gJ29ic2VydmVkJyksXG4gICAgaW5mZXJyZWQ6IGNsYWltc0xpc3QuZmlsdGVyKChjKSA9PiBjLmNsYWltVHlwZSA9PT0gJ2luZmVycmVkJyksXG4gICAgY29tcHV0ZWQ6IGNsYWltc0xpc3QuZmlsdGVyKChjKSA9PiBjLmNsYWltVHlwZSA9PT0gJ2NvbXB1dGVkJyksXG4gIH07XG59XG5cbi8qKlxuICogR3JvdXAgY2xhaW1zIGJ5IGNhdGVnb3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncm91cENsYWltc0J5Q2F0ZWdvcnkoXG4gIGNsYWltc0xpc3Q6IENsYWltW11cbik6IFJlY29yZDxDbGFpbUNhdGVnb3J5LCBDbGFpbVtdPiB7XG4gIGNvbnN0IGdyb3VwczogUmVjb3JkPENsYWltQ2F0ZWdvcnksIENsYWltW10+ID0ge1xuICAgIG91dGNvbWU6IFtdLFxuICAgIHJvb3RfY2F1c2U6IFtdLFxuICAgIGN1c3RvbWVyX2ltcGFjdDogW10sXG4gICAgY2h1cm5fcmlzazogW10sXG4gICAgcmV2ZW51ZV9pbXBhY3Q6IFtdLFxuICAgIHF1YWxpdHk6IFtdLFxuICAgIG90aGVyOiBbXSxcbiAgfTtcblxuICBmb3IgKGNvbnN0IGNsYWltIG9mIGNsYWltc0xpc3QpIHtcbiAgICBncm91cHNbY2xhaW0uY2xhaW1DYXRlZ29yeV0ucHVzaChjbGFpbSk7XG4gIH1cblxuICByZXR1cm4gZ3JvdXBzO1xufVxuIl19
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jbGFpbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQStUSCx3QkFFQztBQU1ELGtDQUVDO0FBTUQsZ0NBRUM7QUFLRCwwREFLQztBQU9ELDhDQWFDO0FBS0Qsc0RBa0JDO0FBcFlELDJDQUFnRTtBQThFaEU7O0dBRUc7QUFDVSxRQUFBLE1BQU0sR0FBRztJQUNwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkJHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE4QjtRQUNqRCxPQUFPLElBQUEsMkJBQWtCLEVBQWlCLFdBQVcsRUFBRTtZQUNyRCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQ2xDLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsYUFBYSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsU0FBUyxLQUFLLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQWE7UUFhcEMsT0FBTyxJQUFBLDJCQUFrQixFQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxLQUFLLENBQUMsaUJB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QUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxVQUFVLElBQUssQ0FBUyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztJQUN6RyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFVBQVUsSUFBSyxDQUFTLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDO0lBRXhHLE9BQU87UUFDTCxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVE7UUFDNUIsb0JBQW9CO1FBQ3BCLElBQUksRUFBRSxRQUFRO1FBQ2QsU0FBUyxFQUFFLFFBQVE7S0FDcEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxVQUFtQjtJQUVuQixNQUFNLE1BQU0sR0FBbUM7UUFDN0MsT0FBTyxFQUFFLEVBQUU7UUFDWCxVQUFVLEVBQUUsRUFBRTtRQUNkLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFVBQVUsRUFBRSxFQUFFO1FBQ2QsY0FBYyxFQUFFLEVBQUU7UUFDbEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7SUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBDbGFpbXMgQVBJXG4gKlxuICogRmFjdHMgdnMgSW5mZXJlbmNlcyBBUEkgZm9yIGFjY2Vzc2luZyBhbmFseXNpcyBjbGFpbXNcbiAqL1xuXG5pbXBvcnQgeyBhcGlSZXF1ZXN0LCBhcGlSZXF1ZXN0V2l0aERhdGEgfSBmcm9tICcuLi9jb3JlL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7XG4gIENsYWltLFxuICBDbGFpbVR5cGUsXG4gIENsYWltQ2F0ZWdvcnksXG4gIEFuYWx5c2lzUmVzdWx0LFxuICBBcGlSZXNwb25zZSxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIEV2aWRlbmNlUmVmZXJlbmNlLFxufSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xBSU1TIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBMaXN0IGNsYWltcyBxdWVyeSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdENsYWltc09wdGlvbnMge1xuICBydW5JZD86IHN0cmluZztcbiAgYW5hbHlzaXNJZD86IHN0cmluZztcbiAgY2xhaW1UeXBlPzogQ2xhaW1UeXBlO1xuICBjbGFpbUNhdGVnb3J5PzogQ2xhaW1DYXRlZ29yeTtcbiAgbWluQ29uZmlkZW5jZT86IG51bWJlcjtcbiAgaHVtYW5WZXJpZmllZD86IGJvb2xlYW47XG4gIGxpbWl0PzogbnVtYmVyO1xuICBvZmZzZXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuYWx5c2lzIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBbmFseXNpc09wdGlvbnMge1xuICBydW5JZDogc3RyaW5nO1xuICBtb2RlbFVzZWQ/OiBzdHJpbmc7XG4gIG91dGNvbWVWZXJkaWN0OiAnc3VjY2VzcycgfCAncGFydGlhbF9zdWNjZXNzJyB8ICdmYWlsdXJlJztcbiAgb3V0Y29tZUNvbmZpZGVuY2U/OiBudW1iZXI7XG4gIHJvb3RDYXVzZUNhdGVnb3J5Pzogc3RyaW5nO1xuICByb290Q2F1c2VDb25maWRlbmNlPzogbnVtYmVyO1xuICBjbGFpbXM/OiBDcmVhdGVDbGFpbUlucHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ2xhaW1JbnB1dCB7XG4gIGNsYWltVHlwZTogQ2xhaW1UeXBlO1xuICBjbGFpbUNhdGVnb3J5OiBDbGFpbUNhdGVnb3J5O1xuICBjbGFpbVRleHQ6IHN0cmluZztcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICBjb25maWRlbmNlQ2FsaWJyYXRpb24/OiAnY2FsaWJyYXRlZCcgfCAndW5jYWxpYnJhdGVkJyB8ICduZWVkc19tb3JlX2RhdGEnO1xuICBldmlkZW5jZT86IEV2aWRlbmNlUmVmZXJlbmNlW107XG4gIGlzRXhwbGFpbmFibGU/OiBib29sZWFuO1xuICBwcm9iYWJpbGl0eVZhbHVlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZhY3RzIHZzIGluZmVyZW5jZXMgc3VtbWFyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RzVnNJbmZlcmVuY2VzU3VtbWFyeSB7XG4gIGFuYWx5c2lzSWRzOiBzdHJpbmdbXTtcbiAgdG90YWxDbGFpbXM6IG51bWJlcjtcbiAgb2JzZXJ2ZWQ6IHtcbiAgICBjb3VudDogbnVtYmVyO1xuICAgIGF2Z0NvbmZpZGVuY2U6IG51bWJlcjtcbiAgICBjYXRlZ29yaWVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICB9O1xuICBpbmZlcnJlZDoge1xuICAgIGNvdW50OiBudW1iZXI7XG4gICAgYXZnQ29uZmlkZW5jZTogbnVtYmVyO1xuICAgIGNhdGVnb3JpZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIH07XG4gIGNvbXB1dGVkOiB7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgICBhdmdDb25maWRlbmNlOiBudW1iZXI7XG4gICAgY2F0ZWdvcmllczogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgfTtcbiAgaHVtYW5WZXJpZmllZENvdW50OiBudW1iZXI7XG4gIGh1bWFuUmVqZWN0ZWRDb3VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENsYWltcyBBUEkgY2xpZW50IGZvciBmYWN0cyB2cyBpbmZlcmVuY2VzIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGNsYWltcyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBhbmFseXNpcyBmb3IgYSBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IGNsYWltcy5jcmVhdGVBbmFseXNpcyh7XG4gICAqICAgcnVuSWQ6ICdydW5fYWJjMTIzJyxcbiAgICogICBvdXRjb21lVmVyZGljdDogJ2ZhaWx1cmUnLFxuICAgKiAgIG91dGNvbWVDb25maWRlbmNlOiAwLjg1LFxuICAgKiAgIHJvb3RDYXVzZUNhdGVnb3J5OiAncmV0cmlldmFsX2ZhaWx1cmUnLFxuICAgKiAgIGNsYWltczogW1xuICAgKiAgICAge1xuICAgKiAgICAgICBjbGFpbVR5cGU6ICdvYnNlcnZlZCcsXG4gICAqICAgICAgIGNsYWltQ2F0ZWdvcnk6ICdyb290X2NhdXNlJyxcbiAgICogICAgICAgY2xhaW1UZXh0OiAnVmVjdG9yIHNlYXJjaCByZXR1cm5lZCAwIHJlc3VsdHMnLFxuICAgKiAgICAgICBjb25maWRlbmNlOiAxLjAsXG4gICAqICAgICAgIGV2aWRlbmNlOiBbeyB0eXBlOiAnc3BhbicsIHJlZmVyZW5jZUlkOiAnc3Bhbl8xMjMnLCByZWxldmFuY2U6ICdkaXJlY3QnLCBjb25maWRlbmNlOiAxLjAgfV0sXG4gICAqICAgICB9LFxuICAgKiAgICAge1xuICAgKiAgICAgICBjbGFpbVR5cGU6ICdpbmZlcnJlZCcsXG4gICAqICAgICAgIGNsYWltQ2F0ZWdvcnk6ICdjaHVybl9yaXNrJyxcbiAgICogICAgICAgY2xhaW1UZXh0OiAnSGlnaCBjaHVybiByaXNrIGR1ZSB0byByZXBlYXRlZCBmYWlsdXJlcycsXG4gICAqICAgICAgIGNvbmZpZGVuY2U6IDAuNyxcbiAgICogICAgIH0sXG4gICAqICAgXSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlQW5hbHlzaXMob3B0aW9uczogQ3JlYXRlQW5hbHlzaXNPcHRpb25zKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KCcvYW5hbHlzZXMnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IG9wdGlvbnMsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYW4gYW5hbHlzaXMgYnkgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IGNsYWltcy5nZXRBbmFseXNpcygnYW5hbHlzaXNfYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0QW5hbHlzaXMoYW5hbHlzaXNJZDogc3RyaW5nKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KGAvYW5hbHlzZXMvJHthbmFseXNpc0lkfWAsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgYW5hbHlzaXMgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgYW5hbHlzaXMgPSBhd2FpdCBjbGFpbXMuZ2V0UnVuQW5hbHlzaXMoJ3J1bl9hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRSdW5BbmFseXNpcyhydW5JZDogc3RyaW5nKTogUHJvbWlzZTxBbmFseXNpc1Jlc3VsdD4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QW5hbHlzaXNSZXN1bHQ+KGAvcnVucy8ke3J1bklkfS9hbmFseXNpc2AsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGFuYWx5c2lzIGhpc3RvcnkgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgaGlzdG9yeSA9IGF3YWl0IGNsYWltcy5nZXRBbmFseXNpc0hpc3RvcnkoJ3J1bl9hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRBbmFseXNpc0hpc3RvcnkocnVuSWQ6IHN0cmluZyk6IFByb21pc2U8e1xuICAgIHJ1bklkOiBzdHJpbmc7XG4gICAgYW5hbHlzZXM6IEFycmF5PHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBhbmFseXNpc1ZlcnNpb246IHN0cmluZztcbiAgICAgIG1vZGVsVXNlZDogc3RyaW5nO1xuICAgICAgb3V0Y29tZVZlcmRpY3Q6IHN0cmluZztcbiAgICAgIGlzQ3VycmVudDogYm9vbGVhbjtcbiAgICAgIHN1cGVyc2VkZWRCeT86IHN0cmluZztcbiAgICAgIHN1cGVyc2Vzc2lvblJlYXNvbj86IHN0cmluZztcbiAgICAgIGFuYWx5emVkQXQ6IHN0cmluZztcbiAgICB9PjtcbiAgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9ydW5zLyR7cnVuSWR9L2FuYWx5c2VzYCwgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTdXBlcnNlZGUgYW4gYW5hbHlzaXMgd2l0aCBhIG5ldyBvbmVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBuZXdBbmFseXNpcyA9IGF3YWl0IGNsYWltcy5zdXBlcnNlZGVBbmFseXNpcygnYW5hbHlzaXNfb2xkJywge1xuICAgKiAgIHJlYXNvbjogJ0ltcHJvdmVkIG1vZGVsIGFjY3VyYWN5JyxcbiAgICogICBuZXdBbmFseXNpczoge1xuICAgKiAgICAgb3V0Y29tZVZlcmRpY3Q6ICdzdWNjZXNzJyxcbiAgICogICAgIG91dGNvbWVDb25maWRlbmNlOiAwLjk1LFxuICAgKiAgICAgY2xhaW1zOiBbLi4uXSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzdXBlcnNlZGVBbmFseXNpcyhcbiAgICBhbmFseXNpc0lkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgcmVhc29uOiBzdHJpbmc7XG4gICAgICBuZXdBbmFseXNpczogT21pdDxDcmVhdGVBbmFseXNpc09wdGlvbnMsICdydW5JZCc+O1xuICAgIH1cbiAgKTogUHJvbWlzZTx7IHN1cGVyc2VkZWRBbmFseXNpc0lkOiBzdHJpbmc7IG5ld0FuYWx5c2lzOiBBbmFseXNpc1Jlc3VsdCB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL2FuYWx5c2VzLyR7YW5hbHlzaXNJZH0vc3VwZXJzZWRlYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBvcHRpb25zLFxuICAgICAgYXBpVmVyc2lvbjogJ3YzJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogTGlzdCBjbGFpbXMgd2l0aCBmaWx0ZXJzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gR2V0IGFsbCBpbmZlcnJlZCBjbGFpbXMgd2l0aCBoaWdoIGNvbmZpZGVuY2VcbiAgICogY29uc3QgeyBjbGFpbXMgfSA9IGF3YWl0IGNsYWltcy5saXN0KHtcbiAgICogICBjbGFpbVR5cGU6ICdpbmZlcnJlZCcsXG4gICAqICAgbWluQ29uZmlkZW5jZTogMC44LFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gR2V0IGFsbCBjaHVybiByaXNrIGNsYWltcyBmb3IgYSBydW5cbiAgICogY29uc3QgeyBjbGFpbXMgfSA9IGF3YWl0IGNsYWltcy5saXN0KHtcbiAgICogICBydW5JZDogJ3J1bl9hYmMxMjMnLFxuICAgKiAgIGNsYWltQ2F0ZWdvcnk6ICdjaHVybl9yaXNrJyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgbGlzdChcbiAgICBvcHRpb25zOiBMaXN0Q2xhaW1zT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8eyBjbGFpbXM6IENsYWltW107IGxpbWl0OiBudW1iZXI7IG9mZnNldDogbnVtYmVyOyBoYXNNb3JlOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMucnVuSWQpIHBhcmFtcy5zZXQoJ3J1bklkJywgb3B0aW9ucy5ydW5JZCk7XG4gICAgaWYgKG9wdGlvbnMuYW5hbHlzaXNJZCkgcGFyYW1zLnNldCgnYW5hbHlzaXNJZCcsIG9wdGlvbnMuYW5hbHlzaXNJZCk7XG4gICAgaWYgKG9wdGlvbnMuY2xhaW1UeXBlKSBwYXJhbXMuc2V0KCdjbGFpbVR5cGUnLCBvcHRpb25zLmNsYWltVHlwZSk7XG4gICAgaWYgKG9wdGlvbnMuY2xhaW1DYXRlZ29yeSkgcGFyYW1zLnNldCgnY2xhaW1DYXRlZ29yeScsIG9wdGlvbnMuY2xhaW1DYXRlZ29yeSk7XG4gICAgaWYgKG9wdGlvbnMubWluQ29uZmlkZW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMuc2V0KCdtaW5Db25maWRlbmNlJywgU3RyaW5nKG9wdGlvbnMubWluQ29uZmlkZW5jZSkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5odW1hblZlcmlmaWVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ2h1bWFuVmVyaWZpZWQnLCBTdHJpbmcob3B0aW9ucy5odW1hblZlcmlmaWVkKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxpbWl0KSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRpb25zLmxpbWl0KSk7XG4gICAgaWYgKG9wdGlvbnMub2Zmc2V0KSBwYXJhbXMuc2V0KCdvZmZzZXQnLCBTdHJpbmcob3B0aW9ucy5vZmZzZXQpKTtcblxuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8eyBjbGFpbXM6IENsYWltW107IGxpbWl0OiBudW1iZXI7IG9mZnNldDogbnVtYmVyOyBoYXNNb3JlOiBib29sZWFuIH0+KFxuICAgICAgYC9jbGFpbXM/JHtwYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjMnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYSBjbGFpbSBieSBJRFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGNsYWltID0gYXdhaXQgY2xhaW1zLmdldCgnY2xhaW1fYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0KGNsYWltSWQ6IHN0cmluZyk6IFByb21pc2U8Q2xhaW0+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENsYWltPihgL2NsYWltcy8ke2NsYWltSWR9YCwgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBWZXJpZnkgb3IgcmVqZWN0IGEgY2xhaW0gKGh1bWFuIGZlZWRiYWNrKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIENvbmZpcm0gYSBjbGFpbVxuICAgKiBhd2FpdCBjbGFpbXMudmVyaWZ5KCdjbGFpbV9hYmMxMjMnLCB7XG4gICAqICAgdmVyZGljdDogJ2NvbmZpcm1lZCcsXG4gICAqICAgbm90ZXM6ICdWZXJpZmllZCBhZ2FpbnN0IHRpY2tldCBoaXN0b3J5JyxcbiAgICogfSk7XG4gICAqXG4gICAqIC8vIFJlamVjdCBhIGNsYWltXG4gICAqIGF3YWl0IGNsYWltcy52ZXJpZnkoJ2NsYWltX2FiYzEyMycsIHtcbiAgICogICB2ZXJkaWN0OiAncmVqZWN0ZWQnLFxuICAgKiAgIG5vdGVzOiAnQ3VzdG9tZXIgY29udGV4dCB3YXMgbWlzc2luZycsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHZlcmlmeShcbiAgICBjbGFpbUlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgdmVyZGljdDogJ2NvbmZpcm1lZCcgfCAncmVqZWN0ZWQnIHwgJ21vZGlmaWVkJztcbiAgICAgIG5vdGVzPzogc3RyaW5nO1xuICAgICAgbW9kaWZpZWRUZXh0Pzogc3RyaW5nO1xuICAgIH1cbiAgKTogUHJvbWlzZTx7IGNsYWltSWQ6IHN0cmluZzsgdmVyZGljdDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9jbGFpbXMvJHtjbGFpbUlkfS92ZXJpZnlgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IG9wdGlvbnMsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgZmFjdHMgdnMgaW5mZXJlbmNlcyBzdW1tYXJ5XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gU3VtbWFyeSBmb3IgYSBzcGVjaWZpYyBydW5cbiAgICogY29uc3Qgc3VtbWFyeSA9IGF3YWl0IGNsYWltcy5zdW1tYXJ5KHsgcnVuSWQ6ICdydW5fYWJjMTIzJyB9KTtcbiAgICpcbiAgICogLy8gU3VtbWFyeSBmb3IgbXVsdGlwbGUgYW5hbHlzZXNcbiAgICogY29uc3Qgc3VtbWFyeSA9IGF3YWl0IGNsYWltcy5zdW1tYXJ5KHtcbiAgICogICBhbmFseXNpc0lkczogWydhbmFseXNpc18xJywgJ2FuYWx5c2lzXzInXSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgc3VtbWFyeShcbiAgICBvcHRpb25zOiB7IHJ1bklkPzogc3RyaW5nOyBhbmFseXNpc0lkcz86IHN0cmluZ1tdIH0gPSB7fVxuICApOiBQcm9taXNlPEZhY3RzVnNJbmZlcmVuY2VzU3VtbWFyeT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucy5ydW5JZCkgcGFyYW1zLnNldCgncnVuSWQnLCBvcHRpb25zLnJ1bklkKTtcbiAgICBpZiAob3B0aW9ucy5hbmFseXNpc0lkcykgcGFyYW1zLnNldCgnYW5hbHlzaXNJZHMnLCBvcHRpb25zLmFuYWx5c2lzSWRzLmpvaW4oJywnKSk7XG5cbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPEZhY3RzVnNJbmZlcmVuY2VzU3VtbWFyeT4oXG4gICAgICBgL2NsYWltcy9zdW1tYXJ5PyR7cGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YzJyB9XG4gICAgKTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGNsYWltIGlzIGEgZmFjdCAob2JzZXJ2ZWQpXG4gKiBBY2NlcHRzIGJvdGggeyBjbGFpbVR5cGU6ICdvYnNlcnZlZCcgfSAoQVBJIGZvcm1hdCkgYW5kIHsgdHlwZTogJ2ZhY3QnIH0gKHNob3J0aGFuZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmFjdChjbGFpbTogQ2xhaW0gfCB7IHR5cGU/OiBzdHJpbmc7IGNsYWltVHlwZT86IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBjbGFpbS5jbGFpbVR5cGUgPT09ICdvYnNlcnZlZCcgfHwgKGNsYWltIGFzIGFueSkudHlwZSA9PT0gJ2ZhY3QnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgY2xhaW0gaXMgYW4gaW5mZXJlbmNlXG4gKiBBY2NlcHRzIGJvdGggeyBjbGFpbVR5cGU6ICdpbmZlcnJlZCcgfSAoQVBJIGZvcm1hdCkgYW5kIHsgdHlwZTogJ2luZmVyZW5jZScgfSAoc2hvcnRoYW5kKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbmZlcmVuY2UoY2xhaW06IENsYWltIHwgeyB0eXBlPzogc3RyaW5nOyBjbGFpbVR5cGU/OiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xhaW0uY2xhaW1UeXBlID09PSAnaW5mZXJyZWQnIHx8IChjbGFpbSBhcyBhbnkpLnR5cGUgPT09ICdpbmZlcmVuY2UnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgY2xhaW0gaXMgY29tcHV0ZWRcbiAqIEFjY2VwdHMgYm90aCB7IGNsYWltVHlwZTogJ2NvbXB1dGVkJyB9IChBUEkgZm9ybWF0KSBhbmQgeyB0eXBlOiAnY29tcHV0ZWQnIH0gKHNob3J0aGFuZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcHV0ZWQoY2xhaW06IENsYWltIHwgeyB0eXBlPzogc3RyaW5nOyBjbGFpbVR5cGU/OiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xhaW0uY2xhaW1UeXBlID09PSAnY29tcHV0ZWQnIHx8IChjbGFpbSBhcyBhbnkpLnR5cGUgPT09ICdjb21wdXRlZCc7XG59XG5cbi8qKlxuICogR2V0IGhpZ2ggY29uZmlkZW5jZSBjbGFpbXMgKD49IHRocmVzaG9sZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhpZ2hDb25maWRlbmNlQ2xhaW1zKFxuICBjbGFpbXNMaXN0OiBDbGFpbVtdLFxuICB0aHJlc2hvbGQ6IG51bWJlciA9IDAuOFxuKTogQ2xhaW1bXSB7XG4gIHJldHVybiBjbGFpbXNMaXN0LmZpbHRlcigoYykgPT4gYy5jb25maWRlbmNlID49IHRocmVzaG9sZCk7XG59XG5cbi8qKlxuICogR3JvdXAgY2xhaW1zIGJ5IHR5cGVcbiAqIFJldHVybnMgZ3JvdXBzIGtleWVkIGJ5IGJvdGggQVBJIG5hbWVzIChvYnNlcnZlZC9pbmZlcnJlZC9jb21wdXRlZClcbiAqIGFuZCBzaG9ydGhhbmQgbmFtZXMgKGZhY3QvaW5mZXJlbmNlL2NvbXB1dGVkKSBmb3IgY29udmVuaWVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwQ2xhaW1zQnlUeXBlKFxuICBjbGFpbXNMaXN0OiBBcnJheTxDbGFpbSB8IHsgdHlwZT86IHN0cmluZzsgY2xhaW1UeXBlPzogc3RyaW5nIH0+XG4pOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTxDbGFpbSB8IHsgdHlwZT86IHN0cmluZzsgY2xhaW1UeXBlPzogc3RyaW5nIH0+PiB7XG4gIGNvbnN0IG9ic2VydmVkID0gY2xhaW1zTGlzdC5maWx0ZXIoKGMpID0+IGMuY2xhaW1UeXBlID09PSAnb2JzZXJ2ZWQnIHx8IChjIGFzIGFueSkudHlwZSA9PT0gJ2ZhY3QnKTtcbiAgY29uc3QgaW5mZXJyZWQgPSBjbGFpbXNMaXN0LmZpbHRlcigoYykgPT4gYy5jbGFpbVR5cGUgPT09ICdpbmZlcnJlZCcgfHwgKGMgYXMgYW55KS50eXBlID09PSAnaW5mZXJlbmNlJyk7XG4gIGNvbnN0IGNvbXB1dGVkID0gY2xhaW1zTGlzdC5maWx0ZXIoKGMpID0+IGMuY2xhaW1UeXBlID09PSAnY29tcHV0ZWQnIHx8IChjIGFzIGFueSkudHlwZSA9PT0gJ2NvbXB1dGVkJyk7XG5cbiAgcmV0dXJuIHtcbiAgICBvYnNlcnZlZCwgaW5mZXJyZWQsIGNvbXB1dGVkLFxuICAgIC8vIFNob3J0aGFuZCBhbGlhc2VzXG4gICAgZmFjdDogb2JzZXJ2ZWQsXG4gICAgaW5mZXJlbmNlOiBpbmZlcnJlZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBHcm91cCBjbGFpbXMgYnkgY2F0ZWdvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwQ2xhaW1zQnlDYXRlZ29yeShcbiAgY2xhaW1zTGlzdDogQ2xhaW1bXVxuKTogUmVjb3JkPENsYWltQ2F0ZWdvcnksIENsYWltW10+IHtcbiAgY29uc3QgZ3JvdXBzOiBSZWNvcmQ8Q2xhaW1DYXRlZ29yeSwgQ2xhaW1bXT4gPSB7XG4gICAgb3V0Y29tZTogW10sXG4gICAgcm9vdF9jYXVzZTogW10sXG4gICAgY3VzdG9tZXJfaW1wYWN0OiBbXSxcbiAgICBjaHVybl9yaXNrOiBbXSxcbiAgICByZXZlbnVlX2ltcGFjdDogW10sXG4gICAgcXVhbGl0eTogW10sXG4gICAgb3RoZXI6IFtdLFxuICB9O1xuXG4gIGZvciAoY29uc3QgY2xhaW0gb2YgY2xhaW1zTGlzdCkge1xuICAgIGdyb3Vwc1tjbGFpbS5jbGFpbUNhdGVnb3J5XS5wdXNoKGNsYWltKTtcbiAgfVxuXG4gIHJldHVybiBncm91cHM7XG59XG4iXX0=
@@ -102,22 +102,21 @@ export declare const conversationEval: {
102
102
  * // Fails if any turn fails
103
103
  * ```
104
104
  */
105
- export declare function aggregateWorst(turnResults: TurnEvaluation[]): {
105
+ export declare function aggregateWorst(turnResults: TurnEvaluation[] | number[]): number | {
106
106
  passed: boolean;
107
107
  score: number;
108
108
  };
109
109
  /**
110
110
  * Calculate average aggregation
111
111
  *
112
- * @param turnResults - Array of turn evaluation results
113
- * @returns Aggregated result using average logic
112
+ * Accepts TurnEvaluation[] or simple number[]:
113
+ * - aggregateAverage(turnResults) — returns {passed, score}
114
+ * - aggregateAverage([0.6, 0.8]) — returns 0.7
114
115
  *
115
- * @example
116
- * ```typescript
117
- * const result = aggregateAverage(turnResults);
118
- * ```
116
+ * @param turnResults - Array of turn evaluation results or numbers
117
+ * @returns Aggregated result
119
118
  */
120
- export declare function aggregateAverage(turnResults: TurnEvaluation[]): {
119
+ export declare function aggregateAverage(turnResults: TurnEvaluation[] | number[]): number | {
121
120
  passed: boolean;
122
121
  score: number;
123
122
  };