@spottoai/types-package 1.0.2-beta.412 → 1.0.2-beta.414
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/dist/azure/recommendations.d.ts +54 -0
- package/dist/azure/recommendations.d.ts.map +1 -1
- package/dist/azure/recommendations.js.map +1 -1
- package/dist/azure/reportDailySpend.d.ts +48 -0
- package/dist/azure/reportDailySpend.d.ts.map +1 -0
- package/dist/azure/reportDailySpend.js +6 -0
- package/dist/azure/reportDailySpend.js.map +1 -0
- package/dist/azure/reportDailySpendValidation.d.ts +3 -0
- package/dist/azure/reportDailySpendValidation.d.ts.map +1 -0
- package/dist/azure/reportDailySpendValidation.js +72 -0
- package/dist/azure/reportDailySpendValidation.js.map +1 -0
- package/dist/azure/reportEvidence.d.ts +13 -0
- package/dist/azure/reportEvidence.d.ts.map +1 -1
- package/dist/azure/reportEvidence.js.map +1 -1
- package/dist/azure/reportEvidenceCatalogueValidation.d.ts.map +1 -1
- package/dist/azure/reportEvidenceCatalogueValidation.js +4 -0
- package/dist/azure/reportEvidenceCatalogueValidation.js.map +1 -1
- package/dist/azure/reportEvidenceValidation.d.ts.map +1 -1
- package/dist/azure/reportEvidenceValidation.js +21 -1
- package/dist/azure/reportEvidenceValidation.js.map +1 -1
- package/dist/azure/reportSpend.d.ts +87 -0
- package/dist/azure/reportSpend.d.ts.map +1 -0
- package/dist/azure/reportSpend.js +5 -0
- package/dist/azure/reportSpend.js.map +1 -0
- package/dist/azure/reportSpendValidation.d.ts +7 -0
- package/dist/azure/reportSpendValidation.d.ts.map +1 -0
- package/dist/azure/reportSpendValidation.js +197 -0
- package/dist/azure/reportSpendValidation.js.map +1 -0
- package/dist/azure/reportSpendValidationHelpers.d.ts +7 -0
- package/dist/azure/reportSpendValidationHelpers.d.ts.map +1 -0
- package/dist/azure/reportSpendValidationHelpers.js +31 -0
- package/dist/azure/reportSpendValidationHelpers.js.map +1 -0
- package/dist/esm/azure/reportDailySpend.js +2 -0
- package/dist/esm/azure/reportDailySpendValidation.js +67 -0
- package/dist/esm/azure/reportEvidenceCatalogueValidation.js +4 -0
- package/dist/esm/azure/reportEvidenceValidation.js +21 -1
- package/dist/esm/azure/reportSpend.js +1 -0
- package/dist/esm/azure/reportSpendValidation.js +189 -0
- package/dist/esm/azure/reportSpendValidationHelpers.js +22 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.vite.js +6 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/index.vite.d.ts +6 -0
- package/dist/index.vite.d.ts.map +1 -1
- package/dist/index.vite.js +10 -0
- package/dist/index.vite.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { isCompactRecommendation, isInventoryCatalogueResource } from './reportEvidenceCatalogueValidation.js';
|
|
2
|
+
import { isReportDailySpend } from './reportDailySpendValidation.js';
|
|
3
|
+
import { isReportSavingsBasis, isReportSpendProjection } from './reportSpendValidation.js';
|
|
2
4
|
import { REPORT_EVIDENCE_LIMITS, } from './reportEvidence.js';
|
|
3
5
|
import { countTotal, hasOptionalNumbers, hasOptionalStrings, hasRequiredRecords, isBoundedRows, isCommitmentExpirySummary, isCostSummary, isCount, isCountRecord, isDateTime, isEvidenceReference, isFiniteNumber, isOptionalBoolean, isOptionalFiniteNumber, isOptionalString, isProjectionRows, isRecommendationSummary, isRecord, isResourceSummary, isRetirementSummary, isSourceFileStatus, isString, isStringArray, isTagCoverage, } from './reportEvidenceValidationHelpers.js';
|
|
4
6
|
export const isReportSecureScoreEvidence = (value) => {
|
|
@@ -14,6 +16,7 @@ export const isReportSecureScoreEvidence = (value) => {
|
|
|
14
16
|
return true;
|
|
15
17
|
};
|
|
16
18
|
const isCostSavingsCategory = (value) => isRecord(value) &&
|
|
19
|
+
(value.savingsBasis === undefined || isReportSavingsBasis(value.savingsBasis)) &&
|
|
17
20
|
isString(value.key) &&
|
|
18
21
|
isString(value.label) &&
|
|
19
22
|
isCount(value.recommendationCount) &&
|
|
@@ -63,7 +66,10 @@ const isRecommendationPortfolio = (value) => {
|
|
|
63
66
|
}
|
|
64
67
|
if (value.costSavings === undefined)
|
|
65
68
|
return true;
|
|
66
|
-
if (!isRecord(value.costSavings) ||
|
|
69
|
+
if (!isRecord(value.costSavings) ||
|
|
70
|
+
!isString(value.costSavings.currency) ||
|
|
71
|
+
!isCount(value.costSavings.contributingRecommendationCount) ||
|
|
72
|
+
(value.costSavings.savingsBasis !== undefined && !isReportSavingsBasis(value.costSavings.savingsBasis))) {
|
|
67
73
|
return false;
|
|
68
74
|
}
|
|
69
75
|
const monthly = value.costSavings.monthly;
|
|
@@ -163,6 +169,10 @@ function isCommitmentInventoryRow(value) {
|
|
|
163
169
|
const isReportingProjection = (value) => {
|
|
164
170
|
if (!isRecord(value) || !isRecord(value.dashboard) || !isRecommendationPortfolio(value.recommendationPortfolio))
|
|
165
171
|
return false;
|
|
172
|
+
if (value.dailySpend !== undefined && !isReportDailySpend(value.dailySpend))
|
|
173
|
+
return false;
|
|
174
|
+
if (value.spend !== undefined && !isReportSpendProjection(value.spend))
|
|
175
|
+
return false;
|
|
166
176
|
const subscription = isRecord(value.dashboard.subscription) ? value.dashboard.subscription : undefined;
|
|
167
177
|
const properties = subscription && isRecord(subscription.properties) ? subscription.properties : undefined;
|
|
168
178
|
if (properties?.secureScoreEvidence !== undefined && !isReportSecureScoreEvidence(properties.secureScoreEvidence))
|
|
@@ -263,11 +273,21 @@ export const isSubscriptionReportEvidencePack = (value) => {
|
|
|
263
273
|
!hasOptionalStrings(value.scope, ['companyId', 'tenantId', 'displayName', 'currency', 'currencySymbol'])) {
|
|
264
274
|
return false;
|
|
265
275
|
}
|
|
276
|
+
const dailySpend = value.reporting.dailySpend;
|
|
277
|
+
if (dailySpend && value.scope.currency !== undefined && dailySpend.currency !== value.scope.currency)
|
|
278
|
+
return false;
|
|
279
|
+
const spend = value.reporting.spend;
|
|
280
|
+
if (spend &&
|
|
281
|
+
((value.scope.currency !== undefined && spend.currency !== value.scope.currency) ||
|
|
282
|
+
(dailySpend && spend.currency !== dailySpend.currency) ||
|
|
283
|
+
Date.parse(spend.generatedAt) > Date.parse(value.generatedAt)))
|
|
284
|
+
return false;
|
|
266
285
|
return (value.reliability.relationshipGraph === undefined ||
|
|
267
286
|
(isRecord(value.reliability.relationshipGraph) &&
|
|
268
287
|
hasOptionalNumbers(value.reliability.relationshipGraph, ['totalNodes', 'totalEdges', 'unresolvedCount', 'buildMs'])));
|
|
269
288
|
};
|
|
270
289
|
const isRecommendationFingerprint = (value) => isRecord(value) &&
|
|
290
|
+
(value.savingsBasis === undefined || isReportSavingsBasis(value.savingsBasis)) &&
|
|
271
291
|
isString(value.id) &&
|
|
272
292
|
isString(value.title) &&
|
|
273
293
|
hasOptionalStrings(value, ['category', 'impact', 'severity', 'currency']) &&
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const REPORT_SPEND_LIMITS = { periods: 14, servicesPerPeriod: 100, periodDays: 92, assumptions: 10, textLength: 500 };
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { isPublicCostComposition } from './costComposition.js';
|
|
2
|
+
import { isBoundedRows, isRecord } from './reportEvidenceValidationHelpers.js';
|
|
3
|
+
import { REPORT_SPEND_LIMITS, } from './reportSpend.js';
|
|
4
|
+
import { isReportCalendarDate, isReportCurrency, isReportText, isReportUtcTimestamp, reportMoneyUnits } from './reportSpendValidationHelpers.js';
|
|
5
|
+
const bases = ['billed', 'amortized'];
|
|
6
|
+
const coverageStates = new Set(['complete', 'partial', 'unavailable']);
|
|
7
|
+
const exactFields = (value, required, optional = []) => required.every(key => Object.prototype.hasOwnProperty.call(value, key)) &&
|
|
8
|
+
Object.keys(value).every(key => [...required, ...optional].includes(key));
|
|
9
|
+
export const isReportSavingsBasis = (value) => typeof value === 'string' && ['billed', 'amortized', 'retail', 'mixed', 'unknown'].includes(value);
|
|
10
|
+
const amountOf = (value) => value.status === 'available' ? reportMoneyUnits(value.component.amount) : undefined;
|
|
11
|
+
function isBasisConsistent(basis, coverage, lens) {
|
|
12
|
+
if (!isRecord(coverage) || !exactFields(coverage, ['actual', 'estimated', 'combined']))
|
|
13
|
+
return false;
|
|
14
|
+
const components = { actual: basis.actual.availability, estimated: basis.estimated.availability, combined: basis.combined };
|
|
15
|
+
for (const key of ['actual', 'estimated', 'combined']) {
|
|
16
|
+
if (!coverageStates.has(coverage[key]))
|
|
17
|
+
return false;
|
|
18
|
+
const available = components[key].status === 'available';
|
|
19
|
+
if (available !== (coverage[key] !== 'unavailable'))
|
|
20
|
+
return false;
|
|
21
|
+
if (available && amountOf(components[key]) === undefined)
|
|
22
|
+
return false;
|
|
23
|
+
if (key !== 'combined' && available && basis[key].support !== 'supported')
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const actual = amountOf(components.actual);
|
|
27
|
+
const estimated = amountOf(components.estimated);
|
|
28
|
+
const expectedStatus = actual !== undefined
|
|
29
|
+
? estimated !== undefined
|
|
30
|
+
? 'actual-plus-estimated'
|
|
31
|
+
: 'actual-only'
|
|
32
|
+
: estimated !== undefined
|
|
33
|
+
? 'estimated-only'
|
|
34
|
+
: 'unavailable';
|
|
35
|
+
if (basis.status !== expectedStatus)
|
|
36
|
+
return false;
|
|
37
|
+
const combined = amountOf(basis.combined);
|
|
38
|
+
// Reconciliation may withhold the combined amount even when individual components are available.
|
|
39
|
+
if (combined === undefined)
|
|
40
|
+
return true;
|
|
41
|
+
if (lens === 'actual-only')
|
|
42
|
+
return actual === combined && coverage.combined === coverage.actual;
|
|
43
|
+
if (lens === 'estimates-only')
|
|
44
|
+
return estimated === combined && coverage.combined === coverage.estimated;
|
|
45
|
+
if (actual === undefined && estimated === undefined)
|
|
46
|
+
return false;
|
|
47
|
+
if (combined !== (actual ?? 0n) + (estimated ?? 0n))
|
|
48
|
+
return false;
|
|
49
|
+
// A single partial component cannot become a complete combined total. Two components require producer coverage proof.
|
|
50
|
+
if (actual === undefined)
|
|
51
|
+
return coverage.combined === coverage.estimated;
|
|
52
|
+
if (estimated === undefined)
|
|
53
|
+
return coverage.combined === coverage.actual;
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
export function isReportSpendAmounts(value, currency, generatedAt) {
|
|
57
|
+
if (!isRecord(value) || !exactFields(value, ['composition', 'coverage', 'retail'], ['estimates']) || !isPublicCostComposition(value.composition))
|
|
58
|
+
return false;
|
|
59
|
+
if (!isRecord(value.coverage) || !exactFields(value.coverage, [...bases]))
|
|
60
|
+
return false;
|
|
61
|
+
if (currency !== undefined && !isReportCurrency(currency))
|
|
62
|
+
return false;
|
|
63
|
+
if (generatedAt !== undefined && !isReportUtcTimestamp(generatedAt))
|
|
64
|
+
return false;
|
|
65
|
+
if (value.estimates !== undefined && (!isRecord(value.estimates) || !exactFields(value.estimates, [], [...bases])))
|
|
66
|
+
return false;
|
|
67
|
+
const currencies = new Set();
|
|
68
|
+
if (currency)
|
|
69
|
+
currencies.add(currency);
|
|
70
|
+
for (const key of bases) {
|
|
71
|
+
const basis = value.composition[key];
|
|
72
|
+
if (!isBasisConsistent(basis, value.coverage[key], value.composition.selectedLens))
|
|
73
|
+
return false;
|
|
74
|
+
for (const item of [basis.actual.availability, basis.estimated.availability, basis.combined]) {
|
|
75
|
+
if (item.status === 'available') {
|
|
76
|
+
if (!isReportCurrency(item.component.currencyCode))
|
|
77
|
+
return false;
|
|
78
|
+
currencies.add(item.component.currencyCode);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const estimate = isRecord(value.estimates) ? value.estimates[key] : undefined;
|
|
82
|
+
if (basis.estimated.availability.status === 'available') {
|
|
83
|
+
if (!isRecord(estimate) ||
|
|
84
|
+
!exactFields(estimate, ['reason', 'method', 'observedAt']) ||
|
|
85
|
+
!['billing-lag', 'billing-unavailable-sponsorship', 'other'].includes(estimate.reason) ||
|
|
86
|
+
!isReportText(estimate.method) ||
|
|
87
|
+
!isReportUtcTimestamp(estimate.observedAt) ||
|
|
88
|
+
(generatedAt !== undefined && Date.parse(estimate.observedAt) > Date.parse(generatedAt)))
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
else if (estimate !== undefined)
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
const retail = value.retail;
|
|
95
|
+
if (!isRecord(retail))
|
|
96
|
+
return false;
|
|
97
|
+
if (retail.status === 'unavailable') {
|
|
98
|
+
if (!exactFields(retail, ['status']))
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
if (retail.status !== 'available' ||
|
|
103
|
+
!exactFields(retail, ['status', 'component', 'coverage', 'scopeDescription', 'pricingSource', 'pricedAt', 'assumptions']) ||
|
|
104
|
+
!isRecord(retail.component) ||
|
|
105
|
+
!exactFields(retail.component, ['amount', 'currencyCode']) ||
|
|
106
|
+
!isReportCurrency(retail.component.currencyCode) ||
|
|
107
|
+
!['complete', 'partial'].includes(retail.coverage) ||
|
|
108
|
+
!isReportText(retail.scopeDescription) ||
|
|
109
|
+
!isReportText(retail.pricingSource) ||
|
|
110
|
+
!isReportUtcTimestamp(retail.pricedAt) ||
|
|
111
|
+
(generatedAt !== undefined && Date.parse(retail.pricedAt) > Date.parse(generatedAt)) ||
|
|
112
|
+
!Array.isArray(retail.assumptions) ||
|
|
113
|
+
retail.assumptions.length > REPORT_SPEND_LIMITS.assumptions ||
|
|
114
|
+
!retail.assumptions.every(isReportText))
|
|
115
|
+
return false;
|
|
116
|
+
const amount = reportMoneyUnits(retail.component.amount);
|
|
117
|
+
if (amount === undefined || amount < 0n)
|
|
118
|
+
return false;
|
|
119
|
+
currencies.add(retail.component.currencyCode);
|
|
120
|
+
}
|
|
121
|
+
return currencies.size <= 1;
|
|
122
|
+
}
|
|
123
|
+
export const hasReportSpendValue = (value) => value.retail.status === 'available' ||
|
|
124
|
+
bases.some(key => value.composition[key].actual.availability.status === 'available' || value.composition[key].estimated.availability.status === 'available');
|
|
125
|
+
/** Dates, population completeness and actual/estimated selection remain independent checks. */
|
|
126
|
+
export const isReportSpendProjection = (value) => {
|
|
127
|
+
if (!isRecord(value) ||
|
|
128
|
+
!exactFields(value, ['currency', 'dateBasis', 'generatedAt', 'freshness', 'periods'], ['sourceObservedAt']) ||
|
|
129
|
+
!isReportCurrency(value.currency) ||
|
|
130
|
+
value.dateBasis !== 'billing-calendar' ||
|
|
131
|
+
!isReportUtcTimestamp(value.generatedAt) ||
|
|
132
|
+
!['current', 'stale', 'unavailable'].includes(value.freshness) ||
|
|
133
|
+
!Array.isArray(value.periods) ||
|
|
134
|
+
value.periods.length > REPORT_SPEND_LIMITS.periods)
|
|
135
|
+
return false;
|
|
136
|
+
if (value.sourceObservedAt !== undefined &&
|
|
137
|
+
(!isReportUtcTimestamp(value.sourceObservedAt) || Date.parse(value.sourceObservedAt) > Date.parse(value.generatedAt)))
|
|
138
|
+
return false;
|
|
139
|
+
const seen = new Set();
|
|
140
|
+
let rollingCount = 0;
|
|
141
|
+
let historicalCount = 0;
|
|
142
|
+
let available = false;
|
|
143
|
+
for (const period of value.periods) {
|
|
144
|
+
if (!isRecord(period) ||
|
|
145
|
+
!exactFields(period, ['kind', 'startDate', 'endDate', 'amounts'], ['services']) ||
|
|
146
|
+
!['calendar-month', 'billing-period', 'rolling-30-days'].includes(period.kind) ||
|
|
147
|
+
!isReportCalendarDate(period.startDate) ||
|
|
148
|
+
!isReportCalendarDate(period.endDate))
|
|
149
|
+
return false;
|
|
150
|
+
const days = (Date.parse(period.endDate) - Date.parse(period.startDate)) / 86400000 + 1;
|
|
151
|
+
if (days < 1 || days > REPORT_SPEND_LIMITS.periodDays)
|
|
152
|
+
return false;
|
|
153
|
+
if (period.kind === 'calendar-month') {
|
|
154
|
+
const following = new Date(Date.parse(period.endDate) + 86400000).toISOString().slice(0, 10);
|
|
155
|
+
if (!period.startDate.endsWith('-01') || period.startDate.slice(0, 7) !== period.endDate.slice(0, 7) || !following.endsWith('-01'))
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
if (period.kind === 'rolling-30-days') {
|
|
159
|
+
if (days !== 30 || ++rollingCount > 1)
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
else if (++historicalCount > 13)
|
|
163
|
+
return false;
|
|
164
|
+
const key = `${period.kind}:${period.startDate}:${period.endDate}`;
|
|
165
|
+
if (seen.has(key))
|
|
166
|
+
return false;
|
|
167
|
+
seen.add(key);
|
|
168
|
+
if (!isReportSpendAmounts(period.amounts, value.currency, value.generatedAt))
|
|
169
|
+
return false;
|
|
170
|
+
available || (available = hasReportSpendValue(period.amounts));
|
|
171
|
+
if (period.services !== undefined) {
|
|
172
|
+
const serviceKeys = new Set();
|
|
173
|
+
if (!isBoundedRows(period.services, REPORT_SPEND_LIMITS.servicesPerPeriod, (row) => {
|
|
174
|
+
if (!isRecord(row) ||
|
|
175
|
+
!exactFields(row, ['serviceKey', 'name', 'amounts']) ||
|
|
176
|
+
!isReportText(row.serviceKey) ||
|
|
177
|
+
!isReportText(row.name) ||
|
|
178
|
+
serviceKeys.has(row.serviceKey) ||
|
|
179
|
+
!isReportSpendAmounts(row.amounts, value.currency, value.generatedAt))
|
|
180
|
+
return false;
|
|
181
|
+
serviceKeys.add(row.serviceKey);
|
|
182
|
+
available || (available = hasReportSpendValue(row.amounts));
|
|
183
|
+
return true;
|
|
184
|
+
}))
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return available ? value.sourceObservedAt !== undefined && value.freshness !== 'unavailable' : value.freshness === 'unavailable';
|
|
189
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { REPORT_SPEND_LIMITS } from './reportSpend.js';
|
|
2
|
+
export const isReportCalendarDate = (value) => {
|
|
3
|
+
if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}$/.test(value))
|
|
4
|
+
return false;
|
|
5
|
+
const time = Date.parse(`${value}T00:00:00.000Z`);
|
|
6
|
+
return Number.isFinite(time) && new Date(time).toISOString().slice(0, 10) === value;
|
|
7
|
+
};
|
|
8
|
+
export const isReportUtcTimestamp = (value) => typeof value === 'string' &&
|
|
9
|
+
/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/.test(value) &&
|
|
10
|
+
isReportCalendarDate(value.slice(0, 10)) &&
|
|
11
|
+
Number.isFinite(Date.parse(value)) &&
|
|
12
|
+
new Date(value).toISOString() === (value.length === 20 ? value.replace('Z', '.000Z') : value);
|
|
13
|
+
export const isReportCurrency = (value) => typeof value === 'string' && /^[A-Z]{3}$/.test(value);
|
|
14
|
+
export const isReportText = (value) => typeof value === 'string' && value.trim().length > 0 && value.length <= REPORT_SPEND_LIMITS.textLength;
|
|
15
|
+
/** Bounded exact arithmetic avoids binary floating point and pathological decimal-string input. */
|
|
16
|
+
export const reportMoneyUnits = (value) => {
|
|
17
|
+
if (typeof value !== 'string' || value.length > 25 || !/^-?(?:0|[1-9]\d{0,14})(?:\.\d{1,8})?$/.test(value))
|
|
18
|
+
return undefined;
|
|
19
|
+
const [whole, fraction = ''] = value.replace(/^-/, '').split('.');
|
|
20
|
+
const amount = BigInt(whole) * 100000000n + BigInt(fraction.padEnd(8, '0'));
|
|
21
|
+
return value.startsWith('-') ? -amount : amount;
|
|
22
|
+
};
|
package/dist/esm/index.js
CHANGED
|
@@ -32,6 +32,10 @@ export * from './azure/resources.js';
|
|
|
32
32
|
export * from './azure/reports.js';
|
|
33
33
|
export * from './azure/reportEvidence.js';
|
|
34
34
|
export * from './azure/reportEvidenceValidation.js';
|
|
35
|
+
export * from './azure/reportDailySpend.js';
|
|
36
|
+
export * from './azure/reportDailySpendValidation.js';
|
|
37
|
+
export * from './azure/reportSpend.js';
|
|
38
|
+
export { isReportSpendAmounts, isReportSpendProjection, isReportSavingsBasis } from './azure/reportSpendValidation.js';
|
|
35
39
|
export * from './azure/reportingTemplates.js';
|
|
36
40
|
export * from './azure/reviewChecklist.js';
|
|
37
41
|
export * from './azure/advisorScore.js';
|
package/dist/esm/index.vite.js
CHANGED
|
@@ -18,6 +18,12 @@ export * from './azure/recommendationWorkflow.js';
|
|
|
18
18
|
export * from './azure/recommendationState.js';
|
|
19
19
|
export * from './azure/resources.js';
|
|
20
20
|
export * from './azure/reports.js';
|
|
21
|
+
export * from './azure/reportEvidence.js';
|
|
22
|
+
export * from './azure/reportEvidenceValidation.js';
|
|
23
|
+
export * from './azure/reportDailySpend.js';
|
|
24
|
+
export * from './azure/reportDailySpendValidation.js';
|
|
25
|
+
export * from './azure/reportSpend.js';
|
|
26
|
+
export { isReportSpendAmounts, isReportSpendProjection, isReportSavingsBasis } from './azure/reportSpendValidation.js';
|
|
21
27
|
export * from './azure/reportingTemplates.js';
|
|
22
28
|
export * from './azure/reviewChecklist.js';
|
|
23
29
|
export * from './azure/advisorScore.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -32,6 +32,10 @@ export * from './azure/resources';
|
|
|
32
32
|
export * from './azure/reports';
|
|
33
33
|
export * from './azure/reportEvidence';
|
|
34
34
|
export * from './azure/reportEvidenceValidation';
|
|
35
|
+
export * from './azure/reportDailySpend';
|
|
36
|
+
export * from './azure/reportDailySpendValidation';
|
|
37
|
+
export * from './azure/reportSpend';
|
|
38
|
+
export { isReportSpendAmounts, isReportSpendProjection, isReportSavingsBasis } from './azure/reportSpendValidation';
|
|
35
39
|
export * from './azure/reportingTemplates';
|
|
36
40
|
export * from './azure/reviewChecklist';
|
|
37
41
|
export * from './azure/advisorScore';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACpH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.isReportSavingsBasis = exports.isReportSpendProjection = exports.isReportSpendAmounts = void 0;
|
|
17
18
|
/** Main entry point - export all interfaces from this package */
|
|
18
19
|
__exportStar(require("./azure/common"), exports);
|
|
19
20
|
__exportStar(require("./azure/costComposition"), exports);
|
|
@@ -48,6 +49,13 @@ __exportStar(require("./azure/resources"), exports);
|
|
|
48
49
|
__exportStar(require("./azure/reports"), exports);
|
|
49
50
|
__exportStar(require("./azure/reportEvidence"), exports);
|
|
50
51
|
__exportStar(require("./azure/reportEvidenceValidation"), exports);
|
|
52
|
+
__exportStar(require("./azure/reportDailySpend"), exports);
|
|
53
|
+
__exportStar(require("./azure/reportDailySpendValidation"), exports);
|
|
54
|
+
__exportStar(require("./azure/reportSpend"), exports);
|
|
55
|
+
var reportSpendValidation_1 = require("./azure/reportSpendValidation");
|
|
56
|
+
Object.defineProperty(exports, "isReportSpendAmounts", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSpendAmounts; } });
|
|
57
|
+
Object.defineProperty(exports, "isReportSpendProjection", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSpendProjection; } });
|
|
58
|
+
Object.defineProperty(exports, "isReportSavingsBasis", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSavingsBasis; } });
|
|
51
59
|
__exportStar(require("./azure/reportingTemplates"), exports);
|
|
52
60
|
__exportStar(require("./azure/reviewChecklist"), exports);
|
|
53
61
|
__exportStar(require("./azure/advisorScore"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAAiE;AACjE,iDAA+B;AAC/B,0DAAwC;AACxC,gEAA8C;AAC9C,uDAAqC;AACrC,8DAA4C;AAC5C,wEAAsD;AACtD,kDAAgC;AAChC,4DAA0C;AAC1C,oEAAkD;AAClD,gEAA8C;AAC9C,0EAAwD;AACxD,+DAA6C;AAC7C,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,yDAAuC;AACvC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,+DAA6C;AAC7C,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,+DAA6C;AAC7C,oDAAkC;AAClC,kDAAgC;AAChC,yDAAuC;AACvC,mEAAiD;AACjD,2DAAyC;AACzC,qEAAmD;AACnD,sDAAoC;AACpC,uEAAoH;AAA3G,6HAAA,oBAAoB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAAE,6HAAA,oBAAoB,OAAA;AAC5E,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,kDAAgC;AAChC,4DAA0C;AAC1C,iEAA+C;AAC/C,0EAAwD;AACxD,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,4DAA0C;AAC1C,wCAAsB;AACtB,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB;AACxB,2CAAyB;AACzB,4DAA0C;AAC1C,4CAA0B;AAC1B,qDAAmC;AACnC,8CAA4B;AAC5B,uCAAqB;AACrB,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,6DAA2C;AAC3C,yCAAuB;AACvB,8CAA4B"}
|
package/dist/index.vite.d.ts
CHANGED
|
@@ -18,6 +18,12 @@ export * from './azure/recommendationWorkflow';
|
|
|
18
18
|
export * from './azure/recommendationState';
|
|
19
19
|
export * from './azure/resources';
|
|
20
20
|
export * from './azure/reports';
|
|
21
|
+
export * from './azure/reportEvidence';
|
|
22
|
+
export * from './azure/reportEvidenceValidation';
|
|
23
|
+
export * from './azure/reportDailySpend';
|
|
24
|
+
export * from './azure/reportDailySpendValidation';
|
|
25
|
+
export * from './azure/reportSpend';
|
|
26
|
+
export { isReportSpendAmounts, isReportSpendProjection, isReportSavingsBasis } from './azure/reportSpendValidation';
|
|
21
27
|
export * from './azure/reportingTemplates';
|
|
22
28
|
export * from './azure/reviewChecklist';
|
|
23
29
|
export * from './azure/advisorScore';
|
package/dist/index.vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vite.d.ts","sourceRoot":"","sources":["../src/index.vite.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.vite.d.ts","sourceRoot":"","sources":["../src/index.vite.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACpH,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC"}
|
package/dist/index.vite.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.isReportSavingsBasis = exports.isReportSpendProjection = exports.isReportSpendAmounts = void 0;
|
|
17
18
|
/** Dev-only Vite entrypoint that avoids stale sibling .js files under src/. */
|
|
18
19
|
__exportStar(require("./azure/common"), exports);
|
|
19
20
|
__exportStar(require("./azure/activityLogs"), exports);
|
|
@@ -34,6 +35,15 @@ __exportStar(require("./azure/recommendationWorkflow"), exports);
|
|
|
34
35
|
__exportStar(require("./azure/recommendationState"), exports);
|
|
35
36
|
__exportStar(require("./azure/resources"), exports);
|
|
36
37
|
__exportStar(require("./azure/reports"), exports);
|
|
38
|
+
__exportStar(require("./azure/reportEvidence"), exports);
|
|
39
|
+
__exportStar(require("./azure/reportEvidenceValidation"), exports);
|
|
40
|
+
__exportStar(require("./azure/reportDailySpend"), exports);
|
|
41
|
+
__exportStar(require("./azure/reportDailySpendValidation"), exports);
|
|
42
|
+
__exportStar(require("./azure/reportSpend"), exports);
|
|
43
|
+
var reportSpendValidation_1 = require("./azure/reportSpendValidation");
|
|
44
|
+
Object.defineProperty(exports, "isReportSpendAmounts", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSpendAmounts; } });
|
|
45
|
+
Object.defineProperty(exports, "isReportSpendProjection", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSpendProjection; } });
|
|
46
|
+
Object.defineProperty(exports, "isReportSavingsBasis", { enumerable: true, get: function () { return reportSpendValidation_1.isReportSavingsBasis; } });
|
|
37
47
|
__exportStar(require("./azure/reportingTemplates"), exports);
|
|
38
48
|
__exportStar(require("./azure/reviewChecklist"), exports);
|
|
39
49
|
__exportStar(require("./azure/advisorScore"), exports);
|
package/dist/index.vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vite.js","sourceRoot":"","sources":["../src/index.vite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.vite.js","sourceRoot":"","sources":["../src/index.vite.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+EAA+E;AAC/E,iDAA+B;AAC/B,uDAAqC;AACrC,kDAAgC;AAChC,uDAAqC;AACrC,mDAAiC;AACjC,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,0DAAwC;AACxC,iDAA+B;AAC/B,wDAAsC;AACtC,0DAAwC;AACxC,8DAA4C;AAC5C,iEAA+C;AAC/C,8DAA4C;AAC5C,oDAAkC;AAClC,kDAAgC;AAChC,yDAAuC;AACvC,mEAAiD;AACjD,2DAAyC;AACzC,qEAAmD;AACnD,sDAAoC;AACpC,uEAAoH;AAA3G,6HAAA,oBAAoB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAAE,6HAAA,oBAAoB,OAAA;AAC5E,6DAA2C;AAC3C,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,wDAAsC;AACtC,gDAA8B;AAC9B,mDAAiC;AACjC,4DAA0C;AAC1C,iEAA+C;AAC/C,+DAA6C;AAC7C,4DAA0C;AAC1C,qDAAmC;AACnC,4DAA0C;AAC1C,yDAAuC;AACvC,yDAAuC;AACvC,mDAAiC;AACjC,sDAAoC;AACpC,gDAA8B;AAC9B,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC;AAChC,8CAA4B;AAC5B,6CAA2B;AAC3B,iDAA+B;AAC/B,uDAAqC;AACrC,mDAAiC;AACjC,6DAA2C;AAC3C,+CAA6B"}
|