merchi_checkout 1.1.0 → 1.2.0
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/lib/checkoutSession.js +151 -0
- package/lib/components/CancelOrderConfirmModal.js +51 -0
- package/lib/components/CheckoutSummaryFields.js +39 -0
- package/lib/components/DiscountInputGroup.js +3 -2
- package/lib/components/InvoiceInfo.js +7 -5
- package/lib/components/JobInfoContent.js +406 -188
- package/lib/components/MerchiCheckout.js +23 -3
- package/lib/components/MerchiCheckoutProvider.js +266 -146
- package/lib/components/MerchiCheckoutTabs.js +4 -3
- package/lib/components/TabPaneConfirm.js +44 -71
- package/lib/components/TabPaneCustomer.js +3 -2
- package/lib/components/TabPanePayment.js +58 -16
- package/lib/components/TabPaneSubmitted.js +44 -32
- package/lib/components/forms/FormAddresses.js +71 -20
- package/lib/components/forms/InputError.js +2 -1
- package/lib/components/forms/InputsAddress.js +62 -38
- package/lib/index.js +2 -1
- package/lib/styles/globals.css +393 -12
- package/lib/styles/globals.css.map +1 -1
- package/lib/styles/globals.scss +410 -12
- package/lib/utils.js +3 -2
- package/package.json +2 -2
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
|
+
import { FaFilePdf } from 'react-icons/fa';
|
|
4
5
|
import { formatCurrency, currencyTotalCostShowIncTax } from './currency';
|
|
5
|
-
import { isInstructionsType, isProductSupplierMOD, isSelectable } from '../utils';
|
|
6
|
+
import { isInstructionsType, isProductSupplierMOD, isSelectable, FieldType } from '../utils';
|
|
6
7
|
import { useMerchiCheckboutContext } from './MerchiCheckoutProvider';
|
|
7
|
-
import {
|
|
8
|
+
import { SummaryAmountRow, SummaryFieldRow } from './CheckoutSummaryFields';
|
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
11
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
10
12
|
function formatCost(product, cost) {
|
|
11
13
|
var currency = product.currency ? product.currency : 'AUD';
|
|
@@ -14,12 +16,87 @@ function formatCost(product, cost) {
|
|
|
14
16
|
showCodeIfNoSymbol: false
|
|
15
17
|
});
|
|
16
18
|
}
|
|
17
|
-
function
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
function isPdf(file) {
|
|
20
|
+
var mimetype = (file === null || file === void 0 ? void 0 : file.mimetype) || '';
|
|
21
|
+
return mimetype === 'application/pdf' || mimetype === 'application/x-pdf';
|
|
22
|
+
}
|
|
23
|
+
function isImageFile(file) {
|
|
24
|
+
var mimetype = (file === null || file === void 0 ? void 0 : file.mimetype) || '';
|
|
25
|
+
if (mimetype.startsWith('image/')) return true;
|
|
26
|
+
var name = ((file === null || file === void 0 ? void 0 : file.name) || '').toLowerCase();
|
|
27
|
+
return /\.(jpe?g|png|gif|webp|svg|bmp)$/.test(name);
|
|
28
|
+
}
|
|
29
|
+
function optionImageUrl(option) {
|
|
30
|
+
var _option$linkedFile;
|
|
31
|
+
return (option === null || option === void 0 || (_option$linkedFile = option.linkedFile) === null || _option$linkedFile === void 0 ? void 0 : _option$linkedFile.viewUrl) || '';
|
|
32
|
+
}
|
|
33
|
+
function findMatchingOption(option) {
|
|
34
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
35
|
+
return options.find(function (o) {
|
|
36
|
+
return String(o.optionId) === String(option === null || option === void 0 ? void 0 : option.optionId);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function resolveOptionColour(option) {
|
|
40
|
+
var _option$colour, _findMatchingOption, _findMatchingOption2;
|
|
41
|
+
var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
42
|
+
var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
43
|
+
var direct = option === null || option === void 0 || (_option$colour = option.colour) === null || _option$colour === void 0 ? void 0 : _option$colour.trim();
|
|
44
|
+
if (direct) return direct;
|
|
45
|
+
var fromSelectable = (_findMatchingOption = findMatchingOption(option, selectableOptions)) === null || _findMatchingOption === void 0 || (_findMatchingOption = _findMatchingOption.colour) === null || _findMatchingOption === void 0 ? void 0 : _findMatchingOption.trim();
|
|
46
|
+
if (fromSelectable) return fromSelectable;
|
|
47
|
+
return ((_findMatchingOption2 = findMatchingOption(option, fieldOptions)) === null || _findMatchingOption2 === void 0 || (_findMatchingOption2 = _findMatchingOption2.colour) === null || _findMatchingOption2 === void 0 ? void 0 : _findMatchingOption2.trim()) || '';
|
|
48
|
+
}
|
|
49
|
+
function resolveOptionImageUrl(option) {
|
|
50
|
+
var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
51
|
+
var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
52
|
+
var direct = optionImageUrl(option);
|
|
53
|
+
if (direct) return direct;
|
|
54
|
+
var fromSelectable = optionImageUrl(findMatchingOption(option, selectableOptions));
|
|
55
|
+
if (fromSelectable) return fromSelectable;
|
|
56
|
+
return optionImageUrl(findMatchingOption(option, fieldOptions));
|
|
57
|
+
}
|
|
58
|
+
function formatOptionCost(product, option, sellerProductEditable) {
|
|
59
|
+
if (!(option !== null && option !== void 0 && option.totalCost) || sellerProductEditable) return null;
|
|
60
|
+
return " + ".concat(formatCost(product, option.totalCost));
|
|
61
|
+
}
|
|
62
|
+
function VariationFilePreview(_ref) {
|
|
63
|
+
var file = _ref.file;
|
|
64
|
+
var fileUrl = (file === null || file === void 0 ? void 0 : file.viewUrl) || (file === null || file === void 0 ? void 0 : file.downloadUrl) || '';
|
|
65
|
+
var fileName = (file === null || file === void 0 ? void 0 : file.name) || 'File';
|
|
66
|
+
if (isPdf(file)) {
|
|
67
|
+
return /*#__PURE__*/_jsxs("a", {
|
|
68
|
+
className: "merchi-checkout-summary-file-link",
|
|
69
|
+
href: fileUrl,
|
|
70
|
+
target: "_blank",
|
|
71
|
+
rel: "noopener noreferrer",
|
|
72
|
+
title: fileName,
|
|
73
|
+
children: [/*#__PURE__*/_jsx(FaFilePdf, {
|
|
74
|
+
"aria-hidden": true
|
|
75
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
76
|
+
children: fileName
|
|
77
|
+
})]
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (isImageFile(file) && fileUrl) {
|
|
81
|
+
return /*#__PURE__*/_jsx("img", {
|
|
82
|
+
className: "modal-merchi-checkout-job-info-content-img",
|
|
83
|
+
src: fileUrl,
|
|
84
|
+
alt: fileName,
|
|
85
|
+
title: fileName
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
if (fileUrl) {
|
|
89
|
+
return /*#__PURE__*/_jsx("a", {
|
|
90
|
+
className: "merchi-checkout-summary-file-link",
|
|
91
|
+
href: fileUrl,
|
|
92
|
+
target: "_blank",
|
|
93
|
+
rel: "noopener noreferrer",
|
|
94
|
+
title: fileName,
|
|
95
|
+
children: fileName
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return /*#__PURE__*/_jsx("span", {
|
|
99
|
+
children: fileName
|
|
23
100
|
});
|
|
24
101
|
}
|
|
25
102
|
function VariationInfoBody(_ref2) {
|
|
@@ -29,172 +106,310 @@ function VariationInfoBody(_ref2) {
|
|
|
29
106
|
value = _ref2.value,
|
|
30
107
|
files = _ref2.files,
|
|
31
108
|
type = _ref2.type;
|
|
109
|
+
var isColourPicker = type === FieldType.COLOUR_PICKER;
|
|
110
|
+
var isFileUpload = type === FieldType.FILE_UPLOAD;
|
|
111
|
+
var hasFiles = Boolean(files === null || files === void 0 ? void 0 : files.length);
|
|
112
|
+
var displayValue = isColourPicker || isFileUpload && hasFiles ? null : value;
|
|
32
113
|
return /*#__PURE__*/_jsxs("div", {
|
|
33
|
-
|
|
34
|
-
|
|
114
|
+
className: "merchi-checkout-summary-variation-row",
|
|
115
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
116
|
+
className: "merchi-checkout-summary-variation-label",
|
|
35
117
|
children: name
|
|
36
118
|
}), /*#__PURE__*/_jsxs("div", {
|
|
37
|
-
className: "
|
|
38
|
-
children: [/*#__PURE__*/_jsx("div", {
|
|
39
|
-
className: "
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return /*#__PURE__*/_jsx("img", {
|
|
45
|
-
className: "modal-merchi-checkout-job-info-content-img",
|
|
46
|
-
src: file.viewUrl,
|
|
47
|
-
alt: file.name
|
|
48
|
-
}, file.viewUrl);
|
|
119
|
+
className: "merchi-checkout-summary-variation-value",
|
|
120
|
+
children: [hasFiles && /*#__PURE__*/_jsx("div", {
|
|
121
|
+
className: "merchi-checkout-summary-file-previews",
|
|
122
|
+
children: files.map(function (file, index) {
|
|
123
|
+
return /*#__PURE__*/_jsx(VariationFilePreview, {
|
|
124
|
+
file: file
|
|
125
|
+
}, file.viewUrl || file.id || "".concat(name, "-file-").concat(index));
|
|
49
126
|
})
|
|
50
|
-
}),
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
127
|
+
}), isColourPicker && value && /*#__PURE__*/_jsxs("div", {
|
|
128
|
+
className: "merchi-checkout-summary-colour-value",
|
|
129
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
130
|
+
style: {
|
|
131
|
+
backgroundColor: value
|
|
132
|
+
},
|
|
133
|
+
className: "color-indicator"
|
|
134
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
135
|
+
children: value
|
|
136
|
+
})]
|
|
137
|
+
}), displayValue && displayValue, cost ? " + ".concat(formatCost(product, cost)) : '', !hasFiles && !value && '-']
|
|
138
|
+
})]
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function VariationInfo(_ref3) {
|
|
142
|
+
var product = _ref3.product,
|
|
143
|
+
variation = _ref3.variation;
|
|
144
|
+
var selectedOptions = variation.selectedOptions,
|
|
145
|
+
variationField = variation.variationField,
|
|
146
|
+
variationFiles = variation.variationFiles,
|
|
147
|
+
selectableOptions = variation.selectableOptions;
|
|
148
|
+
var fieldType = variationField.fieldType,
|
|
149
|
+
sellerProductEditable = variationField.sellerProductEditable,
|
|
150
|
+
_variationField$optio = variationField.options,
|
|
151
|
+
fieldOptions = _variationField$optio === void 0 ? [] : _variationField$optio;
|
|
152
|
+
var isVariationSelectable = isSelectable(fieldType);
|
|
153
|
+
var isTurnaroundTime = fieldType === FieldType.TURNAROUND_TIME;
|
|
154
|
+
var options = selectedOptions;
|
|
155
|
+
var useSelectableDisplay = isVariationSelectable && (Boolean(options === null || options === void 0 ? void 0 : options.length) || isTurnaroundTime && variation.value);
|
|
156
|
+
return /*#__PURE__*/_jsx("div", {
|
|
157
|
+
className: "merchi-checkout-summary-variation",
|
|
158
|
+
children: useSelectableDisplay ? /*#__PURE__*/_jsx(VariationOptionsInfoBody, {
|
|
159
|
+
name: variationField.name,
|
|
160
|
+
fieldType: fieldType,
|
|
161
|
+
value: variation.value,
|
|
162
|
+
product: product,
|
|
163
|
+
files: variationFiles,
|
|
164
|
+
selectedOptions: options,
|
|
165
|
+
variation: variation,
|
|
166
|
+
selectableOptions: selectableOptions,
|
|
167
|
+
fieldOptions: fieldOptions,
|
|
168
|
+
sellerProductEditable: sellerProductEditable
|
|
169
|
+
}) : /*#__PURE__*/_jsx(VariationInfoBody, {
|
|
170
|
+
name: variationField.name,
|
|
171
|
+
type: variationField.fieldType,
|
|
172
|
+
value: variation.value,
|
|
173
|
+
files: variationFiles,
|
|
174
|
+
product: product,
|
|
175
|
+
cost: sellerProductEditable ? 0 : variation.cost
|
|
176
|
+
})
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
function ColourSelectOption(_ref4) {
|
|
180
|
+
var _option$value;
|
|
181
|
+
var option = _ref4.option,
|
|
182
|
+
selectableOptions = _ref4.selectableOptions,
|
|
183
|
+
fieldOptions = _ref4.fieldOptions;
|
|
184
|
+
var label = (option === null || option === void 0 || (_option$value = option.value) === null || _option$value === void 0 ? void 0 : _option$value.trim()) || '';
|
|
185
|
+
var hex = resolveOptionColour(option, selectableOptions, fieldOptions);
|
|
186
|
+
return /*#__PURE__*/_jsxs("span", {
|
|
187
|
+
className: "merchi-checkout-summary-colour-option",
|
|
188
|
+
children: [hex && /*#__PURE__*/_jsx("span", {
|
|
189
|
+
style: {
|
|
190
|
+
backgroundColor: hex
|
|
191
|
+
},
|
|
192
|
+
className: "color-indicator"
|
|
193
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
194
|
+
children: label || hex || '–'
|
|
56
195
|
})]
|
|
57
196
|
});
|
|
58
197
|
}
|
|
59
|
-
function
|
|
60
|
-
var
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
198
|
+
function ImageSelectOption(_ref5) {
|
|
199
|
+
var _option$value2;
|
|
200
|
+
var option = _ref5.option,
|
|
201
|
+
selectableOptions = _ref5.selectableOptions,
|
|
202
|
+
fieldOptions = _ref5.fieldOptions,
|
|
203
|
+
product = _ref5.product,
|
|
204
|
+
sellerProductEditable = _ref5.sellerProductEditable;
|
|
205
|
+
var imageUrl = resolveOptionImageUrl(option, selectableOptions, fieldOptions);
|
|
206
|
+
var label = (option === null || option === void 0 || (_option$value2 = option.value) === null || _option$value2 === void 0 ? void 0 : _option$value2.trim()) || '';
|
|
207
|
+
var cost = formatOptionCost(product, option, sellerProductEditable);
|
|
208
|
+
return /*#__PURE__*/_jsxs("span", {
|
|
209
|
+
className: "merchi-checkout-summary-image-select-option",
|
|
210
|
+
children: [imageUrl ? /*#__PURE__*/_jsx("img", {
|
|
211
|
+
className: "modal-merchi-checkout-job-info-content-img",
|
|
212
|
+
src: imageUrl,
|
|
213
|
+
alt: label || 'Selected option',
|
|
214
|
+
title: label || undefined
|
|
215
|
+
}) : null, /*#__PURE__*/_jsxs("span", {
|
|
216
|
+
children: [label || '–', cost || '']
|
|
217
|
+
})]
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
function getOptionId(option) {
|
|
221
|
+
var _option$optionId;
|
|
222
|
+
return (_option$optionId = option === null || option === void 0 ? void 0 : option.optionId) !== null && _option$optionId !== void 0 ? _option$optionId : option === null || option === void 0 ? void 0 : option.id;
|
|
223
|
+
}
|
|
224
|
+
function resolveTurnaroundSelectedOption(variation) {
|
|
225
|
+
var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
226
|
+
var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
227
|
+
var _variation$selectedOp = variation.selectedOptions,
|
|
228
|
+
selectedOptions = _variation$selectedOp === void 0 ? [] : _variation$selectedOp,
|
|
229
|
+
value = variation.value;
|
|
230
|
+
if (selectedOptions.length > 0) {
|
|
231
|
+
return selectedOptions[0];
|
|
232
|
+
}
|
|
233
|
+
var valueStr = value != null && value !== '' ? String(value).trim() : '';
|
|
234
|
+
if (!valueStr) return null;
|
|
235
|
+
var pools = [selectableOptions, fieldOptions];
|
|
236
|
+
for (var _i = 0, _pools = pools; _i < _pools.length; _i++) {
|
|
237
|
+
var pool = _pools[_i];
|
|
238
|
+
var byId = pool.find(function (o) {
|
|
239
|
+
return String(getOptionId(o)) === valueStr;
|
|
240
|
+
});
|
|
241
|
+
if (byId) return byId;
|
|
242
|
+
var byValue = pool.find(function (o) {
|
|
243
|
+
var _o$value;
|
|
244
|
+
return String((_o$value = o.value) !== null && _o$value !== void 0 ? _o$value : '') === valueStr;
|
|
245
|
+
});
|
|
246
|
+
if (byValue) return byValue;
|
|
247
|
+
}
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
function formatTurnaroundDeadline(userDeadline) {
|
|
251
|
+
if (!userDeadline) return null;
|
|
252
|
+
var seconds = Number(userDeadline);
|
|
253
|
+
if (!Number.isFinite(seconds) || seconds <= 0) return null;
|
|
254
|
+
return new Date(seconds * 1000).toLocaleDateString('en-AU', {
|
|
255
|
+
weekday: 'long',
|
|
256
|
+
year: 'numeric',
|
|
257
|
+
month: 'long',
|
|
258
|
+
day: 'numeric'
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
function TurnaroundOptionLabel(_ref6) {
|
|
262
|
+
var _option$value3, _option$value4;
|
|
263
|
+
var option = _ref6.option,
|
|
264
|
+
variationField = _ref6.variationField,
|
|
265
|
+
product = _ref6.product,
|
|
266
|
+
sellerProductEditable = _ref6.sellerProductEditable;
|
|
267
|
+
var days = parseInt(String((_option$value3 = option === null || option === void 0 ? void 0 : option.value) !== null && _option$value3 !== void 0 ? _option$value3 : ''), 10) || 0;
|
|
268
|
+
var deadline = formatTurnaroundDeadline(option === null || option === void 0 ? void 0 : option.userDeadline);
|
|
269
|
+
var shippingTimeIncluded = Boolean(variationField === null || variationField === void 0 ? void 0 : variationField.shippingTimeIncluded);
|
|
270
|
+
var deadlineLabel = shippingTimeIncluded ? 'Delivery by' : 'Produced by';
|
|
271
|
+
var cost = formatOptionCost(product, option, sellerProductEditable);
|
|
272
|
+
return /*#__PURE__*/_jsxs("span", {
|
|
273
|
+
className: "merchi-checkout-summary-turnaround-value",
|
|
274
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
275
|
+
className: "merchi-checkout-summary-turnaround-days",
|
|
276
|
+
children: days > 0 ? "".concat(days, " business day").concat(days !== 1 ? 's' : '') : (option === null || option === void 0 || (_option$value4 = option.value) === null || _option$value4 === void 0 ? void 0 : _option$value4.trim()) || '–'
|
|
277
|
+
}), deadline && /*#__PURE__*/_jsxs("span", {
|
|
278
|
+
className: "merchi-checkout-summary-turnaround-deadline",
|
|
279
|
+
children: [deadlineLabel, " ", deadline]
|
|
280
|
+
}), cost || '']
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
function VariationOptionsInfoBody(_ref7) {
|
|
284
|
+
var _variation$variationF;
|
|
285
|
+
var name = _ref7.name,
|
|
286
|
+
selectedOptions = _ref7.selectedOptions,
|
|
287
|
+
sellerProductEditable = _ref7.sellerProductEditable,
|
|
288
|
+
product = _ref7.product,
|
|
289
|
+
fieldType = _ref7.fieldType,
|
|
290
|
+
variation = _ref7.variation,
|
|
291
|
+
_ref7$selectableOptio = _ref7.selectableOptions,
|
|
292
|
+
selectableOptions = _ref7$selectableOptio === void 0 ? [] : _ref7$selectableOptio,
|
|
293
|
+
_ref7$fieldOptions = _ref7.fieldOptions,
|
|
294
|
+
fieldOptions = _ref7$fieldOptions === void 0 ? [] : _ref7$fieldOptions;
|
|
295
|
+
var isTurnaroundTime = fieldType === FieldType.TURNAROUND_TIME;
|
|
296
|
+
var firstOption = isTurnaroundTime ? resolveTurnaroundSelectedOption({
|
|
297
|
+
selectedOptions: selectedOptions,
|
|
298
|
+
value: variation === null || variation === void 0 ? void 0 : variation.value
|
|
299
|
+
}, selectableOptions, fieldOptions) : selectedOptions[0];
|
|
300
|
+
var isColourSelect = fieldType === FieldType.COLOUR_SELECT;
|
|
301
|
+
var isImageSelect = fieldType === FieldType.IMAGE_SELECT;
|
|
302
|
+
var variationField = (_variation$variationF = variation === null || variation === void 0 ? void 0 : variation.variationField) !== null && _variation$variationF !== void 0 ? _variation$variationF : {};
|
|
303
|
+
function renderOptionLabel(o) {
|
|
304
|
+
var _o$value2;
|
|
305
|
+
if (isTurnaroundTime) {
|
|
306
|
+
return /*#__PURE__*/_jsx(TurnaroundOptionLabel, {
|
|
307
|
+
option: o,
|
|
308
|
+
variationField: variationField,
|
|
309
|
+
product: product,
|
|
310
|
+
sellerProductEditable: sellerProductEditable
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
if (isColourSelect) {
|
|
314
|
+
return /*#__PURE__*/_jsx(ColourSelectOption, {
|
|
315
|
+
option: o,
|
|
316
|
+
selectableOptions: selectableOptions,
|
|
317
|
+
fieldOptions: fieldOptions
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
if (isImageSelect) {
|
|
321
|
+
return /*#__PURE__*/_jsx(ImageSelectOption, {
|
|
322
|
+
option: o,
|
|
323
|
+
selectableOptions: selectableOptions,
|
|
324
|
+
fieldOptions: fieldOptions,
|
|
325
|
+
product: product,
|
|
326
|
+
sellerProductEditable: sellerProductEditable
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
330
|
+
children: [((_o$value2 = o.value) === null || _o$value2 === void 0 ? void 0 : _o$value2.trim()) || '–', formatOptionCost(product, o, sellerProductEditable) || '']
|
|
331
|
+
});
|
|
332
|
+
}
|
|
65
333
|
return /*#__PURE__*/_jsx(_Fragment, {
|
|
66
|
-
children: selectedOptions.length > 1 ? /*#__PURE__*/_jsxs("div", {
|
|
67
|
-
|
|
68
|
-
|
|
334
|
+
children: selectedOptions.length > 1 && !isTurnaroundTime ? /*#__PURE__*/_jsxs("div", {
|
|
335
|
+
className: "merchi-checkout-summary-variation-row",
|
|
336
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
337
|
+
className: "merchi-checkout-summary-variation-label",
|
|
69
338
|
children: name
|
|
70
339
|
}), /*#__PURE__*/_jsx("ul", {
|
|
71
|
-
className: "list-unstyled m-0
|
|
340
|
+
className: "merchi-checkout-summary-variation-value list-unstyled m-0",
|
|
72
341
|
children: selectedOptions.map(function (o, i) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
342
|
+
var _o$optionId;
|
|
343
|
+
return /*#__PURE__*/_jsx("li", {
|
|
344
|
+
children: renderOptionLabel(o)
|
|
345
|
+
}, "".concat(i, "-option-key-").concat((_o$optionId = o.optionId) !== null && _o$optionId !== void 0 ? _o$optionId : i));
|
|
76
346
|
})
|
|
77
347
|
})]
|
|
78
348
|
}) : firstOption ? /*#__PURE__*/_jsxs("div", {
|
|
79
|
-
|
|
80
|
-
|
|
349
|
+
className: "merchi-checkout-summary-variation-row",
|
|
350
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
351
|
+
className: "merchi-checkout-summary-variation-label",
|
|
81
352
|
children: name
|
|
82
|
-
}), /*#__PURE__*/
|
|
83
|
-
className: "
|
|
84
|
-
children:
|
|
353
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
354
|
+
className: "merchi-checkout-summary-variation-value",
|
|
355
|
+
children: renderOptionLabel(firstOption)
|
|
85
356
|
})]
|
|
86
357
|
}) : /*#__PURE__*/_jsxs("div", {
|
|
87
|
-
|
|
88
|
-
|
|
358
|
+
className: "merchi-checkout-summary-variation-row",
|
|
359
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
360
|
+
className: "merchi-checkout-summary-variation-label",
|
|
89
361
|
children: name
|
|
90
|
-
}), /*#__PURE__*/_jsx("
|
|
91
|
-
className: "
|
|
362
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
363
|
+
className: "merchi-checkout-summary-variation-value",
|
|
92
364
|
children: "-"
|
|
93
365
|
})]
|
|
94
366
|
})
|
|
95
367
|
});
|
|
96
368
|
}
|
|
97
|
-
function
|
|
98
|
-
var product =
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
variationFiles = variation.variationFiles;
|
|
103
|
-
var fieldType = variationField.fieldType,
|
|
104
|
-
sellerProductEditable = variationField.sellerProductEditable;
|
|
105
|
-
var isVariationSelectable = isSelectable(fieldType);
|
|
106
|
-
var options = selectedOptions;
|
|
369
|
+
function VariationsInfo(_ref8) {
|
|
370
|
+
var product = _ref8.product,
|
|
371
|
+
quantity = _ref8.quantity,
|
|
372
|
+
_ref8$variations = _ref8.variations,
|
|
373
|
+
variations = _ref8$variations === void 0 ? [] : _ref8$variations;
|
|
107
374
|
return /*#__PURE__*/_jsx("div", {
|
|
108
|
-
|
|
109
|
-
children: /*#__PURE__*/_jsx(VariationOptionsInfoBody, {
|
|
110
|
-
name: variationField.name,
|
|
111
|
-
type: variationField.fieldType,
|
|
112
|
-
value: variation.value,
|
|
113
|
-
product: product,
|
|
114
|
-
files: variationFiles,
|
|
115
|
-
selectedOptions: options,
|
|
116
|
-
sellerProductEditable: sellerProductEditable
|
|
117
|
-
})
|
|
118
|
-
}) : /*#__PURE__*/_jsx(_Fragment, {
|
|
119
|
-
children: /*#__PURE__*/_jsx(VariationInfoBody, {
|
|
120
|
-
name: variationField.name,
|
|
121
|
-
type: variationField.fieldType,
|
|
122
|
-
value: variation.value,
|
|
123
|
-
files: variationFiles,
|
|
124
|
-
product: product,
|
|
125
|
-
cost: sellerProductEditable ? 0 : variation.cost
|
|
126
|
-
})
|
|
127
|
-
})
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
function VariationsInfo(_ref5) {
|
|
131
|
-
var product = _ref5.product,
|
|
132
|
-
quantity = _ref5.quantity,
|
|
133
|
-
_ref5$variations = _ref5.variations,
|
|
134
|
-
variations = _ref5$variations === void 0 ? [] : _ref5$variations;
|
|
135
|
-
return /*#__PURE__*/_jsx("div", {
|
|
136
|
-
className: "d-flex flex-column",
|
|
137
|
-
style: {
|
|
138
|
-
gap: '1rem'
|
|
139
|
-
},
|
|
375
|
+
className: "merchi-checkout-summary-variations",
|
|
140
376
|
children: variations.map(function (v, i) {
|
|
141
377
|
return !isInstructionsType(v.variationField.fieldType) ? /*#__PURE__*/_jsx(VariationInfo, {
|
|
142
378
|
quantity: quantity,
|
|
143
379
|
variation: v,
|
|
144
380
|
product: product
|
|
145
|
-
}, i) :
|
|
381
|
+
}, i) : null;
|
|
146
382
|
})
|
|
147
383
|
});
|
|
148
384
|
}
|
|
149
|
-
function VariationGroupInfo(
|
|
150
|
-
var group =
|
|
151
|
-
index =
|
|
152
|
-
product =
|
|
153
|
-
groupArrayLength = _ref6.groupArrayLength;
|
|
385
|
+
function VariationGroupInfo(_ref9) {
|
|
386
|
+
var group = _ref9.group,
|
|
387
|
+
index = _ref9.index,
|
|
388
|
+
product = _ref9.product;
|
|
154
389
|
var isResell = isProductSupplierMOD(product);
|
|
155
390
|
var quantity = group.quantity,
|
|
156
391
|
variations = group.variations;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
product: product
|
|
179
|
-
})]
|
|
180
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
181
|
-
className: "pt-3",
|
|
182
|
-
children: /*#__PURE__*/_jsxs("div", {
|
|
183
|
-
className: "pt-1",
|
|
184
|
-
style: {
|
|
185
|
-
borderTop: '1px solid #d7d7d7',
|
|
186
|
-
height: '24px'
|
|
187
|
-
},
|
|
188
|
-
children: [/*#__PURE__*/_jsxs("strong", {
|
|
189
|
-
className: "mb-0 float-left float-start",
|
|
190
|
-
children: [isResell ? 'Unit' : "Group", " Cost ", ' ']
|
|
191
|
-
}), /*#__PURE__*/_jsx("strong", {
|
|
192
|
-
className: "mb-0 ml-2 float-right float-end",
|
|
193
|
-
children: formatCost(product, group.groupCost)
|
|
194
|
-
})]
|
|
195
|
-
})
|
|
196
|
-
})]
|
|
197
|
-
})
|
|
392
|
+
var visibleVariations = (variations !== null && variations !== void 0 ? variations : []).filter(function (v) {
|
|
393
|
+
var _v$variationField;
|
|
394
|
+
return !isInstructionsType(v === null || v === void 0 || (_v$variationField = v.variationField) === null || _v$variationField === void 0 ? void 0 : _v$variationField.fieldType);
|
|
395
|
+
});
|
|
396
|
+
var costLabel = isResell ? 'Unit Cost' : 'Group Cost';
|
|
397
|
+
return /*#__PURE__*/_jsxs("section", {
|
|
398
|
+
className: "merchi-checkout-summary-group",
|
|
399
|
+
children: [/*#__PURE__*/_jsxs("strong", {
|
|
400
|
+
className: "merchi-checkout-summary-order-detail-title",
|
|
401
|
+
children: ["Group ", index + 1, " Detail"]
|
|
402
|
+
}), !isResell && quantity > 0 && /*#__PURE__*/_jsx(SummaryFieldRow, {
|
|
403
|
+
label: "Quantity",
|
|
404
|
+
value: quantity
|
|
405
|
+
}), visibleVariations.length > 0 && /*#__PURE__*/_jsx(VariationsInfo, {
|
|
406
|
+
quantity: quantity,
|
|
407
|
+
variations: variations,
|
|
408
|
+
product: product
|
|
409
|
+
}), /*#__PURE__*/_jsxs("strong", {
|
|
410
|
+
className: "merchi-checkout-summary-group-cost",
|
|
411
|
+
children: [costLabel, ": ", formatCost(product, group.groupCost)]
|
|
412
|
+
})]
|
|
198
413
|
});
|
|
199
414
|
}
|
|
200
415
|
export default function JobInfoContent() {
|
|
@@ -211,60 +426,63 @@ export default function JobInfoContent() {
|
|
|
211
426
|
var totalCost = currencyTotalCostShowIncTax(job);
|
|
212
427
|
var isResell = isProductSupplierMOD(product);
|
|
213
428
|
var hasGroups = variationsGroups.length > 0;
|
|
429
|
+
var jobLevelVariations = (variations !== null && variations !== void 0 ? variations : []).filter(function (v) {
|
|
430
|
+
var _v$variationField2;
|
|
431
|
+
return !isInstructionsType(v === null || v === void 0 || (_v$variationField2 = v.variationField) === null || _v$variationField2 === void 0 ? void 0 : _v$variationField2.fieldType);
|
|
432
|
+
});
|
|
433
|
+
var totalQuantity = hasGroups ? variationsGroups.reduce(function (sum, g) {
|
|
434
|
+
return sum + (Number(g.quantity) || 0);
|
|
435
|
+
}, 0) : Number(quantity) || 0;
|
|
214
436
|
return /*#__PURE__*/_jsxs("div", {
|
|
215
|
-
className: "modal-merchi-checkout-job-info-content",
|
|
216
|
-
children: [/*#__PURE__*/_jsx("
|
|
437
|
+
className: "modal-merchi-checkout-job-info-content merchi-checkout-summary",
|
|
438
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
439
|
+
className: "merchi-checkout-summary-section-title",
|
|
217
440
|
children: product.name
|
|
218
|
-
}),
|
|
219
|
-
className: "
|
|
220
|
-
style: {
|
|
221
|
-
gap: 30
|
|
222
|
-
},
|
|
441
|
+
}), hasGroups && /*#__PURE__*/_jsx("div", {
|
|
442
|
+
className: "merchi-checkout-summary-groups",
|
|
223
443
|
children: variationsGroups.map(function (g, i) {
|
|
224
|
-
return g.quantity ? /*#__PURE__*/_jsx(
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
index: i,
|
|
230
|
-
job: job,
|
|
231
|
-
product: product
|
|
232
|
-
}, i)
|
|
233
|
-
}, "".concat(i, "-job-info-content")) : '';
|
|
444
|
+
return g.quantity ? /*#__PURE__*/_jsx(VariationGroupInfo, {
|
|
445
|
+
group: g,
|
|
446
|
+
index: i,
|
|
447
|
+
product: product
|
|
448
|
+
}, "".concat(i, "-job-info-content")) : null;
|
|
234
449
|
})
|
|
235
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
236
|
-
className: "
|
|
237
|
-
children: /*#__PURE__*/_jsxs(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
quantity: quantity
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
className: "mb-0",
|
|
246
|
-
children: "Order Detail"
|
|
247
|
-
}), /*#__PURE__*/_jsx(VariationsInfo, {
|
|
248
|
-
quantity: quantity,
|
|
249
|
-
variations: variations,
|
|
250
|
-
product: product
|
|
251
|
-
})]
|
|
252
|
-
}), !isResell && /*#__PURE__*/_jsxs("div", {
|
|
253
|
-
className: "pt-2 mt-3 total-order-cost-container",
|
|
254
|
-
children: [/*#__PURE__*/_jsx("small", {
|
|
255
|
-
className: "mb-0",
|
|
256
|
-
children: "Total Order Cost"
|
|
257
|
-
}), ' ', needsShipping && /*#__PURE__*/_jsxs(_Fragment, {
|
|
258
|
-
children: [/*#__PURE__*/_jsx("small", {
|
|
259
|
-
className: "mb-0 ml-1 font-italic",
|
|
260
|
-
children: "ex Shipment"
|
|
261
|
-
}), ' ']
|
|
262
|
-
}), /*#__PURE__*/_jsx("strong", {
|
|
263
|
-
className: "mb-0 d-block",
|
|
264
|
-
children: totalCost
|
|
265
|
-
})]
|
|
450
|
+
}), !hasGroups && /*#__PURE__*/_jsx("div", {
|
|
451
|
+
className: "merchi-checkout-summary-standalone",
|
|
452
|
+
children: jobLevelVariations.length > 0 && /*#__PURE__*/_jsxs(_Fragment, {
|
|
453
|
+
children: [/*#__PURE__*/_jsx("strong", {
|
|
454
|
+
className: "merchi-checkout-summary-order-detail-title",
|
|
455
|
+
children: "Order Detail"
|
|
456
|
+
}), /*#__PURE__*/_jsx(VariationsInfo, {
|
|
457
|
+
quantity: quantity,
|
|
458
|
+
variations: variations,
|
|
459
|
+
product: product
|
|
266
460
|
})]
|
|
267
461
|
})
|
|
462
|
+
}), hasGroups && jobLevelVariations.length > 0 && /*#__PURE__*/_jsxs("div", {
|
|
463
|
+
className: "merchi-checkout-summary-standalone",
|
|
464
|
+
children: [/*#__PURE__*/_jsx("strong", {
|
|
465
|
+
className: "merchi-checkout-summary-order-detail-title",
|
|
466
|
+
children: "Order Detail"
|
|
467
|
+
}), /*#__PURE__*/_jsx(VariationsInfo, {
|
|
468
|
+
quantity: quantity,
|
|
469
|
+
variations: variations,
|
|
470
|
+
product: product
|
|
471
|
+
})]
|
|
472
|
+
}), !isResell && /*#__PURE__*/_jsxs("div", {
|
|
473
|
+
className: "merchi-checkout-summary-total",
|
|
474
|
+
children: [totalQuantity > 0 && /*#__PURE__*/_jsx(SummaryAmountRow, {
|
|
475
|
+
className: "merchi-checkout-summary-total-quantity",
|
|
476
|
+
label: "Total Quantity",
|
|
477
|
+
amount: totalQuantity
|
|
478
|
+
}), /*#__PURE__*/_jsx(SummaryAmountRow, {
|
|
479
|
+
label: "Total Order Cost",
|
|
480
|
+
labelExtra: needsShipping ? /*#__PURE__*/_jsx("small", {
|
|
481
|
+
className: "merchi-checkout-summary-total-note",
|
|
482
|
+
children: " ex Shipment"
|
|
483
|
+
}) : undefined,
|
|
484
|
+
amount: totalCost
|
|
485
|
+
})]
|
|
268
486
|
}), !!(isResell && !hasGroups) && /*#__PURE__*/_jsxs("div", {
|
|
269
487
|
children: [/*#__PURE__*/_jsxs("strong", {
|
|
270
488
|
className: "mb-0",
|
|
@@ -276,4 +494,4 @@ export default function JobInfoContent() {
|
|
|
276
494
|
})]
|
|
277
495
|
});
|
|
278
496
|
}
|
|
279
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwianN4cyIsIl9qc3hzIiwianN4IiwiX2pzeCIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiZm9ybWF0Q29zdCIsInByb2R1Y3QiLCJjb3N0IiwiY3VycmVuY3kiLCJzaG93Q29kZUlmTm9TeW1ib2wiLCJQcm9kdWN0Q29zdFJvdyIsIl9yZWYiLCJqb2IiLCJxdWFudGl0eSIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiVmFyaWF0aW9uSW5mb0JvZHkiLCJfcmVmMiIsIm5hbWUiLCJ2YWx1ZSIsImZpbGVzIiwidHlwZSIsInN0eWxlIiwiZ2FwIiwibWFwIiwiZmlsZSIsInNyYyIsInZpZXdVcmwiLCJhbHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb25jYXQiLCJsZW5ndGgiLCJWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkiLCJfcmVmMyIsInNlbGVjdGVkT3B0aW9ucyIsInNlbGxlclByb2R1Y3RFZGl0YWJsZSIsImZpcnN0T3B0aW9uIiwibyIsImkiLCJCb29sZWFuIiwidG90YWxDb3N0Iiwib3B0aW9uSWQiLCJWYXJpYXRpb25JbmZvIiwiX3JlZjQiLCJ2YXJpYXRpb24iLCJ2YXJpYXRpb25GaWVsZCIsInZhcmlhdGlvbkZpbGVzIiwiZmllbGRUeXBlIiwiaXNWYXJpYXRpb25TZWxlY3RhYmxlIiwib3B0aW9ucyIsIlZhcmlhdGlvbnNJbmZvIiwiX3JlZjUiLCJfcmVmNSR2YXJpYXRpb25zIiwidmFyaWF0aW9ucyIsInYiLCJWYXJpYXRpb25Hcm91cEluZm8iLCJfcmVmNiIsImdyb3VwIiwiaW5kZXgiLCJncm91cEFycmF5TGVuZ3RoIiwiaXNSZXNlbGwiLCJib3JkZXJUb3AiLCJoZWlnaHQiLCJncm91cENvc3QiLCJKb2JJbmZvQ29udGVudCIsIl91c2VNZXJjaGlDaGVja2JvdXRDbyIsIl9qb2IkcXVhbnRpdHkiLCJfam9iJHZhcmlhdGlvbnMiLCJfam9iJHZhcmlhdGlvbnNHcm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwibmVlZHNTaGlwcGluZyIsImhhc0dyb3VwcyIsImciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9Kb2JJbmZvQ29udGVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5LCBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXggfSBmcm9tICcuL2N1cnJlbmN5JztcbmltcG9ydCB7XG4gIGlzSW5zdHJ1Y3Rpb25zVHlwZSxcbiAgaXNQcm9kdWN0U3VwcGxpZXJNT0QsXG4gIGlzU2VsZWN0YWJsZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCB9IGZyb20gJy4vTWVyY2hpQ2hlY2tvdXRQcm92aWRlcic7XG5cbmZ1bmN0aW9uIGZvcm1hdENvc3QocHJvZHVjdDogYW55LCBjb3N0OiBudW1iZXIpIHtcbiAgY29uc3QgY3VycmVuY3kgPSBwcm9kdWN0LmN1cnJlbmN5ID8gcHJvZHVjdC5jdXJyZW5jeSA6ICdBVUQnO1xuICByZXR1cm4gZm9ybWF0Q3VycmVuY3koY29zdCwge1xuICAgIGN1cnJlbmN5LFxuICAgIHNob3dDb2RlSWZOb1N5bWJvbDogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBQcm9kdWN0Q29zdFJvdyh7IGpvYiB9OiBhbnkpIHtcbiAgY29uc3QgcXVhbnRpdHkgPSBqb2IgPyBqb2IucXVhbnRpdHkgOiAwO1xuICByZXR1cm4gPHAgY2xhc3NOYW1lPSdkLWJsb2NrIG10LTQgbWItMCc+VG90YWwgUXVhbnRpdHk6IHtxdWFudGl0eX08L3A+O1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25JbmZvQm9keSh7IGNvc3QsIG5hbWUsIHByb2R1Y3QsIHZhbHVlLCBmaWxlcywgdHlwZSB9OiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPHNtYWxsIGNsYXNzTmFtZT0nbWItMSc+e25hbWV9PC9zbWFsbD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J2QtZmxleCcgc3R5bGU9e3sgZ2FwOiAnMC41cmVtJyB9fT5cbiAgICAgICAgICB7ZmlsZXMgJiZcbiAgICAgICAgICAgIGZpbGVzLm1hcCgoZmlsZTogYW55KSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBrZXk9e2ZpbGUudmlld1VybH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50LWltZydcbiAgICAgICAgICAgICAgICBzcmM9e2ZpbGUudmlld1VybH1cbiAgICAgICAgICAgICAgICBhbHQ9e2ZpbGUubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3R5cGUgPT09IDEwICYmIChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGAke3ZhbHVlfWAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT0nY29sb3ItaW5kaWNhdG9yJ1xuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt2YWx1ZSAmJiB2YWx1ZX0ge2Nvc3QgPyBgKyAke2Zvcm1hdENvc3QocHJvZHVjdCwgY29zdCl9YCA6ICcnfVxuICAgICAgICB7ZmlsZXMubGVuZ3RoID09IDAgJiYgIXZhbHVlICYmICctJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkoe1xuICBuYW1lLFxuICBzZWxlY3RlZE9wdGlvbnMsXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZSxcbiAgcHJvZHVjdCxcbn06IGFueSkge1xuICBjb25zdCBmaXJzdE9wdGlvbiA9IHNlbGVjdGVkT3B0aW9uc1swXTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAxID8gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT0nbGlzdC11bnN0eWxlZCBtLTAgbS1iLTUnPlxuICAgICAgICAgICAge3NlbGVjdGVkT3B0aW9ucy5tYXAoKG86IGFueSwgaTogbnVtYmVyKSA9PiAoXG4gICAgICAgICAgICAgIDxsaSBrZXk9e2Ake2l9LW9wdGlvbi1rZXktJHtvLm9wdGlvbklkfWB9PlxuICAgICAgICAgICAgICAgIHtvLnZhbHVlfXsnICd9XG4gICAgICAgICAgICAgICAge0Jvb2xlYW4oby50b3RhbENvc3QgJiYgIXNlbGxlclByb2R1Y3RFZGl0YWJsZSlcbiAgICAgICAgICAgICAgICAgID8gYCArICR7Zm9ybWF0Q29zdChwcm9kdWN0LCBvLnRvdGFsQ29zdCl9YFxuICAgICAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IGZpcnN0T3B0aW9uID8gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgICAgIHtmaXJzdE9wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgIHtCb29sZWFuKGZpcnN0T3B0aW9uLnRvdGFsQ29zdClcbiAgICAgICAgICAgICAgPyBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIGZpcnN0T3B0aW9uLnRvdGFsQ29zdCl9YFxuICAgICAgICAgICAgICA6ICcnfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21iLTEnPntuYW1lfTwvc21hbGw+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPSdtYi0wJz4tPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm8oeyBwcm9kdWN0LCB2YXJpYXRpb24gfTogYW55KSB7XG4gIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb25zLCB2YXJpYXRpb25GaWVsZCwgdmFyaWF0aW9uRmlsZXMgfSA9IHZhcmlhdGlvbjtcbiAgY29uc3QgeyBmaWVsZFR5cGUsIHNlbGxlclByb2R1Y3RFZGl0YWJsZSB9ID0gdmFyaWF0aW9uRmllbGQ7XG4gIGNvbnN0IGlzVmFyaWF0aW9uU2VsZWN0YWJsZSA9IGlzU2VsZWN0YWJsZShmaWVsZFR5cGUpO1xuICBjb25zdCBvcHRpb25zID0gc2VsZWN0ZWRPcHRpb25zO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7aXNWYXJpYXRpb25TZWxlY3RhYmxlICYmIG9wdGlvbnMgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keVxuICAgICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cbiAgICAgICAgICAgIHR5cGU9e3ZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIDxWYXJpYXRpb25JbmZvQm9keVxuICAgICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cbiAgICAgICAgICAgIHR5cGU9e3ZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgICBmaWxlcz17dmFyaWF0aW9uRmlsZXN9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgY29zdD17c2VsbGVyUHJvZHVjdEVkaXRhYmxlID8gMCA6IHZhcmlhdGlvbi5jb3N0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gVmFyaWF0aW9uc0luZm8oeyBwcm9kdWN0LCBxdWFudGl0eSwgdmFyaWF0aW9ucyA9IFtdIH06IGFueSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPSdkLWZsZXggZmxleC1jb2x1bW4nIHN0eWxlPXt7IGdhcDogJzFyZW0nIH19PlxuICAgICAge3ZhcmlhdGlvbnMubWFwKCh2OiBhbnksIGk6IG51bWJlcikgPT5cbiAgICAgICAgIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2LnZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZSkgPyAoXG4gICAgICAgICAgPFZhcmlhdGlvbkluZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbj17dn1cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICAnJ1xuICAgICAgICApXG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25Hcm91cEluZm8oeyBncm91cCwgaW5kZXgsIHByb2R1Y3QsIGdyb3VwQXJyYXlMZW5ndGggfTogYW55KSB7XG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XG4gIGNvbnN0IHsgcXVhbnRpdHksIHZhcmlhdGlvbnMgfSA9IGdyb3VwO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgcXVvdGUtc3VtbWFyeS1jYXJkICR7Z3JvdXBBcnJheUxlbmd0aCA9PT0gMSAmJiAnIHctMTAwJ31gfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtdC0yIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB0ZXh0LWxlZnQgaC0xMDAnPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J3RleHQtbXV0ZWQnPkdyb3VwIHtpbmRleCArIDF9PC9zbWFsbD5cbiAgICAgICAgICA8c21hbGwgY2xhc3NOYW1lPSd0ZXh0LW11dGVkJz5cbiAgICAgICAgICAgIHshaXNSZXNlbGwgJiYgYCB8IFF1YW50aXR5OiAke3F1YW50aXR5fWB9XG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdwdC0yJz5cbiAgICAgICAgICB7ISEodmFyaWF0aW9ucyAmJiB2YXJpYXRpb25zLmxlbmd0aCkgJiYgKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHN0cm9uZz5Hcm91cCB7aW5kZXggKyAxfSBEZXRhaWw8L3N0cm9uZz57JyAnfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8VmFyaWF0aW9uc0luZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbnM9e3ZhcmlhdGlvbnN9XG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncHQtMyc+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPSdwdC0xJ1xuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNkN2Q3ZDcnLFxuICAgICAgICAgICAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgZmxvYXQtbGVmdCBmbG9hdC1zdGFydCc+XG4gICAgICAgICAgICAgIHtpc1Jlc2VsbCA/ICdVbml0JyA6IGBHcm91cGB9IENvc3QgeycgJ31cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgbWwtMiBmbG9hdC1yaWdodCBmbG9hdC1lbmQnPlxuICAgICAgICAgICAgICB7Zm9ybWF0Q29zdChwcm9kdWN0LCBncm91cC5ncm91cENvc3QpfVxuICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEpvYkluZm9Db250ZW50KCkge1xuICBjb25zdCB7IGpvYiB9ID0gdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCgpO1xuICBjb25zdCB7IHByb2R1Y3QsIHF1YW50aXR5ID0gMCwgdmFyaWF0aW9ucyA9IFtdLCB2YXJpYXRpb25zR3JvdXBzID0gW10gfSA9IGpvYjtcbiAgY29uc3QgeyBuZWVkc1NoaXBwaW5nIH0gPSBwcm9kdWN0O1xuICBjb25zdCB0b3RhbENvc3QgPSBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXgoam9iKTtcbiAgY29uc3QgaXNSZXNlbGwgPSBpc1Byb2R1Y3RTdXBwbGllck1PRChwcm9kdWN0KTtcbiAgY29uc3QgaGFzR3JvdXBzID0gdmFyaWF0aW9uc0dyb3Vwcy5sZW5ndGggPiAwO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPSdtb2RhbC1tZXJjaGktY2hlY2tvdXQtam9iLWluZm8tY29udGVudCc+XG4gICAgICA8c3Ryb25nPntwcm9kdWN0Lm5hbWV9PC9zdHJvbmc+XG4gICAgICB7dmFyaWF0aW9uc0dyb3Vwcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT0nZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbidcbiAgICAgICAgICBzdHlsZT17eyBnYXA6IDMwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dmFyaWF0aW9uc0dyb3Vwcy5tYXAoKGc6IGFueSwgaTogbnVtYmVyKSA9PlxuICAgICAgICAgICAgZy5xdWFudGl0eSA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3ctMTAwJyBrZXk9e2Ake2l9LWpvYi1pbmZvLWNvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICA8VmFyaWF0aW9uR3JvdXBJbmZvXG4gICAgICAgICAgICAgICAgICBncm91cEFycmF5TGVuZ3RoPXt2YXJpYXRpb25zR3JvdXBzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgIGdyb3VwPXtnfVxuICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICBqb2I9e2pvYn1cbiAgICAgICAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBwYXJlbnQtdmFyaWF0aW9uLWNhcmQnPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ndGV4dC1sZWZ0IG10LTEgdy0xMDAnPlxuICAgICAgICAgIDxQcm9kdWN0Q29zdFJvdyBqb2I9e2pvYn0gcHJvZHVjdD17cHJvZHVjdH0gcXVhbnRpdHk9e3F1YW50aXR5fSAvPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7ISEodmFyaWF0aW9ucyAmJiB2YXJpYXRpb25zLmxlbmd0aCkgJiYgKFxuICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWItMCc+T3JkZXIgRGV0YWlsPC9zdHJvbmc+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFZhcmlhdGlvbnNJbmZvXG4gICAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cbiAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgeyFpc1Jlc2VsbCAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncHQtMiBtdC0zIHRvdGFsLW9yZGVyLWNvc3QtY29udGFpbmVyJz5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzTmFtZT0nbWItMCc+VG90YWwgT3JkZXIgQ29zdDwvc21hbGw+eycgJ31cbiAgICAgICAgICAgICAge25lZWRzU2hpcHBpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+PHNtYWxsIGNsYXNzTmFtZT0nbWItMCBtbC0xIGZvbnQtaXRhbGljJz5leCBTaGlwbWVudDwvc21hbGw+eycgJ308Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgZC1ibG9jayc+e3RvdGFsQ29zdH08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB7ISEoaXNSZXNlbGwgJiYgIWhhc0dyb3VwcykgJiYgKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wJz5cbiAgICAgICAgICAgIHtpc1Jlc2VsbCA/ICdBcHByb3hpbWF0ZSBVbml0JyA6ICdUb3RhbCd9IENvc3RcbiAgICAgICAgICA8L3N0cm9uZz57JyAnfVxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wIGQtYmxvY2snPnt0b3RhbENvc3R9PC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWixPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixTQUFTQyxjQUFjLEVBQUVDLDJCQUEyQixRQUFRLFlBQVk7QUFDeEUsU0FDRUMsa0JBQWtCLEVBQ2xCQyxvQkFBb0IsRUFDcEJDLFlBQVksUUFDUCxVQUFVO0FBQ2pCLFNBQVNDLHlCQUF5QixRQUFRLDBCQUEwQjtBQUFDLFNBQUFDLElBQUEsSUFBQUMsS0FBQTtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQUFBLFNBQUFDLFFBQUEsSUFBQUMsU0FBQTtBQUVyRSxTQUFTQyxVQUFVQSxDQUFDQyxPQUFZLEVBQUVDLElBQVksRUFBRTtFQUM5QyxJQUFNQyxRQUFRLEdBQUdGLE9BQU8sQ0FBQ0UsUUFBUSxHQUFHRixPQUFPLENBQUNFLFFBQVEsR0FBRyxLQUFLO0VBQzVELE9BQU9mLGNBQWMsQ0FBQ2MsSUFBSSxFQUFFO0lBQzFCQyxRQUFRLEVBQVJBLFFBQVE7SUFDUkMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxTQUFTQyxjQUFjQSxDQUFBQyxJQUFBLEVBQWU7RUFBQSxJQUFaQyxHQUFHLEdBQUFELElBQUEsQ0FBSEMsR0FBRztFQUMzQixJQUFNQyxRQUFRLEdBQUdELEdBQUcs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
|
|
497
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkZhRmlsZVBkZiIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJGaWVsZFR5cGUiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwiU3VtbWFyeUFtb3VudFJvdyIsIlN1bW1hcnlGaWVsZFJvdyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImZvcm1hdENvc3QiLCJwcm9kdWN0IiwiY29zdCIsImN1cnJlbmN5Iiwic2hvd0NvZGVJZk5vU3ltYm9sIiwiaXNQZGYiLCJmaWxlIiwibWltZXR5cGUiLCJpc0ltYWdlRmlsZSIsInN0YXJ0c1dpdGgiLCJuYW1lIiwidG9Mb3dlckNhc2UiLCJ0ZXN0Iiwib3B0aW9uSW1hZ2VVcmwiLCJvcHRpb24iLCJfb3B0aW9uJGxpbmtlZEZpbGUiLCJsaW5rZWRGaWxlIiwidmlld1VybCIsImZpbmRNYXRjaGluZ09wdGlvbiIsIm9wdGlvbnMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJmaW5kIiwibyIsIlN0cmluZyIsIm9wdGlvbklkIiwicmVzb2x2ZU9wdGlvbkNvbG91ciIsIl9vcHRpb24kY29sb3VyIiwiX2ZpbmRNYXRjaGluZ09wdGlvbiIsIl9maW5kTWF0Y2hpbmdPcHRpb24yIiwic2VsZWN0YWJsZU9wdGlvbnMiLCJmaWVsZE9wdGlvbnMiLCJkaXJlY3QiLCJjb2xvdXIiLCJ0cmltIiwiZnJvbVNlbGVjdGFibGUiLCJyZXNvbHZlT3B0aW9uSW1hZ2VVcmwiLCJmb3JtYXRPcHRpb25Db3N0Iiwic2VsbGVyUHJvZHVjdEVkaXRhYmxlIiwidG90YWxDb3N0IiwiY29uY2F0IiwiVmFyaWF0aW9uRmlsZVByZXZpZXciLCJfcmVmIiwiZmlsZVVybCIsImRvd25sb2FkVXJsIiwiZmlsZU5hbWUiLCJjbGFzc05hbWUiLCJocmVmIiwidGFyZ2V0IiwicmVsIiwidGl0bGUiLCJjaGlsZHJlbiIsInNyYyIsImFsdCIsIlZhcmlhdGlvbkluZm9Cb2R5IiwiX3JlZjIiLCJ2YWx1ZSIsImZpbGVzIiwidHlwZSIsImlzQ29sb3VyUGlja2VyIiwiQ09MT1VSX1BJQ0tFUiIsImlzRmlsZVVwbG9hZCIsIkZJTEVfVVBMT0FEIiwiaGFzRmlsZXMiLCJCb29sZWFuIiwiZGlzcGxheVZhbHVlIiwibWFwIiwiaW5kZXgiLCJpZCIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiVmFyaWF0aW9uSW5mbyIsIl9yZWYzIiwidmFyaWF0aW9uIiwic2VsZWN0ZWRPcHRpb25zIiwidmFyaWF0aW9uRmllbGQiLCJ2YXJpYXRpb25GaWxlcyIsImZpZWxkVHlwZSIsIl92YXJpYXRpb25GaWVsZCRvcHRpbyIsImlzVmFyaWF0aW9uU2VsZWN0YWJsZSIsImlzVHVybmFyb3VuZFRpbWUiLCJUVVJOQVJPVU5EX1RJTUUiLCJ1c2VTZWxlY3RhYmxlRGlzcGxheSIsIlZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keSIsIkNvbG91clNlbGVjdE9wdGlvbiIsIl9yZWY0IiwiX29wdGlvbiR2YWx1ZSIsImxhYmVsIiwiaGV4IiwiSW1hZ2VTZWxlY3RPcHRpb24iLCJfcmVmNSIsIl9vcHRpb24kdmFsdWUyIiwiaW1hZ2VVcmwiLCJnZXRPcHRpb25JZCIsIl9vcHRpb24kb3B0aW9uSWQiLCJyZXNvbHZlVHVybmFyb3VuZFNlbGVjdGVkT3B0aW9uIiwiX3ZhcmlhdGlvbiRzZWxlY3RlZE9wIiwidmFsdWVTdHIiLCJwb29scyIsIl9pIiwiX3Bvb2xzIiwicG9vbCIsImJ5SWQiLCJieVZhbHVlIiwiX28kdmFsdWUiLCJmb3JtYXRUdXJuYXJvdW5kRGVhZGxpbmUiLCJ1c2VyRGVhZGxpbmUiLCJzZWNvbmRzIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwid2Vla2RheSIsInllYXIiLCJtb250aCIsImRheSIsIlR1cm5hcm91bmRPcHRpb25MYWJlbCIsIl9yZWY2IiwiX29wdGlvbiR2YWx1ZTMiLCJfb3B0aW9uJHZhbHVlNCIsImRheXMiLCJwYXJzZUludCIsImRlYWRsaW5lIiwic2hpcHBpbmdUaW1lSW5jbHVkZWQiLCJkZWFkbGluZUxhYmVsIiwiX3JlZjciLCJfdmFyaWF0aW9uJHZhcmlhdGlvbkYiLCJfcmVmNyRzZWxlY3RhYmxlT3B0aW8iLCJfcmVmNyRmaWVsZE9wdGlvbnMiLCJmaXJzdE9wdGlvbiIsImlzQ29sb3VyU2VsZWN0IiwiQ09MT1VSX1NFTEVDVCIsImlzSW1hZ2VTZWxlY3QiLCJJTUFHRV9TRUxFQ1QiLCJyZW5kZXJPcHRpb25MYWJlbCIsIl9vJHZhbHVlMiIsImkiLCJfbyRvcHRpb25JZCIsIlZhcmlhdGlvbnNJbmZvIiwiX3JlZjgiLCJxdWFudGl0eSIsIl9yZWY4JHZhcmlhdGlvbnMiLCJ2YXJpYXRpb25zIiwidiIsIlZhcmlhdGlvbkdyb3VwSW5mbyIsIl9yZWY5IiwiZ3JvdXAiLCJpc1Jlc2VsbCIsInZpc2libGVWYXJpYXRpb25zIiwiZmlsdGVyIiwiX3YkdmFyaWF0aW9uRmllbGQiLCJjb3N0TGFiZWwiLCJncm91cENvc3QiLCJKb2JJbmZvQ29udGVudCIsIl91c2VNZXJjaGlDaGVja2JvdXRDbyIsImpvYiIsIl9qb2IkcXVhbnRpdHkiLCJfam9iJHZhcmlhdGlvbnMiLCJfam9iJHZhcmlhdGlvbnNHcm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwibmVlZHNTaGlwcGluZyIsImhhc0dyb3VwcyIsImpvYkxldmVsVmFyaWF0aW9ucyIsIl92JHZhcmlhdGlvbkZpZWxkMiIsInRvdGFsUXVhbnRpdHkiLCJyZWR1Y2UiLCJzdW0iLCJnIiwiYW1vdW50IiwibGFiZWxFeHRyYSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0pvYkluZm9Db250ZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRmFGaWxlUGRmIH0gZnJvbSAncmVhY3QtaWNvbnMvZmEnO1xuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3ksIGN1cnJlbmN5VG90YWxDb3N0U2hvd0luY1RheCB9IGZyb20gJy4vY3VycmVuY3knO1xuaW1wb3J0IHtcbiAgaXNJbnN0cnVjdGlvbnNUeXBlLFxuICBpc1Byb2R1Y3RTdXBwbGllck1PRCxcbiAgaXNTZWxlY3RhYmxlLFxuICBGaWVsZFR5cGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IHVzZU1lcmNoaUNoZWNrYm91dENvbnRleHQgfSBmcm9tICcuL01lcmNoaUNoZWNrb3V0UHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgU3VtbWFyeUFtb3VudFJvdyxcbiAgU3VtbWFyeUZpZWxkUm93LFxufSBmcm9tICcuL0NoZWNrb3V0U3VtbWFyeUZpZWxkcyc7XG5cbmZ1bmN0aW9uIGZvcm1hdENvc3QocHJvZHVjdDogYW55LCBjb3N0OiBudW1iZXIpIHtcbiAgY29uc3QgY3VycmVuY3kgPSBwcm9kdWN0LmN1cnJlbmN5ID8gcHJvZHVjdC5jdXJyZW5jeSA6ICdBVUQnO1xuICByZXR1cm4gZm9ybWF0Q3VycmVuY3koY29zdCwge1xuICAgIGN1cnJlbmN5LFxuICAgIHNob3dDb2RlSWZOb1N5bWJvbDogZmFsc2UsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc1BkZihmaWxlOiBhbnkpIHtcbiAgY29uc3QgbWltZXR5cGUgPSBmaWxlPy5taW1ldHlwZSB8fCAnJztcbiAgcmV0dXJuIG1pbWV0eXBlID09PSAnYXBwbGljYXRpb24vcGRmJyB8fCBtaW1ldHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3gtcGRmJztcbn1cblxuZnVuY3Rpb24gaXNJbWFnZUZpbGUoZmlsZTogYW55KSB7XG4gIGNvbnN0IG1pbWV0eXBlID0gZmlsZT8ubWltZXR5cGUgfHwgJyc7XG4gIGlmIChtaW1ldHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IG5hbWUgPSAoZmlsZT8ubmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIC9cXC4oanBlP2d8cG5nfGdpZnx3ZWJwfHN2Z3xibXApJC8udGVzdChuYW1lKTtcbn1cblxuZnVuY3Rpb24gb3B0aW9uSW1hZ2VVcmwob3B0aW9uOiBhbnkpIHtcbiAgcmV0dXJuIG9wdGlvbj8ubGlua2VkRmlsZT8udmlld1VybCB8fCAnJztcbn1cblxuZnVuY3Rpb24gZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbjogYW55LCBvcHRpb25zOiBhbnlbXSA9IFtdKSB7XG4gIHJldHVybiBvcHRpb25zLmZpbmQoKG8pID0+IFN0cmluZyhvLm9wdGlvbklkKSA9PT0gU3RyaW5nKG9wdGlvbj8ub3B0aW9uSWQpKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU9wdGlvbkNvbG91cihcbiAgb3B0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW11cbikge1xuICBjb25zdCBkaXJlY3QgPSBvcHRpb24/LmNvbG91cj8udHJpbSgpO1xuICBpZiAoZGlyZWN0KSByZXR1cm4gZGlyZWN0O1xuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zKT8uY29sb3VyPy50cmltKCk7XG4gIGlmIChmcm9tU2VsZWN0YWJsZSkgcmV0dXJuIGZyb21TZWxlY3RhYmxlO1xuICByZXR1cm4gZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbiwgZmllbGRPcHRpb25zKT8uY29sb3VyPy50cmltKCkgfHwgJyc7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVPcHRpb25JbWFnZVVybChcbiAgb3B0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW11cbikge1xuICBjb25zdCBkaXJlY3QgPSBvcHRpb25JbWFnZVVybChvcHRpb24pO1xuICBpZiAoZGlyZWN0KSByZXR1cm4gZGlyZWN0O1xuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IG9wdGlvbkltYWdlVXJsKFxuICAgIGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zKVxuICApO1xuICBpZiAoZnJvbVNlbGVjdGFibGUpIHJldHVybiBmcm9tU2VsZWN0YWJsZTtcbiAgcmV0dXJuIG9wdGlvbkltYWdlVXJsKGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIGZpZWxkT3B0aW9ucykpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRPcHRpb25Db3N0KFxuICBwcm9kdWN0OiBhbnksXG4gIG9wdGlvbjogYW55LFxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW5cbikge1xuICBpZiAoIW9wdGlvbj8udG90YWxDb3N0IHx8IHNlbGxlclByb2R1Y3RFZGl0YWJsZSkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIG9wdGlvbi50b3RhbENvc3QpfWA7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkZpbGVQcmV2aWV3KHsgZmlsZSB9OiB7IGZpbGU6IGFueSB9KSB7XG4gIGNvbnN0IGZpbGVVcmwgPSBmaWxlPy52aWV3VXJsIHx8IGZpbGU/LmRvd25sb2FkVXJsIHx8ICcnO1xuICBjb25zdCBmaWxlTmFtZSA9IGZpbGU/Lm5hbWUgfHwgJ0ZpbGUnO1xuXG4gIGlmIChpc1BkZihmaWxlKSkge1xuICAgIHJldHVybiAoXG4gICAgICA8YVxuICAgICAgICBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWZpbGUtbGluaydcbiAgICAgICAgaHJlZj17ZmlsZVVybH1cbiAgICAgICAgdGFyZ2V0PSdfYmxhbmsnXG4gICAgICAgIHJlbD0nbm9vcGVuZXIgbm9yZWZlcnJlcidcbiAgICAgICAgdGl0bGU9e2ZpbGVOYW1lfVxuICAgICAgPlxuICAgICAgICA8RmFGaWxlUGRmIGFyaWEtaGlkZGVuIC8+XG4gICAgICAgIDxzcGFuPntmaWxlTmFtZX08L3NwYW4+XG4gICAgICA8L2E+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc0ltYWdlRmlsZShmaWxlKSAmJiBmaWxlVXJsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3NOYW1lPSdtb2RhbC1tZXJjaGktY2hlY2tvdXQtam9iLWluZm8tY29udGVudC1pbWcnXG4gICAgICAgIHNyYz17ZmlsZVVybH1cbiAgICAgICAgYWx0PXtmaWxlTmFtZX1cbiAgICAgICAgdGl0bGU9e2ZpbGVOYW1lfVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgaWYgKGZpbGVVcmwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1maWxlLWxpbmsnXG4gICAgICAgIGhyZWY9e2ZpbGVVcmx9XG4gICAgICAgIHRhcmdldD0nX2JsYW5rJ1xuICAgICAgICByZWw9J25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgIHRpdGxlPXtmaWxlTmFtZX1cbiAgICAgID5cbiAgICAgICAge2ZpbGVOYW1lfVxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gPHNwYW4+e2ZpbGVOYW1lfTwvc3Bhbj47XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm9Cb2R5KHsgY29zdCwgbmFtZSwgcHJvZHVjdCwgdmFsdWUsIGZpbGVzLCB0eXBlIH06IGFueSkge1xuICBjb25zdCBpc0NvbG91clBpY2tlciA9IHR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSO1xuICBjb25zdCBpc0ZpbGVVcGxvYWQgPSB0eXBlID09PSBGaWVsZFR5cGUuRklMRV9VUExPQUQ7XG4gIGNvbnN0IGhhc0ZpbGVzID0gQm9vbGVhbihmaWxlcz8ubGVuZ3RoKTtcbiAgY29uc3QgZGlzcGxheVZhbHVlID0gaXNDb2xvdXJQaWNrZXIgfHwgKGlzRmlsZVVwbG9hZCAmJiBoYXNGaWxlcykgPyBudWxsIDogdmFsdWU7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXJvdyc+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPlxuICAgICAgICB7aGFzRmlsZXMgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1maWxlLXByZXZpZXdzJz5cbiAgICAgICAgICAgIHtmaWxlcy5tYXAoKGZpbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKFxuICAgICAgICAgICAgICA8VmFyaWF0aW9uRmlsZVByZXZpZXdcbiAgICAgICAgICAgICAgICBrZXk9e2ZpbGUudmlld1VybCB8fCBmaWxlLmlkIHx8IGAke25hbWV9LWZpbGUtJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgIGZpbGU9e2ZpbGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2lzQ29sb3VyUGlja2VyICYmIHZhbHVlICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktY29sb3VyLXZhbHVlJz5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogdmFsdWUgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+e3ZhbHVlfTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAge2Rpc3BsYXlWYWx1ZSAmJiBkaXNwbGF5VmFsdWV9XG4gICAgICAgIHtjb3N0ID8gYCArICR7Zm9ybWF0Q29zdChwcm9kdWN0LCBjb3N0KX1gIDogJyd9XG4gICAgICAgIHshaGFzRmlsZXMgJiYgIXZhbHVlICYmICctJ31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25JbmZvKHsgcHJvZHVjdCwgdmFyaWF0aW9uIH06IGFueSkge1xuICBjb25zdCB7IHNlbGVjdGVkT3B0aW9ucywgdmFyaWF0aW9uRmllbGQsIHZhcmlhdGlvbkZpbGVzLCBzZWxlY3RhYmxlT3B0aW9ucyB9ID1cbiAgICB2YXJpYXRpb247XG4gIGNvbnN0IHsgZmllbGRUeXBlLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUsIG9wdGlvbnM6IGZpZWxkT3B0aW9ucyA9IFtdIH0gPVxuICAgIHZhcmlhdGlvbkZpZWxkO1xuICBjb25zdCBpc1ZhcmlhdGlvblNlbGVjdGFibGUgPSBpc1NlbGVjdGFibGUoZmllbGRUeXBlKTtcbiAgY29uc3QgaXNUdXJuYXJvdW5kVGltZSA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLlRVUk5BUk9VTkRfVElNRTtcbiAgY29uc3Qgb3B0aW9ucyA9IHNlbGVjdGVkT3B0aW9ucztcbiAgY29uc3QgdXNlU2VsZWN0YWJsZURpc3BsYXkgPVxuICAgIGlzVmFyaWF0aW9uU2VsZWN0YWJsZSAmJlxuICAgIChCb29sZWFuKG9wdGlvbnM/Lmxlbmd0aCkgfHwgKGlzVHVybmFyb3VuZFRpbWUgJiYgdmFyaWF0aW9uLnZhbHVlKSk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbic+XG4gICAgICB7dXNlU2VsZWN0YWJsZURpc3BsYXkgPyAoXG4gICAgICAgIDxWYXJpYXRpb25PcHRpb25zSW5mb0JvZHlcbiAgICAgICAgICBuYW1lPXt2YXJpYXRpb25GaWVsZC5uYW1lfVxuICAgICAgICAgIGZpZWxkVHlwZT17ZmllbGRUeXBlfVxuICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgICBmaWxlcz17dmFyaWF0aW9uRmlsZXN9XG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgIHZhcmlhdGlvbj17dmFyaWF0aW9ufVxuICAgICAgICAgIHNlbGVjdGFibGVPcHRpb25zPXtzZWxlY3RhYmxlT3B0aW9uc31cbiAgICAgICAgICBmaWVsZE9wdGlvbnM9e2ZpZWxkT3B0aW9uc31cbiAgICAgICAgICBzZWxsZXJQcm9kdWN0RWRpdGFibGU9e3NlbGxlclByb2R1Y3RFZGl0YWJsZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxWYXJpYXRpb25JbmZvQm9keVxuICAgICAgICAgIG5hbWU9e3ZhcmlhdGlvbkZpZWxkLm5hbWV9XG4gICAgICAgICAgdHlwZT17dmFyaWF0aW9uRmllbGQuZmllbGRUeXBlfVxuICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XG4gICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgY29zdD17c2VsbGVyUHJvZHVjdEVkaXRhYmxlID8gMCA6IHZhcmlhdGlvbi5jb3N0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gQ29sb3VyU2VsZWN0T3B0aW9uKHtcbiAgb3B0aW9uLFxuICBzZWxlY3RhYmxlT3B0aW9ucyxcbiAgZmllbGRPcHRpb25zLFxufToge1xuICBvcHRpb246IGFueTtcbiAgc2VsZWN0YWJsZU9wdGlvbnM/OiBhbnlbXTtcbiAgZmllbGRPcHRpb25zPzogYW55W107XG59KSB7XG4gIGNvbnN0IGxhYmVsID0gb3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICcnO1xuICBjb25zdCBoZXggPSByZXNvbHZlT3B0aW9uQ29sb3VyKG9wdGlvbiwgc2VsZWN0YWJsZU9wdGlvbnMsIGZpZWxkT3B0aW9ucyk7XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1jb2xvdXItb3B0aW9uJz5cbiAgICAgIHtoZXggJiYgKFxuICAgICAgICA8c3BhblxuICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogaGV4IH19XG4gICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPHNwYW4+e2xhYmVsIHx8IGhleCB8fCAn4oCTJ308L3NwYW4+XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5mdW5jdGlvbiBJbWFnZVNlbGVjdE9wdGlvbih7XG4gIG9wdGlvbixcbiAgc2VsZWN0YWJsZU9wdGlvbnMsXG4gIGZpZWxkT3B0aW9ucyxcbiAgcHJvZHVjdCxcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxufToge1xuICBvcHRpb246IGFueTtcbiAgc2VsZWN0YWJsZU9wdGlvbnM/OiBhbnlbXTtcbiAgZmllbGRPcHRpb25zPzogYW55W107XG4gIHByb2R1Y3Q6IGFueTtcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlOiBib29sZWFuO1xufSkge1xuICBjb25zdCBpbWFnZVVybCA9IHJlc29sdmVPcHRpb25JbWFnZVVybChvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zLCBmaWVsZE9wdGlvbnMpO1xuICBjb25zdCBsYWJlbCA9IG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAnJztcbiAgY29uc3QgY29zdCA9IGZvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgb3B0aW9uLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUpO1xuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1pbWFnZS1zZWxlY3Qtb3B0aW9uJz5cbiAgICAgIHtpbWFnZVVybCA/IChcbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzTmFtZT0nbW9kYWwtbWVyY2hpLWNoZWNrb3V0LWpvYi1pbmZvLWNvbnRlbnQtaW1nJ1xuICAgICAgICAgIHNyYz17aW1hZ2VVcmx9XG4gICAgICAgICAgYWx0PXtsYWJlbCB8fCAnU2VsZWN0ZWQgb3B0aW9uJ31cbiAgICAgICAgICB0aXRsZT17bGFiZWwgfHwgdW5kZWZpbmVkfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8c3Bhbj57bGFiZWwgfHwgJ+KAkyd9e2Nvc3QgfHwgJyd9PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3B0aW9uSWQob3B0aW9uOiBhbnkpIHtcbiAgcmV0dXJuIG9wdGlvbj8ub3B0aW9uSWQgPz8gb3B0aW9uPy5pZDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVR1cm5hcm91bmRTZWxlY3RlZE9wdGlvbihcbiAgdmFyaWF0aW9uOiBhbnksXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxuICBmaWVsZE9wdGlvbnM6IGFueVtdID0gW11cbikge1xuICBjb25zdCB7IHNlbGVjdGVkT3B0aW9ucyA9IFtdLCB2YWx1ZSB9ID0gdmFyaWF0aW9uO1xuICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zWzBdO1xuICB9XG4gIGNvbnN0IHZhbHVlU3RyID0gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycgPyBTdHJpbmcodmFsdWUpLnRyaW0oKSA6ICcnO1xuICBpZiAoIXZhbHVlU3RyKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBwb29scyA9IFtzZWxlY3RhYmxlT3B0aW9ucywgZmllbGRPcHRpb25zXTtcbiAgZm9yIChjb25zdCBwb29sIG9mIHBvb2xzKSB7XG4gICAgY29uc3QgYnlJZCA9IHBvb2wuZmluZChcbiAgICAgIChvOiBhbnkpID0+IFN0cmluZyhnZXRPcHRpb25JZChvKSkgPT09IHZhbHVlU3RyXG4gICAgKTtcbiAgICBpZiAoYnlJZCkgcmV0dXJuIGJ5SWQ7XG4gICAgY29uc3QgYnlWYWx1ZSA9IHBvb2wuZmluZChcbiAgICAgIChvOiBhbnkpID0+IFN0cmluZyhvLnZhbHVlID8/ICcnKSA9PT0gdmFsdWVTdHJcbiAgICApO1xuICAgIGlmIChieVZhbHVlKSByZXR1cm4gYnlWYWx1ZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VHVybmFyb3VuZERlYWRsaW5lKHVzZXJEZWFkbGluZTogYW55KSB7XG4gIGlmICghdXNlckRlYWRsaW5lKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih1c2VyRGVhZGxpbmUpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShzZWNvbmRzKSB8fCBzZWNvbmRzIDw9IDApIHJldHVybiBudWxsO1xuICByZXR1cm4gbmV3IERhdGUoc2Vjb25kcyAqIDEwMDApLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQVUnLCB7XG4gICAgd2Vla2RheTogJ2xvbmcnLFxuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ2xvbmcnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gVHVybmFyb3VuZE9wdGlvbkxhYmVsKHtcbiAgb3B0aW9uLFxuICB2YXJpYXRpb25GaWVsZCxcbiAgcHJvZHVjdCxcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxufToge1xuICBvcHRpb246IGFueTtcbiAgdmFyaWF0aW9uRmllbGQ6IGFueTtcbiAgcHJvZHVjdDogYW55O1xuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IGRheXMgPSBwYXJzZUludChTdHJpbmcob3B0aW9uPy52YWx1ZSA/PyAnJyksIDEwKSB8fCAwO1xuICBjb25zdCBkZWFkbGluZSA9IGZvcm1hdFR1cm5hcm91bmREZWFkbGluZShvcHRpb24/LnVzZXJEZWFkbGluZSk7XG4gIGNvbnN0IHNoaXBwaW5nVGltZUluY2x1ZGVkID0gQm9vbGVhbih2YXJpYXRpb25GaWVsZD8uc2hpcHBpbmdUaW1lSW5jbHVkZWQpO1xuICBjb25zdCBkZWFkbGluZUxhYmVsID0gc2hpcHBpbmdUaW1lSW5jbHVkZWQgPyAnRGVsaXZlcnkgYnknIDogJ1Byb2R1Y2VkIGJ5JztcbiAgY29uc3QgY29zdCA9IGZvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgb3B0aW9uLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUpO1xuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10dXJuYXJvdW5kLXZhbHVlJz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC1kYXlzJz5cbiAgICAgICAge2RheXMgPiAwXG4gICAgICAgICAgPyBgJHtkYXlzfSBidXNpbmVzcyBkYXkke2RheXMgIT09IDEgPyAncycgOiAnJ31gXG4gICAgICAgICAgOiAob3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICfigJMnKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtkZWFkbGluZSAmJiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC1kZWFkbGluZSc+XG4gICAgICAgICAge2RlYWRsaW5lTGFiZWx9IHtkZWFkbGluZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICAgIHtjb3N0IHx8ICcnfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gVmFyaWF0aW9uT3B0aW9uc0luZm9Cb2R5KHtcbiAgbmFtZSxcbiAgc2VsZWN0ZWRPcHRpb25zLFxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXG4gIHByb2R1Y3QsXG4gIGZpZWxkVHlwZSxcbiAgdmFyaWF0aW9uLFxuICBzZWxlY3RhYmxlT3B0aW9ucyA9IFtdLFxuICBmaWVsZE9wdGlvbnMgPSBbXSxcbn06IGFueSkge1xuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xuICBjb25zdCBmaXJzdE9wdGlvbiA9IGlzVHVybmFyb3VuZFRpbWVcbiAgICA/IHJlc29sdmVUdXJuYXJvdW5kU2VsZWN0ZWRPcHRpb24oXG4gICAgICAgIHsgc2VsZWN0ZWRPcHRpb25zLCB2YWx1ZTogdmFyaWF0aW9uPy52YWx1ZSB9LFxuICAgICAgICBzZWxlY3RhYmxlT3B0aW9ucyxcbiAgICAgICAgZmllbGRPcHRpb25zXG4gICAgICApXG4gICAgOiBzZWxlY3RlZE9wdGlvbnNbMF07XG4gIGNvbnN0IGlzQ29sb3VyU2VsZWN0ID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQ09MT1VSX1NFTEVDVDtcbiAgY29uc3QgaXNJbWFnZVNlbGVjdCA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLklNQUdFX1NFTEVDVDtcbiAgY29uc3QgdmFyaWF0aW9uRmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkID8/IHt9O1xuXG4gIGZ1bmN0aW9uIHJlbmRlck9wdGlvbkxhYmVsKG86IGFueSkge1xuICAgIGlmIChpc1R1cm5hcm91bmRUaW1lKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VHVybmFyb3VuZE9wdGlvbkxhYmVsXG4gICAgICAgICAgb3B0aW9uPXtvfVxuICAgICAgICAgIHZhcmlhdGlvbkZpZWxkPXt2YXJpYXRpb25GaWVsZH1cbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZT17c2VsbGVyUHJvZHVjdEVkaXRhYmxlfVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzQ29sb3VyU2VsZWN0KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sb3VyU2VsZWN0T3B0aW9uXG4gICAgICAgICAgb3B0aW9uPXtvfVxuICAgICAgICAgIHNlbGVjdGFibGVPcHRpb25zPXtzZWxlY3RhYmxlT3B0aW9uc31cbiAgICAgICAgICBmaWVsZE9wdGlvbnM9e2ZpZWxkT3B0aW9uc31cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0ltYWdlU2VsZWN0KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SW1hZ2VTZWxlY3RPcHRpb25cbiAgICAgICAgICBvcHRpb249e299XG4gICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxuICAgICAgICAgIGZpZWxkT3B0aW9ucz17ZmllbGRPcHRpb25zfVxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge28udmFsdWU/LnRyaW0oKSB8fCAn4oCTJ31cbiAgICAgICAge2Zvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgbywgc2VsbGVyUHJvZHVjdEVkaXRhYmxlKSB8fCAnJ31cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDEgJiYgIWlzVHVybmFyb3VuZFRpbWUgPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cbiAgICAgICAgICA8dWwgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUgbGlzdC11bnN0eWxlZCBtLTAnPlxuICAgICAgICAgICAge3NlbGVjdGVkT3B0aW9ucy5tYXAoKG86IGFueSwgaTogbnVtYmVyKSA9PiAoXG4gICAgICAgICAgICAgIDxsaSBrZXk9e2Ake2l9LW9wdGlvbi1rZXktJHtvLm9wdGlvbklkID8/IGl9YH0+XG4gICAgICAgICAgICAgICAge3JlbmRlck9wdGlvbkxhYmVsKG8pfVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogZmlyc3RPcHRpb24gPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlJz5cbiAgICAgICAgICAgIHtyZW5kZXJPcHRpb25MYWJlbChmaXJzdE9wdGlvbil9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1yb3cnPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tbGFiZWwnPntuYW1lfTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPi08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBWYXJpYXRpb25zSW5mbyh7IHByb2R1Y3QsIHF1YW50aXR5LCB2YXJpYXRpb25zID0gW10gfTogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbnMnPlxuICAgICAge3ZhcmlhdGlvbnMubWFwKCh2OiBhbnksIGk6IG51bWJlcikgPT5cbiAgICAgICAgIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2LnZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZSkgPyAoXG4gICAgICAgICAgPFZhcmlhdGlvbkluZm9cbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cbiAgICAgICAgICAgIHZhcmlhdGlvbj17dn1cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IG51bGxcbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkdyb3VwSW5mbyh7IGdyb3VwLCBpbmRleCwgcHJvZHVjdCB9OiBhbnkpIHtcbiAgY29uc3QgaXNSZXNlbGwgPSBpc1Byb2R1Y3RTdXBwbGllck1PRChwcm9kdWN0KTtcbiAgY29uc3QgeyBxdWFudGl0eSwgdmFyaWF0aW9ucyB9ID0gZ3JvdXA7XG4gIGNvbnN0IHZpc2libGVWYXJpYXRpb25zID0gKHZhcmlhdGlvbnMgPz8gW10pLmZpbHRlcihcbiAgICAodjogYW55KSA9PiAhaXNJbnN0cnVjdGlvbnNUeXBlKHY/LnZhcmlhdGlvbkZpZWxkPy5maWVsZFR5cGUpXG4gICk7XG4gIGNvbnN0IGNvc3RMYWJlbCA9IGlzUmVzZWxsID8gJ1VuaXQgQ29zdCcgOiAnR3JvdXAgQ29zdCc7XG5cbiAgcmV0dXJuIChcbiAgICA8c2VjdGlvbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWdyb3VwJz5cbiAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1vcmRlci1kZXRhaWwtdGl0bGUnPlxuICAgICAgICBHcm91cCB7aW5kZXggKyAxfSBEZXRhaWxcbiAgICAgIDwvc3Ryb25nPlxuICAgICAgeyFpc1Jlc2VsbCAmJiBxdWFudGl0eSA+IDAgJiYgKFxuICAgICAgICA8U3VtbWFyeUZpZWxkUm93IGxhYmVsPSdRdWFudGl0eScgdmFsdWU9e3F1YW50aXR5fSAvPlxuICAgICAgKX1cbiAgICAgIHt2aXNpYmxlVmFyaWF0aW9ucy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPFZhcmlhdGlvbnNJbmZvXG4gICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxuICAgICAgICAgIHZhcmlhdGlvbnM9e3ZhcmlhdGlvbnN9XG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZ3JvdXAtY29zdCc+XG4gICAgICAgIHtjb3N0TGFiZWx9OiB7Zm9ybWF0Q29zdChwcm9kdWN0LCBncm91cC5ncm91cENvc3QpfVxuICAgICAgPC9zdHJvbmc+XG4gICAgPC9zZWN0aW9uPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBKb2JJbmZvQ29udGVudCgpIHtcbiAgY29uc3QgeyBqb2IgfSA9IHVzZU1lcmNoaUNoZWNrYm91dENvbnRleHQoKTtcbiAgY29uc3QgeyBwcm9kdWN0LCBxdWFudGl0eSA9IDAsIHZhcmlhdGlvbnMgPSBbXSwgdmFyaWF0aW9uc0dyb3VwcyA9IFtdIH0gPSBqb2I7XG4gIGNvbnN0IHsgbmVlZHNTaGlwcGluZyB9ID0gcHJvZHVjdDtcbiAgY29uc3QgdG90YWxDb3N0ID0gY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4KGpvYik7XG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XG4gIGNvbnN0IGhhc0dyb3VwcyA9IHZhcmlhdGlvbnNHcm91cHMubGVuZ3RoID4gMDtcbiAgY29uc3Qgam9iTGV2ZWxWYXJpYXRpb25zID0gKHZhcmlhdGlvbnMgPz8gW10pLmZpbHRlcihcbiAgICAodjogYW55KSA9PiAhaXNJbnN0cnVjdGlvbnNUeXBlKHY/LnZhcmlhdGlvbkZpZWxkPy5maWVsZFR5cGUpXG4gICk7XG4gIGNvbnN0IHRvdGFsUXVhbnRpdHkgPSBoYXNHcm91cHNcbiAgICA/IHZhcmlhdGlvbnNHcm91cHMucmVkdWNlKFxuICAgICAgICAoc3VtOiBudW1iZXIsIGc6IGFueSkgPT4gc3VtICsgKE51bWJlcihnLnF1YW50aXR5KSB8fCAwKSxcbiAgICAgICAgMFxuICAgICAgKVxuICAgIDogTnVtYmVyKHF1YW50aXR5KSB8fCAwO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50IG1lcmNoaS1jaGVja291dC1zdW1tYXJ5Jz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zZWN0aW9uLXRpdGxlJz57cHJvZHVjdC5uYW1lfTwvZGl2PlxuICAgICAge2hhc0dyb3VwcyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1ncm91cHMnPlxuICAgICAgICAgIHt2YXJpYXRpb25zR3JvdXBzLm1hcCgoZzogYW55LCBpOiBudW1iZXIpID0+XG4gICAgICAgICAgICBnLnF1YW50aXR5ID8gKFxuICAgICAgICAgICAgICA8VmFyaWF0aW9uR3JvdXBJbmZvXG4gICAgICAgICAgICAgICAgZ3JvdXA9e2d9XG4gICAgICAgICAgICAgICAga2V5PXtgJHtpfS1qb2ItaW5mby1jb250ZW50YH1cbiAgICAgICAgICAgICAgICBpbmRleD17aX1cbiAgICAgICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICB7IWhhc0dyb3VwcyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zdGFuZGFsb25lJz5cbiAgICAgICAgICB7am9iTGV2ZWxWYXJpYXRpb25zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LW9yZGVyLWRldGFpbC10aXRsZSc+XG4gICAgICAgICAgICAgICAgT3JkZXIgRGV0YWlsXG4gICAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgICA8VmFyaWF0aW9uc0luZm9cbiAgICAgICAgICAgICAgICBxdWFudGl0eT17cXVhbnRpdHl9XG4gICAgICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cbiAgICAgICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge2hhc0dyb3VwcyAmJiBqb2JMZXZlbFZhcmlhdGlvbnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zdGFuZGFsb25lJz5cbiAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktb3JkZXItZGV0YWlsLXRpdGxlJz5cbiAgICAgICAgICAgIE9yZGVyIERldGFpbFxuICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDxWYXJpYXRpb25zSW5mb1xuICAgICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxuICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cbiAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgeyFpc1Jlc2VsbCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10b3RhbCc+XG4gICAgICAgICAge3RvdGFsUXVhbnRpdHkgPiAwICYmIChcbiAgICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdG90YWwtcXVhbnRpdHknXG4gICAgICAgICAgICAgIGxhYmVsPSdUb3RhbCBRdWFudGl0eSdcbiAgICAgICAgICAgICAgYW1vdW50PXt0b3RhbFF1YW50aXR5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XG4gICAgICAgICAgICBsYWJlbD0nVG90YWwgT3JkZXIgQ29zdCdcbiAgICAgICAgICAgIGxhYmVsRXh0cmE9e1xuICAgICAgICAgICAgICBuZWVkc1NoaXBwaW5nID8gKFxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXRvdGFsLW5vdGUnPiBleCBTaGlwbWVudDwvc21hbGw+XG4gICAgICAgICAgICAgICkgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFtb3VudD17dG90YWxDb3N0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIHshIShpc1Jlc2VsbCAmJiAhaGFzR3JvdXBzKSAmJiAoXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAnPlxuICAgICAgICAgICAge2lzUmVzZWxsID8gJ0FwcHJveGltYXRlIFVuaXQnIDogJ1RvdGFsJ30gQ29zdFxuICAgICAgICAgIDwvc3Ryb25nPnsnICd9XG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21iLTAgZC1ibG9jayc+e3RvdGFsQ29zdH08L3N0cm9uZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxZQUFZOztBQUNaLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FB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
|