UNPKG

merchi_product_form

Version:
372 lines 40.3 kB
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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