haxorqt
Home
Console
Upload
information
Create File
Create Folder
About
:
/
home
/
sc1jaqa5103
/
prod.puv-editions.fr
/
wp-content
/
plugins
/
woo-payzen-payment
/
build
/
Filename :
payzenstd.js
back
Copy
!function(Q){var F={};function I(B){if(F[B])return F[B].exports;var U=F[B]={i:B,l:!1,exports:{}};return Q[B].call(U.exports,U,U.exports,I),U.l=!0,U.exports}I.m=Q,I.c=F,I.d=function(Q,F,B){I.o(Q,F)||Object.defineProperty(Q,F,{enumerable:!0,get:B})},I.r=function(Q){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(Q,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(Q,"__esModule",{value:!0})},I.t=function(Q,F){if(1&F&&(Q=I(Q)),8&F)return Q;if(4&F&&"object"==typeof Q&&Q&&Q.__esModule)return Q;var B=Object.create(null);if(I.r(B),Object.defineProperty(B,"default",{enumerable:!0,value:Q}),2&F&&"string"!=typeof Q)for(var U in Q)I.d(B,U,function(F){return Q[F]}.bind(null,U));return B},I.n=function(Q){var F=Q&&Q.__esModule?function(){return Q.default}:function(){return Q};return I.d(F,"a",F),F},I.o=function(Q,F){return Object.prototype.hasOwnProperty.call(Q,F)},I.p="",I(I.s=4)}([function(module,exports){eval('(function() { module.exports = window["wc"]["wcBlocksRegistry"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgW1wid2NcIixcIndjQmxvY2tzUmVnaXN0cnlcIl0/MjUwNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1EQUFtRCxFQUFFIiwiZmlsZSI6IjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKSB7IG1vZHVsZS5leHBvcnRzID0gd2luZG93W1wid2NcIl1bXCJ3Y0Jsb2Nrc1JlZ2lzdHJ5XCJdOyB9KCkpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n')},function(module,exports){eval('(function() { module.exports = window["wp"]["htmlEntities"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgW1wid3BcIixcImh0bWxFbnRpdGllc1wiXT85MDIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsK0NBQStDLEVBQUUiLCJmaWxlIjoiMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpIHsgbW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dbXCJ3cFwiXVtcImh0bWxFbnRpdGllc1wiXTsgfSgpKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n')},function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getPayzenServerData; });\n/* harmony import */ var _woocommerce_settings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);\n/* harmony import */ var _woocommerce_settings__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_woocommerce_settings__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * Copyright © Lyra Network and contributors.\n * This file is part of PayZen plugin for WooCommerce. See COPYING.md for license details.\n *\n * @author Lyra Network (https://www.lyra.com/)\n * @author Geoffrey Crofte, Alsacréations (https://www.alsacreations.fr/)\n * @copyright Lyra Network and contributors\n * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License (GPL v2)\n */\n\n/**\n * External dependencies.\n */\n\n/**\n * Payzen data comes form the server passed on a global object.\n */\n\nvar getPayzenServerData = function getPayzenServerData(name) {\n var payzenServerData = Object(_woocommerce_settings__WEBPACK_IMPORTED_MODULE_0__["getSetting"])(name + \'_data\', null);\n\n if (!payzenServerData) {\n return;\n }\n\n return payzenServerData;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvYmxvY2tzL3BheXplbi11dGlscy5qcz9hOGI1Il0sIm5hbWVzIjpbImdldFBheXplblNlcnZlckRhdGEiLCJuYW1lIiwicGF5emVuU2VydmVyRGF0YSIsImdldFNldHRpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFFTyxJQUFNQSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBQUNDLElBQUQsRUFBVTtBQUN6QyxNQUFNQyxnQkFBZ0IsR0FBR0Msd0VBQVUsQ0FBRUYsSUFBSSxHQUFHLE9BQVQsRUFBa0IsSUFBbEIsQ0FBbkM7O0FBRUEsTUFBSSxDQUFFQyxnQkFBTixFQUF3QjtBQUNwQjtBQUNIOztBQUVELFNBQU9BLGdCQUFQO0FBQ0gsQ0FSTSIsImZpbGUiOiIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgTHlyYSBOZXR3b3JrIGFuZCBjb250cmlidXRvcnMuXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBQYXlaZW4gcGx1Z2luIGZvciBXb29Db21tZXJjZS4gU2VlIENPUFlJTkcubWQgZm9yIGxpY2Vuc2UgZGV0YWlscy5cbiAqXG4gKiBAYXV0aG9yICAgIEx5cmEgTmV0d29yayAoaHR0cHM6Ly93d3cubHlyYS5jb20vKVxuICogQGF1dGhvciAgICBHZW9mZnJleSBDcm9mdGUsIEFsc2FjcsOpYXRpb25zIChodHRwczovL3d3dy5hbHNhY3JlYXRpb25zLmZyLylcbiAqIEBjb3B5cmlnaHQgTHlyYSBOZXR3b3JrIGFuZCBjb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL29sZC1saWNlbnNlcy9ncGwtMi4wLmh0bWwgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCB2MilcbiAqL1xuXG4vKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuaW1wb3J0IHsgZ2V0U2V0dGluZyB9IGZyb20gJ0B3b29jb21tZXJjZS9zZXR0aW5ncyc7XG5cbi8qKlxuICogUGF5emVuIGRhdGEgY29tZXMgZm9ybSB0aGUgc2VydmVyIHBhc3NlZCBvbiBhIGdsb2JhbCBvYmplY3QuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFBheXplblNlcnZlckRhdGEgPSAobmFtZSkgPT4ge1xuICAgIGNvbnN0IHBheXplblNlcnZlckRhdGEgPSBnZXRTZXR0aW5nKCBuYW1lICsgJ19kYXRhJywgbnVsbCApO1xuXG4gICAgaWYgKCEgcGF5emVuU2VydmVyRGF0YSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHBheXplblNlcnZlckRhdGE7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n')},function(module,exports){eval('(function() { module.exports = window["wc"]["wcSettings"]; }());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgW1wid2NcIixcIndjU2V0dGluZ3NcIl0/YzFiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLDZDQUE2QyxFQUFFIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKSB7IG1vZHVsZS5leHBvcnRzID0gd2luZG93W1wid2NcIl1bXCJ3Y1NldHRpbmdzXCJdOyB9KCkpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///3\n')},function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _woocommerce_blocks_registry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var _woocommerce_blocks_registry__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_woocommerce_blocks_registry__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _wordpress_html_entities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);\n/* harmony import */ var _wordpress_html_entities__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_html_entities__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _payzen_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);\nvar _payzen_data$supports;\n\n/**\n * Copyright © Lyra Network and contributors.\n * This file is part of PayZen plugin for WooCommerce. See COPYING.md for license details.\n *\n * @author Lyra Network (https://www.lyra.com/)\n * @author Geoffrey Crofte, Alsacréations (https://www.alsacreations.fr/)\n * @copyright Lyra Network and contributors\n * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License (GPL v2)\n */\n\n/**\n * External dependencies.\n */\n\n\n/**\n * Internal dependencies.\n */\n\n\nvar PAYMENT_METHOD_NAME = 'payzenstd';\nvar payzen_data = Object(_payzen_utils__WEBPACK_IMPORTED_MODULE_2__[/* getPayzenServerData */ \"a\"])(PAYMENT_METHOD_NAME);\nvar submitButton = '.wc-block-components-checkout-place-order-button';\nvar smartbuttonMethod = '';\nvar smartbuttonAll = false;\nvar hideSmart = (payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.hide_smartbutton) && (payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.hide_smartbutton) === 'true';\nvar hideButton = false;\nvar savedData = false;\nvar newData = null;\n\nvar Content = function Content() {\n if (payzen_data !== null && payzen_data !== void 0 && payzen_data.payment_fields) {\n var fields = /*#__PURE__*/React.createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.payment_fields\n }\n });\n return /*#__PURE__*/React.createElement(\"div\", null, fields);\n } else {\n return Object(_wordpress_html_entities__WEBPACK_IMPORTED_MODULE_1__[\"decodeEntities\"])(payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.description);\n }\n};\n\nvar Label = function Label() {\n var styles = {\n divWidth: {\n width: '95%'\n },\n imgFloat: {\n \"float\": 'right'\n }\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n style: styles.divWidth\n }, /*#__PURE__*/React.createElement(\"span\", null, payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.title), /*#__PURE__*/React.createElement(\"img\", {\n style: styles.imgFloat,\n src: payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.logo_url,\n alt: payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.title\n }));\n};\n\nObject(_woocommerce_blocks_registry__WEBPACK_IMPORTED_MODULE_0__[\"registerPaymentMethod\"])({\n name: PAYMENT_METHOD_NAME,\n label: /*#__PURE__*/React.createElement(Label, null),\n ariaLabel: 'Payzen payment method',\n canMakePayment: function canMakePayment() {\n return true;\n },\n content: /*#__PURE__*/React.createElement(Content, null),\n edit: /*#__PURE__*/React.createElement(Content, null),\n supports: {\n features: (_payzen_data$supports = payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.supports) !== null && _payzen_data$supports !== void 0 ? _payzen_data$supports : []\n }\n});\n\nvar displayFields = function displayFields() {\n var checkedMethod = jQuery(\"input[type=radio][name=radio-control-wc-payment-method-options]:checked\").val();\n\n if (checkedMethod !== PAYMENT_METHOD_NAME) {\n return;\n }\n\n switch (payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.payment_mode) {\n case 'SMARTFORM':\n case 'SMARTFORMEXT':\n case 'SMARTFORMEXTNOLOGOS':\n if (payzen_data !== null && payzen_data !== void 0 && payzen_data.vars) {\n delete window.FORM_TOKEN;\n delete window.IDENTIFIER_FORM_TOKEN;\n delete window.PAYZEN_HIDE_SINGLE_BUTTON;\n window.PAYZEN_BUTTON_TEXT = jQuery(submitButton).text();\n eval(payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.vars);\n hideButton = window.PAYZEN_HIDE_SINGLE_BUTTON == true;\n KR.onFormReady(function () {\n if (hideSmart) {\n var element = jQuery(\".kr-smart-button\");\n\n if (element.length > 0) {\n smartbuttonMethod = element.attr(\"kr-payment-method\");\n element.hide();\n } else {\n element = jQuery(\".kr-smart-form-modal-button\");\n\n if (element.length > 0) {\n smartbuttonMethod = \"all\";\n element.hide();\n }\n }\n }\n });\n var observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.addedNodes.length > 0) {\n mutation.addedNodes.forEach(function (node) {\n if (node.className == \"wc-block-components-totals-item__value\") {\n refreshTempToken();\n }\n });\n }\n });\n });\n var target = document.querySelector('.wc-block-components-totals-footer-item');\n observer.observe(target, {\n characterData: true,\n childList: true,\n subtree: true\n });\n }\n\n break;\n\n default:\n break;\n }\n\n payzenUpdatePaymentBlock(true, PAYMENT_METHOD_NAME);\n};\n\nvar onButtonClick = function onButtonClick(e) {\n if (!jQuery(\"#radio-control-wc-payment-method-options-\" + PAYMENT_METHOD_NAME).is(\":checked\")) {\n return true;\n } // In case of form validation error, let WooCommerce deal with it.\n\n\n if (jQuery('div.wc-block-components-validation-error')[0]) {\n return true;\n }\n\n jQuery('.kr-form-error').html('');\n window.PAYZEN_BUTTON_TEXT = jQuery(submitButton).text();\n document.cookie = PAYMENT_METHOD_NAME + '_force_redir=; Max-Age=0; path=/; domain=' + location.host;\n document.cookie = 'payzen_use_identifier=; Max-Age=0; path=/; domain=' + location.host;\n\n if (jQuery(\"#payzen_use_identifier\")) {\n var use_identifier = jQuery(\"#payzen_use_identifier\").val();\n document.cookie = 'payzen_use_identifier=' + use_identifier + '; path=/';\n }\n\n switch (payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.payment_mode) {\n case 'MERCHANT':\n payzenstd_get_card();\n break;\n\n case 'SMARTFORM':\n case 'SMARTFORMEXT':\n case 'SMARTFORMEXTNOLOGOS':\n if (typeof window.FORM_TOKEN == 'undefined') {\n document.cookie = PAYMENT_METHOD_NAME + '_force_redir=\"true\"; path=/; domain=' + location.host;\n break;\n }\n\n var useIdentifier = jQuery(\"#payzen_use_identifier\").length && jQuery(\"#payzen_use_identifier\").val() === \"true\";\n var popin = jQuery(\".kr-smart-form-modal-button\").length > 0 || jQuery(\".kr-popin-button\").length > 0;\n\n if (!useIdentifier && !popin && !hideButton && !hideSmart) {\n return validateKR(KR);\n } else {\n submitForm(KR, popin, useIdentifier);\n break;\n }\n\n default:\n break;\n }\n};\n\nvar submitForm = function submitForm(KR) {\n var popin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var useIdentifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n jQuery.ajaxPrefilter(function (options, originalOptions, jqXHR) {\n newData = options.data;\n });\n var registerCard = jQuery('input[name=\"kr-do-register\"]').is(':checked');\n\n if (savedData && newData === savedData) {\n // Data in checkout page has not changed, no need to calculate token again.\n submitKR(KR, popin);\n } else {\n if (jQuery('div.wc-block-components-validation-error')[0]) {\n return true;\n }\n\n jQuery.ajax({\n method: 'POST',\n url: payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.token_url,\n data: {\n 'use_identifier': useIdentifier\n },\n success: function success(data) {\n var parsed = JSON.parse(data);\n KR.setFormConfig({\n language: window.PAYZEN_LANGUAGE,\n formToken: parsed.formToken\n }).then(function (v) {\n KR = v.KR;\n\n if (registerCard) {\n jQuery('input[name=\"kr-do-register\"]').attr('checked', 'checked');\n }\n\n savedData = newData;\n return submitKR(KR, popin);\n });\n }\n });\n return false;\n }\n};\n\nvar submitKR = function submitKR(KR, popin) {\n if (jQuery('div.wc-block-components-validation-error')[0]) {\n return true;\n }\n\n if (hideButton) {\n var element = jQuery('.kr-smart-button');\n\n if (element.length > 0) {\n smartbuttonMethod = element.attr('kr-payment-method');\n } else {\n element = jQuery('.kr-smart-form-modal-button');\n\n if (element.length > 0) {\n smartbuttonAll = true;\n }\n }\n }\n\n if (popin || smartbuttonAll) {\n KR.openPopin();\n unblock();\n } else if (hideButton) {\n KR.openSelectedPaymentMethod();\n unblock();\n } else if (smartbuttonMethod.length > 0) {\n KR.openPaymentMethod(smartbuttonMethod);\n unblock();\n } else {\n jQuery('#payzen_rest_processing').css('display', 'block');\n jQuery('ul.' + PAYMENT_METHOD_NAME + '-view-top li.block').hide();\n jQuery('ul.' + PAYMENT_METHOD_NAME + '-view-bottom').hide();\n KR.submit();\n }\n\n return false;\n};\n\nvar unblock = function unblock() {\n var button = document.querySelector(submitButton);\n button.removeAttribute(\"aria-disabled\");\n button.setAttribute(\"style\", \"\");\n button.classList.remove(\"wc-block-components-checkout-place-order-button--loading\");\n};\n\nvar validateKR = function validateKR(KR) {\n KR.validateForm().then(function (v) {\n submitForm(v.KR);\n })[\"catch\"](function (v) {\n // Display error message.\n var result = v.result;\n return result.doOnError();\n });\n return false;\n};\n\nvar refreshTempToken = function refreshTempToken() {\n if (jQuery(\"#radio-control-wc-payment-method-options-\" + PAYMENT_METHOD_NAME).is(\":checked\")) {\n jQuery.ajax({\n method: 'POST',\n url: payzen_data === null || payzen_data === void 0 ? void 0 : payzen_data.temporary_token_url,\n success: function success(data) {\n var parsed = JSON.parse(data);\n KR.setFormConfig({\n language: window.PAYZEN_LANGUAGE,\n formToken: parsed.formToken\n }).then(function (v) {\n KR = v.KR;\n });\n }\n });\n }\n};\n\nvar initFields = function initFields() {\n payzenWaitForElement('input[type=radio][name=radio-control-wc-payment-method-options]').then(function (elm) {\n displayFields();\n jQuery(submitButton).on('click', onButtonClick);\n jQuery('input[type=radio][name=radio-control-wc-payment-method-options]').change(function (e) {\n if (this.value === PAYMENT_METHOD_NAME) {\n displayFields();\n }\n });\n });\n};\n\njQuery(window).on('load', initFields);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvYmxvY2tzL3BheXplbnN0ZC5qcz83YjQxIl0sIm5hbWVzIjpbIlBBWU1FTlRfTUVUSE9EX05BTUUiLCJwYXl6ZW5fZGF0YSIsImdldFBheXplblNlcnZlckRhdGEiLCJzdWJtaXRCdXR0b24iLCJzbWFydGJ1dHRvbk1ldGhvZCIsInNtYXJ0YnV0dG9uQWxsIiwiaGlkZVNtYXJ0IiwiaGlkZV9zbWFydGJ1dHRvbiIsImhpZGVCdXR0b24iLCJzYXZlZERhdGEiLCJuZXdEYXRhIiwiQ29udGVudCIsInBheW1lbnRfZmllbGRzIiwiZmllbGRzIiwiX19odG1sIiwiZGVjb2RlRW50aXRpZXMiLCJkZXNjcmlwdGlvbiIsIkxhYmVsIiwic3R5bGVzIiwiZGl2V2lkdGgiLCJ3aWR0aCIsImltZ0Zsb2F0IiwidGl0bGUiLCJsb2dvX3VybCIsInJlZ2lzdGVyUGF5bWVudE1ldGhvZCIsIm5hbWUiLCJsYWJlbCIsImFyaWFMYWJlbCIsImNhbk1ha2VQYXltZW50IiwiY29udGVudCIsImVkaXQiLCJzdXBwb3J0cyIsImZlYXR1cmVzIiwiZGlzcGxheUZpZWxkcyIsImNoZWNrZWRNZXRob2QiLCJqUXVlcnkiLCJ2YWwiLCJwYXltZW50X21vZGUiLCJ2YXJzIiwid2luZG93IiwiRk9STV9UT0tFTiIsIklERU5USUZJRVJfRk9STV9UT0tFTiIsIlBBWVpFTl9ISURFX1NJTkdMRV9CVVRUT04iLCJQQVlaRU5fQlVUVE9OX1RFWFQiLCJ0ZXh0IiwiZXZhbCIsIktSIiwib25Gb3JtUmVhZHkiLCJlbGVtZW50IiwibGVuZ3RoIiwiYXR0ciIsImhpZGUiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJmb3JFYWNoIiwibXV0YXRpb24iLCJhZGRlZE5vZGVzIiwibm9kZSIsImNsYXNzTmFtZSIsInJlZnJlc2hUZW1wVG9rZW4iLCJ0YXJnZXQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJvYnNlcnZlIiwiY2hhcmFjdGVyRGF0YSIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJwYXl6ZW5VcGRhdGVQYXltZW50QmxvY2siLCJvbkJ1dHRvbkNsaWNrIiwiZSIsImlzIiwiaHRtbCIsImNvb2tpZSIsImxvY2F0aW9uIiwiaG9zdCIsInVzZV9pZGVudGlmaWVyIiwicGF5emVuc3RkX2dldF9jYXJkIiwidXNlSWRlbnRpZmllciIsInBvcGluIiwidmFsaWRhdGVLUiIsInN1Ym1pdEZvcm0iLCJhamF4UHJlZmlsdGVyIiwib3B0aW9ucyIsIm9yaWdpbmFsT3B0aW9ucyIsImpxWEhSIiwiZGF0YSIsInJlZ2lzdGVyQ2FyZCIsInN1Ym1pdEtSIiwiYWpheCIsIm1ldGhvZCIsInVybCIsInRva2VuX3VybCIsInN1Y2Nlc3MiLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJzZXRGb3JtQ29uZmlnIiwibGFuZ3VhZ2UiLCJQQVlaRU5fTEFOR1VBR0UiLCJmb3JtVG9rZW4iLCJ0aGVuIiwidiIsIm9wZW5Qb3BpbiIsInVuYmxvY2siLCJvcGVuU2VsZWN0ZWRQYXltZW50TWV0aG9kIiwib3BlblBheW1lbnRNZXRob2QiLCJjc3MiLCJzdWJtaXQiLCJidXR0b24iLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJ2YWxpZGF0ZUZvcm0iLCJyZXN1bHQiLCJkb09uRXJyb3IiLCJ0ZW1wb3JhcnlfdG9rZW5fdXJsIiwiaW5pdEZpZWxkcyIsInBheXplbldhaXRGb3JFbGVtZW50IiwiZWxtIiwib24iLCJjaGFuZ2UiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFDQTtBQUVBLElBQU1BLG1CQUFtQixHQUFHLFdBQTVCO0FBQ0EsSUFBSUMsV0FBVyxHQUFHQyxpRkFBbUIsQ0FBQ0YsbUJBQUQsQ0FBckM7QUFFQSxJQUFJRyxZ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QUZWO0FBR1J4QixhQUFPLEVBQUUsaUJBQVNQLElBQVQsRUFBZTtBQUNwQixZQUFJUSxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXVixJQUFYLENBQWI7QUFDQXhDLFVBQUUsQ0FBQ21ELGFBQUgsQ0FBaUI7QUFDYkMsa0JBQVEsRUFBRTNELE1BQU0sQ0FBQzRELGVBREo7QUFFYkMsbUJBQVMsRUFBRU4sTUFBTSxDQUFDTTtBQUZMLFNBQWpCLEVBR0dDLElBSEgsQ0FHUSxVQUFTQyxDQUFULEVBQVk7QUFDaEJ4RCxZQUFFLEdBQUd3RCxDQUFDLENBQUN4RCxFQUFQO0FBQ0gsU0FMRDtBQU1IO0FBWE8sS0FBWjtBQWFIO0FBQ0osQ0FoQkQ7O0FBa0JBLElBQUl3RSxVQUFVLEdBQUcsU0FBYkEsVUFBYSxHQUFXO0FBQ3hCQyxzQkFBb0IsQ0FBQyxpRUFBRCxDQUFwQixDQUF3RmxCLElBQXhGLENBQTZGLFVBQUNtQixHQUFELEVBQVM7QUFDbEd2RixpQkFBYTtBQUNiRSxVQUFNLENBQUNoQyxZQUFELENBQU4sQ0FBcUJzSCxFQUFyQixDQUF3QixPQUF4QixFQUFpQ3BELGFBQWpDO0FBRUFsQyxVQUFNLENBQUMsaUVBQUQsQ0FBTixDQUEwRXVGLE1BQTFFLENBQWlGLFVBQVNwRCxDQUFULEVBQVk7QUFDekYsVUFBSSxLQUFLcUQsS0FBTCxLQUFlM0gsbUJBQW5CLEVBQXdDO0FBQ3BDaUMscUJBQWE7QUFDaEI7QUFDSixLQUpEO0FBS0gsR0FURDtBQVVILENBWEQ7O0FBYUFFLE1BQU0sQ0FBQ0ksTUFBRCxDQUFOLENBQWVrRixFQUFmLENBQWtCLE1BQWxCLEVBQTBCSCxVQUExQiIsImZpbGUiOiI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgwqkgTHlyYSBOZXR3b3JrIGFuZCBjb250cmlidXRvcnMuXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBQYXlaZW4gcGx1Z2luIGZvciBXb29Db21tZXJjZS4gU2VlIENPUFlJTkcubWQgZm9yIGxpY2Vuc2UgZGV0YWlscy5cbiAqXG4gKiBAYXV0aG9yICAgIEx5cmEgTmV0d29yayAoaHR0cHM6Ly93d3cubHlyYS5jb20vKVxuICogQGF1dGhvciAgICBHZW9mZnJleSBDcm9mdGUsIEFsc2FjcsOpYXRpb25zIChodHRwczovL3d3dy5hbHNhY3JlYXRpb25zLmZyLylcbiAqIEBjb3B5cmlnaHQgTHlyYSBOZXR3b3JrIGFuZCBjb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL29sZC1saWNlbnNlcy9ncGwtMi4wLmh0bWwgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCB2MilcbiAqL1xuXG4vKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuaW1wb3J0IHsgcmVnaXN0ZXJQYXltZW50TWV0aG9kIH0gZnJvbSAnQHdvb2NvbW1lcmNlL2Jsb2Nrcy1yZWdpc3RyeSc7XG5pbXBvcnQgeyBkZWNvZGVFbnRpdGllcyB9IGZyb20gJ0B3b3JkcHJlc3MvaHRtbC1lbnRpdGllcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzLlxuICovXG5pbXBvcnQgeyBnZXRQYXl6ZW5TZXJ2ZXJEYXRhIH0gZnJvbSAnLi9wYXl6ZW4tdXRpbHMnO1xuXG5jb25zdCBQQVlNRU5UX01FVEhPRF9OQU1FID0gJ3BheXplbnN0ZCc7XG52YXIgcGF5emVuX2RhdGEgPSBnZXRQYXl6ZW5TZXJ2ZXJEYXRhKFBBWU1FTlRfTUVUSE9EX05BTUUpO1xuXG52YXIgc3VibWl0QnV0dG9uID0gJy53Yy1ibG9jay1jb21wb25lbnRzLWNoZWNrb3V0LXBsYWNlLW9yZGVyLWJ1dHRvbic7XG52YXIgc21hcnRidXR0b25NZXRob2QgPSAnJztcbnZhciBzbWFydGJ1dHRvbkFsbCA9IGZhbHNlO1xudmFyIGhpZGVTbWFydCA9IHBheXplbl9kYXRhPy5oaWRlX3NtYXJ0YnV0dG9uICYmIChwYXl6ZW5fZGF0YT8uaGlkZV9zbWFydGJ1dHRvbiA9PT0gJ3RydWUnKTtcbnZhciBoaWRlQnV0dG9uID0gZmFsc2U7XG5cbnZhciBzYXZlZERhdGEgPSBmYWxzZTtcbnZhciBuZXdEYXRhID0gbnVsbDtcblxuY29uc3QgQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAocGF5emVuX2RhdGE/LnBheW1lbnRfZmllbGRzKSB7XG4gICAgICAgIHZhciBmaWVsZHMgPSA8ZGl2IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7X19odG1sOiBwYXl6ZW5fZGF0YT8ucGF5bWVudF9maWVsZHN9fSAvPjtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7IGZpZWxkcyB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVjb2RlRW50aXRpZXMocGF5emVuX2RhdGE/LmRlc2NyaXB0aW9uKTtcbiAgICB9XG59O1xuXG52YXIgTGFiZWwgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICBkaXZXaWR0aDoge1xuICAgICAgICAgICAgd2lkdGg6ICc5NSUnXG4gICAgICAgIH0sXG4gICAgICAgIGltZ0Zsb2F0OiB7XG4gICAgICAgICAgICBmbG9hdDogJ3JpZ2h0J1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBzdHlsZT17IHN0eWxlcy5kaXZXaWR0aCB9PlxuICAgICAgICAgICAgPHNwYW4+eyBwYXl6ZW5fZGF0YT8udGl0bGV9PC9zcGFuPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIHN0eWxlPXsgc3R5bGVzLmltZ0Zsb2F0IH1cbiAgICAgICAgICAgICAgICBzcmM9eyBwYXl6ZW5fZGF0YT8ubG9nb191cmwgfVxuICAgICAgICAgICAgICAgIGFsdD17IHBheXplbl9kYXRhPy50aXRsZSB9XG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxucmVnaXN0ZXJQYXltZW50TWV0aG9kKHtcbiAgICBuYW1lOiBQQVlNRU5UX01FVEhPRF9OQU1FLFxuICAgIGxhYmVsOiA8TGFiZWwgLz4sXG4gICAgYXJpYUxhYmVsOiAnUGF5emVuIHBheW1lbnQgbWV0aG9kJyxcbiAgICBjYW5NYWtlUGF5bWVudDogKCkgPT4gdHJ1ZSxcbiAgICBjb250ZW50OiA8Q29udGVudCAvPixcbiAgICBlZGl0OiA8Q29udGVudCAvPixcbiAgICBzdXBwb3J0czoge1xuICAgICAgICBmZWF0dXJlczogcGF5emVuX2RhdGE/LnN1cHBvcnRzID8/IFtdLFxuICAgIH0sXG59KTtcblxudmFyIGRpc3BsYXlGaWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNoZWNrZWRNZXRob2QgPSBqUXVlcnkoXCJpbnB1dFt0eXBlPXJhZGlvXVtuYW1lPXJhZGlvLWNvbnRyb2wtd2MtcGF5bWVudC1tZXRob2Qtb3B0aW9uc106Y2hlY2tlZFwiKS52YWwoKTtcbiAgICBpZiAoY2hlY2tlZE1ldGhvZCAhPT0gUEFZTUVOVF9NRVRIT0RfTkFNRSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChwYXl6ZW5fZGF0YT8ucGF5bWVudF9tb2RlKSB7XG4gICAgICAgIGNhc2UgJ1NNQVJURk9STSc6XG4gICAgICAgIGNhc2UgJ1NNQVJURk9STUVYVCc6XG4gICAgICAgIGNhc2UgJ1NNQVJURk9STUVYVE5PTE9HT1MnOlxuICAgICAgICAgICAgaWYgKHBheXplbl9kYXRhPy52YXJzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlKHdpbmRvdy5GT1JNX1RPS0VOKTtcbiAgICAgICAgICAgICAgICBkZWxldGUod2luZG93LklERU5USUZJRVJfRk9STV9UT0tFTik7XG4gICAgICAgICAgICAgICAgZGVsZXRlKHdpbmRvdy5QQVlaRU5fSElERV9TSU5HTEVfQlVUVE9OKTtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5QQVlaRU5fQlVUVE9OX1RFWFQgPSBqUXVlcnkoc3VibWl0QnV0dG9uKS50ZXh0KCk7XG4gICAgICAgICAgICAgICAgZXZhbChwYXl6ZW5fZGF0YT8udmFycyk7XG5cbiAgICAgICAgICAgICAgICBoaWRlQnV0dG9uID0gKHdpbmRvdy5QQVlaRU5fSElERV9TSU5HTEVfQlVUVE9OID09IHRydWUpO1xuXG4gICAgICAgICAgICAgICAgS1Iub25Gb3JtUmVhZHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGlkZVNtYXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGpRdWVyeShcIi5rci1zbWFydC1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hcnRidXR0b25NZXRob2QgPSBlbGVtZW50LmF0dHIoXCJrci1wYXltZW50LW1ldGhvZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGpRdWVyeShcIi5rci1zbWFydC1mb3JtLW1vZGFsLWJ1dHRvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYXJ0YnV0dG9uTWV0aG9kID0gXCJhbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmNsYXNzTmFtZSA9PSBcIndjLWJsb2NrLWNvbXBvbmVudHMtdG90YWxzLWl0ZW1fX3ZhbHVlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUZW1wVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53Yy1ibG9jay1jb21wb25lbnRzLXRvdGFscy1mb290ZXItaXRlbScpO1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrOyBcblxuICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHBheXplblVwZGF0ZVBheW1lbnRCbG9jayh0cnVlLCBQQVlNRU5UX01FVEhPRF9OQU1FKTtcbn07XG5cbnZhciBvbkJ1dHRvbkNsaWNrID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoISBqUXVlcnkoXCIjcmFkaW8tY29udHJvbC13Yy1wYXltZW50LW1ldGhvZC1vcHRpb25zLVwiICsgUEFZTUVOVF9NRVRIT0RfTkFNRSkuaXMoXCI6Y2hlY2tlZFwiKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIG9mIGZvcm0gdmFsaWRhdGlvbiBlcnJvciwgbGV0IFdvb0NvbW1lcmNlIGRlYWwgd2l0aCBpdC5cbiAgICBpZiAoalF1ZXJ5KCdkaXYud2MtYmxvY2stY29tcG9uZW50cy12YWxpZGF0aW9uLWVycm9yJylbMF0pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgalF1ZXJ5KCcua3ItZm9ybS1lcnJvcicpLmh0bWwoJycpO1xuICAgIHdpbmRvdy5QQVlaRU5fQlVUVE9OX1RFWFQgPSBqUXVlcnkoc3VibWl0QnV0dG9uKS50ZXh0KCk7XG5cbiAgICBkb2N1bWVudC5jb29raWUgPSBQQVlNRU5UX01FVEhPRF9OQU1FICsgJ19mb3JjZV9yZWRpcj07IE1heC1BZ2U9MDsgcGF0aD0vOyBkb21haW49JyArIGxvY2F0aW9uLmhvc3Q7XG4gICAgZG9jdW1lbnQuY29va2llID0gJ3BheXplbl91c2VfaWRlbnRpZmllcj07IE1heC1BZ2U9MDsgcGF0aD0vOyBkb21haW49JyArIGxvY2F0aW9uLmhvc3Q7XG5cbiAgICBpZiAoalF1ZXJ5KFwiI3BheXplbl91c2VfaWRlbnRpZmllclwiKSkge1xuICAgICAgICBsZXQgdXNlX2lkZW50aWZpZXIgPSBqUXVlcnkoXCIjcGF5emVuX3VzZV9pZGVudGlmaWVyXCIpLnZhbCgpO1xuICAgICAgICBkb2N1bWVudC5jb29raWUgPSAncGF5emVuX3VzZV9pZGVudGlmaWVyPScgKyB1c2VfaWRlbnRpZmllciArICc7IHBhdGg9Lyc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwYXl6ZW5fZGF0YT8ucGF5bWVudF9tb2RlKSB7XG4gICAgICAgIGNhc2UgJ01FUkNIQU5UJzpcbiAgICAgICAgICAgIHBheXplbnN0ZF9nZXRfY2FyZCgpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnU01BUlRGT1JNJzpcbiAgICAgICAgY2FzZSAnU01BUlRGT1JNRVhUJzpcbiAgICAgICAgY2FzZSAnU01BUlRGT1JNRVhUTk9MT0dPUyc6XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5GT1JNX1RPS0VOID09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gUEFZTUVOVF9NRVRIT0RfTkFNRSArICdfZm9yY2VfcmVkaXI9XCJ0cnVlXCI7IHBhdGg9LzsgZG9tYWluPScgKyBsb2NhdGlvbi5ob3N0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdXNlSWRlbnRpZmllciA9IGpRdWVyeShcIiNwYXl6ZW5fdXNlX2lkZW50aWZpZXJcIikubGVuZ3RoICYmIGpRdWVyeShcIiNwYXl6ZW5fdXNlX2lkZW50aWZpZXJcIikudmFsKCkgPT09IFwidHJ1ZVwiO1xuICAgICAgICAgICAgdmFyIHBvcGluID0gKGpRdWVyeShcIi5rci1zbWFydC1mb3JtLW1vZGFsLWJ1dHRvblwiKS5sZW5ndGggPiAwKSB8fCAoalF1ZXJ5KFwiLmtyLXBvcGluLWJ1dHRvblwiKS5sZW5ndGggPiAwKTtcblxuICAgICAgICAgICAgaWYgKCEgdXNlSWRlbnRpZmllciAmJiAhIHBvcGluICYmICEgaGlkZUJ1dHRvbiAmJiAhIGhpZGVTbWFydCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUtSKEtSKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Rm9ybShLUiwgcG9waW4sIHVzZUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxufTtcblxudmFyIHN1Ym1pdEZvcm0gPSBmdW5jdGlvbiAoS1IsIHBvcGluID0gZmFsc2UsIHVzZUlkZW50aWZpZXIgPSBmYWxzZSkge1xuICAgIGpRdWVyeS5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIpIHtcbiAgICAgICAgbmV3RGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICB9KTtcblxuICAgIHZhciByZWdpc3RlckNhcmQgPSBqUXVlcnkoJ2lucHV0W25hbWU9XCJrci1kby1yZWdpc3RlclwiXScpLmlzKCc6Y2hlY2tlZCcpO1xuXG4gICAgaWYgKHNhdmVkRGF0YSAmJiAobmV3RGF0YSA9PT0gc2F2ZWREYXRhKSkge1xuICAgICAgICAvLyBEYXRhIGluIGNoZWNrb3V0IHBhZ2UgaGFzIG5vdCBjaGFuZ2VkLCBubyBuZWVkIHRvIGNhbGN1bGF0ZSB0b2tlbiBhZ2Fpbi5cbiAgICAgICAgc3VibWl0S1IoS1IsIHBvcGluKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoalF1ZXJ5KCdkaXYud2MtYmxvY2stY29tcG9uZW50cy12YWxpZGF0aW9uLWVycm9yJylbMF0pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgalF1ZXJ5LmFqYXgoe1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICB1cmw6IHBheXplbl9kYXRhPy50b2tlbl91cmwsXG4gICAgICAgICAgICBkYXRhOiB7ICd1c2VfaWRlbnRpZmllcic6IHVzZUlkZW50aWZpZXIgfSxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgcGFyc2VkID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICAgICAgICBLUi5zZXRGb3JtQ29uZmlnKHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHdpbmRvdy5QQVlaRU5fTEFOR1VBR0UsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Ub2tlbjogcGFyc2VkLmZvcm1Ub2tlblxuICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24odikge1xuICAgICAgICAgICAgICAgICAgICBLUiA9IHYuS1I7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdpc3RlckNhcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnaW5wdXRbbmFtZT1cImtyLWRvLXJlZ2lzdGVyXCJdJykuYXR0cignY2hlY2tlZCcsJ2NoZWNrZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNhdmVkRGF0YSA9IG5ld0RhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdEtSKEtSLCBwb3Bpbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59O1xuXG52YXIgc3VibWl0S1IgPSBmdW5jdGlvbiAoS1IsIHBvcGluKSB7XG4gICAgaWYgKGpRdWVyeSgnZGl2LndjLWJsb2NrLWNvbXBvbmVudHMtdmFsaWRhdGlvbi1lcnJvcicpWzBdKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChoaWRlQnV0dG9uKSB7XG4gICAgICAgIGxldCBlbGVtZW50ID0galF1ZXJ5KCcua3Itc21hcnQtYnV0dG9uJyk7XG5cbiAgICAgICAgaWYgKGVsZW1lbnQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgIHNtYXJ0YnV0dG9uTWV0aG9kID0gZWxlbWVudC5hdHRyKCdrci1wYXltZW50LW1ldGhvZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudCA9IGpRdWVyeSgnLmtyLXNtYXJ0LWZvcm0tbW9kYWwtYnV0dG9uJyk7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBzbWFydGJ1dHRvbkFsbCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocG9waW4gfHwgc21hcnRidXR0b25BbGwpIHtcbiAgICAgICAgS1Iub3BlblBvcGluKCk7XG4gICAgICAgIHVuYmxvY2soKTtcbiAgICB9IGVsc2UgaWYgKGhpZGVCdXR0b24pIHtcbiAgICAgICAgS1Iub3BlblNlbGVjdGVkUGF5bWVudE1ldGhvZCgpO1xuICAgICAgICB1bmJsb2NrKCk7XG4gICAgfSBlbHNlIGlmIChzbWFydGJ1dHRvbk1ldGhvZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIEtSLm9wZW5QYXltZW50TWV0aG9kKHNtYXJ0YnV0dG9uTWV0aG9kKTtcbiAgICAgICAgdW5ibG9jaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGpRdWVyeSgnI3BheXplbl9yZXN0X3Byb2Nlc3NpbmcnKS5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgICAgalF1ZXJ5KCd1bC4nICsgUEFZTUVOVF9NRVRIT0RfTkFNRSArICctdmlldy10b3AgbGkuYmxvY2snKS5oaWRlKCk7XG4gICAgICAgIGpRdWVyeSgndWwuJyArIFBBWU1FTlRfTUVUSE9EX05BTUUgKyAnLXZpZXctYm90dG9tJykuaGlkZSgpO1xuXG4gICAgICAgIEtSLnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbnZhciB1bmJsb2NrID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc3VibWl0QnV0dG9uKTtcbiAgICBidXR0b24ucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiKTtcbiAgICBidXR0b24uc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgXCJcIik7XG4gICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJ3Yy1ibG9jay1jb21wb25lbnRzLWNoZWNrb3V0LXBsYWNlLW9yZGVyLWJ1dHRvbi0tbG9hZGluZ1wiKTtcbn07XG5cbnZhciB2YWxpZGF0ZUtSID0gZnVuY3Rpb24oS1IpIHtcbiAgICBLUi52YWxpZGF0ZUZvcm0oKS50aGVuKGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgc3VibWl0Rm9ybSh2LktSKTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbih2KSB7XG4gICAgICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZS5cbiAgICAgICAgdmFyIHJlc3VsdCA9IHYucmVzdWx0O1xuICAgICAgICByZXR1cm4gcmVzdWx0LmRvT25FcnJvcigpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIHJlZnJlc2hUZW1wVG9rZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGpRdWVyeShcIiNyYWRpby1jb250cm9sLXdjLXBheW1lbnQtbWV0aG9kLW9wdGlvbnMtXCIgKyBQQVlNRU5UX01FVEhPRF9OQU1FKS5pcyhcIjpjaGVja2VkXCIpKSB7XG4gICAgICAgIGpRdWVyeS5hamF4KHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgdXJsOiBwYXl6ZW5fZGF0YT8udGVtcG9yYXJ5X3Rva2VuX3VybCxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgcGFyc2VkID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICAgICAgICBLUi5zZXRGb3JtQ29uZmlnKHtcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHdpbmRvdy5QQVlaRU5fTEFOR1VBR0UsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Ub2tlbjogcGFyc2VkLmZvcm1Ub2tlblxuICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24odikge1xuICAgICAgICAgICAgICAgICAgICBLUiA9IHYuS1I7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbnZhciBpbml0RmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgcGF5emVuV2FpdEZvckVsZW1lbnQoJ2lucHV0W3R5cGU9cmFkaW9dW25hbWU9cmFkaW8tY29udHJvbC13Yy1wYXltZW50LW1ldGhvZC1vcHRpb25zXScpLnRoZW4oKGVsbSkgPT4ge1xuICAgICAgICBkaXNwbGF5RmllbGRzKCk7XG4gICAgICAgIGpRdWVyeShzdWJtaXRCdXR0b24pLm9uKCdjbGljaycsIG9uQnV0dG9uQ2xpY2spO1xuXG4gICAgICAgIGpRdWVyeSgnaW5wdXRbdHlwZT1yYWRpb11bbmFtZT1yYWRpby1jb250cm9sLXdjLXBheW1lbnQtbWV0aG9kLW9wdGlvbnNdJykuY2hhbmdlKGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09PSBQQVlNRU5UX01FVEhPRF9OQU1FKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmpRdWVyeSh3aW5kb3cpLm9uKCdsb2FkJywgaW5pdEZpZWxkcyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")}]);