merchi_product_form
Version:
A React component for Merchi product forms
372 lines • 40.3 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import { Merchi } from 'merchi_sdk_ts';
import { formatCurrency } from '../utils/currency';
import { ProductType } from '../utils/types';
var pngOptionNotFound = require('../images/product-not-found.png')["default"];
function renderSingleCostIndication(cost, currencyCode, costTypeString) {
var currencyOptions = {
currency: currencyCode,
showCodeIfNoSymbol: false
};
var costString = '';
if (cost) {
costString = formatCurrency(parseFloat(cost), currencyOptions);
costString = ' + ' + costString + ' ' + costTypeString;
}
return costString;
}
var costDetail = function costDetail(onceOffCost, unitCost, currencyCode) {
var onceOffCostDescription = renderSingleCostIndication(parseFloat(onceOffCost), currencyCode, 'once off');
var unitCostDescription = renderSingleCostIndication(parseFloat(unitCost), currencyCode, 'per unit');
return onceOffCostDescription + unitCostDescription;
};
export function variationFieldCostDetail(variationField) {
var variationCost = variationField.variationCost,
variationUnitCost = variationField.variationUnitCost,
currency = variationField.currency;
return costDetail(variationCost, variationUnitCost, currency);
}
export function variationCostDetail(variation) {
var onceOffCost = variation.onceOffCost,
unitCost = variation.unitCost,
currency = variation.currency;
return costDetail(onceOffCost, unitCost, currency);
}
export function variationFieldOptionCostDetail(option) {
var currency = option.currency,
variationCost = option.variationCost,
variationUnitCost = option.variationUnitCost;
return costDetail(variationCost, variationUnitCost, currency);
}
export function splitSelectedOptions(value) {
return value && Array.isArray(value) ? value : value ? value.split(',') : [];
}
export var supplierSellerEditableProductTypes = [ProductType.SUPPLIER_MOD, ProductType.CLONED_SUPPLIER_MOD];
export function optionImageUrl(option) {
var imageNotFount = pngOptionNotFound.src;
return option.linkedFile ? option.linkedFile ? option.linkedFile.viewUrl : imageNotFount : imageNotFount;
}
export function allowedFileTypes(variationField) {
var fileTypeMapping = {
allowFileJpeg: '.jpeg',
allowFileGif: '.gif',
allowFilePdf: '.pdf',
allowFilePng: '.png',
allowFileAi: '.ai'
};
var allowedTypes = Object.keys(fileTypeMapping).filter(function (attributeName) {
return variationField[attributeName];
}).map(function (attributeName) {
return fileTypeMapping[attributeName];
});
return allowedTypes.join(',');
}
var merchi = new Merchi();
export function buildEmptyVariationGroup(product) {
var productEnt = new merchi.Product();
productEnt.fromJson(_objectSpread({}, product), {
makeDirty: false
});
var newGroup = new productEnt.buildEmptyVariationGroup();
newGroup.groupCost = 0;
newGroup.quantity = 0;
return newGroup.toJson();
}
export function isProductSupplierMOD(product) {
var productType = product && product.productType;
return product && [String(ProductType.SUPPLIER_MOD), String(ProductType.SUPPLIER_RESELL_MOD)].includes(String(productType));
}
export function isProductTypeFileDownload(productType) {
return parseInt(productType, 10) === ProductType.SELLER_FILE_DOWNLOAD;
}
export function isProductFileDownload(product) {
var productType = product.productType;
return isProductTypeFileDownload(productType);
}
export var isoCountries = {
AF: 'Afghanistan',
AX: 'Aland Islands',
AL: 'Albania',
DZ: 'Algeria',
AS: 'American Samoa',
AD: 'Andorra',
AO: 'Angola',
AI: 'Anguilla',
AQ: 'Antarctica',
AG: 'Antigua And Barbuda',
AR: 'Argentina',
AM: 'Armenia',
AW: 'Aruba',
AU: 'Australia',
AT: 'Austria',
AZ: 'Azerbaijan',
BS: 'Bahamas',
BH: 'Bahrain',
BD: 'Bangladesh',
BB: 'Barbados',
BY: 'Belarus',
BE: 'Belgium',
BZ: 'Belize',
BJ: 'Benin',
BM: 'Bermuda',
BT: 'Bhutan',
BO: 'Bolivia',
BA: 'Bosnia And Herzegovina',
BW: 'Botswana',
BV: 'Bouvet Island',
BR: 'Brazil',
IO: 'British Indian Ocean Territory',
BN: 'Brunei Darussalam',
BG: 'Bulgaria',
BF: 'Burkina Faso',
BI: 'Burundi',
KH: 'Cambodia',
CM: 'Cameroon',
CA: 'Canada',
CV: 'Cape Verde',
KY: 'Cayman Islands',
CF: 'Central African Republic',
TD: 'Chad',
CL: 'Chile',
CN: 'China',
CX: 'Christmas Island',
CC: 'Cocos (Keeling) Islands',
CO: 'Colombia',
KM: 'Comoros',
CG: 'Congo',
CD: 'Congo, Democratic Republic',
CK: 'Cook Islands',
CR: 'Costa Rica',
CI: "Cote D'Ivoire",
HR: 'Croatia',
CU: 'Cuba',
CY: 'Cyprus',
CZ: 'Czech Republic',
DK: 'Denmark',
DJ: 'Djibouti',
DM: 'Dominica',
DO: 'Dominican Republic',
EC: 'Ecuador',
EG: 'Egypt',
SV: 'El Salvador',
GQ: 'Equatorial Guinea',
ER: 'Eritrea',
EE: 'Estonia',
ET: 'Ethiopia',
FK: 'Falkland Islands (Malvinas)',
FO: 'Faroe Islands',
FJ: 'Fiji',
FI: 'Finland',
FR: 'France',
GF: 'French Guiana',
PF: 'French Polynesia',
TF: 'French Southern Territories',
GA: 'Gabon',
GM: 'Gambia',
GE: 'Georgia',
DE: 'Germany',
GH: 'Ghana',
GI: 'Gibraltar',
GR: 'Greece',
GL: 'Greenland',
GD: 'Grenada',
GP: 'Guadeloupe',
GU: 'Guam',
GT: 'Guatemala',
GG: 'Guernsey',
GN: 'Guinea',
GW: 'Guinea-Bissau',
GY: 'Guyana',
HT: 'Haiti',
HM: 'Heard Island & Mcdonald Islands',
VA: 'Holy See (Vatican City State)',
HN: 'Honduras',
HK: 'Hong Kong',
HU: 'Hungary',
IS: 'Iceland',
IN: 'India',
ID: 'Indonesia',
IR: 'Iran, Islamic Republic Of',
IQ: 'Iraq',
IE: 'Ireland',
IM: 'Isle Of Man',
IL: 'Israel',
IT: 'Italy',
JM: 'Jamaica',
JP: 'Japan',
JE: 'Jersey',
JO: 'Jordan',
KZ: 'Kazakhstan',
KE: 'Kenya',
KI: 'Kiribati',
KR: 'Korea',
KW: 'Kuwait',
KG: 'Kyrgyzstan',
LA: "Lao People's Democratic Republic",
LV: 'Latvia',
LB: 'Lebanon',
LS: 'Lesotho',
LR: 'Liberia',
LY: 'Libyan Arab Jamahiriya',
LI: 'Liechtenstein',
LT: 'Lithuania',
LU: 'Luxembourg',
MO: 'Macao',
MK: 'Macedonia',
MG: 'Madagascar',
MW: 'Malawi',
MY: 'Malaysia',
MV: 'Maldives',
ML: 'Mali',
MT: 'Malta',
MH: 'Marshall Islands',
MQ: 'Martinique',
MR: 'Mauritania',
MU: 'Mauritius',
YT: 'Mayotte',
MX: 'Mexico',
FM: 'Micronesia, Federated States Of',
MD: 'Moldova',
MC: 'Monaco',
MN: 'Mongolia',
ME: 'Montenegro',
MS: 'Montserrat',
MA: 'Morocco',
MZ: 'Mozambique',
MM: 'Myanmar',
NA: 'Namibia',
NR: 'Nauru',
NP: 'Nepal',
NL: 'Netherlands',
AN: 'Netherlands Antilles',
NC: 'New Caledonia',
NZ: 'New Zealand',
NI: 'Nicaragua',
NE: 'Niger',
NG: 'Nigeria',
NU: 'Niue',
NF: 'Norfolk Island',
MP: 'Northern Mariana Islands',
NO: 'Norway',
OM: 'Oman',
PK: 'Pakistan',
PW: 'Palau',
PS: 'Palestinian Territory, Occupied',
PA: 'Panama',
PG: 'Papua New Guinea',
PY: 'Paraguay',
PE: 'Peru',
PH: 'Philippines',
PN: 'Pitcairn',
PL: 'Poland',
PT: 'Portugal',
PR: 'Puerto Rico',
QA: 'Qatar',
RE: 'Reunion',
RO: 'Romania',
RU: 'Russian Federation',
RW: 'Rwanda',
BL: 'Saint Barthelemy',
SH: 'Saint Helena',
KN: 'Saint Kitts And Nevis',
LC: 'Saint Lucia',
MF: 'Saint Martin',
PM: 'Saint Pierre And Miquelon',
VC: 'Saint Vincent And Grenadines',
WS: 'Samoa',
SM: 'San Marino',
ST: 'Sao Tome And Principe',
SA: 'Saudi Arabia',
SN: 'Senegal',
RS: 'Serbia',
SC: 'Seychelles',
SL: 'Sierra Leone',
SG: 'Singapore',
SK: 'Slovakia',
SI: 'Slovenia',
SB: 'Solomon Islands',
SO: 'Somalia',
ZA: 'South Africa',
GS: 'South Georgia And Sandwich Isl.',
ES: 'Spain',
LK: 'Sri Lanka',
SD: 'Sudan',
SR: 'Suriname',
SJ: 'Svalbard And Jan Mayen',
SZ: 'Swaziland',
SE: 'Sweden',
CH: 'Switzerland',
SY: 'Syrian Arab Republic',
TW: 'Taiwan',
TJ: 'Tajikistan',
TZ: 'Tanzania',
TH: 'Thailand',
TL: 'Timor-Leste',
TG: 'Togo',
TK: 'Tokelau',
TO: 'Tonga',
TT: 'Trinidad And Tobago',
TN: 'Tunisia',
TR: 'Turkey',
TM: 'Turkmenistan',
TC: 'Turks And Caicos Islands',
TV: 'Tuvalu',
UG: 'Uganda',
UA: 'Ukraine',
AE: 'United Arab Emirates',
GB: 'United Kingdom',
US: 'United States',
UM: 'United States Outlying Islands',
UY: 'Uruguay',
UZ: 'Uzbekistan',
VU: 'Vanuatu',
VE: 'Venezuela',
VN: 'Viet Nam',
VG: 'Virgin Islands, British',
VI: 'Virgin Islands, U.S.',
WF: 'Wallis And Futuna',
EH: 'Western Sahara',
YE: 'Yemen',
ZM: 'Zambia',
ZW: 'Zimbabwe'
};
export function getCountryName(countryCode) {
if (isoCountries.hasOwnProperty(countryCode)) {
return isoCountries[countryCode];
} else {
return countryCode;
}
}
export function cleanTagIds(raw) {
return raw.map(function (id) {
return id.trim();
}) // Trim each ID entry to remove whitespace
.filter(function (id) {
return /^\d+$/.test(id);
}) // Use a regular expression to ensure the ID is entirely numeric.
.map(function (id) {
return Number(id);
}); // Convert the remaining, valid ID entries into numbers
}
export function getMerchiSourceJobTags() {
if (typeof localStorage !== 'undefined' && localStorage !== null) {
var merchiSource = localStorage.getItem('merchi_source');
if (merchiSource) {
var ids = cleanTagIds(merchiSource.split(','));
return ids.map(function (id) {
return {
id: id
};
});
}
// If "merchi_source" is not found in localStorage, return an empty array.
return [];
}
return [];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXJjaGkiLCJmb3JtYXRDdXJyZW5jeSIsIlByb2R1Y3RUeXBlIiwicG5nT3B0aW9uTm90Rm91bmQiLCJyZXF1aXJlIiwicmVuZGVyU2luZ2xlQ29zdEluZGljYXRpb24iLCJjb3N0IiwiY3VycmVuY3lDb2RlIiwiY29zdFR5cGVTdHJpbmciLCJjdXJyZW5jeU9wdGlvbnMiLCJjdXJyZW5jeSIsInNob3dDb2RlSWZOb1N5bWJvbCIsImNvc3RTdHJpbmciLCJwYXJzZUZsb2F0IiwiY29zdERldGFpbCIsIm9uY2VPZmZDb3N0IiwidW5pdENvc3QiLCJvbmNlT2ZmQ29zdERlc2NyaXB0aW9uIiwidW5pdENvc3REZXNjcmlwdGlvbiIsInZhcmlhdGlvbkZpZWxkQ29zdERldGFpbCIsInZhcmlhdGlvbkZpZWxkIiwidmFyaWF0aW9uQ29zdCIsInZhcmlhdGlvblVuaXRDb3N0IiwidmFyaWF0aW9uQ29zdERldGFpbCIsInZhcmlhdGlvbiIsInZhcmlhdGlvbkZpZWxkT3B0aW9uQ29zdERldGFpbCIsIm9wdGlvbiIsInNwbGl0U2VsZWN0ZWRPcHRpb25zIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJzcGxpdCIsInN1cHBsaWVyU2VsbGVyRWRpdGFibGVQcm9kdWN0VHlwZXMiLCJTVVBQTElFUl9NT0QiLCJDTE9ORURfU1VQUExJRVJfTU9EIiwib3B0aW9uSW1hZ2VVcmwiLCJpbWFnZU5vdEZvdW50Iiwic3JjIiwibGlua2VkRmlsZSIsInZpZXdVcmwiLCJhbGxvd2VkRmlsZVR5cGVzIiwiZmlsZVR5cGVNYXBwaW5nIiwiYWxsb3dGaWxlSnBlZyIsImFsbG93RmlsZUdpZiIsImFsbG93RmlsZVBkZiIsImFsbG93RmlsZVBuZyIsImFsbG93RmlsZUFpIiwiYWxsb3dlZFR5cGVzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImF0dHJpYnV0ZU5hbWUiLCJtYXAiLCJqb2luIiwibWVyY2hpIiwiYnVpbGRFbXB0eVZhcmlhdGlvbkdyb3VwIiwicHJvZHVjdCIsInByb2R1Y3RFbnQiLCJQcm9kdWN0IiwiZnJvbUpzb24iLCJfb2JqZWN0U3ByZWFkIiwibWFrZURpcnR5IiwibmV3R3JvdXAiLCJncm91cENvc3QiLCJxdWFudGl0eSIsInRvSnNvbiIsImlzUHJvZHVjdFN1cHBsaWVyTU9EIiwicHJvZHVjdFR5cGUiLCJTdHJpbmciLCJTVVBQTElFUl9SRVNFTExfTU9EIiwiaW5jbHVkZXMiLCJpc1Byb2R1Y3RUeXBlRmlsZURvd25sb2FkIiwicGFyc2VJbnQiLCJTRUxMRVJfRklMRV9ET1dOTE9BRCIsImlzUHJvZHVjdEZpbGVEb3dubG9hZCIsImlzb0NvdW50cmllcyIsIkFGIiwiQVgiLCJBTCIsIkRaIiwiQVMiLCJBRCIsIkFPIiwiQUkiLCJBUSIsIkFHIiwiQVIiLCJBTSIsIkFXIiwiQVUiLCJBVCIsIkFaIiwiQlMiLCJCSCIsIkJEIiwiQkIiLCJCWSIsIkJFIiwiQloiLCJCSiIsIkJNIiwiQlQiLCJCTyIsIkJBIiwiQlciLCJCViIsIkJSIiwiSU8iLCJCTiIsIkJHIiwiQkYiLCJCSSIsIktIIiwiQ00iLCJDQSIsIkNWIiwiS1kiLCJDRiIsIlREIiwiQ0wiLCJDTiIsIkNYIiwiQ0MiLCJDTyIsIktNIiwiQ0ciLCJDRCIsIkNLIiwiQ1IiLCJDSSIsIkhSIiwiQ1UiLCJDWSIsIkNaIiwiREsiLCJESiIsIkRNIiwiRE8iLCJFQyIsIkVHIiwiU1YiLCJHUSIsIkVSIiwiRUUiLCJFVCIsIkZLIiwiRk8iLCJGSiIsIkZJIiwiRlIiLCJHRiIsIlBGIiwiVEYiLCJHQSIsIkdNIiwiR0UiLCJERSIsIkdIIiwiR0kiLCJHUiIsIkdMIiwiR0QiLCJHUCIsIkdVIiwiR1QiLCJHRyIsIkdOIiwiR1ciLCJHWSIsIkhUIiwiSE0iLCJWQSIsIkhOIiwiSEsiLCJIVSIsIklTIiwiSU4iLCJJRCIsIklSIiwiSVEiLCJJRSIsIklNIiwiSUwiLCJJVCIsIkpNIiwiSlAiLCJKRSIsIkpPIiwiS1oiLCJLRSIsIktJIiwiS1IiLCJLVyIsIktHIiwiTEEiLCJMViIsIkxCIiwiTFMiLCJMUiIsIkxZIiwiTEkiLCJMVCIsIkxVIiwiTU8iLCJNSyIsIk1HIiwiTVciLCJNWSIsIk1WIiwiTUwiLCJNVCIsIk1IIiwiTVEiLCJNUiIsIk1VIiwiWVQiLCJNWCIsIkZNIiwiTUQiLCJNQyIsIk1OIiwiTUUiLCJNUyIsIk1BIiwiTVoiLCJNTSIsIk5BIiwiTlIiLCJOUCIsIk5MIiwiQU4iLCJOQyIsIk5aIiwiTkkiLCJORSIsIk5HIiwiTlUiLCJORiIsIk1QIiwiTk8iLCJPTSIsIlBLIiwiUFciLCJQUyIsIlBBIiwiUEciLCJQWSIsIlBFIiwiUEgiLCJQTiIsIlBMIiwiUFQiLCJQUiIsIlFBIiwiUkUiLCJSTyIsIlJVIiwiUlciLCJCTCIsIlNIIiwiS04iLCJMQyIsIk1GIiwiUE0iLCJWQyIsIldTIiwiU00iLCJTVCIsIlNBIiwiU04iLCJSUyIsIlNDIiwiU0wiLCJTRyIsIlNLIiwiU0kiLCJTQiIsIlNPIiwiWkEiLCJHUyIsIkVTIiwiTEsiLCJTRCIsIlNSIiwiU0oiLCJTWiIsIlNFIiwiQ0giLCJTWSIsIlRXIiwiVEoiLCJUWiIsIlRIIiwiVEwiLCJURyIsIlRLIiwiVE8iLCJUVCIsIlROIiwiVFIiLCJUTSIsIlRDIiwiVFYiLCJVRyIsIlVBIiwiQUUiLCJHQiIsIlVTIiwiVU0iLCJVWSIsIlVaIiwiVlUiLCJWRSIsIlZOIiwiVkciLCJWSSIsIldGIiwiRUgiLCJZRSIsIlpNIiwiWlciLCJnZXRDb3VudHJ5TmFtZSIsImNvdW50cnlDb2RlIiwiaGFzT3duUHJvcGVydHkiLCJjbGVhblRhZ0lkcyIsInJhdyIsImlkIiwidHJpbSIsInRlc3QiLCJOdW1iZXIiLCJnZXRNZXJjaGlTb3VyY2VKb2JUYWdzIiwibG9jYWxTdG9yYWdlIiwibWVyY2hpU291cmNlIiwiZ2V0SXRlbSIsImlkcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lcmNoaSB9IGZyb20gJ21lcmNoaV9zZGtfdHMnO1xuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3kgfSBmcm9tICcuLi91dGlscy9jdXJyZW5jeSc7XG5pbXBvcnQgeyBQcm9kdWN0VHlwZSB9IGZyb20gJy4uL3V0aWxzL3R5cGVzJztcbmNvbnN0IHBuZ09wdGlvbk5vdEZvdW5kID0gcmVxdWlyZSgnLi4vaW1hZ2VzL3Byb2R1Y3Qtbm90LWZvdW5kLnBuZycpLmRlZmF1bHQ7XG5cbmZ1bmN0aW9uIHJlbmRlclNpbmdsZUNvc3RJbmRpY2F0aW9uKFxuICBjb3N0OiBhbnksXG4gIGN1cnJlbmN5Q29kZTogYW55LFxuICBjb3N0VHlwZVN0cmluZzogc3RyaW5nXG4pIHtcbiAgbGV0IGN1cnJlbmN5T3B0aW9ucyA9IHsgY3VycmVuY3k6IGN1cnJlbmN5Q29kZSwgc2hvd0NvZGVJZk5vU3ltYm9sOiBmYWxzZSB9O1xuICBsZXQgY29zdFN0cmluZyA9ICcnO1xuXG4gIGlmIChjb3N0KSB7XG4gICAgY29zdFN0cmluZyA9IGZvcm1hdEN1cnJlbmN5KHBhcnNlRmxvYXQoY29zdCksIGN1cnJlbmN5T3B0aW9ucyk7XG4gICAgY29zdFN0cmluZyA9ICcgKyAnICsgY29zdFN0cmluZyArICcgJyArIGNvc3RUeXBlU3RyaW5nO1xuICB9XG4gIHJldHVybiBjb3N0U3RyaW5nO1xufVxuXG5jb25zdCBjb3N0RGV0YWlsID0gKG9uY2VPZmZDb3N0OiBhbnksIHVuaXRDb3N0OiBhbnksIGN1cnJlbmN5Q29kZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG9uY2VPZmZDb3N0RGVzY3JpcHRpb24gPSByZW5kZXJTaW5nbGVDb3N0SW5kaWNhdGlvbihcbiAgICBwYXJzZUZsb2F0KG9uY2VPZmZDb3N0KSxcbiAgICBjdXJyZW5jeUNvZGUsXG4gICAgJ29uY2Ugb2ZmJ1xuICApO1xuICBjb25zdCB1bml0Q29zdERlc2NyaXB0aW9uID0gcmVuZGVyU2luZ2xlQ29zdEluZGljYXRpb24oXG4gICAgcGFyc2VGbG9hdCh1bml0Q29zdCksXG4gICAgY3VycmVuY3lDb2RlLFxuICAgICdwZXIgdW5pdCdcbiAgKTtcbiAgcmV0dXJuIG9uY2VPZmZDb3N0RGVzY3JpcHRpb24gKyB1bml0Q29zdERlc2NyaXB0aW9uO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhdGlvbkZpZWxkQ29zdERldGFpbCh2YXJpYXRpb25GaWVsZDogYW55KSB7XG4gIGNvbnN0IHsgdmFyaWF0aW9uQ29zdCwgdmFyaWF0aW9uVW5pdENvc3QsIGN1cnJlbmN5IH0gPSB2YXJpYXRpb25GaWVsZDtcbiAgcmV0dXJuIGNvc3REZXRhaWwodmFyaWF0aW9uQ29zdCEsIHZhcmlhdGlvblVuaXRDb3N0ISwgY3VycmVuY3khKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhdGlvbkNvc3REZXRhaWwodmFyaWF0aW9uOiBhbnkpIHtcbiAgY29uc3QgeyBvbmNlT2ZmQ29zdCwgdW5pdENvc3QsIGN1cnJlbmN5IH0gPSB2YXJpYXRpb247XG4gIHJldHVybiBjb3N0RGV0YWlsKG9uY2VPZmZDb3N0ISwgdW5pdENvc3QhLCBjdXJyZW5jeSEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWF0aW9uRmllbGRPcHRpb25Db3N0RGV0YWlsKG9wdGlvbjogYW55KSB7XG4gIGNvbnN0IHsgY3VycmVuY3ksIHZhcmlhdGlvbkNvc3QsIHZhcmlhdGlvblVuaXRDb3N0IH0gPSBvcHRpb247XG4gIHJldHVybiBjb3N0RGV0YWlsKHZhcmlhdGlvbkNvc3QhLCB2YXJpYXRpb25Vbml0Q29zdCEsIGN1cnJlbmN5ISk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFNlbGVjdGVkT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gIHJldHVybiB2YWx1ZSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgPyB2YWx1ZS5zcGxpdCgnLCcpIDogW107XG59XG5cbmV4cG9ydCBjb25zdCBzdXBwbGllclNlbGxlckVkaXRhYmxlUHJvZHVjdFR5cGVzOiBBcnJheTxudW1iZXI+ID0gW1xuICBQcm9kdWN0VHlwZS5TVVBQTElFUl9NT0QsXG4gIFByb2R1Y3RUeXBlLkNMT05FRF9TVVBQTElFUl9NT0QsXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uSW1hZ2VVcmwob3B0aW9uOiBhbnkpIHtcbiAgY29uc3QgaW1hZ2VOb3RGb3VudCA9IHBuZ09wdGlvbk5vdEZvdW5kLnNyYztcbiAgcmV0dXJuIG9wdGlvbi5saW5rZWRGaWxlXG4gICAgPyBvcHRpb24ubGlua2VkRmlsZVxuICAgICAgPyBvcHRpb24ubGlua2VkRmlsZS52aWV3VXJsXG4gICAgICA6IGltYWdlTm90Rm91bnRcbiAgICA6IGltYWdlTm90Rm91bnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxvd2VkRmlsZVR5cGVzKHZhcmlhdGlvbkZpZWxkOiBhbnkpOiBzdHJpbmcge1xuICBjb25zdCBmaWxlVHlwZU1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgYWxsb3dGaWxlSnBlZzogJy5qcGVnJyxcbiAgICBhbGxvd0ZpbGVHaWY6ICcuZ2lmJyxcbiAgICBhbGxvd0ZpbGVQZGY6ICcucGRmJyxcbiAgICBhbGxvd0ZpbGVQbmc6ICcucG5nJyxcbiAgICBhbGxvd0ZpbGVBaTogJy5haScsXG4gIH07XG5cbiAgY29uc3QgYWxsb3dlZFR5cGVzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGZpbGVUeXBlTWFwcGluZylcbiAgICAuZmlsdGVyKChhdHRyaWJ1dGVOYW1lKSA9PiB2YXJpYXRpb25GaWVsZFthdHRyaWJ1dGVOYW1lXSlcbiAgICAubWFwKChhdHRyaWJ1dGVOYW1lKSA9PiBmaWxlVHlwZU1hcHBpbmdbYXR0cmlidXRlTmFtZV0pO1xuXG4gIHJldHVybiBhbGxvd2VkVHlwZXMuam9pbignLCcpO1xufVxuXG5jb25zdCBtZXJjaGkgPSBuZXcgTWVyY2hpKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEVtcHR5VmFyaWF0aW9uR3JvdXAocHJvZHVjdDogYW55KSB7XG4gIGNvbnN0IHByb2R1Y3RFbnQgPSBuZXcgbWVyY2hpLlByb2R1Y3QoKTtcbiAgcHJvZHVjdEVudC5mcm9tSnNvbih7Li4ucHJvZHVjdH0sIHsgbWFrZURpcnR5OiBmYWxzZX0pO1xuICBjb25zdCBuZXdHcm91cCA9IG5ldyBwcm9kdWN0RW50LmJ1aWxkRW1wdHlWYXJpYXRpb25Hcm91cCgpO1xuICBuZXdHcm91cC5ncm91cENvc3QgPSAwO1xuICBuZXdHcm91cC5xdWFudGl0eSA9IDA7XG4gIHJldHVybiBuZXdHcm91cC50b0pzb24oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvZHVjdFN1cHBsaWVyTU9EKHByb2R1Y3Q6IGFueSkge1xuICBjb25zdCBwcm9kdWN0VHlwZSA9IHByb2R1Y3QgJiYgcHJvZHVjdC5wcm9kdWN0VHlwZTtcbiAgcmV0dXJuIChcbiAgICBwcm9kdWN0ICYmXG4gICAgW1xuICAgICAgU3RyaW5nKFByb2R1Y3RUeXBlLlNVUFBMSUVSX01PRCksXG4gICAgICBTdHJpbmcoUHJvZHVjdFR5cGUuU1VQUExJRVJfUkVTRUxMX01PRCksXG4gICAgXS5pbmNsdWRlcyhTdHJpbmcocHJvZHVjdFR5cGUpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9kdWN0VHlwZUZpbGVEb3dubG9hZChwcm9kdWN0VHlwZTogYW55KSB7XG4gIHJldHVybiBwYXJzZUludChwcm9kdWN0VHlwZSwgMTApID09PSBQcm9kdWN0VHlwZS5TRUxMRVJfRklMRV9ET1dOTE9BRDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvZHVjdEZpbGVEb3dubG9hZChwcm9kdWN0OiBhbnkpIHtcbiAgY29uc3QgeyBwcm9kdWN0VHlwZSB9ID0gcHJvZHVjdDtcbiAgcmV0dXJuIGlzUHJvZHVjdFR5cGVGaWxlRG93bmxvYWQocHJvZHVjdFR5cGUpO1xufVxuXG5leHBvcnQgY29uc3QgaXNvQ291bnRyaWVzOiBhbnkgPSB7XG4gIEFGOiAnQWZnaGFuaXN0YW4nLFxuICBBWDogJ0FsYW5kIElzbGFuZHMnLFxuICBBTDogJ0FsYmFuaWEnLFxuICBEWjogJ0FsZ2VyaWEnLFxuICBBUzogJ0FtZXJpY2FuIFNhbW9hJyxcbiAgQUQ6ICdBbmRvcnJhJyxcbiAgQU86ICdBbmdvbGEnLFxuICBBSTogJ0FuZ3VpbGxhJyxcbiAgQVE6ICdBbnRhcmN0aWNhJyxcbiAgQUc6ICdBbnRpZ3VhIEFuZCBCYXJidWRhJyxcbiAgQVI6ICdBcmdlbnRpbmEnLFxuICBBTTogJ0FybWVuaWEnLFxuICBBVzogJ0FydWJhJyxcbiAgQVU6ICdBdXN0cmFsaWEnLFxuICBBVDogJ0F1c3RyaWEnLFxuICBBWjogJ0F6ZXJiYWlqYW4nLFxuICBCUzogJ0JhaGFtYXMnLFxuICBCSDogJ0JhaHJhaW4nLFxuICBCRDogJ0JhbmdsYWRlc2gnLFxuICBCQjogJ0JhcmJhZG9zJyxcbiAgQlk6ICdCZWxhcnVzJyxcbiAgQkU6ICdCZWxnaXVtJyxcbiAgQlo6ICdCZWxpemUnLFxuICBCSjogJ0JlbmluJyxcbiAgQk06ICdCZXJtdWRhJyxcbiAgQlQ6ICdCaHV0YW4nLFxuICBCTzogJ0JvbGl2aWEnLFxuICBCQTogJ0Jvc25pYSBBbmQgSGVyemVnb3ZpbmEnLFxuICBCVzogJ0JvdHN3YW5hJyxcbiAgQlY6ICdCb3V2ZXQgSXNsYW5kJyxcbiAgQlI6ICdCcmF6aWwnLFxuICBJTzogJ0JyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeScsXG4gIEJOOiAnQnJ1bmVpIERhcnVzc2FsYW0nLFxuICBCRzogJ0J1bGdhcmlhJyxcbiAgQkY6ICdCdXJraW5hIEZhc28nLFxuICBCSTogJ0J1cnVuZGknLFxuICBLSDogJ0NhbWJvZGlhJyxcbiAgQ006ICdDYW1lcm9vbicsXG4gIENBOiAnQ2FuYWRhJyxcbiAgQ1Y6ICdDYXBlIFZlcmRlJyxcbiAgS1k6ICdDYXltYW4gSXNsYW5kcycsXG4gIENGOiAnQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJyxcbiAgVEQ6ICdDaGFkJyxcbiAgQ0w6ICdDaGlsZScsXG4gIENOOiAnQ2hpbmEnLFxuICBDWDogJ0NocmlzdG1hcyBJc2xhbmQnLFxuICBDQzogJ0NvY29zIChLZWVsaW5nKSBJc2xhbmRzJyxcbiAgQ086ICdDb2xvbWJpYScsXG4gIEtNOiAnQ29tb3JvcycsXG4gIENHOiAnQ29uZ28nLFxuICBDRDogJ0NvbmdvLCBEZW1vY3JhdGljIFJlcHVibGljJyxcbiAgQ0s6ICdDb29rIElzbGFuZHMnLFxuICBDUjogJ0Nvc3RhIFJpY2EnLFxuICBDSTogXCJDb3RlIEQnSXZvaXJlXCIsXG4gIEhSOiAnQ3JvYXRpYScsXG4gIENVOiAnQ3ViYScsXG4gIENZOiAnQ3lwcnVzJyxcbiAgQ1o6ICdDemVjaCBSZXB1YmxpYycsXG4gIERLOiAnRGVubWFyaycsXG4gIERKOiAnRGppYm91dGknLFxuICBETTogJ0RvbWluaWNhJyxcbiAgRE86ICdEb21pbmljYW4gUmVwdWJsaWMnLFxuICBFQzogJ0VjdWFkb3InLFxuICBFRzogJ0VneXB0JyxcbiAgU1Y6ICdFbCBTYWx2YWRvcicsXG4gIEdROiAnRXF1YXRvcmlhbCBHdWluZWEnLFxuICBFUjogJ0VyaXRyZWEnLFxuICBFRTogJ0VzdG9uaWEnLFxuICBFVDogJ0V0aGlvcGlhJyxcbiAgRks6ICdGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcyknLFxuICBGTzogJ0Zhcm9lIElzbGFuZHMnLFxuICBGSjogJ0ZpamknLFxuICBGSTogJ0ZpbmxhbmQnLFxuICBGUjogJ0ZyYW5jZScsXG4gIEdGOiAnRnJlbmNoIEd1aWFuYScsXG4gIFBGOiAnRnJlbmNoIFBvbHluZXNpYScsXG4gIFRGOiAnRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzJyxcbiAgR0E6ICdHYWJvbicsXG4gIEdNOiAnR2FtYmlhJyxcbiAgR0U6ICdHZW9yZ2lhJyxcbiAgREU6ICdHZXJtYW55JyxcbiAgR0g6ICdHaGFuYScsXG4gIEdJOiAnR2licmFsdGFyJyxcbiAgR1I6ICdHcmVlY2UnLFxuICBHTDogJ0dyZWVubGFuZCcsXG4gIEdEOiAnR3JlbmFkYScsXG4gIEdQOiAnR3VhZGVsb3VwZScsXG4gIEdVOiAnR3VhbScsXG4gIEdUOiAnR3VhdGVtYWxhJyxcbiAgR0c6ICdHdWVybnNleScsXG4gIEdOOiAnR3VpbmVhJyxcbiAgR1c6ICdHdWluZWEtQmlzc2F1JyxcbiAgR1k6ICdHdXlhbmEnLFxuICBIVDogJ0hhaXRpJyxcbiAgSE06ICdIZWFyZCBJc2xhbmQgJiBNY2RvbmFsZCBJc2xhbmRzJyxcbiAgVkE6ICdIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKScsXG4gIEhOOiAnSG9uZHVyYXMnLFxuICBISzogJ0hvbmcgS29uZycsXG4gIEhVOiAnSHVuZ2FyeScsXG4gIElTOiAnSWNlbGFuZCcsXG4gIElOOiAnSW5kaWEnLFxuICBJRDogJ0luZG9uZXNpYScsXG4gIElSOiAnSXJhbiwgSXNsYW1pYyBSZXB1YmxpYyBPZicsXG4gIElROiAnSXJhcScsXG4gIElFOiAnSXJlbGFuZCcsXG4gIElNOiAnSXNsZSBPZiBNYW4nLFxuICBJTDogJ0lzcmFlbCcsXG4gIElUOiAnSXRhbHknLFxuICBKTTogJ0phbWFpY2EnLFxuICBKUDogJ0phcGFuJyxcbiAgSkU6ICdKZXJzZXknLFxuICBKTzogJ0pvcmRhbicsXG4gIEtaOiAnS2F6YWtoc3RhbicsXG4gIEtFOiAnS2VueWEnLFxuICBLSTogJ0tpcmliYXRpJyxcbiAgS1I6ICdLb3JlYScsXG4gIEtXOiAnS3V3YWl0JyxcbiAgS0c6ICdLeXJneXpzdGFuJyxcbiAgTEE6IFwiTGFvIFBlb3BsZSdzIERlbW9jcmF0aWMgUmVwdWJsaWNcIixcbiAgTFY6ICdMYXR2aWEnLFxuICBMQjogJ0xlYmFub24nLFxuICBMUzogJ0xlc290aG8nLFxuICBMUjogJ0xpYmVyaWEnLFxuICBMWTogJ0xpYnlhbiBBcmFiIEphbWFoaXJpeWEnLFxuICBMSTogJ0xpZWNodGVuc3RlaW4nLFxuICBMVDogJ0xpdGh1YW5pYScsXG4gIExVOiAnTHV4ZW1ib3VyZycsXG4gIE1POiAnTWFjYW8nLFxuICBNSzogJ01hY2Vkb25pYScsXG4gIE1HOiAnTWFkYWdhc2NhcicsXG4gIE1XOiAnTWFsYXdpJyxcbiAgTVk6ICdNYWxheXNpYScsXG4gIE1WOiAnTWFsZGl2ZXMnLFxuICBNTDogJ01hbGknLFxuICBNVDogJ01hbHRhJyxcbiAgTUg6ICdNYXJzaGFsbCBJc2xhbmRzJyxcbiAgTVE6ICdNYXJ0aW5pcXVlJyxcbiAgTVI6ICdNYXVyaXRhbmlhJyxcbiAgTVU6ICdNYXVyaXRpdXMnLFxuICBZVDogJ01heW90dGUnLFxuICBNWDogJ01leGljbycsXG4gIEZNOiAnTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBPZicsXG4gIE1EOiAnTW9sZG92YScsXG4gIE1DOiAnTW9uYWNvJyxcbiAgTU46ICdNb25nb2xpYScsXG4gIE1FOiAnTW9udGVuZWdybycsXG4gIE1TOiAnTW9udHNlcnJhdCcsXG4gIE1BOiAnTW9yb2NjbycsXG4gIE1aOiAnTW96YW1iaXF1ZScsXG4gIE1NOiAnTXlhbm1hcicsXG4gIE5BOiAnTmFtaWJpYScsXG4gIE5SOiAnTmF1cnUnLFxuICBOUDogJ05lcGFsJyxcbiAgTkw6ICdOZXRoZXJsYW5kcycsXG4gIEFOOiAnTmV0aGVybGFuZHMgQW50aWxsZXMnLFxuICBOQzogJ05ldyBDYWxlZG9uaWEnLFxuICBOWjogJ05ldyBaZWFsYW5kJyxcbiAgTkk6ICdOaWNhcmFndWEnLFxuICBORTogJ05pZ2VyJyxcbiAgTkc6ICdOaWdlcmlhJyxcbiAgTlU6ICdOaXVlJyxcbiAgTkY6ICdOb3Jmb2xrIElzbGFuZCcsXG4gIE1QOiAnTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzJyxcbiAgTk86ICdOb3J3YXknLFxuICBPTTogJ09tYW4nLFxuICBQSzogJ1Bha2lzdGFuJyxcbiAgUFc6ICdQYWxhdScsXG4gIFBTOiAnUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZCcsXG4gIFBBOiAnUGFuYW1hJyxcbiAgUEc6ICdQYXB1YSBOZXcgR3VpbmVhJyxcbiAgUFk6ICdQYXJhZ3VheScsXG4gIFBFOiAnUGVydScsXG4gIFBIOiAnUGhpbGlwcGluZXMnLFxuICBQTjogJ1BpdGNhaXJuJyxcbiAgUEw6ICdQb2xhbmQnLFxuICBQVDogJ1BvcnR1Z2FsJyxcbiAgUFI6ICdQdWVydG8gUmljbycsXG4gIFFBOiAnUWF0YXInLFxuICBSRTogJ1JldW5pb24nLFxuICBSTzogJ1JvbWFuaWEnLFxuICBSVTogJ1J1c3NpYW4gRmVkZXJhdGlvbicsXG4gIFJXOiAnUndhbmRhJyxcbiAgQkw6ICdTYWludCBCYXJ0aGVsZW15JyxcbiAgU0g6ICdTYWludCBIZWxlbmEnLFxuICBLTjogJ1NhaW50IEtpdHRzIEFuZCBOZXZpcycsXG4gIExDOiAnU2FpbnQgTHVjaWEnLFxuICBNRjogJ1NhaW50IE1hcnRpbicsXG4gIFBNOiAnU2FpbnQgUGllcnJlIEFuZCBNaXF1ZWxvbicsXG4gIFZDOiAnU2FpbnQgVmluY2VudCBBbmQgR3JlbmFkaW5lcycsXG4gIFdTOiAnU2Ftb2EnLFxuICBTTTogJ1NhbiBNYXJpbm8nLFxuICBTVDogJ1NhbyBUb21lIEFuZCBQcmluY2lwZScsXG4gIFNBOiAnU2F1ZGkgQXJhYmlhJyxcbiAgU046ICdTZW5lZ2FsJyxcbiAgUlM6ICdTZXJiaWEnLFxuICBTQzogJ1NleWNoZWxsZXMnLFxuICBTTDogJ1NpZXJyYSBMZW9uZScsXG4gIFNHOiAnU2luZ2Fwb3JlJyxcbiAgU0s6ICdTbG92YWtpYScsXG4gIFNJOiAnU2xvdmVuaWEnLFxuICBTQjogJ1NvbG9tb24gSXNsYW5kcycsXG4gIFNPOiAnU29tYWxpYScsXG4gIFpBOiAnU291dGggQWZyaWNhJyxcbiAgR1M6ICdTb3V0aCBHZW9yZ2lhIEFuZCBTYW5kd2ljaCBJc2wuJyxcbiAgRVM6ICdTcGFpbicsXG4gIExLOiAnU3JpIExhbmthJyxcbiAgU0Q6ICdTdWRhbicsXG4gIFNSOiAnU3VyaW5hbWUnLFxuICBTSjogJ1N2YWxiYXJkIEFuZCBKYW4gTWF5ZW4nLFxuICBTWjogJ1N3YXppbGFuZCcsXG4gIFNFOiAnU3dlZGVuJyxcbiAgQ0g6ICdTd2l0emVybGFuZCcsXG4gIFNZOiAnU3lyaWFuIEFyYWIgUmVwdWJsaWMnLFxuICBUVzogJ1RhaXdhbicsXG4gIFRKOiAnVGFqaWtpc3RhbicsXG4gIFRaOiAnVGFuemFuaWEnLFxuICBUSDogJ1RoYWlsYW5kJyxcbiAgVEw6ICdUaW1vci1MZXN0ZScsXG4gIFRHOiAnVG9nbycsXG4gIFRLOiAnVG9rZWxhdScsXG4gIFRPOiAnVG9uZ2EnLFxuICBUVDogJ1RyaW5pZGFkIEFuZCBUb2JhZ28nLFxuICBUTjogJ1R1bmlzaWEnLFxuICBUUjogJ1R1cmtleScsXG4gIFRNOiAnVHVya21lbmlzdGFuJyxcbiAgVEM6ICdUdXJrcyBBbmQgQ2FpY29zIElzbGFuZHMnLFxuICBUVjogJ1R1dmFsdScsXG4gIFVHOiAnVWdhbmRhJyxcbiAgVUE6ICdVa3JhaW5lJyxcbiAgQUU6ICdVbml0ZWQgQXJhYiBFbWlyYXRlcycsXG4gIEdCOiAnVW5pdGVkIEtpbmdkb20nLFxuICBVUzogJ1VuaXRlZCBTdGF0ZXMnLFxuICBVTTogJ1VuaXRlZCBTdGF0ZXMgT3V0bHlpbmcgSXNsYW5kcycsXG4gIFVZOiAnVXJ1Z3VheScsXG4gIFVaOiAnVXpiZWtpc3RhbicsXG4gIFZVOiAnVmFudWF0dScsXG4gIFZFOiAnVmVuZXp1ZWxhJyxcbiAgVk46ICdWaWV0IE5hbScsXG4gIFZHOiAnVmlyZ2luIElzbGFuZHMsIEJyaXRpc2gnLFxuICBWSTogJ1ZpcmdpbiBJc2xhbmRzLCBVLlMuJyxcbiAgV0Y6ICdXYWxsaXMgQW5kIEZ1dHVuYScsXG4gIEVIOiAnV2VzdGVybiBTYWhhcmEnLFxuICBZRTogJ1llbWVuJyxcbiAgWk06ICdaYW1iaWEnLFxuICBaVzogJ1ppbWJhYndlJyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb3VudHJ5TmFtZShjb3VudHJ5Q29kZTogYW55KSB7XG4gIGlmIChpc29Db3VudHJpZXMuaGFzT3duUHJvcGVydHkoY291bnRyeUNvZGUpKSB7XG4gICAgcmV0dXJuIGlzb0NvdW50cmllc1tjb3VudHJ5Q29kZV07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvdW50cnlDb2RlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblRhZ0lkcyhyYXc6IGFueVtdKSB7XG4gIHJldHVybiByYXcubWFwKGlkID0+IGlkLnRyaW0oKSkgICAgICAgICAgICAvLyBUcmltIGVhY2ggSUQgZW50cnkgdG8gcmVtb3ZlIHdoaXRlc3BhY2VcbiAgICAuZmlsdGVyKGlkID0+IC9eXFxkKyQvLnRlc3QoaWQpKSAgLy8gVXNlIGEgcmVndWxhciBleHByZXNzaW9uIHRvIGVuc3VyZSB0aGUgSUQgaXMgZW50aXJlbHkgbnVtZXJpYy5cbiAgICAubWFwKGlkID0+IE51bWJlcihpZCkpOyAgICAgICAgICAvLyBDb252ZXJ0IHRoZSByZW1haW5pbmcsIHZhbGlkIElEIGVudHJpZXMgaW50byBudW1iZXJzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXJjaGlTb3VyY2VKb2JUYWdzKCk6IGFueVtdIHtcbiAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnICYmIGxvY2FsU3RvcmFnZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1lcmNoaVNvdXJjZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZXJjaGlfc291cmNlJyk7XG5cbiAgICBpZiAobWVyY2hpU291cmNlKSB7XG4gICAgICBjb25zdCBpZHMgPSBjbGVhblRhZ0lkcyhtZXJjaGlTb3VyY2Uuc3BsaXQoJywnKSk7XG4gICAgICByZXR1cm4gaWRzLm1hcCgoaWQ6IG51bWJlcikgPT4gKHsgaWQgfSkpO1xuICAgIH1cbiAgICAvLyBJZiBcIm1lcmNoaV9zb3VyY2VcIiBpcyBub3QgZm91bmQgaW4gbG9jYWxTdG9yYWdlLCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiBbXTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsU0FBU0EsTUFBTSxRQUFRLGVBQWU7QUFDdEMsU0FBU0MsY0FBYyxRQUFRLG1CQUFtQjtBQUNsRCxTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBQzVDLElBQU1DLGlCQUFpQixHQUFHQyxPQUFPLENBQUMsaUNBQWlDLENBQUMsV0FBUTtBQUU1RSxTQUFTQywwQkFBMEJBLENBQ2pDQyxJQUFTLEVBQ1RD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