@senior-agronegocio/angular-components 0.0.9866 → 0.0.9868
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/bundles/senior-agronegocio-angular-components.umd.js +446 -66
- package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
- package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
- package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
- package/common/agro-array-utils.class.d.ts +13 -0
- package/common/agro-logics.class.d.ts +5 -0
- package/common/agro-object-utils.class.d.ts +3 -1
- package/common/agro-unit-converter.class.d.ts +23 -0
- package/common/index.d.ts +1 -0
- package/components/event-control-board/event-control-board.component.d.ts +4 -5
- package/components/event-control-board/service/event-control/event-control.service.d.ts +0 -20
- package/enums/index.d.ts +1 -0
- package/enums/unit-measurement.enum.d.ts +49 -0
- package/esm2015/common/agro-array-utils.class.js +19 -1
- package/esm2015/common/agro-logics.class.js +11 -6
- package/esm2015/common/agro-object-utils.class.js +28 -2
- package/esm2015/common/agro-unit-converter.class.js +256 -0
- package/esm2015/common/index.js +2 -1
- package/esm2015/components/event-control-board/event-control-board.component.js +77 -58
- package/esm2015/components/event-control-board/service/event-control/event-control.service.js +1 -5
- package/esm2015/enums/index.js +2 -1
- package/esm2015/enums/unit-measurement.enum.js +60 -0
- package/esm5/common/agro-array-utils.class.js +19 -1
- package/esm5/common/agro-logics.class.js +10 -4
- package/esm5/common/agro-object-utils.class.js +28 -2
- package/esm5/common/agro-unit-converter.class.js +259 -0
- package/esm5/common/index.js +2 -1
- package/esm5/components/event-control-board/event-control-board.component.js +77 -59
- package/esm5/components/event-control-board/service/event-control/event-control.service.js +1 -5
- package/esm5/enums/index.js +2 -1
- package/esm5/enums/unit-measurement.enum.js +60 -0
- package/fesm2015/senior-agronegocio-angular-components.js +445 -68
- package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
- package/fesm5/senior-agronegocio-angular-components.js +446 -67
- package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/senior-agronegocio-angular-components.metadata.json +1 -1
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { UnitOfMeasurement } from "../enums/unit-measurement.enum";
|
|
2
|
+
import { AGRO_NUMBERS } from "../enums";
|
|
3
|
+
const TWO_HUNDRED_SEVENTY_THREE_POINT_ONE_FIVE = 273.15;
|
|
4
|
+
export class AgroUnitConverter {
|
|
5
|
+
constructor() {
|
|
6
|
+
// 🔹 Comprimento
|
|
7
|
+
this.LENGTH_UNITS = [
|
|
8
|
+
UnitOfMeasurement.METRO,
|
|
9
|
+
UnitOfMeasurement.CENTIMETRO,
|
|
10
|
+
UnitOfMeasurement.MILIMETRO,
|
|
11
|
+
UnitOfMeasurement.QUILOMETRO,
|
|
12
|
+
UnitOfMeasurement.POLEGADA,
|
|
13
|
+
UnitOfMeasurement.PE,
|
|
14
|
+
];
|
|
15
|
+
// 🔹 Massa
|
|
16
|
+
this.MASS_UNITS = [
|
|
17
|
+
UnitOfMeasurement.GRAMA,
|
|
18
|
+
UnitOfMeasurement.QUILOGRAMA,
|
|
19
|
+
UnitOfMeasurement.TONELADA,
|
|
20
|
+
UnitOfMeasurement.LIBRA,
|
|
21
|
+
UnitOfMeasurement.SACA,
|
|
22
|
+
];
|
|
23
|
+
// 🔹 Área
|
|
24
|
+
this.AREA_UNITS = [
|
|
25
|
+
UnitOfMeasurement.METRO_QUADRADO,
|
|
26
|
+
UnitOfMeasurement.CENTIMETRO_QUADRADO,
|
|
27
|
+
UnitOfMeasurement.HECTARE,
|
|
28
|
+
UnitOfMeasurement.ALQUEIRE_50x50,
|
|
29
|
+
UnitOfMeasurement.ALQUEIRE_50x75,
|
|
30
|
+
UnitOfMeasurement.ALQUEIRE_DO_NORTE,
|
|
31
|
+
UnitOfMeasurement.ALQUEIRE_75x80,
|
|
32
|
+
UnitOfMeasurement.ALQUEIRE_79x79,
|
|
33
|
+
UnitOfMeasurement.ALQUEIRE_80x80,
|
|
34
|
+
UnitOfMeasurement.ALQUEIRE_75x100,
|
|
35
|
+
UnitOfMeasurement.ALQUEIRE_100x150,
|
|
36
|
+
UnitOfMeasurement.ALQUEIRE_BAIANO,
|
|
37
|
+
UnitOfMeasurement.ALQUEIRAO,
|
|
38
|
+
UnitOfMeasurement.ALQUEIRE_PAULISTA,
|
|
39
|
+
UnitOfMeasurement.ALQUEIRE_MINEIRO,
|
|
40
|
+
];
|
|
41
|
+
// 🔹 Volume
|
|
42
|
+
this.VOLUME_UNITS = [UnitOfMeasurement.LITRO, UnitOfMeasurement.MILILITRO, UnitOfMeasurement.METRO_CUBICO];
|
|
43
|
+
// 🔹 Tempo
|
|
44
|
+
this.TIME_UNITS = [
|
|
45
|
+
UnitOfMeasurement.SEGUNDO,
|
|
46
|
+
UnitOfMeasurement.MINUTO,
|
|
47
|
+
UnitOfMeasurement.HORA,
|
|
48
|
+
UnitOfMeasurement.DIA,
|
|
49
|
+
];
|
|
50
|
+
// 🔹 Temperatura
|
|
51
|
+
this.TEMPERATURE_UNITS = [UnitOfMeasurement.CELSIUS, UnitOfMeasurement.FAHRENHEIT, UnitOfMeasurement.KELVIN];
|
|
52
|
+
// 🔹 Energia
|
|
53
|
+
this.ENERGY_UNITS = [UnitOfMeasurement.JOULE, UnitOfMeasurement.CALORIA, UnitOfMeasurement.QUILOWATT_HORA];
|
|
54
|
+
// 🔹 Eletricidade
|
|
55
|
+
this.ELECTRICITY_UNITS = [UnitOfMeasurement.VOLT, UnitOfMeasurement.AMPERE, UnitOfMeasurement.WATT];
|
|
56
|
+
// 🔹 Dados digitais
|
|
57
|
+
this.DATA_UNITS = [
|
|
58
|
+
UnitOfMeasurement.BYTE,
|
|
59
|
+
UnitOfMeasurement.KILOBYTE,
|
|
60
|
+
UnitOfMeasurement.MEGABYTE,
|
|
61
|
+
UnitOfMeasurement.GIGABYTE,
|
|
62
|
+
UnitOfMeasurement.TERABYTE,
|
|
63
|
+
];
|
|
64
|
+
this.conversionUnits = [
|
|
65
|
+
{
|
|
66
|
+
units: this.LENGTH_UNITS,
|
|
67
|
+
factorTable: {
|
|
68
|
+
[UnitOfMeasurement.METRO]: AGRO_NUMBERS.ONE,
|
|
69
|
+
[UnitOfMeasurement.CENTIMETRO]: 0.01,
|
|
70
|
+
[UnitOfMeasurement.MILIMETRO]: 0.001,
|
|
71
|
+
[UnitOfMeasurement.QUILOMETRO]: AGRO_NUMBERS.ONETHOUSAND,
|
|
72
|
+
[UnitOfMeasurement.POLEGADA]: 0.0254,
|
|
73
|
+
[UnitOfMeasurement.PE]: 0.3048,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
units: this.MASS_UNITS,
|
|
78
|
+
factorTable: {
|
|
79
|
+
[UnitOfMeasurement.GRAMA]: 0.001,
|
|
80
|
+
[UnitOfMeasurement.QUILOGRAMA]: AGRO_NUMBERS.ONE,
|
|
81
|
+
[UnitOfMeasurement.TONELADA]: AGRO_NUMBERS.ONETHOUSAND,
|
|
82
|
+
[UnitOfMeasurement.LIBRA]: 0.453592,
|
|
83
|
+
[UnitOfMeasurement.SACA]: 60,
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
units: this.AREA_UNITS,
|
|
88
|
+
factorTable: {
|
|
89
|
+
[UnitOfMeasurement.METRO_QUADRADO]: AGRO_NUMBERS.ONE,
|
|
90
|
+
[UnitOfMeasurement.CENTIMETRO_QUADRADO]: 0.0001,
|
|
91
|
+
[UnitOfMeasurement.HECTARE]: 10000,
|
|
92
|
+
[UnitOfMeasurement.ALQUEIRE_50x50]: 12100,
|
|
93
|
+
[UnitOfMeasurement.ALQUEIRE_50x75]: 18200,
|
|
94
|
+
[UnitOfMeasurement.ALQUEIRE_DO_NORTE]: 27200,
|
|
95
|
+
[UnitOfMeasurement.ALQUEIRE_75x80]: 29000,
|
|
96
|
+
[UnitOfMeasurement.ALQUEIRE_79x79]: 30200,
|
|
97
|
+
[UnitOfMeasurement.ALQUEIRE_80x80]: 31900,
|
|
98
|
+
[UnitOfMeasurement.ALQUEIRE_75x100]: 36300,
|
|
99
|
+
[UnitOfMeasurement.ALQUEIRE_100x150]: 72600,
|
|
100
|
+
[UnitOfMeasurement.ALQUEIRE_BAIANO]: 96800,
|
|
101
|
+
[UnitOfMeasurement.ALQUEIRAO]: 193600,
|
|
102
|
+
[UnitOfMeasurement.ALQUEIRE_PAULISTA]: 24200,
|
|
103
|
+
[UnitOfMeasurement.ALQUEIRE_MINEIRO]: 48400,
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
units: this.VOLUME_UNITS,
|
|
108
|
+
factorTable: {
|
|
109
|
+
[UnitOfMeasurement.LITRO]: AGRO_NUMBERS.ONE,
|
|
110
|
+
[UnitOfMeasurement.MILILITRO]: 0.001,
|
|
111
|
+
[UnitOfMeasurement.METRO_CUBICO]: AGRO_NUMBERS.ONETHOUSAND,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
units: this.TIME_UNITS,
|
|
116
|
+
factorTable: {
|
|
117
|
+
[UnitOfMeasurement.SEGUNDO]: AGRO_NUMBERS.ONE,
|
|
118
|
+
[UnitOfMeasurement.MINUTO]: AGRO_NUMBERS.SIXTY_,
|
|
119
|
+
[UnitOfMeasurement.HORA]: 3600,
|
|
120
|
+
[UnitOfMeasurement.DIA]: 86400,
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
units: this.ENERGY_UNITS,
|
|
125
|
+
factorTable: {
|
|
126
|
+
[UnitOfMeasurement.JOULE]: AGRO_NUMBERS.ONE,
|
|
127
|
+
[UnitOfMeasurement.CALORIA]: 4.184,
|
|
128
|
+
[UnitOfMeasurement.QUILOWATT_HORA]: 3600000,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
units: this.DATA_UNITS,
|
|
133
|
+
factorTable: {
|
|
134
|
+
[UnitOfMeasurement.BYTE]: AGRO_NUMBERS.ONE,
|
|
135
|
+
[UnitOfMeasurement.KILOBYTE]: 1024,
|
|
136
|
+
[UnitOfMeasurement.MEGABYTE]: Math.pow(1024, AGRO_NUMBERS.TWO),
|
|
137
|
+
[UnitOfMeasurement.GIGABYTE]: Math.pow(1024, AGRO_NUMBERS.THREE),
|
|
138
|
+
[UnitOfMeasurement.TERABYTE]: Math.pow(1024, AGRO_NUMBERS.FOUR),
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
// 🔹 Métodos de conversão
|
|
144
|
+
convertTemperatureUnit(valor, de, para) {
|
|
145
|
+
if (de === para) {
|
|
146
|
+
return valor;
|
|
147
|
+
}
|
|
148
|
+
let celsius;
|
|
149
|
+
switch (de) {
|
|
150
|
+
case UnitOfMeasurement.CELSIUS:
|
|
151
|
+
celsius = valor;
|
|
152
|
+
break;
|
|
153
|
+
case UnitOfMeasurement.FAHRENHEIT:
|
|
154
|
+
celsius = ((valor - AGRO_NUMBERS.THIRTY_TWO) * AGRO_NUMBERS.FIVE) / AGRO_NUMBERS.NINE;
|
|
155
|
+
break;
|
|
156
|
+
case UnitOfMeasurement.KELVIN:
|
|
157
|
+
celsius = valor - TWO_HUNDRED_SEVENTY_THREE_POINT_ONE_FIVE;
|
|
158
|
+
break;
|
|
159
|
+
default:
|
|
160
|
+
throw new Error("Unidade inválida");
|
|
161
|
+
}
|
|
162
|
+
switch (para) {
|
|
163
|
+
case UnitOfMeasurement.CELSIUS:
|
|
164
|
+
return celsius;
|
|
165
|
+
case UnitOfMeasurement.FAHRENHEIT:
|
|
166
|
+
return (celsius * AGRO_NUMBERS.NINE) / AGRO_NUMBERS.FIVE + AGRO_NUMBERS.THIRTY_TWO;
|
|
167
|
+
case UnitOfMeasurement.KELVIN:
|
|
168
|
+
return celsius + TWO_HUNDRED_SEVENTY_THREE_POINT_ONE_FIVE;
|
|
169
|
+
default:
|
|
170
|
+
throw new Error("Unidade inválida");
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
isTemperatureUnit(unit) {
|
|
174
|
+
console.log(this.TEMPERATURE_UNITS.includes(unit));
|
|
175
|
+
return this.TEMPERATURE_UNITS.includes(unit);
|
|
176
|
+
}
|
|
177
|
+
convertScalableUnits(valor, from, to) {
|
|
178
|
+
var _a;
|
|
179
|
+
if (from === to) {
|
|
180
|
+
return valor;
|
|
181
|
+
}
|
|
182
|
+
if (this.isTemperatureUnit(from) || this.isTemperatureUnit(to)) {
|
|
183
|
+
return this.convertTemperatureUnit(valor, from, to);
|
|
184
|
+
}
|
|
185
|
+
const unitCategory = this.conversionUnits.find((u) => u.units.includes(from));
|
|
186
|
+
if (!((_a = unitCategory === null || unitCategory === void 0 ? void 0 : unitCategory.units) === null || _a === void 0 ? void 0 : _a.includes(to))) {
|
|
187
|
+
throw new Error(`Não é possível converter de ${from} para ${to}: categorias diferentes ou unidade não escalável.`);
|
|
188
|
+
}
|
|
189
|
+
const fatorDe = unitCategory.factorTable[from];
|
|
190
|
+
const fatorPara = unitCategory.factorTable[to];
|
|
191
|
+
const emBase = valor * fatorDe;
|
|
192
|
+
return emBase / fatorPara;
|
|
193
|
+
}
|
|
194
|
+
convertLitersPerArea(valor, from, to) {
|
|
195
|
+
var _a;
|
|
196
|
+
const areaCategory = this.conversionUnits.find((u) => u.units.includes(from));
|
|
197
|
+
if (!((_a = areaCategory === null || areaCategory === void 0 ? void 0 : areaCategory.units) === null || _a === void 0 ? void 0 : _a.includes(to))) {
|
|
198
|
+
throw new Error(`Unidade de área inválida: ${from} ou ${to}`);
|
|
199
|
+
}
|
|
200
|
+
const fatorFrom = areaCategory.factorTable[from];
|
|
201
|
+
const fatorTo = areaCategory.factorTable[to];
|
|
202
|
+
return (valor / fatorFrom) * fatorTo;
|
|
203
|
+
}
|
|
204
|
+
convertKgPerArea(valor, from, to) {
|
|
205
|
+
return this.convertLitersPerArea(valor, from, to);
|
|
206
|
+
}
|
|
207
|
+
convertBushelToKg(bushel, factor) {
|
|
208
|
+
if (factor <= 0) {
|
|
209
|
+
throw new Error("Fator de conversão inválido");
|
|
210
|
+
}
|
|
211
|
+
return bushel * factor;
|
|
212
|
+
}
|
|
213
|
+
convertKgToBushel(kg, factor) {
|
|
214
|
+
if (factor <= 0) {
|
|
215
|
+
throw new Error("Fator de conversão inválido");
|
|
216
|
+
}
|
|
217
|
+
return kg / factor;
|
|
218
|
+
}
|
|
219
|
+
calculateAreaFromVolume(totalVolume, rate, rateUnit, areaUnit) {
|
|
220
|
+
if (rate <= 0) {
|
|
221
|
+
throw new Error("Taxa de aplicação inválida");
|
|
222
|
+
}
|
|
223
|
+
const rateInDesiredUnit = this.convertLitersPerArea(rate, rateUnit, areaUnit);
|
|
224
|
+
return totalVolume / rateInDesiredUnit;
|
|
225
|
+
}
|
|
226
|
+
convertElectricityUnit(valor, voltage, from, to) {
|
|
227
|
+
if (from === to) {
|
|
228
|
+
return valor;
|
|
229
|
+
}
|
|
230
|
+
const toWatt = (v, unit) => {
|
|
231
|
+
switch (unit) {
|
|
232
|
+
case UnitOfMeasurement.VOLT:
|
|
233
|
+
case UnitOfMeasurement.AMPERE:
|
|
234
|
+
return voltage * v; // P = V * I
|
|
235
|
+
case UnitOfMeasurement.WATT:
|
|
236
|
+
return v;
|
|
237
|
+
default:
|
|
238
|
+
throw new Error(`A unidade ${unit} não é escalável diretamente.`);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
const fromWatt = (w, unit) => {
|
|
242
|
+
switch (unit) {
|
|
243
|
+
case UnitOfMeasurement.VOLT:
|
|
244
|
+
case UnitOfMeasurement.AMPERE:
|
|
245
|
+
return w / voltage;
|
|
246
|
+
case UnitOfMeasurement.WATT:
|
|
247
|
+
return w;
|
|
248
|
+
default:
|
|
249
|
+
throw new Error(`A unidade ${unit} não é escalável diretamente.`);
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
const wattValue = toWatt(valor, from);
|
|
253
|
+
return fromWatt(wattValue, to);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby11bml0LWNvbnZlcnRlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tdW5pdC1jb252ZXJ0ZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU94QyxNQUFNLHdDQUF3QyxHQUFHLE1BQU0sQ0FBQztBQUV4RCxNQUFNLE9BQU8saUJBQWlCO0lBc0UxQjtRQXJFQSxpQkFBaUI7UUFDUixpQkFBWSxHQUF3QjtZQUN6QyxpQkFBaUIsQ0FBQyxLQUFLO1lBQ3ZCLGlCQUFpQixDQUFDLFVBQVU7WUFDNUIsaUJBQWlCLENBQUMsU0FBUztZQUMzQixpQkFBaUIsQ0FBQyxVQUFVO1lBQzVCLGlCQUFpQixDQUFDLFFBQVE7WUFDMUIsaUJBQWlCLENBQUMsRUFBRTtTQUN2QixDQUFDO1FBRUYsV0FBVztRQUNGLGVBQVUsR0FBd0I7WUFDdkMsaUJBQWlCLENBQUMsS0FBSztZQUN2QixpQkFBaUIsQ0FBQyxVQUFVO1lBQzVCLGlCQUFpQixDQUFDLFFBQVE7WUFDMUIsaUJBQWlCLENBQUMsS0FBSztZQUN2QixpQkFBaUIsQ0FBQyxJQUFJO1NBQ3pCLENBQUM7UUFFRixVQUFVO1FBQ0QsZUFBVSxHQUF3QjtZQUN2QyxpQkFBaUIsQ0FBQyxjQUFjO1lBQ2hDLGlCQUFpQixDQUFDLG1CQUFtQjtZQUNyQyxpQkFBaUIsQ0FBQyxPQUFPO1lBQ3pCLGlCQUFpQixDQUFDLGNBQWM7WUFDaEMsaUJBQWlCLENBQUMsY0FBYztZQUNoQyxpQkFBaUIsQ0FBQyxpQkFBaUI7WUFDbkMsaUJBQWlCLENBQUMsY0FBYztZQUNoQyxpQkFBaUIsQ0FBQyxjQUFjO1lBQ2hDLGlCQUFpQixDQUFDLGNBQWM7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QUUsSUFBdUIsRUFBRSxFQUFxQjtRQUNqRyxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDYixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBUyxFQUFFLElBQXVCLEVBQVUsRUFBRTtZQUMxRCxRQUFRLElBQUksRUFBRTtnQkFDVixLQUFLLGlCQUFpQixDQUFDLElBQUksQ0FBQztnQkFDNUIsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNO29CQUN6QixPQUFPLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZO2dCQUNwQyxLQUFLLGlCQUFpQixDQUFDLElBQUk7b0JBQ3ZCLE9BQU8sQ0FBQyxDQUFDO2dCQUNiO29CQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLCtCQUErQixDQUFDLENBQUM7YUFDekU7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVMsRUFBRSxJQUF1QixFQUFVLEVBQUU7WUFDNUQsUUFBUSxJQUFJLEVBQUU7Z0JBQ1YsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLEtBQUssaUJBQWlCLENBQUMsTUFBTTtvQkFDekIsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixLQUFLLGlCQUFpQixDQUFDLElBQUk7b0JBQ3ZCLE9BQU8sQ0FBQyxDQUFDO2dCQUNiO29CQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLCtCQUErQixDQUFDLENBQUM7YUFDekU7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbml0T2ZNZWFzdXJlbWVudCB9IGZyb20gXCIuLi9lbnVtcy91bml0LW1lYXN1cmVtZW50LmVudW1cIjtcclxuaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uL2VudW1zXCI7XHJcblxyXG50eXBlIENvbnZlcnNpb25Vbml0ID0ge1xyXG4gICAgdW5pdHM6IFVuaXRPZk1lYXN1cmVtZW50W107XHJcbiAgICBmYWN0b3JUYWJsZTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcclxufTtcclxuXHJcbmNvbnN0IFRXT19IVU5EUkVEX1NFVkVOVFlfVEhSRUVfUE9JTlRfT05FX0ZJVkUgPSAyNzMuMTU7XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb1VuaXRDb252ZXJ0ZXIge1xyXG4gICAgLy8g8J+UuSBDb21wcmltZW50b1xyXG4gICAgcmVhZG9ubHkgTEVOR1RIX1VOSVRTOiBVbml0T2ZNZWFzdXJlbWVudFtdID0gW1xyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50Lk1FVFJPLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LkNFTlRJTUVUUk8sXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuTUlMSU1FVFJPLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LlFVSUxPTUVUUk8sXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuUE9MRUdBREEsXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuUEUsXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIPCflLkgTWFzc2FcclxuICAgIHJlYWRvbmx5IE1BU1NfVU5JVFM6IFVuaXRPZk1lYXN1cmVtZW50W10gPSBbXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuR1JBTUEsXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuUVVJTE9HUkFNQSxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5UT05FTEFEQSxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5MSUJSQSxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5TQUNBLFxyXG4gICAgXTtcclxuXHJcbiAgICAvLyDwn5S5IMOBcmVhXHJcbiAgICByZWFkb25seSBBUkVBX1VOSVRTOiBVbml0T2ZNZWFzdXJlbWVudFtdID0gW1xyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50Lk1FVFJPX1FVQURSQURPLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LkNFTlRJTUVUUk9fUVVBRFJBRE8sXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuSEVDVEFSRSxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5BTFFVRUlSRV81MHg1MCxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5BTFFVRUlSRV81MHg3NSxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5BTFFVRUlSRV9ET19OT1JURSxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5BTFFVRUlSRV83NXg4MCxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5BTFFVRUlSRV83OXg3OSxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5BTFFVRUlSRV84MHg4MCxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5BTFFVRUlSRV83NXgxMDAsXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfMTAweDE1MCxcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5BTFFVRUlSRV9CQUlBTk8sXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkFPLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LkFMUVVFSVJFX1BBVUxJU1RBLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LkFMUVVFSVJFX01JTkVJUk8sXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIPCflLkgVm9sdW1lXHJcbiAgICByZWFkb25seSBWT0xVTUVfVU5JVFM6IFVuaXRPZk1lYXN1cmVtZW50W10gPSBbVW5pdE9mTWVhc3VyZW1lbnQuTElUUk8sIFVuaXRPZk1lYXN1cmVtZW50Lk1JTElMSVRSTywgVW5pdE9mTWVhc3VyZW1lbnQuTUVUUk9fQ1VCSUNPXTtcclxuXHJcbiAgICAvLyDwn5S5IFRlbXBvXHJcbiAgICByZWFkb25seSBUSU1FX1VOSVRTOiBVbml0T2ZNZWFzdXJlbWVudFtdID0gW1xyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LlNFR1VORE8sXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuTUlOVVRPLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LkhPUkEsXHJcbiAgICAgICAgVW5pdE9mTWVhc3VyZW1lbnQuRElBLFxyXG4gICAgXTtcclxuXHJcbiAgICAvLyDwn5S5IFRlbXBlcmF0dXJhXHJcbiAgICByZWFkb25seSBURU1QRVJBVFVSRV9VTklUUzogVW5pdE9mTWVhc3VyZW1lbnRbXSA9IFtVbml0T2ZNZWFzdXJlbWVudC5DRUxTSVVTLCBVbml0T2ZNZWFzdXJlbWVudC5GQUhSRU5IRUlULCBVbml0T2ZNZWFzdXJlbWVudC5LRUxWSU5dO1xyXG5cclxuICAgIC8vIPCflLkgRW5lcmdpYVxyXG4gICAgcmVhZG9ubHkgRU5FUkdZX1VOSVRTOiBVbml0T2ZNZWFzdXJlbWVudFtdID0gW1VuaXRPZk1lYXN1cmVtZW50LkpPVUxFLCBVbml0T2ZNZWFzdXJlbWVudC5DQUxPUklBLCBVbml0T2ZNZWFzdXJlbWVudC5RVUlMT1dBVFRfSE9SQV07XHJcblxyXG4gICAgLy8g8J+UuSBFbGV0cmljaWRhZGVcclxuICAgIHJlYWRvbmx5IEVMRUNUUklDSVRZX1VOSVRTOiBVbml0T2ZNZWFzdXJlbWVudFtdID0gW1VuaXRPZk1lYXN1cmVtZW50LlZPTFQsIFVuaXRPZk1lYXN1cmVtZW50LkFNUEVSRSwgVW5pdE9mTWVhc3VyZW1lbnQuV0FUVF07XHJcblxyXG4gICAgLy8g8J+UuSBEYWRvcyBkaWdpdGFpc1xyXG4gICAgcmVhZG9ubHkgREFUQV9VTklUUzogVW5pdE9mTWVhc3VyZW1lbnRbXSA9IFtcclxuICAgICAgICBVbml0T2ZNZWFzdXJlbWVudC5CWVRFLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LktJTE9CWVRFLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50Lk1FR0FCWVRFLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LkdJR0FCWVRFLFxyXG4gICAgICAgIFVuaXRPZk1lYXN1cmVtZW50LlRFUkFCWVRFLFxyXG4gICAgXTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnNpb25Vbml0czogQ29udmVyc2lvblVuaXRbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnNpb25Vbml0cyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdW5pdHM6IHRoaXMuTEVOR1RIX1VOSVRTLFxyXG4gICAgICAgICAgICAgICAgZmFjdG9yVGFibGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuTUVUUk9dOiBBR1JPX05VTUJFUlMuT05FLFxyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5DRU5USU1FVFJPXTogMC4wMSxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuTUlMSU1FVFJPXTogMC4wMDEsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LlFVSUxPTUVUUk9dOiBBR1JPX05VTUJFUlMuT05FVEhPVVNBTkQsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LlBPTEVHQURBXTogMC4wMjU0LFxyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5QRV06IDAuMzA0OCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHVuaXRzOiB0aGlzLk1BU1NfVU5JVFMsXHJcbiAgICAgICAgICAgICAgICBmYWN0b3JUYWJsZToge1xyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5HUkFNQV06IDAuMDAxLFxyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5RVUlMT0dSQU1BXTogQUdST19OVU1CRVJTLk9ORSxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuVE9ORUxBREFdOiBBR1JPX05VTUJFUlMuT05FVEhPVVNBTkQsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LkxJQlJBXTogMC40NTM1OTIsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LlNBQ0FdOiA2MCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHVuaXRzOiB0aGlzLkFSRUFfVU5JVFMsXHJcbiAgICAgICAgICAgICAgICBmYWN0b3JUYWJsZToge1xyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5NRVRST19RVUFEUkFET106IEFHUk9fTlVNQkVSUy5PTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LkNFTlRJTUVUUk9fUVVBRFJBRE9dOiAwLjAwMDEsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LkhFQ1RBUkVdOiAxMDAwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfNTB4NTBdOiAxMjEwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfNTB4NzVdOiAxODIwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfRE9fTk9SVEVdOiAyNzIwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfNzV4ODBdOiAyOTAwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfNzl4NzldOiAzMDIwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfODB4ODBdOiAzMTkwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfNzV4MTAwXTogMzYzMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LkFMUVVFSVJFXzEwMHgxNTBdOiA3MjYwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfQkFJQU5PXTogOTY4MDAsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LkFMUVVFSVJBT106IDE5MzYwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfUEFVTElTVEFdOiAyNDIwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQUxRVUVJUkVfTUlORUlST106IDQ4NDAwLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdW5pdHM6IHRoaXMuVk9MVU1FX1VOSVRTLFxyXG4gICAgICAgICAgICAgICAgZmFjdG9yVGFibGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuTElUUk9dOiBBR1JPX05VTUJFUlMuT05FLFxyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5NSUxJTElUUk9dOiAwLjAwMSxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuTUVUUk9fQ1VCSUNPXTogQUdST19OVU1CRVJTLk9ORVRIT1VTQU5ELFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdW5pdHM6IHRoaXMuVElNRV9VTklUUyxcclxuICAgICAgICAgICAgICAgIGZhY3RvclRhYmxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LlNFR1VORE9dOiBBR1JPX05VTUJFUlMuT05FLFxyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5NSU5VVE9dOiBBR1JPX05VTUJFUlMuU0lYVFlfLFxyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5IT1JBXTogMzYwMCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuRElBXTogODY0MDAsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB1bml0czogdGhpcy5FTkVSR1lfVU5JVFMsXHJcbiAgICAgICAgICAgICAgICBmYWN0b3JUYWJsZToge1xyXG4gICAgICAgICAgICAgICAgICAgIFtVbml0T2ZNZWFzdXJlbWVudC5KT1VMRV06IEFHUk9fTlVNQkVSUy5PTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LkNBTE9SSUFdOiA0LjE4NCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuUVVJTE9XQVRUX0hPUkFdOiAzXzYwMF8wMDAsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB1bml0czogdGhpcy5EQVRBX1VOSVRTLFxyXG4gICAgICAgICAgICAgICAgZmFjdG9yVGFibGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuQllURV06IEFHUk9fTlVNQkVSUy5PTkUsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LktJTE9CWVRFXTogMTAyNCxcclxuICAgICAgICAgICAgICAgICAgICBbVW5pdE9mTWVhc3VyZW1lbnQuTUVHQUJZVEVdOiAxMDI0ICoqIEFHUk9fTlVNQkVSUy5UV08sXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LkdJR0FCWVRFXTogMTAyNCAqKiBBR1JPX05VTUJFUlMuVEhSRUUsXHJcbiAgICAgICAgICAgICAgICAgICAgW1VuaXRPZk1lYXN1cmVtZW50LlRFUkFCWVRFXTogMTAyNCAqKiBBR1JPX05VTUJFUlMuRk9VUixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDwn5S5IE3DqXRvZG9zIGRlIGNvbnZlcnPDo29cclxuICAgIGNvbnZlcnRUZW1wZXJhdHVyZVVuaXQodmFsb3I6IG51bWJlciwgZGU6IFVuaXRPZk1lYXN1cmVtZW50LCBwYXJhOiBVbml0T2ZNZWFzdXJlbWVudCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGRlID09PSBwYXJhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWxvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjZWxzaXVzOiBudW1iZXI7XHJcbiAgICAgICAgc3dpdGNoIChkZSkge1xyXG4gICAgICAgICAgICBjYXNlIFVuaXRPZk1lYXN1cmVtZW50LkNFTFNJVVM6XHJcbiAgICAgICAgICAgICAgICBjZWxzaXVzID0gdmFsb3I7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBVbml0T2ZNZWFzdXJlbWVudC5GQUhSRU5IRUlUOlxyXG4gICAgICAgICAgICAgICAgY2Vsc2l1cyA9ICgodmFsb3IgLSBBR1JPX05VTUJFUlMuVEhJUlRZX1RXTykgKiBBR1JPX05VTUJFUlMuRklWRSkgLyBBR1JPX05VTUJFUlMuTklORTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFVuaXRPZk1lYXN1cmVtZW50LktFTFZJTjpcclxuICAgICAgICAgICAgICAgIGNlbHNpdXMgPSB2YWxvciAtIFRXT19IVU5EUkVEX1NFVkVOVFlfVEhSRUVfUE9JTlRfT05FX0ZJVkU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuaWRhZGUgaW52w6FsaWRhXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoIChwYXJhKSB7XHJcbiAgICAgICAgICAgIGNhc2UgVW5pdE9mTWVhc3VyZW1lbnQuQ0VMU0lVUzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjZWxzaXVzO1xyXG4gICAgICAgICAgICBjYXNlIFVuaXRPZk1lYXN1cmVtZW50LkZBSFJFTkhFSVQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGNlbHNpdXMgKiBBR1JPX05VTUJFUlMuTklORSkgLyBBR1JPX05VTUJFUlMuRklWRSArIEFHUk9fTlVNQkVSUy5USElSVFlfVFdPO1xyXG4gICAgICAgICAgICBjYXNlIFVuaXRPZk1lYXN1cmVtZW50LktFTFZJTjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjZWxzaXVzICsgVFdPX0hVTkRSRURfU0VWRU5UWV9USFJFRV9QT0lOVF9PTkVfRklWRTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuaWRhZGUgaW52w6FsaWRhXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVGVtcGVyYXR1cmVVbml0KHVuaXQ6IFVuaXRPZk1lYXN1cmVtZW50KTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5URU1QRVJBVFVSRV9VTklUUy5pbmNsdWRlcyh1bml0KSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuVEVNUEVSQVRVUkVfVU5JVFMuaW5jbHVkZXModW5pdCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29udmVydFNjYWxhYmxlVW5pdHModmFsb3I6IG51bWJlciwgZnJvbTogVW5pdE9mTWVhc3VyZW1lbnQsIHRvOiBVbml0T2ZNZWFzdXJlbWVudCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWxvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzVGVtcGVyYXR1cmVVbml0KGZyb20pIHx8IHRoaXMuaXNUZW1wZXJhdHVyZVVuaXQodG8pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUZW1wZXJhdHVyZVVuaXQodmFsb3IsIGZyb20sIHRvKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBjb25zdCB1bml0Q2F0ZWdvcnkgPSB0aGlzLmNvbnZlcnNpb25Vbml0cy5maW5kKCh1KSA9PiB1LnVuaXRzLmluY2x1ZGVzKGZyb20pKTtcclxuICAgICAgICBpZiAoIXVuaXRDYXRlZ29yeT8udW5pdHM/LmluY2x1ZGVzKHRvKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE7Do28gw6kgcG9zc8OtdmVsIGNvbnZlcnRlciBkZSAke2Zyb219IHBhcmEgJHt0b306IGNhdGVnb3JpYXMgZGlmZXJlbnRlcyBvdSB1bmlkYWRlIG7Do28gZXNjYWzDoXZlbC5gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZhdG9yRGUgPSB1bml0Q2F0ZWdvcnkuZmFjdG9yVGFibGVbZnJvbV07XHJcbiAgICAgICAgY29uc3QgZmF0b3JQYXJhID0gdW5pdENhdGVnb3J5LmZhY3RvclRhYmxlW3RvXTtcclxuXHJcbiAgICAgICAgY29uc3QgZW1CYXNlID0gdmFsb3IgKiBmYXRvckRlO1xyXG4gICAgICAgIHJldHVybiBlbUJhc2UgLyBmYXRvclBhcmE7XHJcbiAgICB9XHJcblxyXG4gICAgY29udmVydExpdGVyc1BlckFyZWEodmFsb3I6IG51bWJlciwgZnJvbTogVW5pdE9mTWVhc3VyZW1lbnQsIHRvOiBVbml0T2ZNZWFzdXJlbWVudCk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgYXJlYUNhdGVnb3J5ID0gdGhpcy5jb252ZXJzaW9uVW5pdHMuZmluZCgodSkgPT4gdS51bml0cy5pbmNsdWRlcyhmcm9tKSk7XHJcbiAgICAgICAgaWYgKCFhcmVhQ2F0ZWdvcnk/LnVuaXRzPy5pbmNsdWRlcyh0bykpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmlkYWRlIGRlIMOhcmVhIGludsOhbGlkYTogJHtmcm9tfSBvdSAke3RvfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmF0b3JGcm9tID0gYXJlYUNhdGVnb3J5LmZhY3RvclRhYmxlW2Zyb21dO1xyXG4gICAgICAgIGNvbnN0IGZhdG9yVG8gPSBhcmVhQ2F0ZWdvcnkuZmFjdG9yVGFibGVbdG9dO1xyXG5cclxuICAgICAgICByZXR1cm4gKHZhbG9yIC8gZmF0b3JGcm9tKSAqIGZhdG9yVG87XHJcbiAgICB9XHJcblxyXG4gICAgY29udmVydEtnUGVyQXJlYSh2YWxvcjogbnVtYmVyLCBmcm9tOiBVbml0T2ZNZWFzdXJlbWVudCwgdG86IFVuaXRPZk1lYXN1cmVtZW50KTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0TGl0ZXJzUGVyQXJlYSh2YWxvciwgZnJvbSwgdG8pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnZlcnRCdXNoZWxUb0tnKGJ1c2hlbDogbnVtYmVyLCBmYWN0b3I6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGZhY3RvciA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhdG9yIGRlIGNvbnZlcnPDo28gaW52w6FsaWRvXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnVzaGVsICogZmFjdG9yO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnZlcnRLZ1RvQnVzaGVsKGtnOiBudW1iZXIsIGZhY3RvcjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoZmFjdG9yIDw9IDApIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmF0b3IgZGUgY29udmVyc8OjbyBpbnbDoWxpZG9cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBrZyAvIGZhY3RvcjtcclxuICAgIH1cclxuXHJcbiAgICBjYWxjdWxhdGVBcmVhRnJvbVZvbHVtZSh0b3RhbFZvbHVtZTogbnVtYmVyLCByYXRlOiBudW1iZXIsIHJhdGVVbml0OiBVbml0T2ZNZWFzdXJlbWVudCwgYXJlYVVuaXQ6IFVuaXRPZk1lYXN1cmVtZW50KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAocmF0ZSA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRheGEgZGUgYXBsaWNhw6fDo28gaW52w6FsaWRhXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByYXRlSW5EZXNpcmVkVW5pdCA9IHRoaXMuY29udmVydExpdGVyc1BlckFyZWEocmF0ZSwgcmF0ZVVuaXQsIGFyZWFVbml0KTtcclxuICAgICAgICByZXR1cm4gdG90YWxWb2x1bWUgLyByYXRlSW5EZXNpcmVkVW5pdDtcclxuICAgIH1cclxuXHJcbiAgICBjb252ZXJ0RWxlY3RyaWNpdHlVbml0KHZhbG9yOiBudW1iZXIsIHZvbHRhZ2U6IG51bWJlciwgZnJvbTogVW5pdE9mTWVhc3VyZW1lbnQsIHRvOiBVbml0T2ZNZWFzdXJlbWVudCk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGZyb20gPT09IHRvKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWxvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHRvV2F0dCA9ICh2OiBudW1iZXIsIHVuaXQ6IFVuaXRPZk1lYXN1cmVtZW50KTogbnVtYmVyID0+IHtcclxuICAgICAgICAgICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFVuaXRPZk1lYXN1cmVtZW50LlZPTFQ6XHJcbiAgICAgICAgICAgICAgICBjYXNlIFVuaXRPZk1lYXN1cmVtZW50LkFNUEVSRTpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdm9sdGFnZSAqIHY7IC8vIFAgPSBWICogSVxyXG4gICAgICAgICAgICAgICAgY2FzZSBVbml0T2ZNZWFzdXJlbWVudC5XQVRUOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2O1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgdW5pZGFkZSAke3VuaXR9IG7Do28gw6kgZXNjYWzDoXZlbCBkaXJldGFtZW50ZS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGZyb21XYXR0ID0gKHc6IG51bWJlciwgdW5pdDogVW5pdE9mTWVhc3VyZW1lbnQpOiBudW1iZXIgPT4ge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXQpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgVW5pdE9mTWVhc3VyZW1lbnQuVk9MVDpcclxuICAgICAgICAgICAgICAgIGNhc2UgVW5pdE9mTWVhc3VyZW1lbnQuQU1QRVJFOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3IC8gdm9sdGFnZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgVW5pdE9mTWVhc3VyZW1lbnQuV0FUVDpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBIHVuaWRhZGUgJHt1bml0fSBuw6NvIMOpIGVzY2Fsw6F2ZWwgZGlyZXRhbWVudGUuYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB3YXR0VmFsdWUgPSB0b1dhdHQodmFsb3IsIGZyb20pO1xyXG4gICAgICAgIHJldHVybiBmcm9tV2F0dCh3YXR0VmFsdWUsIHRvKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
package/esm2015/common/index.js
CHANGED
|
@@ -8,5 +8,6 @@ export { Colors } from './colors.class';
|
|
|
8
8
|
export { AgroNameUtils } from './agro-name-utils.class';
|
|
9
9
|
export { AgroArrayUtils } from './agro-array-utils.class';
|
|
10
10
|
export { AgroLogics } from "./agro-logics.class";
|
|
11
|
+
export { AgroUnitConverter } from './agro-unit-converter.class';
|
|
11
12
|
export { AGRO_REGEX } from './agro-regex.constant';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFncm9Db29raWVVdGlscyB9IGZyb20gJy4vYWdyby1jb29raWUtdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tICcuL2Fncm8tb2JqZWN0LXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb0RhdGVVdGlscyB9IGZyb20gJy4vYWdyby1kYXRlLXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb1BsYXRmb3JtVXRpbHMgfSBmcm9tICcuL2Fncm8tcGxhdGZvcm0tdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBBZ3JvU3RyaW5nVXRpbHMsIE51bGxhYmxlU3RyaW5nIH0gZnJvbSAnLi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9OdW1iZXJVdGlscyB9IGZyb20gJy4vYWdyby1udW1iZXItdXRpbHMuY2xhc3MnO1xyXG5leHBvcnQgeyBDb2xvcnMgfSBmcm9tICcuL2NvbG9ycy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9OYW1lVXRpbHMgfSBmcm9tICcuL2Fncm8tbmFtZS11dGlscy5jbGFzcyc7XHJcbmV4cG9ydCB7IEFncm9BcnJheVV0aWxzIH0gZnJvbSAnLi9hZ3JvLWFycmF5LXV0aWxzLmNsYXNzJztcclxuZXhwb3J0IHsgQWdyb0xvZ2ljcywgRGlzdHJpYnV0aW9uUmVzdWx0IH0gZnJvbSBcIi4vYWdyby1sb2dpY3MuY2xhc3NcIjtcclxuZXhwb3J0IHsgQWdyb1VuaXRDb252ZXJ0ZXIgfSBmcm9tICcuL2Fncm8tdW5pdC1jb252ZXJ0ZXIuY2xhc3MnO1xyXG5leHBvcnQgeyBBR1JPX1JFR0VYIH0gZnJvbSAnLi9hZ3JvLXJlZ2V4LmNvbnN0YW50JztcclxuIl19
|