Plugin Directory

Changeset 2227828

Timestamp:
01/15/2020 02:27:16 PM (5 years ago)
Author:
wido
Message:

Update for 2.1.0 release

Location:
woo-paypalplus/trunk
Files:
16 added
25 edited

Legend:

Unmodified
Added
Removed
  • woo-paypalplus/trunk/paypalplus-woocommerce.php

    r2100278 r2227828  
    77 * Author: Inpsyde GmbH
    88 * Author URI: https://inpsyde.com/
    9  * Version: 2.0.4
     9 * Version: 2.
    1010 * WC requires at least: 3.2.0
    1111 * WC tested up to: 3.6.4
     
    1717namespace WCPayPalPlus;
    1818
    19 use WCPayPalPlus\Service\Container;
    20 use WCPayPalPlus\Service\ServiceProvidersCollection;
     19use Closure;
    2120
    22 const ACTION_ACTIVATION = 'wcpaypalplus.activation';
    23 const ACTION_ADD_SERVICE_PROVIDERS = 'wcpaypalplus.add_service_providers';
    24 const ACTION_LOG = 'wcpaypalplus.log';
    25 
    26 $bootstrap = \Closure::bind(function () {
     21$bootstrap = Closure::bind(
     22    function () {
    2723
    2824    /**
     
    3531            /** @noinspection PhpIncludeInspection */
    3632            require $autoloader;
     33
     34
    3735        }
    3836
    3937        return class_exists(PayPalPlus::class);
    40     }
    41 
    42     /**
    43      * Admin Message
    44      * @param $message
    45      */
    46     function adminNotice($message)
    47     {
    48         add_action('admin_notices', function () use ($message) {
    49             $class = 'notice notice-error';
    50             printf('<div class="%1$s"><p>%2$s</p></div>', esc_attr($class), esc_html($message));
    51         });
    52     }
    53 
    54     /**
    55      * @return bool
    56      */
    57     function versionCheck()
    58     {
    59         $minPhpVersion = '5.6';
    60         if (PHP_VERSION < $minPhpVersion) {
    61             adminNotice(
    62                 sprintf(
    63                     __(
    64                         'PayPal PLUS requires PHP version %1$1s or higher. You are running version %2$2s ',
    65                         'woo-paypalplus'
    66                     ),
    67                     $minPhpVersion,
    68                     PHP_VERSION
    69                 )
    70             );
    71 
    72             return false;
    73         }
    74 
    75         return true;
    76     }
    77 
    78     /**
    79      * @return bool
    80      */
    81     function wooCommerceCheck()
    82     {
    83         if (!function_exists('WC')) {
    84             adminNotice(__('PayPal PLUS requires WooCommerce to be active.', 'woo-paypalplus'));
    85             return false;
    86         }
    87 
    88         if (version_compare(wc()->version, '3.2.0', '<')) {
    89             adminNotice(
    90                 __(
    91                     'PayPal PLUS requires WooCommerce version 3.2 or higher.',
    92                     'woo-paypalplus'
    93                 )
    94             );
    95             return false;
    96         }
    97 
    98         return true;
    99     }
    100 
    101     /**
    102      * Bootstraps PayPal PLUS for WooCommerce
    103      *
    104      * @return bool
    105      *
    106      * @wp-hook plugins_loaded
    107      * @return bool
    108      * @throws \Exception
    109      */
    110     function bootstrap()
    111     {
    112         if (!versionCheck()) {
    113             return false;
    114         }
    115         if (!wooCommerceCheck()) {
    116             return false;
    117         }
    118         // Plugin doesn't work well with cron because of WooCommerce Session.
    119         // To now spread conditional here and there since we don't actually need to do stuffs
    120         // during cron I have disabled the plugin here.
    121         if (defined('DOING_CRON') && DOING_CRON) {
    122             return false;
    123         }
    124 
    125         /** @noinspection BadExceptionsProcessingInspection */
    126         try {
    127             /** @var Container $container */
    128             $container = resolve();
    129             $container = $container->shareValue(
    130                 PluginProperties::class,
    131                 new PluginProperties(__FILE__)
    132             );
    133 
    134             $providers = new ServiceProvidersCollection();
    135             $providers
    136                 ->add(new Install\ServiceProvider())
    137                 ->add(new Utils\ServiceProvider())
    138                 ->add(new Notice\ServiceProvider())
    139                 ->add(new Assets\ServiceProvider())
    140                 ->add(new Session\ServiceProvider())
    141                 ->add(new Setting\ServiceProvider())
    142                 ->add(new Request\ServiceProvider())
    143                 ->add(new Admin\ServiceProvider())
    144                 ->add(new Gateway\ServiceProvider())
    145                 ->add(new WC\ServiceProvider())
    146                 ->add(new Ipn\ServiceProvider())
    147                 ->add(new Pui\ServiceProvider())
    148                 ->add(new Log\ServiceProvider())
    149                 ->add(new Api\ServiceProvider())
    150                 ->add(new Order\ServiceProvider())
    151                 ->add(new Refund\ServiceProvider())
    152                 ->add(new Payment\ServiceProvider())
    153                 ->add(new ExpressCheckoutGateway\ServiceProvider())
    154                 ->add(new PlusGateway\ServiceProvider());
    155 
    156             $payPalPlus = new PayPalPlus($container, $providers);
    157 
    158             /**
    159              * Fires right before MultilingualPress gets bootstrapped.
    160              *
    161              * Hook here to add custom service providers via
    162              * `ServiceProviderCollection::add_service_provider()`.
    163              *
    164              * @param ServiceProvidersCollection $providers
    165              */
    166             do_action(ACTION_ADD_SERVICE_PROVIDERS, $providers);
    167 
    168             $bootstrapped = $payPalPlus->bootstrap();
    169 
    170             unset($providers);
    171         } catch (\Exception $exc) {
    172             do_action(ACTION_LOG, \WC_Log_Levels::ERROR, $exc->getMessage(), compact($exc));
    173 
    174             if (defined('WP_DEBUG') && WP_DEBUG) {
    175                 throw $exc;
    176             }
    177 
    178             $bootstrapped = false;
    179         }
    180 
    181         return $bootstrapped;
    18238    }
    18339
     
    18642    }
    18743
    188     add_action('plugins_loaded', __NAMESPACE__ . '\\bootstrap', 0);
     44    $bootstrapper = new Bootstrapper(resolve(), __FILE__);
     45
     46    add_action('plugins_loaded', [$bootstrapper, 'bootstrap'], 0);
    18947    add_action('init', function () {
    19048        load_plugin_textdomain('woo-paypalplus');
    19149    });
    192 }, null);
     50    },
     51    null
     52);
    19353
    19454$bootstrap();
  • woo-paypalplus/trunk/public/js/expressCheckout.min.js

    r2095829 r2227828  
    1 !function(Q){var n={};function F(t){if(n[t])return n[t].exports;var B=n[t]={i:t,l:!1,exports:{}};return Q[t].call(B.exports,B,B.exports,F),B.l=!0,B.exports}F.m=Q,F.c=n,F.d=function(Q,n,t){F.o(Q,n)||Object.defineProperty(Q,n,{enumerable:!0,get:t})},F.r=function(Q){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(Q,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(Q,"__esModule",{value:!0})},F.t=function(Q,n){if(1&n&&(Q=F(Q)),8&n)return Q;if(4&n&&"object"==typeof Q&&Q&&Q.__esModule)return Q;var t=Object.create(null);if(F.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:Q}),2&n&&"string"!=typeof Q)for(var B in Q)F.d(t,B,function(n){return Q[n]}.bind(null,B));return t},F.n=function(Q){var n=Q&&Q.__esModule?function(){return Q.default}:function(){return Q};return F.d(n,"a",n),n},F.o=function(Q,n){return Object.prototype.hasOwnProperty.call(Q,n)},F.p="",F(F.s=2)}([function(module,exports){eval("/**\n * Build Redirect Url By Ajax Request\n *\n * @param response\n * @param defaultUrl\n * @returns {string|*|string}\n */\nfunction redirectUrlByRequest(response) {\n  var defaultUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n  if (!'data' in response) {\n    return defaultUrl;\n  }\n\n  var redirectUrl = 'redirectUrl' in response.data ? response.data.redirectUrl : defaultUrl;\n  return redirectUrl;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvdXRpbHMuanM/YTM0MyJdLCJuYW1lcyI6WyJyZWRpcmVjdFVybEJ5UmVxdWVzdCIsInJlc3BvbnNlIiwiZGVmYXVsdFVybCIsInJlZGlyZWN0VXJsIiwiZGF0YSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7QUFPQSxTQUFTQSxvQkFBVCxDQUErQkMsUUFBL0IsRUFDQTtBQUFBLE1BRHlDQyxVQUN6Qyx1RUFEc0QsRUFDdEQ7O0FBQ0UsTUFBSSxDQUFDLE1BQUQsSUFBV0QsUUFBZixFQUF5QjtBQUN2QixXQUFPQyxVQUFQO0FBQ0Q7O0FBRUQsTUFBTUMsV0FBVyxHQUFJLGlCQUFpQkYsUUFBUSxDQUFDRyxJQUEzQixHQUFtQ0gsUUFBUSxDQUFDRyxJQUFULENBQWNELFdBQWpELEdBQStERCxVQUFuRjtBQUVBLFNBQU9DLFdBQVA7QUFDRCIsImZpbGUiOiIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdWlsZCBSZWRpcmVjdCBVcmwgQnkgQWpheCBSZXF1ZXN0XG4gKlxuICogQHBhcmFtIHJlc3BvbnNlXG4gKiBAcGFyYW0gZGVmYXVsdFVybFxuICogQHJldHVybnMge3N0cmluZ3wqfHN0cmluZ31cbiAqL1xuZnVuY3Rpb24gcmVkaXJlY3RVcmxCeVJlcXVlc3QgKHJlc3BvbnNlLCBkZWZhdWx0VXJsID0gJycpXG57XG4gIGlmICghJ2RhdGEnIGluIHJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRVcmxcbiAgfVxuXG4gIGNvbnN0IHJlZGlyZWN0VXJsID0gKCdyZWRpcmVjdFVybCcgaW4gcmVzcG9uc2UuZGF0YSkgPyByZXNwb25zZS5kYXRhLnJlZGlyZWN0VXJsIDogZGVmYXVsdFVybFxuXG4gIHJldHVybiByZWRpcmVjdFVybFxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n")},,function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./resources/js/expressCheckout/Request.js\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * Class Request\n *\n * @type {Request}\n */\nvar Request =\n/*#__PURE__*/\nfunction () {\n  // TODO Make the fields private if possible.\n  function Request(ajaxUrl, action) {\n    _classCallCheck(this, Request);\n\n    this.ajaxUrl = ajaxUrl;\n    this.action = action;\n  }\n\n  _createClass(Request, [{\n    key: \"submit\",\n    value: function submit(formData) {\n      var _this = this;\n\n      // TODO Extract specific data such as: action, nonce, task, context and\n      //      put the rest within a specific object.\n      //      Make a separation for data controls and real request data.\n      if (_.isEmpty(formData)) {\n        return Promise.reject('No formData to send to the server.');\n      }\n\n      var data = {};\n      formData = formData.concat([{\n        name: 'action',\n        value: encodeURIComponent(this.action)\n      }]);\n      formData.forEach(function (item) {\n        data[item.name] = item.value;\n      });\n      return new Promise(function (resolve, reject) {\n        jQuery.ajax({\n          traditional: true,\n          url: _this.ajaxUrl,\n          method: 'POST',\n          data: data,\n          error: reject,\n          success: resolve\n        });\n      });\n    }\n  }]);\n\n  return Request;\n}();\n/**\n * Request Factory\n *\n * @param ajaxUrl\n * @param action\n * @returns {Request}\n */\n\n\nfunction RequestFactory(ajaxUrl, action) {\n  if (!ajaxUrl || !action) {\n    throw new Error('Invalid parameters when construct Request instance');\n  }\n\n  var object = new Request(ajaxUrl, action);\n  Object.freeze(object);\n  return object;\n}\n// CONCATENATED MODULE: ./resources/js/expressCheckout/context.js\n/**\n * Retrieve Context by Element\n *\n * @param element\n * @returns {string}\n */\nfunction contextByElement(element) {\n  return 'context' in element.dataset ? element.dataset.context : '';\n}\n// CONCATENATED MODULE: ./resources/js/expressCheckout/form.js\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\nvar CART_BUTTON_SELECTOR = 'woo-paypalplus-checkout-nonce';\n/**\n * Create a FormData object by the closest form of the given element\n *\n * @param element\n * @returns {String}\n */\n\nfunction formDataByElement(element) {\n  var $form = jQuery(element).closest('form');\n\n  if (!$form.length) {\n    throw new Error('Unable to retrieve form. Form element does not exists or is not a parent of the given element.');\n  }\n\n  var formData = $form.serializeArray();\n  var context = contextByElement(element);\n  formData = formData.concat([{\n    name: 'context',\n    value: context\n  }]);\n  formData = formData.filter(function (item) {\n    return item.name !== 'add-to-cart';\n  });\n  return formData;\n}\n/**\n * Create a FormData for the Cart\n * WooCommerce mini cart doesn't have any form associated with it\n *\n * @param element\n * @returns {Array}\n */\n\nfunction formDataForCart(element) {\n  try {\n    var _retrieveNonceForCart = retrieveNonceForCart(element),\n        _retrieveNonceForCart2 = _slicedToArray(_retrieveNonceForCart, 2),\n        nonceName = _retrieveNonceForCart2[0],\n        nonceValue = _retrieveNonceForCart2[1];\n\n    var context = contextByElement(element);\n    return [{\n      name: 'context',\n      value: encodeURIComponent(context)\n    }, {\n      name: nonceName,\n      value: encodeURIComponent(nonceValue)\n    }];\n  } catch (err) {\n    return [];\n  }\n}\n\nfunction retrieveNonceForCart(element) {\n  var nonceElement = element.parentNode.querySelector(\".\".concat(CART_BUTTON_SELECTOR));\n\n  if (!nonceElement) {\n    throw new Error('Cannot build the form data, missing security nonce.');\n  }\n\n  var nonceName = 'noncename' in nonceElement.dataset ? nonceElement.dataset.noncename : '';\n  var nonceValue = 'noncevalue' in nonceElement.dataset ? nonceElement.dataset.noncevalue : '';\n\n  if (!nonceName || !nonceValue) {\n    throw new Error('Cannot build the form data, missing security nonce.');\n  }\n\n  return [nonceName, nonceValue];\n}\n// EXTERNAL MODULE: ./resources/js/utils.js\nvar utils = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./resources/js/expressCheckout/smartPaymentButton.js\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction smartPaymentButton_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction smartPaymentButton_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction smartPaymentButton_createClass(Constructor, protoProps, staticProps) { if (protoProps) smartPaymentButton_defineProperties(Constructor.prototype, protoProps); if (staticProps) smartPaymentButton_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar SINGLE_PRODUCT_BUTTON = 'paypalplus_ecs_single_product_button';\nvar CART_BUTTON = 'paypalplus_ecs_cart_button';\nvar TASK_CREATE_ORDER = 'createOrder';\nvar TASK_STORE_PAYMENT_DATA = 'storePaymentData';\n/**\n * Retrieve Form Data values by the Given Element and context\n *\n * @params element\n * @params {Array} context\n * @returns {Array}\n */\n\nfunction formDataByContext(element, validContexts) {\n  var formData = [];\n  var context = contextByElement(element);\n\n  if (-1 === validContexts.indexOf(context)) {\n    throw new Error('Invalid context when try to retrieve the form data during express checkout request.');\n  }\n\n  try {\n    switch (context) {\n      case 'cart':\n        formData = formDataForCart(element);\n        break;\n\n      case 'product':\n        formData = formDataByElement(element);\n        break;\n    }\n  } catch (err) {}\n\n  return formData;\n}\n/**\n * Class Smart Payment Button Renderer\n *\n * @type {SmartPaymentButtonRenderer}\n */\n\n\nvar smartPaymentButton_SmartPaymentButtonRenderer =\n/*#__PURE__*/\nfunction () {\n  /**\n   * Constructor\n   *\n   * @param buttonConfiguration\n   * @param validContexts\n   * @param request\n   */\n  function SmartPaymentButtonRenderer(buttonConfiguration, validContexts, request) {\n    smartPaymentButton_classCallCheck(this, SmartPaymentButtonRenderer);\n\n    this.buttonConfiguration = buttonConfiguration;\n    this.cancelUrl = this.buttonConfiguration.redirect_urls.cancel_url;\n    this.validContexts = validContexts;\n    this.request = request;\n  }\n  /**\n   * Render button for single product\n   */\n\n\n  smartPaymentButton_createClass(SmartPaymentButtonRenderer, [{\n    key: \"singleProductButtonRender\",\n    value: function singleProductButtonRender() {\n      var element = document.querySelector(\"#\".concat(SINGLE_PRODUCT_BUTTON));\n      element && this.render(element);\n    }\n    /**\n     * Render Button for Cart\n     */\n\n  }, {\n    key: \"cartButtonRender\",\n    value: function cartButtonRender() {\n      var element = document.querySelector(\"#\".concat(CART_BUTTON));\n      element && this.render(element);\n    }\n    /**\n     * Render Button for the Given Element\n     *\n     * @param element\n     * @returns {*}\n     */\n    // TODO Make it private\n\n  }, {\n    key: \"render\",\n    value: function render(element) {\n      var _this = this;\n\n      if (_.isUndefined(paypal)) {\n        return;\n      }\n\n      var button = element.querySelector('.paypal-button');\n      button && button.parentNode.removeChild(button);\n      paypal.Button.render(_objectSpread({}, this.buttonConfiguration, {\n        /**\n         * Do Payment\n         *\n         * @returns {*}\n         */\n        payment: function payment() {\n          var formData = formDataByContext(element, _this.validContexts);\n          formData = formData.concat([{\n            name: 'task',\n            value: TASK_CREATE_ORDER\n          }]);\n          return _this.request.submit(formData).then(function (response) {\n            if (!'data' in response) {\n              console.warn('Unable to process the payment, server did not response with valid data');\n\n              try {\n                window.location = _this.cancelUrl;\n              } catch (e) {\n                return;\n              }\n            }\n\n            if (!response.success) {\n              try {\n                window.location = utils[\"redirectUrlByRequest\"](response, _this.cancelUrl);\n              } catch (e) {\n                return;\n              }\n            }\n\n            var orderId = 'orderId' in response.data ? response.data.orderId : '';\n\n            if (!orderId) {\n              try {\n                window.location = utils[\"redirectUrlByRequest\"](response, _this.cancelUrl);\n              } catch (e) {\n                return;\n              }\n            }\n\n            return orderId;\n          }).catch(function (error) {\n            var textStatus = 'textStatus' in error ? error.textStatus : 'Unknown Error during payment';\n            console.warn(textStatus);\n          });\n        },\n\n        /**\n         * Execute Authorization\n         *\n         * @param {Array} data\n         * @param actions\n         * @returns {*}\n         */\n        onAuthorize: function onAuthorize(data, actions) {\n          // TODO Ensure return_url exists.\n          var formData = formDataByContext(element, _this.validContexts);\n          formData = formData.concat(formData, [{\n            name: 'task',\n            value: TASK_STORE_PAYMENT_DATA\n          }, {\n            name: 'orderId',\n            value: encodeURIComponent(data.OrderID)\n          }, {\n            name: 'PayerID',\n            value: encodeURIComponent(data.payerID)\n          }, {\n            name: 'paymentId',\n            value: encodeURIComponent(data.paymentID)\n          }, {\n            name: 'token',\n            value: encodeURIComponent(data.paymentToken)\n          }]);\n          return _this.request.submit(formData).then(function (response) {\n            if (!response.success) {\n              try {\n                window.location = utils[\"redirectUrlByRequest\"](response, _this.cancelUrl);\n              } catch (e) {\n                return;\n              }\n            }\n\n            var returnUrl = '';\n\n            if ('redirect_urls' in _this.buttonConfiguration && 'return_url' in _this.buttonConfiguration.redirect_urls) {\n              returnUrl = _this.buttonConfiguration.redirect_urls.return_url;\n            }\n\n            returnUrl && actions.redirect(null, returnUrl);\n          });\n        },\n\n        /**\n         * Perform Action when a Payment get Cancelled\n         *\n         * @param data\n         * @param actions\n         */\n        onCancel: function onCancel(data, actions) {\n          actions.close();\n          var cancelUrl = 'cancelUrl' in data ? data.cancelUrl : '';\n          cancelUrl && actions.redirect(null, cancelUrl);\n        },\n        onError: function onError(data, actions) {\n          console.log('ON ERROR', data, actions); // TODO Redirect to cart and show customizable notice with message.\n        }\n      }), element);\n    }\n  }]);\n\n  return SmartPaymentButtonRenderer;\n}();\n/**\n * Smart Payment Button Renderer Factory\n *\n * @param buttonConfiguration\n * @param validContexts\n * @param request\n * @returns {SmartPaymentButtonRenderer}\n * @constructor\n */\n\n\nfunction SmartPaymentButtonRendererFactory(buttonConfiguration, validContexts, request) {\n  var object = new smartPaymentButton_SmartPaymentButtonRenderer(buttonConfiguration, validContexts, request);\n  Object.freeze(object);\n  return object;\n}\n// CONCATENATED MODULE: ./resources/js/expressCheckout.js\n\n\n\n(function (jQuery, _, expressCheckoutData) {\n  /**\n   * Ensure the Global Express Checkout is a Valid Value\n   * @returns {boolean}\n   */\n  function isValidExpressCheckoutData() {\n    return !_.isUndefined(expressCheckoutData) && !_.isEmpty(expressCheckoutData);\n  }\n  /**\n   * Bootstrap Express checkout\n   * @returns void\n   */\n\n\n  function bootstrapExpressCheckout() {\n    if (!isValidExpressCheckoutData()) {\n      return;\n    }\n\n    var requestData = expressCheckoutData.request;\n\n    if (!_.isObject(requestData)) {\n      return;\n    }\n\n    var validContexts = expressCheckoutData.validContexts;\n\n    if (!_.isArray(validContexts)) {\n      return;\n    }\n\n    var request = RequestFactory(requestData.ajaxUrl, requestData.action);\n    var smartPaymentButton = SmartPaymentButtonRendererFactory(expressCheckoutData, validContexts, request);\n    smartPaymentButton.singleProductButtonRender();\n    smartPaymentButton.cartButtonRender();\n    jQuery(document.body).on('wc_fragments_refreshed wc_fragments_loaded removed_from_cart added_to_cart', function () {\n      smartPaymentButton.cartButtonRender();\n    });\n  }\n\n  window.addEventListener('load', function () {\n    bootstrapExpressCheckout();\n  });\n})(jQuery, window._, window.wooPayPalPlusExpressCheckout);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZXhwcmVzc0NoZWNrb3V0L1JlcXVlc3QuanM/OGQ1ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZXhwcmVzc0NoZWNrb3V0L2NvbnRleHQuanM/NjhkMyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZXhwcmVzc0NoZWNrb3V0L2Zvcm0uanM/ZWE1ZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZXhwcmVzc0NoZWNrb3V0L3NtYXJ0UGF5bWVudEJ1dHRvbi5qcz9mM2IyIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9leHByZXNzQ2hlY2tvdXQuanM/ZGNjMyJdLCJuYW1lcyI6WyJSZXF1ZXN0IiwiYWpheFVybCIsImFjdGlvbiIsImZvcm1EYXRhIiwiXyIsImlzRW1wdHkiLCJQcm9taXNlIiwicmVqZWN0IiwiZGF0YSIsImNvbmNhdCIsIm5hbWUiLCJ2YWx1ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImZvckVhY2giLCJpdGVtIiwicmVzb2x2ZSIsImpRdWVyeSIsImFqYXgiLCJ0cmFkaXRpb25hbCIsInVybCIsIm1ldGhvZCIsImVycm9yIiwic3VjY2VzcyIsIlJlcXVlc3RGYWN0b3J5IiwiRXJyb3IiLCJvYmplY3QiLCJPYmplY3QiLCJmcmVlemUiLCJjb250ZXh0QnlFbGVtZW50IiwiZWxlbWVudCIsImRhdGFzZXQiLCJjb250ZXh0IiwiQ0FSVF9CVVRUT05fU0VMRUNUT1IiLCJmb3JtRGF0YUJ5RWxlbWVudCIsIiRmb3JtIiwiY2xvc2VzdCIsImxlbmd0aCIsInNlcmlhbGl6ZUFycmF5IiwiZmlsdGVyIiwiZm9ybURhdGFGb3JDYXJ0IiwicmV0cmlldmVOb25jZUZvckNhcnQiLCJub25jZU5hbWUiLCJub25jZVZhbHVlIiwiZXJyIiwibm9uY2VFbGVtZW50IiwicGFyZW50Tm9kZSIsInF1ZXJ5U2VsZWN0b3IiLCJub25jZW5hbWUiLCJub25jZXZhbHVlIiwiU0lOR0xFX1BST0RVQ1RfQlVUVE9OIiwiQ0FSVF9CVVRUT04iLCJUQVNLX0NSRUFURV9PUkRFUiIsIlRBU0tfU1RPUkVfUEFZTUVOVF9EQVRBIiwiZm9ybURhdGFCeUNvbnRleHQiLCJ2YWxpZENvbnRleHRzIiwiaW5kZXhPZiIsIlNtYXJ0UGF5bWVudEJ1dHRvblJlbmRlcmVyIiwiYnV0dG9uQ29uZmlndXJhdGlvbiIsInJlcXVlc3QiLCJjYW5jZWxVcmwiLCJyZWRpcmVjdF91cmxzIiwiY2FuY2VsX3VybCIsImRvY3VtZW50IiwicmVuZGVyIiwiaXNVbmRlZmluZWQiLCJwYXlwYWwiLCJidXR0b24iLCJyZW1vdmVDaGlsZCIsIkJ1dHRvbiIsInBheW1lbnQiLCJzdWJtaXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJjb25zb2xlIiwid2FybiIsIndpbmRvdyIsImxvY2F0aW9uIiwiZSIsInV0aWxzIiwib3JkZXJJZCIsImNhdGNoIiwidGV4dFN0YXR1cyIsIm9uQXV0aG9yaXplIiwiYWN0aW9ucyIsIk9yZGVySUQiLCJwYXllcklEIiwicGF5bWVudElEIiwicGF5bWVudFRva2VuIiwicmV0dXJuVXJsIiwicmV0dXJuX3VybCIsInJlZGlyZWN0Iiwib25DYW5jZWwiLCJjbG9zZSIsIm9uRXJyb3IiLCJsb2ciLCJTbWFydFBheW1lbnRCdXR0b25SZW5kZXJlckZhY3RvcnkiLCJleHByZXNzQ2hlY2tvdXREYXRhIiwiaXNWYWxpZEV4cHJlc3NDaGVja291dERhdGEiLCJib290c3RyYXBFeHByZXNzQ2hlY2tvdXQiLCJyZXF1ZXN0RGF0YSIsImlzT2JqZWN0IiwiaXNBcnJheSIsInNtYXJ0UGF5bWVudEJ1dHRvbiIsInNpbmdsZVByb2R1Y3RCdXR0b25SZW5kZXIiLCJjYXJ0QnV0dG9uUmVuZGVyIiwiYm9keSIsIm9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsIndvb1BheVBhbFBsdXNFeHByZXNzQ2hlY2tvdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7OztBQUtBLElBQU1BLE9BQU87QUFBQTtBQUFBO0FBRVg7QUFDQSxtQkFBYUMsT0FBYixFQUFzQkMsTUFBdEIsRUFDQTtBQUFBOztBQUNFLFNBQUtELE9BQUwsR0FBZUEsT0FBZjtBQUNBLFNBQUtDLE1BQUwsR0FBY0EsTUFBZDtBQUNEOztBQVBVO0FBQUE7QUFBQSwyQkFTSEMsUUFURyxFQVVYO0FBQUE7O0FBQ0U7QUFDQTtBQUNBO0FBRUEsVUFBSUMsQ0FBQyxDQUFDQyxPQUFGLENBQVVGLFFBQVYsQ0FBSixFQUF5QjtBQUN2QixlQUFPRyxPQUFPLENBQUNDLE1BQVIsQ0FBZSxvQ0FBZixDQUFQO0FBQ0Q7O0FBRUQsVUFBTUMsSUFBSSxHQUFHLEVBQWI7QUFDQUwsY0FBUSxHQUFHQSxRQUFRLENBQUNNLE1BQVQsQ0FBZ0IsQ0FBQztBQUFDQyxZQUFJLEVBQUUsUUFBUDtBQUFpQkMsYUFBSyxFQUFFQyxrQkFBa0IsQ0FBQyxLQUFLVixNQUFOO0FBQTFDLE9BQUQsQ0FBaEIsQ0FBWDtBQUNBQyxjQUFRLENBQUNVLE9BQVQsQ0FBaUIsVUFBQUMsSUFBSSxFQUFJO0FBQUNOLFlBQUksQ0FBQ00sSUFBSSxDQUFDSixJQUFOLENBQUosR0FBa0JJLElBQUksQ0FBQ0gsS0FBdkI7QUFBNkIsT0FBdkQ7QUFFQSxhQUFPLElBQUlMLE9BQUosQ0FBWSxVQUFDUyxPQUFELEVBQVVSLE1BQVYsRUFBcUI7QUFDdENTLGNBQU0sQ0FBQ0MsSUFBUCxDQUFZO0FBQ1ZDLHFCQUFXLEVBQUUsSUFESDtBQUVWQyxhQUFHLEVBQUUsS0FBSSxDQUFDbEIsT0FGQTtBQUdWbUIsZ0JBQU0sRUFBRSxNQUhFO0FBSVZaLGNBQUksRUFBRUEsSUFKSTtBQUtWYSxlQUFLLEVBQUVkLE1BTEc7QUFNVmUsaUJBQU8sRUFBRVA7QUFOQyxTQUFaO0FBUUQsT0FUTSxDQUFQO0FBVUQ7QUFqQ1U7O0FBQUE7QUFBQSxHQUFiO0FBb0NBOzs7Ozs7Ozs7QUFPTyxTQUFTUSxjQUFULENBQXlCdEIsT0FBekIsRUFBa0NDLE1BQWxDLEVBQ1A7QUFDRSxNQUFJLENBQUNELE9BQUQsSUFBWSxDQUFDQyxNQUFqQixFQUF5QjtBQUN2QixVQUFNLElBQUlzQixLQUFKLENBQVUsb0RBQVYsQ0FBTjtBQUNEOztBQUVELE1BQUlDLE1BQU0sR0FBRyxJQUFJekIsT0FBSixDQUFZQyxPQUFaLEVBQXFCQyxNQUFyQixDQUFiO0FBQ0F3QixRQUFNLENBQUNDLE1BQVAsQ0FBY0YsTUFBZDtBQUVBLFNBQU9BLE1BQVA7QUFDRCxDOztBQzFERDs7Ozs7O0FBTU8sU0FBU0csZ0JBQVQsQ0FBMkJDLE9BQTNCLEVBQ1A7QUFDRSxTQUFRLGFBQWFBLE9BQU8sQ0FBQ0MsT0FBckIsR0FBK0JELE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkMsT0FBL0MsR0FBeUQsRUFBakU7QUFDRCxDOzs7Ozs7Ozs7O0FDVEQ7QUFFQSxJQUFNQyxvQkFBb0IsR0FBRywrQkFBN0I7QUFFQTs7Ozs7OztBQU1PLFNBQVNDLGlCQUFULENBQTRCSixPQUE1QixFQUNQO0FBQ0UsTUFBTUssS0FBSyxHQUFHbEIsTUFBTSxDQUFDYSxPQUFELENBQU4sQ0FBZ0JNLE9BQWhCLENBQXdCLE1BQXhCLENBQWQ7O0FBRUEsTUFBSSxDQUFDRCxLQUFLLENBQUNFLE1BQVgsRUFBbUI7QUFDakIsVUFBTSxJQUFJWixLQUFKLENBQ0osZ0dBREksQ0FBTjtBQUdEOztBQUVELE1BQUlyQixRQUFRLEdBQUcrQixLQUFLLENBQUNHLGNBQU4sRUFBZjtBQUNBLE1BQU1OLE9BQU8sR0FBR0gsZ0JBQWdCLENBQUNDLE9BQUQsQ0FBaEM7QUFFQTFCLFVBQVEsR0FBR0EsUUFBUSxDQUFDTSxNQUFULENBQWdCLENBQUM7QUFBQ0MsUUFBSSxFQUFFLFNBQVA7QUFBa0JDLFNBQUssRUFBRW9CO0FBQXpCLEdBQUQsQ0FBaEIsQ0FBWDtBQUNBNUIsVUFBUSxHQUFHQSxRQUFRLENBQUNtQyxNQUFULENBQWdCLFVBQUF4QixJQUFJO0FBQUEsV0FBSUEsSUFBSSxDQUFDSixJQUFMLEtBQWMsYUFBbEI7QUFBQSxHQUFwQixDQUFYO0FBRUEsU0FBT1AsUUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7O0FBT08sU0FBU29DLGVBQVQsQ0FBMEJWLE9BQTFCLEVBQ1A7QUFDRSxNQUFJO0FBQUEsZ0NBQzhCVyxvQkFBb0IsQ0FBQ1gsT0FBRCxDQURsRDtBQUFBO0FBQUEsUUFDS1ksU0FETDtBQUFBLFFBQ2dCQyxVQURoQjs7QUFFRixRQUFNWCxPQUFPLEdBQUdILGdCQUFnQixDQUFDQyxPQUFELENBQWhDO0FBRUEsV0FBTyxDQUNMO0FBQUNuQixVQUFJLEVBQUUsU0FBUDtBQUFrQkMsV0FBSyxFQUFFQyxrQkFBa0IsQ0FBQ21CLE9BQUQ7QUFBM0MsS0FESyxFQUVMO0FBQUNyQixVQUFJLEVBQUUrQixTQUFQO0FBQWtCOUIsV0FBSyxFQUFFQyxrQkFBa0IsQ0FBQzhCLFVBQUQ7QUFBM0MsS0FGSyxDQUFQO0FBSUQsR0FSRCxDQVFFLE9BQU9DLEdBQVAsRUFBWTtBQUNaLFdBQU8sRUFBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBU0gsb0JBQVQsQ0FBK0JYLE9BQS9CLEVBQ0E7QUFDRSxNQUFNZSxZQUFZLEdBQUdmLE9BQU8sQ0FBQ2dCLFVBQVIsQ0FBbUJDLGFBQW5CLFlBQXFDZCxvQkFBckMsRUFBckI7O0FBRUEsTUFBSSxDQUFDWSxZQUFMLEVBQW1CO0FBQ2pCLFVBQU0sSUFBSXBCLEtBQUosQ0FBVSxxREFBVixDQUFOO0FBQ0Q7O0FBRUQsTUFBTWlCLFNBQVMsR0FBSSxlQUFlRyxZQUFZLENBQUNkLE9BQTdCLEdBQXdDYyxZQUFZLENBQUNkLE9BQWIsQ0FBcUJpQixTQUE3RCxHQUF5RSxFQUEzRjtBQUNBLE1BQU1MLFVBQVUsR0FBSSxnQkFBZ0JFLFlBQVksQ0FBQ2QsT0FBOUIsR0FBeUNjLFlBQVksQ0FBQ2QsT0FBYixDQUFxQmtCLFVBQTlELEdBQTJFLEVBQTlGOztBQUVBLE1BQUksQ0FBQ1AsU0FBRCxJQUFjLENBQUNDLFVBQW5CLEVBQStCO0FBQzdCLFVBQU0sSUFBSWxCLEtBQUosQ0FBVSxxREFBVixDQUFOO0FBQ0Q7O0FBRUQsU0FBTyxDQUNMaUIsU0FESyxFQUVMQyxVQUZLLENBQVA7QUFJRCxDOzs7Ozs7Ozs7Ozs7Ozs7QUN0RUQ7QUFDQTtBQUNBO0FBRUEsSUFBTU8scUJBQXFCLEdBQUcsc0NBQTlCO0FBQ0EsSUFBTUMsV0FBVyxHQUFHLDRCQUFwQjtBQUVBLElBQU1DLGlCQUFpQixHQUFHLGFBQTFCO0FBQ0EsSUFBTUMsdUJBQXVCLEdBQUcsa0JBQWhDO0FBRUE7Ozs7Ozs7O0FBT0EsU0FBU0MsaUJBQVQsQ0FBNEJ4QixPQUE1QixFQUFxQ3lCLGFBQXJDLEVBQ0E7QUFDRSxNQUFJbkQsUUFBUSxHQUFHLEVBQWY7QUFDQSxNQUFNNEIsT0FBTyxHQUFHSCxnQkFBZ0IsQ0FBQ0MsT0FBRCxDQUFoQzs7QUFFQSxNQUFJLENBQUMsQ0FBRCxLQUFPeUIsYUFBYSxDQUFDQyxPQUFkLENBQXNCeEIsT0FBdEIsQ0FBWCxFQUEyQztBQUN6QyxVQUFNLElBQUlQLEtBQUosQ0FDSixxRkFESSxDQUFOO0FBR0Q7O0FBRUQsTUFBSTtBQUNGLFlBQVFPLE9BQVI7QUFDRSxXQUFLLE1BQUw7QUFDRTVCLGdCQUFRLEdBQUdvQyxlQUFlLENBQUNWLE9BQUQsQ0FBMUI7QUFDQTs7QUFDRixXQUFLLFNBQUw7QUFDRTFCLGdCQUFRLEdBQUc4QixpQkFBaUIsQ0FBQ0osT0FBRCxDQUE1QjtBQUNBO0FBTko7QUFRRCxHQVRELENBU0UsT0FBT2MsR0FBUCxFQUFZLENBQ2I7O0FBRUQsU0FBT3hDLFFBQVA7QUFDRDtBQUVEOzs7Ozs7O0FBS0EsSUFBTXFELDZDQUEwQjtBQUFBO0FBQUE7QUFFOUI7Ozs7Ozs7QUFPQSxzQ0FBYUMsbUJBQWIsRUFBa0NILGFBQWxDLEVBQWlESSxPQUFqRCxFQUNBO0FBQUE7O0FBQ0UsU0FBS0QsbUJBQUwsR0FBMkJBLG1CQUEzQjtBQUNBLFNBQUtFLFNBQUwsR0FBaUIsS0FBS0YsbUJBQUwsQ0FBeUJHLGFBQXpCLENBQXVDQyxVQUF4RDtBQUNBLFNBQUtQLGFBQUwsR0FBcUJBLGFBQXJCO0FBQ0EsU0FBS0ksT0FBTCxHQUFlQSxPQUFmO0FBQ0Q7QUFFRDs7Ozs7QUFqQjhCO0FBQUE7QUFBQSxnREFxQjlCO0FBQ0UsVUFBTTdCLE9BQU8sR0FBR2lDLFFBQVEsQ0FBQ2hCLGFBQVQsWUFBMkJHLHFCQUEzQixFQUFoQjtBQUNBcEIsYUFBTyxJQUFJLEtBQUtrQyxNQUFMLENBQVlsQyxPQUFaLENBQVg7QUFDRDtBQUVEOzs7O0FBMUI4QjtBQUFBO0FBQUEsdUNBOEI5QjtBQUNFLFVBQU1BLE9BQU8sR0FBR2lDLFFBQVEsQ0FBQ2hCLGFBQVQsWUFBMkJJLFdBQTNCLEVBQWhCO0FBQ0FyQixhQUFPLElBQUksS0FBS2tDLE1BQUwsQ0FBWWxDLE9BQVosQ0FBWDtBQUNEO0FBRUQ7Ozs7OztBQU1BOztBQXpDOEI7QUFBQTtBQUFBLDJCQTBDdEJBLE9BMUNzQixFQTJDOUI7QUFBQTs7QUFDRSxVQUFJekIsQ0FBQyxDQUFDNEQsV0FBRixDQUFjQyxNQUFkLENBQUosRUFBMkI7QUFDekI7QUFDRDs7QUFFRCxVQUFNQyxNQUFNLEdBQUdyQyxPQUFPLENBQUNpQixhQUFSLENBQXNCLGdCQUF0QixDQUFmO0FBQ0FvQixZQUFNLElBQUlBLE1BQU0sQ0FBQ3JCLFVBQVAsQ0FBa0JzQixXQUFsQixDQUE4QkQsTUFBOUIsQ0FBVjtBQUVBRCxZQUFNLENBQUNHLE1BQVAsQ0FBY0wsTUFBZCxtQkFDSyxLQUFLTixtQkFEVjtBQUdFOzs7OztBQUtBWSxlQUFPLEVBQUUsbUJBQU07QUFDYixjQUFJbEUsUUFBUSxHQUFHa0QsaUJBQWlCLENBQUN4QixPQUFELEVBQVUsS0FBSSxDQUFDeUIsYUFBZixDQUFoQztBQUNBbkQsa0JBQVEsR0FBR0EsUUFBUSxDQUFDTSxNQUFULENBQWdCLENBQUM7QUFBQ0MsZ0JBQUksRUFBRSxNQUFQO0FBQWVDLGlCQUFLLEVBQUV3QztBQUF0QixXQUFELENBQWhCLENBQVg7QUFFQSxpQkFBTyxLQUFJLENBQUNPLE9BQUwsQ0FDSlksTUFESSxDQUNHbkUsUUFESCxFQUVKb0UsSUFGSSxDQUVDLFVBQUFDLFFBQVEsRUFBSTtBQUNoQixnQkFBSSxDQUFDLE1BQUQsSUFBV0EsUUFBZixFQUF5QjtBQUN2QkMscUJBQU8sQ0FBQ0MsSUFBUixDQUFhLHdFQUFiOztBQUNBLGtCQUFJO0FBQ0ZDLHNCQUFNLENBQUNDLFFBQVAsR0FBa0IsS0FBSSxDQUFDakIsU0FBdkI7QUFDRCxlQUZELENBRUUsT0FBT2tCLENBQVAsRUFBVTtBQUNWO0FBQ0Q7QUFDRjs7QUFFRCxnQkFBSSxDQUFDTCxRQUFRLENBQUNsRCxPQUFkLEVBQXVCO0FBQ3JCLGtCQUFJO0FBQ0ZxRCxzQkFBTSxDQUFDQyxRQUFQLEdBQWtCRSw2QkFBQSxDQUEyQk4sUUFBM0IsRUFBcUMsS0FBSSxDQUFDYixTQUExQyxDQUFsQjtBQUNELGVBRkQsQ0FFRSxPQUFPa0IsQ0FBUCxFQUFVO0FBQ1Y7QUFDRDtBQUNGOztBQUVELGdCQUFNRSxPQUFPLEdBQUcsYUFBYVAsUUFBUSxDQUFDaEUsSUFBdEIsR0FBNkJnRSxRQUFRLENBQUNoRSxJQUFULENBQWN1RSxPQUEzQyxHQUFxRCxFQUFyRTs7QUFFQSxnQkFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDWixrQkFBSTtBQUNGSixzQkFBTSxDQUFDQyxRQUFQLEdBQWtCRSw2QkFBQSxDQUEyQk4sUUFBM0IsRUFBcUMsS0FBSSxDQUFDYixTQUExQyxDQUFsQjtBQUNELGVBRkQsQ0FFRSxPQUFPa0IsQ0FBUCxFQUFVO0FBQ1Y7QUFDRDtBQUNGOztBQUVELG1CQUFPRSxPQUFQO0FBQ0QsV0EvQkksRUErQkZDLEtBL0JFLENBK0JJLFVBQUEzRCxLQUFLLEVBQUk7QUFDaEIsZ0JBQU00RCxVQUFVLEdBQUcsZ0JBQWdCNUQsS0FBaEIsR0FBd0JBLEtBQUssQ0FBQzRELFVBQTlCLEdBQTJDLDhCQUE5RDtBQUNBUixtQkFBTyxDQUFDQyxJQUFSLENBQWFPLFVBQWI7QUFDRCxXQWxDSSxDQUFQO0FBbUNELFNBL0NIOztBQWlERTs7Ozs7OztBQU9BQyxtQkFBVyxFQUFFLHFCQUFDMUUsSUFBRCxFQUFPMkUsT0FBUCxFQUFtQjtBQUM5QjtBQUNBLGNBQUloRixRQUFRLEdBQUdrRCxpQkFBaUIsQ0FBQ3hCLE9BQUQsRUFBVSxLQUFJLENBQUN5QixhQUFmLENBQWhDO0FBRUFuRCxrQkFBUSxHQUFHQSxRQUFRLENBQUNNLE1BQVQsQ0FBZ0JOLFFBQWhCLEVBQTBCLENBQ25DO0FBQUNPLGdCQUFJLEVBQUUsTUFBUDtBQUFlQyxpQkFBSyxFQUFFeUM7QUFBdEIsV0FEbUMsRUFFbkM7QUFBQzFDLGdCQUFJLEVBQUUsU0FBUDtBQUFrQkMsaUJBQUssRUFBRUMsa0JBQWtCLENBQUNKLElBQUksQ0FBQzRFLE9BQU47QUFBM0MsV0FGbUMsRUFHbkM7QUFBQzFFLGdCQUFJLEVBQUUsU0FBUDtBQUFrQkMsaUJBQUssRUFBRUMsa0JBQWtCLENBQUNKLElBQUksQ0FBQzZFLE9BQU47QUFBM0MsV0FIbUMsRUFJbkM7QUFBQzNFLGdCQUFJLEVBQUUsV0FBUDtBQUFvQkMsaUJBQUssRUFBRUMsa0JBQWtCLENBQUNKLElBQUksQ0FBQzhFLFNBQU47QUFBN0MsV0FKbUMsRUFLbkM7QUFBQzVFLGdCQUFJLEVBQUUsT0FBUDtBQUFnQkMsaUJBQUssRUFBRUMsa0JBQWtCLENBQUNKLElBQUksQ0FBQytFLFlBQU47QUFBekMsV0FMbUMsQ0FBMUIsQ0FBWDtBQVFBLGlCQUFPLEtBQUksQ0FBQzdCLE9BQUwsQ0FBYVksTUFBYixDQUFvQm5FLFFBQXBCLEVBQThCb0UsSUFBOUIsQ0FBbUMsVUFBQUMsUUFBUSxFQUFJO0FBQ3BELGdCQUFJLENBQUNBLFFBQVEsQ0FBQ2xELE9BQWQsRUFBdUI7QUFDckIsa0JBQUk7QUFDRnFELHNCQUFNLENBQUNDLFFBQVAsR0FBa0JFLDZCQUFBLENBQTJCTixRQUEzQixFQUFxQyxLQUFJLENBQUNiLFNBQTFDLENBQWxCO0FBQ0QsZUFGRCxDQUVFLE9BQU9rQixDQUFQLEVBQVU7QUFDVjtBQUNEO0FBQ0Y7O0FBRUQsZ0JBQUlXLFNBQVMsR0FBRyxFQUFoQjs7QUFFQSxnQkFBSSxtQkFBbUIsS0FBSSxDQUFDL0IsbUJBQXhCLElBQ0MsZ0JBQWdCLEtBQUksQ0FBQ0EsbUJBQUwsQ0FBeUJHLGFBRDlDLEVBRUU7QUFDQTRCLHVCQUFTLEdBQUcsS0FBSSxDQUFDL0IsbUJBQUwsQ0FBeUJHLGFBQXpCLENBQXVDNkIsVUFBbkQ7QUFDRDs7QUFFREQscUJBQVMsSUFBSUwsT0FBTyxDQUFDTyxRQUFSLENBQWlCLElBQWpCLEVBQXVCRixTQUF2QixDQUFiO0FBQ0QsV0FsQk0sQ0FBUDtBQW1CRCxTQXZGSDs7QUF5RkU7Ozs7OztBQU1BRyxnQkFBUSxFQUFFLGtCQUFDbkYsSUFBRCxFQUFPMkUsT0FBUCxFQUFtQjtBQUMzQkEsaUJBQU8sQ0FBQ1MsS0FBUjtBQUNBLGNBQU1qQyxTQUFTLEdBQUcsZUFBZW5ELElBQWYsR0FBc0JBLElBQUksQ0FBQ21ELFNBQTNCLEdBQXVDLEVBQXpEO0FBQ0FBLG1CQUFTLElBQUl3QixPQUFPLENBQUNPLFFBQVIsQ0FBaUIsSUFBakIsRUFBdUIvQixTQUF2QixDQUFiO0FBQ0QsU0FuR0g7QUFxR0VrQyxlQUFPLEVBQUUsaUJBQUNyRixJQUFELEVBQU8yRSxPQUFQLEVBQW1CO0FBQzFCVixpQkFBTyxDQUFDcUIsR0FBUixDQUFZLFVBQVosRUFBd0J0RixJQUF4QixFQUE4QjJFLE9BQTlCLEVBRDBCLENBRTFCO0FBQ0Q7QUF4R0gsVUEwR0d0RCxPQTFHSDtBQTJHRDtBQTlKNkI7O0FBQUE7QUFBQSxHQUFoQztBQWlLQTs7Ozs7Ozs7Ozs7QUFTTyxTQUFTa0UsaUNBQVQsQ0FBNEN0QyxtQkFBNUMsRUFBaUVILGFBQWpFLEVBQWdGSSxPQUFoRixFQUNQO0FBQ0UsTUFBTWpDLE1BQU0sR0FBRyxJQUFJK0IsNkNBQUosQ0FBK0JDLG1CQUEvQixFQUFvREgsYUFBcEQsRUFBbUVJLE9BQW5FLENBQWY7QUFFQWhDLFFBQU0sQ0FBQ0MsTUFBUCxDQUFjRixNQUFkO0FBRUEsU0FBT0EsTUFBUDtBQUNELEM7O0FDak9EO0FBQ0E7O0FBRUEsQ0FBQyxVQUFVVCxNQUFWLEVBQWtCWixDQUFsQixFQUFxQjRGLG1CQUFyQixFQUEwQztBQUN6Qzs7OztBQUlBLFdBQVNDLDBCQUFULEdBQ0E7QUFDRSxXQUFPLENBQUM3RixDQUFDLENBQUM0RCxXQUFGLENBQWNnQyxtQkFBZCxDQUFELElBQXVDLENBQUM1RixDQUFDLENBQUNDLE9BQUYsQ0FBVTJGLG1CQUFWLENBQS9DO0FBQ0Q7QUFFRDs7Ozs7O0FBSUEsV0FBU0Usd0JBQVQsR0FDQTtBQUNFLFFBQUksQ0FBQ0QsMEJBQTBCLEVBQS9CLEVBQW1DO0FBQ2pDO0FBQ0Q7O0FBRUQsUUFBTUUsV0FBVyxHQUFHSCxtQkFBbUIsQ0FBQ3RDLE9BQXhDOztBQUNBLFFBQUksQ0FBQ3RELENBQUMsQ0FBQ2dHLFFBQUYsQ0FBV0QsV0FBWCxDQUFMLEVBQThCO0FBQzVCO0FBQ0Q7O0FBRUQsUUFBTTdDLGFBQWEsR0FBRzBDLG1CQUFtQixDQUFDMUMsYUFBMUM7O0FBQ0EsUUFBSSxDQUFDbEQsQ0FBQyxDQUFDaUcsT0FBRixDQUFVL0MsYUFBVixDQUFMLEVBQStCO0FBQzdCO0FBQ0Q7O0FBRUQsUUFBTUksT0FBTyxHQUFHbkMsY0FBYyxDQUFDNEUsV0FBVyxDQUFDbEcsT0FBYixFQUFzQmtHLFdBQVcsQ0FBQ2pHLE1BQWxDLENBQTlCO0FBQ0EsUUFBTW9HLGtCQUFrQixHQUFHUCxpQ0FBaUMsQ0FDMURDLG1CQUQwRCxFQUUxRDFDLGFBRjBELEVBRzFESSxPQUgwRCxDQUE1RDtBQU1BNEMsc0JBQWtCLENBQUNDLHlCQUFuQjtBQUNBRCxzQkFBa0IsQ0FBQ0UsZ0JBQW5CO0FBQ0F4RixVQUFNLENBQUM4QyxRQUFRLENBQUMyQyxJQUFWLENBQU4sQ0FBc0JDLEVBQXRCLENBQ0UsNEVBREYsRUFDZ0YsWUFBTTtBQUNsRkosd0JBQWtCLENBQUNFLGdCQUFuQjtBQUNELEtBSEg7QUFJRDs7QUFFRDdCLFFBQU0sQ0FBQ2dDLGdCQUFQLENBQXdCLE1BQXhCLEVBQWdDLFlBQU07QUFDcENULDRCQUF3QjtBQUN6QixHQUZEO0FBR0QsQ0FoREQsRUFnREdsRixNQWhESCxFQWdEVzJELE1BQU0sQ0FBQ3ZFLENBaERsQixFQWdEcUJ1RSxNQUFNLENBQUNpQyw0QkFoRDVCIiwiZmlsZSI6IjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENsYXNzIFJlcXVlc3RcbiAqXG4gKiBAdHlwZSB7UmVxdWVzdH1cbiAqL1xuY29uc3QgUmVxdWVzdCA9IGNsYXNzIFJlcXVlc3RcbntcbiAgLy8gVE9ETyBNYWtlIHRoZSBmaWVsZHMgcHJpdmF0ZSBpZiBwb3NzaWJsZS5cbiAgY29uc3RydWN0b3IgKGFqYXhVcmwsIGFjdGlvbilcbiAge1xuICAgIHRoaXMuYWpheFVybCA9IGFqYXhVcmxcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvblxuICB9XG5cbiAgc3VibWl0IChmb3JtRGF0YSlcbiAge1xuICAgIC8vIFRPRE8gRXh0cmFjdCBzcGVjaWZpYyBkYXRhIHN1Y2ggYXM6IGFjdGlvbiwgbm9uY2UsIHRhc2ssIGNvbnRleHQgYW5kXG4gICAgLy8gICAgICBwdXQgdGhlIHJlc3Qgd2l0aGluIGEgc3BlY2lmaWMgb2JqZWN0LlxuICAgIC8vICAgICAgTWFrZSBhIHNlcGFyYXRpb24gZm9yIGRhdGEgY29udHJvbHMgYW5kIHJlYWwgcmVxdWVzdCBkYXRhLlxuXG4gICAgaWYgKF8uaXNFbXB0eShmb3JtRGF0YSkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnTm8gZm9ybURhdGEgdG8gc2VuZCB0byB0aGUgc2VydmVyLicpXG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIGZvcm1EYXRhID0gZm9ybURhdGEuY29uY2F0KFt7bmFtZTogJ2FjdGlvbicsIHZhbHVlOiBlbmNvZGVVUklDb21wb25lbnQodGhpcy5hY3Rpb24pfV0pXG4gICAgZm9ybURhdGEuZm9yRWFjaChpdGVtID0+IHtkYXRhW2l0ZW0ubmFtZV0gPSBpdGVtLnZhbHVlfSlcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgIHRyYWRpdGlvbmFsOiB0cnVlLFxuICAgICAgICB1cmw6IHRoaXMuYWpheFVybCxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgIHN1Y2Nlc3M6IHJlc29sdmUsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBSZXF1ZXN0IEZhY3RvcnlcbiAqXG4gKiBAcGFyYW0gYWpheFVybFxuICogQHBhcmFtIGFjdGlvblxuICogQHJldHVybnMge1JlcXVlc3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0RmFjdG9yeSAoYWpheFVybCwgYWN0aW9uKVxue1xuICBpZiAoIWFqYXhVcmwgfHwgIWFjdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwYXJhbWV0ZXJzIHdoZW4gY29uc3RydWN0IFJlcXVlc3QgaW5zdGFuY2UnKVxuICB9XG5cbiAgbGV0IG9iamVjdCA9IG5ldyBSZXF1ZXN0KGFqYXhVcmwsIGFjdGlvbilcbiAgT2JqZWN0LmZyZWV6ZShvYmplY3QpXG5cbiAgcmV0dXJuIG9iamVjdFxufVxuIiwiLyoqXG4gKiBSZXRyaWV2ZSBDb250ZXh0IGJ5IEVsZW1lbnRcbiAqXG4gKiBAcGFyYW0gZWxlbWVudFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRCeUVsZW1lbnQgKGVsZW1lbnQpXG57XG4gIHJldHVybiAoJ2NvbnRleHQnIGluIGVsZW1lbnQuZGF0YXNldCA/IGVsZW1lbnQuZGF0YXNldC5jb250ZXh0IDogJycpXG59XG4iLCJpbXBvcnQgeyBjb250ZXh0QnlFbGVtZW50IH0gZnJvbSAnLi9jb250ZXh0J1xuXG5jb25zdCBDQVJUX0JVVFRPTl9TRUxFQ1RPUiA9ICd3b28tcGF5cGFscGx1cy1jaGVja291dC1ub25jZSdcblxuLyoqXG4gKiBDcmVhdGUgYSBGb3JtRGF0YSBvYmplY3QgYnkgdGhlIGNsb3Nlc3QgZm9ybSBvZiB0aGUgZ2l2ZW4gZWxlbWVudFxuICpcbiAqIEBwYXJhbSBlbGVtZW50XG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybURhdGFCeUVsZW1lbnQgKGVsZW1lbnQpXG57XG4gIGNvbnN0ICRmb3JtID0galF1ZXJ5KGVsZW1lbnQpLmNsb3Nlc3QoJ2Zvcm0nKVxuXG4gIGlmICghJGZvcm0ubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1VuYWJsZSB0byByZXRyaWV2ZSBmb3JtLiBGb3JtIGVsZW1lbnQgZG9lcyBub3QgZXhpc3RzIG9yIGlzIG5vdCBhIHBhcmVudCBvZiB0aGUgZ2l2ZW4gZWxlbWVudC4nLFxuICAgIClcbiAgfVxuXG4gIGxldCBmb3JtRGF0YSA9ICRmb3JtLnNlcmlhbGl6ZUFycmF5KClcbiAgY29uc3QgY29udGV4dCA9IGNvbnRleHRCeUVsZW1lbnQoZWxlbWVudClcblxuICBmb3JtRGF0YSA9IGZvcm1EYXRhLmNvbmNhdChbe25hbWU6ICdjb250ZXh0JywgdmFsdWU6IGNvbnRleHR9XSlcbiAgZm9ybURhdGEgPSBmb3JtRGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgIT09ICdhZGQtdG8tY2FydCcpXG5cbiAgcmV0dXJuIGZvcm1EYXRhXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgRm9ybURhdGEgZm9yIHRoZSBDYXJ0XG4gKiBXb29Db21tZXJjZSBtaW5pIGNhcnQgZG9lc24ndCBoYXZlIGFueSBmb3JtIGFzc29jaWF0ZWQgd2l0aCBpdFxuICpcbiAqIEBwYXJhbSBlbGVtZW50XG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtRGF0YUZvckNhcnQgKGVsZW1lbnQpXG57XG4gIHRyeSB7XG4gICAgY29uc3QgW25vbmNlTmFtZSwgbm9uY2VWYWx1ZV0gPSByZXRyaWV2ZU5vbmNlRm9yQ2FydChlbGVtZW50KVxuICAgIGNvbnN0IGNvbnRleHQgPSBjb250ZXh0QnlFbGVtZW50KGVsZW1lbnQpXG5cbiAgICByZXR1cm4gW1xuICAgICAge25hbWU6ICdjb250ZXh0JywgdmFsdWU6IGVuY29kZVVSSUNvbXBvbmVudChjb250ZXh0KX0sXG4gICAgICB7bmFtZTogbm9uY2VOYW1lLCB2YWx1ZTogZW5jb2RlVVJJQ29tcG9uZW50KG5vbmNlVmFsdWUpfSxcbiAgICBdXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlTm9uY2VGb3JDYXJ0IChlbGVtZW50KVxue1xuICBjb25zdCBub25jZUVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvcihgLiR7Q0FSVF9CVVRUT05fU0VMRUNUT1J9YClcblxuICBpZiAoIW5vbmNlRWxlbWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGJ1aWxkIHRoZSBmb3JtIGRhdGEsIG1pc3Npbmcgc2VjdXJpdHkgbm9uY2UuJylcbiAgfVxuXG4gIGNvbnN0IG5vbmNlTmFtZSA9ICgnbm9uY2VuYW1lJyBpbiBub25jZUVsZW1lbnQuZGF0YXNldCkgPyBub25jZUVsZW1lbnQuZGF0YXNldC5ub25jZW5hbWUgOiAnJ1xuICBjb25zdCBub25jZVZhbHVlID0gKCdub25jZXZhbHVlJyBpbiBub25jZUVsZW1lbnQuZGF0YXNldCkgPyBub25jZUVsZW1lbnQuZGF0YXNldC5ub25jZXZhbHVlIDogJydcblxuICBpZiAoIW5vbmNlTmFtZSB8fCAhbm9uY2VWYWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGJ1aWxkIHRoZSBmb3JtIGRhdGEsIG1pc3Npbmcgc2VjdXJpdHkgbm9uY2UuJylcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgbm9uY2VOYW1lLFxuICAgIG5vbmNlVmFsdWUsXG4gIF1cbn1cbiIsImltcG9ydCB7IGZvcm1EYXRhQnlFbGVtZW50LCBmb3JtRGF0YUZvckNhcnQgfSBmcm9tICcuL2Zvcm0nXG5pbXBvcnQgeyBjb250ZXh0QnlFbGVtZW50IH0gZnJvbSAnLi9jb250ZXh0J1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi4vdXRpbHMnXG5cbmNvbnN0IFNJTkdMRV9QUk9EVUNUX0JVVFRPTiA9ICdwYXlwYWxwbHVzX2Vjc19zaW5nbGVfcHJvZHVjdF9idXR0b24nXG5jb25zdCBDQVJUX0JVVFRPTiA9ICdwYXlwYWxwbHVzX2Vjc19jYXJ0X2J1dHRvbidcblxuY29uc3QgVEFTS19DUkVBVEVfT1JERVIgPSAnY3JlYXRlT3JkZXInXG5jb25zdCBUQVNLX1NUT1JFX1BBWU1FTlRfREFUQSA9ICdzdG9yZVBheW1lbnREYXRhJ1xuXG4vKipcbiAqIFJldHJpZXZlIEZvcm0gRGF0YSB2YWx1ZXMgYnkgdGhlIEdpdmVuIEVsZW1lbnQgYW5kIGNvbnRleHRcbiAqXG4gKiBAcGFyYW1zIGVsZW1lbnRcbiAqIEBwYXJhbXMge0FycmF5fSBjb250ZXh0XG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmZ1bmN0aW9uIGZvcm1EYXRhQnlDb250ZXh0IChlbGVtZW50LCB2YWxpZENvbnRleHRzKVxue1xuICBsZXQgZm9ybURhdGEgPSBbXVxuICBjb25zdCBjb250ZXh0ID0gY29udGV4dEJ5RWxlbWVudChlbGVtZW50KVxuXG4gIGlmICgtMSA9PT0gdmFsaWRDb250ZXh0cy5pbmRleE9mKGNvbnRleHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0ludmFsaWQgY29udGV4dCB3aGVuIHRyeSB0byByZXRyaWV2ZSB0aGUgZm9ybSBkYXRhIGR1cmluZyBleHByZXNzIGNoZWNrb3V0IHJlcXVlc3QuJyxcbiAgICApXG4gIH1cblxuICB0cnkge1xuICAgIHN3aXRjaCAoY29udGV4dCkge1xuICAgICAgY2FzZSAnY2FydCc6XG4gICAgICAgIGZvcm1EYXRhID0gZm9ybURhdGFGb3JDYXJ0KGVsZW1lbnQpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdwcm9kdWN0JzpcbiAgICAgICAgZm9ybURhdGEgPSBmb3JtRGF0YUJ5RWxlbWVudChlbGVtZW50KVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gIH1cblxuICByZXR1cm4gZm9ybURhdGFcbn1cblxuLyoqXG4gKiBDbGFzcyBTbWFydCBQYXltZW50IEJ1dHRvbiBSZW5kZXJlclxuICpcbiAqIEB0eXBlIHtTbWFydFBheW1lbnRCdXR0b25SZW5kZXJlcn1cbiAqL1xuY29uc3QgU21hcnRQYXltZW50QnV0dG9uUmVuZGVyZXIgPSBjbGFzcyBTbWFydFBheW1lbnRCdXR0b25SZW5kZXJlclxue1xuICAvKipcbiAgICogQ29uc3RydWN0b3JcbiAgICpcbiAgICogQHBhcmFtIGJ1dHRvbkNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHZhbGlkQ29udGV4dHNcbiAgICogQHBhcmFtIHJlcXVlc3RcbiAgICovXG4gIGNvbnN0cnVjdG9yIChidXR0b25Db25maWd1cmF0aW9uLCB2YWxpZENvbnRleHRzLCByZXF1ZXN0KVxuICB7XG4gICAgdGhpcy5idXR0b25Db25maWd1cmF0aW9uID0gYnV0dG9uQ29uZmlndXJhdGlvblxuICAgIHRoaXMuY2FuY2VsVXJsID0gdGhpcy5idXR0b25Db25maWd1cmF0aW9uLnJlZGlyZWN0X3VybHMuY2FuY2VsX3VybFxuICAgIHRoaXMudmFsaWRDb250ZXh0cyA9IHZhbGlkQ29udGV4dHNcbiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGJ1dHRvbiBmb3Igc2luZ2xlIHByb2R1Y3RcbiAgICovXG4gIHNpbmdsZVByb2R1Y3RCdXR0b25SZW5kZXIgKClcbiAge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtTSU5HTEVfUFJPRFVDVF9CVVRUT059YClcbiAgICBlbGVtZW50ICYmIHRoaXMucmVuZGVyKGVsZW1lbnQpXG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIEJ1dHRvbiBmb3IgQ2FydFxuICAgKi9cbiAgY2FydEJ1dHRvblJlbmRlciAoKVxuICB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke0NBUlRfQlVUVE9OfWApXG4gICAgZWxlbWVudCAmJiB0aGlzLnJlbmRlcihlbGVtZW50KVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBCdXR0b24gZm9yIHRoZSBHaXZlbiBFbGVtZW50XG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEByZXR1cm5zIHsqfVxuICAgKi9cbiAgLy8gVE9ETyBNYWtlIGl0IHByaXZhdGVcbiAgcmVuZGVyIChlbGVtZW50KVxuICB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQocGF5cGFsKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgYnV0dG9uID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucGF5cGFsLWJ1dHRvbicpXG4gICAgYnV0dG9uICYmIGJ1dHRvbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGJ1dHRvbilcblxuICAgIHBheXBhbC5CdXR0b24ucmVuZGVyKHtcbiAgICAgIC4uLnRoaXMuYnV0dG9uQ29uZmlndXJhdGlvbixcblxuICAgICAgLyoqXG4gICAgICAgKiBEbyBQYXltZW50XG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMgeyp9XG4gICAgICAgKi9cbiAgICAgIHBheW1lbnQ6ICgpID0+IHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0gZm9ybURhdGFCeUNvbnRleHQoZWxlbWVudCwgdGhpcy52YWxpZENvbnRleHRzKVxuICAgICAgICBmb3JtRGF0YSA9IGZvcm1EYXRhLmNvbmNhdChbe25hbWU6ICd0YXNrJywgdmFsdWU6IFRBU0tfQ1JFQVRFX09SREVSfV0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFxuICAgICAgICAgIC5zdWJtaXQoZm9ybURhdGEpXG4gICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKCEnZGF0YScgaW4gcmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gcHJvY2VzcyB0aGUgcGF5bWVudCwgc2VydmVyIGRpZCBub3QgcmVzcG9uc2Ugd2l0aCB2YWxpZCBkYXRhJylcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSB0aGlzLmNhbmNlbFVybFxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXRpbHMucmVkaXJlY3RVcmxCeVJlcXVlc3QocmVzcG9uc2UsIHRoaXMuY2FuY2VsVXJsKVxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgb3JkZXJJZCA9ICdvcmRlcklkJyBpbiByZXNwb25zZS5kYXRhID8gcmVzcG9uc2UuZGF0YS5vcmRlcklkIDogJydcblxuICAgICAgICAgICAgaWYgKCFvcmRlcklkKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXRpbHMucmVkaXJlY3RVcmxCeVJlcXVlc3QocmVzcG9uc2UsIHRoaXMuY2FuY2VsVXJsKVxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9yZGVySWRcbiAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0U3RhdHVzID0gJ3RleHRTdGF0dXMnIGluIGVycm9yID8gZXJyb3IudGV4dFN0YXR1cyA6ICdVbmtub3duIEVycm9yIGR1cmluZyBwYXltZW50J1xuICAgICAgICAgICAgY29uc29sZS53YXJuKHRleHRTdGF0dXMpXG4gICAgICAgICAgfSlcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogRXhlY3V0ZSBBdXRob3JpemF0aW9uXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtBcnJheX0gZGF0YVxuICAgICAgICogQHBhcmFtIGFjdGlvbnNcbiAgICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAgICovXG4gICAgICBvbkF1dGhvcml6ZTogKGRhdGEsIGFjdGlvbnMpID0+IHtcbiAgICAgICAgLy8gVE9ETyBFbnN1cmUgcmV0dXJuX3VybCBleGlzdHMuXG4gICAgICAgIGxldCBmb3JtRGF0YSA9IGZvcm1EYXRhQnlDb250ZXh0KGVsZW1lbnQsIHRoaXMudmFsaWRDb250ZXh0cylcblxuICAgICAgICBmb3JtRGF0YSA9IGZvcm1EYXRhLmNvbmNhdChmb3JtRGF0YSwgW1xuICAgICAgICAgIHtuYW1lOiAndGFzaycsIHZhbHVlOiBUQVNLX1NUT1JFX1BBWU1FTlRfREFUQX0sXG4gICAgICAgICAge25hbWU6ICdvcmRlcklkJywgdmFsdWU6IGVuY29kZVVSSUNvbXBvbmVudChkYXRhLk9yZGVySUQpfSxcbiAgICAgICAgICB7bmFtZTogJ1BheWVySUQnLCB2YWx1ZTogZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEucGF5ZXJJRCl9LFxuICAgICAgICAgIHtuYW1lOiAncGF5bWVudElkJywgdmFsdWU6IGVuY29kZVVSSUNvbXBvbmVudChkYXRhLnBheW1lbnRJRCl9LFxuICAgICAgICAgIHtuYW1lOiAndG9rZW4nLCB2YWx1ZTogZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEucGF5bWVudFRva2VuKX0sXG4gICAgICAgIF0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdC5zdWJtaXQoZm9ybURhdGEpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXRpbHMucmVkaXJlY3RVcmxCeVJlcXVlc3QocmVzcG9uc2UsIHRoaXMuY2FuY2VsVXJsKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcmV0dXJuVXJsID0gJydcblxuICAgICAgICAgIGlmICgncmVkaXJlY3RfdXJscycgaW4gdGhpcy5idXR0b25Db25maWd1cmF0aW9uXG4gICAgICAgICAgICAmJiAncmV0dXJuX3VybCcgaW4gdGhpcy5idXR0b25Db25maWd1cmF0aW9uLnJlZGlyZWN0X3VybHNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVyblVybCA9IHRoaXMuYnV0dG9uQ29uZmlndXJhdGlvbi5yZWRpcmVjdF91cmxzLnJldHVybl91cmxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm5VcmwgJiYgYWN0aW9ucy5yZWRpcmVjdChudWxsLCByZXR1cm5VcmwpXG4gICAgICAgIH0pXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFBlcmZvcm0gQWN0aW9uIHdoZW4gYSBQYXltZW50IGdldCBDYW5jZWxsZWRcbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAgICogQHBhcmFtIGFjdGlvbnNcbiAgICAgICAqL1xuICAgICAgb25DYW5jZWw6IChkYXRhLCBhY3Rpb25zKSA9PiB7XG4gICAgICAgIGFjdGlvbnMuY2xvc2UoKVxuICAgICAgICBjb25zdCBjYW5jZWxVcmwgPSAnY2FuY2VsVXJsJyBpbiBkYXRhID8gZGF0YS5jYW5jZWxVcmwgOiAnJ1xuICAgICAgICBjYW5jZWxVcmwgJiYgYWN0aW9ucy5yZWRpcmVjdChudWxsLCBjYW5jZWxVcmwpXG4gICAgICB9LFxuXG4gICAgICBvbkVycm9yOiAoZGF0YSwgYWN0aW9ucykgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnT04gRVJST1InLCBkYXRhLCBhY3Rpb25zKVxuICAgICAgICAvLyBUT0RPIFJlZGlyZWN0IHRvIGNhcnQgYW5kIHNob3cgY3VzdG9taXphYmxlIG5vdGljZSB3aXRoIG1lc3NhZ2UuXG4gICAgICB9LFxuXG4gICAgfSwgZWxlbWVudClcbiAgfVxufVxuXG4vKipcbiAqIFNtYXJ0IFBheW1lbnQgQnV0dG9uIFJlbmRlcmVyIEZhY3RvcnlcbiAqXG4gKiBAcGFyYW0gYnV0dG9uQ29uZmlndXJhdGlvblxuICogQHBhcmFtIHZhbGlkQ29udGV4dHNcbiAqIEBwYXJhbSByZXF1ZXN0XG4gKiBAcmV0dXJucyB7U21hcnRQYXltZW50QnV0dG9uUmVuZGVyZXJ9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNtYXJ0UGF5bWVudEJ1dHRvblJlbmRlcmVyRmFjdG9yeSAoYnV0dG9uQ29uZmlndXJhdGlvbiwgdmFsaWRDb250ZXh0cywgcmVxdWVzdClcbntcbiAgY29uc3Qgb2JqZWN0ID0gbmV3IFNtYXJ0UGF5bWVudEJ1dHRvblJlbmRlcmVyKGJ1dHRvbkNvbmZpZ3VyYXRpb24sIHZhbGlkQ29udGV4dHMsIHJlcXVlc3QpXG5cbiAgT2JqZWN0LmZyZWV6ZShvYmplY3QpXG5cbiAgcmV0dXJuIG9iamVjdFxufVxuIiwiaW1wb3J0IHsgUmVxdWVzdEZhY3RvcnkgfSBmcm9tICcuL2V4cHJlc3NDaGVja291dC9SZXF1ZXN0J1xuaW1wb3J0IHsgU21hcnRQYXltZW50QnV0dG9uUmVuZGVyZXJGYWN0b3J5IH0gZnJvbSAnLi9leHByZXNzQ2hlY2tvdXQvc21hcnRQYXltZW50QnV0dG9uJ1xuXG4oZnVuY3Rpb24gKGpRdWVyeSwgXywgZXhwcmVzc0NoZWNrb3V0RGF0YSkge1xuICAvKipcbiAgICogRW5zdXJlIHRoZSBHbG9iYWwgRXhwcmVzcyBDaGVja291dCBpcyBhIFZhbGlkIFZhbHVlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZnVuY3Rpb24gaXNWYWxpZEV4cHJlc3NDaGVja291dERhdGEgKClcbiAge1xuICAgIHJldHVybiAhXy5pc1VuZGVmaW5lZChleHByZXNzQ2hlY2tvdXREYXRhKSAmJiAhXy5pc0VtcHR5KGV4cHJlc3NDaGVja291dERhdGEpXG4gIH1cblxuICAvKipcbiAgICogQm9vdHN0cmFwIEV4cHJlc3MgY2hlY2tvdXRcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgZnVuY3Rpb24gYm9vdHN0cmFwRXhwcmVzc0NoZWNrb3V0ICgpXG4gIHtcbiAgICBpZiAoIWlzVmFsaWRFeHByZXNzQ2hlY2tvdXREYXRhKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0gZXhwcmVzc0NoZWNrb3V0RGF0YS5yZXF1ZXN0XG4gICAgaWYgKCFfLmlzT2JqZWN0KHJlcXVlc3REYXRhKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRDb250ZXh0cyA9IGV4cHJlc3NDaGVja291dERhdGEudmFsaWRDb250ZXh0c1xuICAgIGlmICghXy5pc0FycmF5KHZhbGlkQ29udGV4dHMpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gUmVxdWVzdEZhY3RvcnkocmVxdWVzdERhdGEuYWpheFVybCwgcmVxdWVzdERhdGEuYWN0aW9uKVxuICAgIGNvbnN0IHNtYXJ0UGF5bWVudEJ1dHRvbiA9IFNtYXJ0UGF5bWVudEJ1dHRvblJlbmRlcmVyRmFjdG9yeShcbiAgICAgIGV4cHJlc3NDaGVja291dERhdGEsXG4gICAgICB2YWxpZENvbnRleHRzLFxuICAgICAgcmVxdWVzdCxcbiAgICApXG5cbiAgICBzbWFydFBheW1lbnRCdXR0b24uc2luZ2xlUHJvZHVjdEJ1dHRvblJlbmRlcigpXG4gICAgc21hcnRQYXltZW50QnV0dG9uLmNhcnRCdXR0b25SZW5kZXIoKVxuICAgIGpRdWVyeShkb2N1bWVudC5ib2R5KS5vbihcbiAgICAgICd3Y19mcmFnbWVudHNfcmVmcmVzaGVkIHdjX2ZyYWdtZW50c19sb2FkZWQgcmVtb3ZlZF9mcm9tX2NhcnQgYWRkZWRfdG9fY2FydCcsICgpID0+IHtcbiAgICAgICAgc21hcnRQYXltZW50QnV0dG9uLmNhcnRCdXR0b25SZW5kZXIoKVxuICAgICAgfSlcbiAgfVxuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgIGJvb3RzdHJhcEV4cHJlc3NDaGVja291dCgpXG4gIH0pXG59KShqUXVlcnksIHdpbmRvdy5fLCB3aW5kb3cud29vUGF5UGFsUGx1c0V4cHJlc3NDaGVja291dClcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///2\n")}]);
     1!function(Q){var n={};function F(t){if(n[t])return n[t].exports;var =\n//# sourceURL=webpack-internal:///2\n")}]);
    22//# sourceMappingURL=expressCheckout.min.js.map
  • woo-paypalplus/trunk/public/js/front.min.js

    r2095829 r2227828  
    1 !function(n){var e={};function Q(B){if(e[B])return e[B].exports;var t=e[B]={i:B,l:!1,exports:{}};return n[B].call(t.exports,t,t.exports,Q),t.l=!0,t.exports}Q.m=n,Q.c=e,Q.d=function(n,e,B){Q.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:B})},Q.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},Q.t=function(n,e){if(1&e&&(n=Q(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var B=Object.create(null);if(Q.r(B),Object.defineProperty(B,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var t in n)Q.d(B,t,function(e){return n[e]}.bind(null,t));return B},Q.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return Q.d(e,"a",e),e},Q.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},Q.p="",Q(Q.s=4)}({4:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./resources/js/plusFrameView.js\nvar FRAME_SELECTOR = 'ppplus';\n/**\n * Retrieve the configuration from the json string attached to an element\n * @param frameElement\n * @returns {*}\n */\n\nfunction appConfigurationFromElement(frameElement) {\n  if (!frameElement) {\n    return null;\n  }\n\n  try {\n    return JSON.parse(frameElement.dataset.config);\n  } catch (e) {\n    return null;\n  }\n}\n/**\n * Setup the PayPal Application\n * @returns {*}\n */\n\n\nfunction bootstrapPayPalApp() {\n  var frameElement = document.querySelector(\"#\".concat(FRAME_SELECTOR));\n  var appConfiguration = appConfigurationFromElement(frameElement);\n\n  if (typeof PAYPAL === 'undefined') {\n    return;\n  }\n\n  if (!frameElement || !appConfiguration) {\n    return;\n  }\n\n  return PAYPAL.apps.PPP(appConfiguration);\n}\n// CONCATENATED MODULE: ./resources/js/front.js\n\n\n(function (jQuery, _) {\n  window.addEventListener('load', function () {\n    // Isn't possible to listen on a jQuery event by using `addEventListener`\n    jQuery(document.body).on('updated_checkout', function () {\n      bootstrapPayPalApp();\n    });\n  });\n})(jQuery, _);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvcGx1c0ZyYW1lVmlldy5qcz8wNWFlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9mcm9udC5qcz8xNGE4Il0sIm5hbWVzIjpbIkZSQU1FX1NFTEVDVE9SIiwiYXBwQ29uZmlndXJhdGlvbkZyb21FbGVtZW50IiwiZnJhbWVFbGVtZW50IiwiSlNPTiIsInBhcnNlIiwiZGF0YXNldCIsImNvbmZpZyIsImUiLCJib290c3RyYXBQYXlQYWxBcHAiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJhcHBDb25maWd1cmF0aW9uIiwiUEFZUEFMIiwiYXBwcyIsIlBQUCIsImpRdWVyeSIsIl8iLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiYm9keSIsIm9uIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNQSxjQUFjLEdBQUcsUUFBdkI7QUFFQTs7Ozs7O0FBS0EsU0FBU0MsMkJBQVQsQ0FBc0NDLFlBQXRDLEVBQ0E7QUFDRSxNQUFJLENBQUNBLFlBQUwsRUFBbUI7QUFDakIsV0FBTyxJQUFQO0FBQ0Q7O0FBRUQsTUFBSTtBQUNGLFdBQU9DLElBQUksQ0FBQ0MsS0FBTCxDQUFXRixZQUFZLENBQUNHLE9BQWIsQ0FBcUJDLE1BQWhDLENBQVA7QUFDRCxHQUZELENBRUUsT0FBT0MsQ0FBUCxFQUFVO0FBQ1YsV0FBTyxJQUFQO0FBQ0Q7QUFDRjtBQUVEOzs7Ozs7QUFJTyxTQUFTQyxrQkFBVCxHQUNQO0FBQ0UsTUFBTU4sWUFBWSxHQUFHTyxRQUFRLENBQUNDLGFBQVQsWUFBMkJWLGNBQTNCLEVBQXJCO0FBQ0EsTUFBTVcsZ0JBQWdCLEdBQUdWLDJCQUEyQixDQUFDQyxZQUFELENBQXBEOztBQUVBLE1BQUksT0FBT1UsTUFBUCxLQUFrQixXQUF0QixFQUFtQztBQUNqQztBQUNEOztBQUNELE1BQUksQ0FBQ1YsWUFBRCxJQUFpQixDQUFDUyxnQkFBdEIsRUFBd0M7QUFDdEM7QUFDRDs7QUFFRCxTQUFPQyxNQUFNLENBQUNDLElBQVAsQ0FBWUMsR0FBWixDQUFnQkgsZ0JBQWhCLENBQVA7QUFDRCxDOztBQ3JDRDs7QUFFQSxDQUFDLFVBQVVJLE1BQVYsRUFBa0JDLENBQWxCLEVBQXFCO0FBQ3BCQyxRQUFNLENBQUNDLGdCQUFQLENBQXdCLE1BQXhCLEVBQWdDLFlBQU07QUFDcEM7QUFDQUgsVUFBTSxDQUFDTixRQUFRLENBQUNVLElBQVYsQ0FBTixDQUFzQkMsRUFBdEIsQ0FBeUIsa0JBQXpCLEVBQTZDLFlBQU07QUFDakRaLHdCQUFrQjtBQUNuQixLQUZEO0FBR0QsR0FMRDtBQU1ELENBUEQsRUFPR08sTUFQSCxFQU9XQyxDQVBYIiwiZmlsZSI6IjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBGUkFNRV9TRUxFQ1RPUiA9ICdwcHBsdXMnXG5cbi8qKlxuICogUmV0cmlldmUgdGhlIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUganNvbiBzdHJpbmcgYXR0YWNoZWQgdG8gYW4gZWxlbWVudFxuICogQHBhcmFtIGZyYW1lRWxlbWVudFxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGFwcENvbmZpZ3VyYXRpb25Gcm9tRWxlbWVudCAoZnJhbWVFbGVtZW50KVxue1xuICBpZiAoIWZyYW1lRWxlbWVudCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGZyYW1lRWxlbWVudC5kYXRhc2V0LmNvbmZpZylcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBTZXR1cCB0aGUgUGF5UGFsIEFwcGxpY2F0aW9uXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcFBheVBhbEFwcCAoKVxue1xuICBjb25zdCBmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtGUkFNRV9TRUxFQ1RPUn1gKVxuICBjb25zdCBhcHBDb25maWd1cmF0aW9uID0gYXBwQ29uZmlndXJhdGlvbkZyb21FbGVtZW50KGZyYW1lRWxlbWVudClcblxuICBpZiAodHlwZW9mIFBBWVBBTCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm5cbiAgfVxuICBpZiAoIWZyYW1lRWxlbWVudCB8fCAhYXBwQ29uZmlndXJhdGlvbikge1xuICAgIHJldHVyblxuICB9XG5cbiAgcmV0dXJuIFBBWVBBTC5hcHBzLlBQUChhcHBDb25maWd1cmF0aW9uKVxufVxuIiwiaW1wb3J0IHsgYm9vdHN0cmFwUGF5UGFsQXBwIH0gZnJvbSAnLi9wbHVzRnJhbWVWaWV3J1xuXG4oZnVuY3Rpb24gKGpRdWVyeSwgXykge1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAvLyBJc24ndCBwb3NzaWJsZSB0byBsaXN0ZW4gb24gYSBqUXVlcnkgZXZlbnQgYnkgdXNpbmcgYGFkZEV2ZW50TGlzdGVuZXJgXG4gICAgalF1ZXJ5KGRvY3VtZW50LmJvZHkpLm9uKCd1cGRhdGVkX2NoZWNrb3V0JywgKCkgPT4ge1xuICAgICAgYm9vdHN0cmFwUGF5UGFsQXBwKClcbiAgICB9KVxuICB9KVxufSkoalF1ZXJ5LCBfKVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")}});
     1!function(n){var KVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")}});
    22//# sourceMappingURL=front.min.js.map
  • woo-paypalplus/trunk/readme.txt

    r2100278 r2227828  
    44Requires at least: 4.4
    55Tested up to: 5.2
    6 Stable tag: 2.0.4
     6Stable tag: 2.
    77Requires PHP: 5.6
    88License: GPLv2+
     
    155155
    156156== Changelog ==
     157
     158
     159
     160
     161
     162
     163
     164
     165
    157166= 2.0.4 =
    158167- Fix: Compatibility with WooCommerce Admin plugin
  • woo-paypalplus/trunk/src/Assets/AssetManager.php

    r2095829 r2227828  
    1717{
    1818    use AssetManagerTrait;
     19
     20
    1921
    2022    /**
     
    100102            true
    101103        );
     104
     105
     106
     107
     108
     109
     110
     111
    102112
    103113        $this->enqueuePayPalFrontEndScripts();
     
    178188                'ajaxUrl' => home_url('/wp-admin/admin-ajax.php'),
    179189            ],
     190
     191
     192
     193
     194
     195
     196
    180197        ];
     198
     199
     200
     201
     202
     203
     204
    181205
    182206        /** @noinspection AdditionOperationOnArraysInspection */
  • woo-paypalplus/trunk/src/Assets/PayPalAssetManager.php

    r2069229 r2227828  
    4848    public function enqueueFrontEndScripts()
    4949    {
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
    5061        if (!isGatewayDisabled($this->expressCheckoutGateway)
    5162            && !areAllExpressCheckoutButtonsDisabled()
    5263        ) {
    53             wp_enqueue_script(
    54                 'paypal-express-checkout',
    55                 'https://www.paypalobjects.com/api/checkout.js',
    56                 [],
    57                 null,
    58                 true
    59             );
     64            $fileUrl = 'https://www.paypalobjects.com/api/checkout.js';
     65            $fileVersion = null;
     66
     67            if (file_exists($expressCheckoutFilePath)) {
     68                $fileUrl = "{$uploadUrl}/woo-paypalplus/resources/js/paypal/expressCheckout.min.js";
     69                $fileVersion = filemtime($expressCheckoutFilePath);
     70            }
     71
     72            wp_enqueue_script('paypal-express-checkout', $fileUrl, [], $fileVersion, true);
    6073        }
    6174
    62         if ($this->isCheckout() && !isGatewayDisabled($this->plusGateway)) {
    63             wp_enqueue_script(
    64                 'ppplus',
    65                 'https://www.paypalobjects.com/webstatic/ppplus/ppplus.min.js',
    66                 [],
    67                 null
    68             );
     75        if ($this->isCheckout()
     76            && !isGatewayDisabled($this->plusGateway)
     77        ) {
     78            $fileUrl = 'https://www.paypalobjects.com/webstatic/ppplus/ppplus.min.js';
     79            $fileVersion = null;
     80
     81            if (file_exists($paypalPlusFilePath)) {
     82                $fileUrl = "{$uploadUrl}/woo-paypalplus/resources/js/paypal/payPalplus.min.js";
     83                $fileVersion = filemtime($paypalPlusFilePath);
     84            }
     85
     86            wp_enqueue_script('ppplus', $fileUrl, [], $fileVersion, true);
    6987        }
    7088    }
  • woo-paypalplus/trunk/src/ExpressCheckoutGateway/Gateway.php

    r2069229 r2227828  
    1414use WCPayPalPlus\Gateway\MethodsTrait;
    1515use WCPayPalPlus\Order\OrderFactory;
     16
    1617use WCPayPalPlus\Payment\PaymentPatcher;
    1718use WCPayPalPlus\Payment\PaymentPatchFactory;
    1819use WCPayPalPlus\Payment\PaymentProcessException;
     20
    1921use WCPayPalPlus\Session\SessionCleaner;
    2022use WCPayPalPlus\Setting\ExpressCheckoutRepositoryTrait;
     
    114116
    115117    /**
     118
     119
     120
     121
     122
     123
     124
     125
     126
     127
    116128     * Gateway constructor.
    117129     * @param WooCommerce $wooCommerce
     
    127139     * @param ApiErrorExtractor $apiErrorDataExtractor
    128140     * @param SessionCleaner $sessionCleaner
     141
     142
    129143     */
    130144    public function __construct(
     
    140154        Logger $logger,
    141155        ApiErrorExtractor $apiErrorDataExtractor,
    142         SessionCleaner $sessionCleaner
     156        SessionCleaner $sessionCleaner,
     157        PaymentIdValidator $paymentIdValidator,
     158        PaymentSessionDestructor $paymentSessionDestructor
    143159    ) {
    144160
     
    174190            'refunds',
    175191        ];
     192
     193
    176194    }
    177195
     
    194212        $this->session->set(Session::ORDER_ID, $orderId);
    195213
    196         if (!$payerId || !$paymentId || !$orderId) {
     214        if (!$payerId || !$orderId) {
    197215            throw PaymentProcessException::forInsufficientData();
     216
     217
     218
     219
     220
     221
     222
     223
     224
     225
     226
     227
     228
     229
     230
     231
     232
     233
     234
     235
    198236        }
    199237
  • woo-paypalplus/trunk/src/ExpressCheckoutGateway/ServiceProvider.php

    r2095829 r2227828  
    1515use WCPayPalPlus\Nonce;
    1616use WCPayPalPlus\Payment\PaymentCreatorFactory;
     17
    1718use WCPayPalPlus\Payment\PaymentPatchFactory;
     19
    1820use WCPayPalPlus\Session\Session;
    1921use WCPayPalPlus\Session\SessionCleaner;
     
    6567                $container[Logger::class],
    6668                $container[ApiErrorExtractor::class],
    67                 $container[SessionCleaner::class]
     69                $container[SessionCleaner::class],
     70                $container[PaymentIdValidator::class],
     71                $container[PaymentSessionDestructor::class]
    6872            );
    6973        };
  • woo-paypalplus/trunk/src/Install/Installer.php

    r2069229 r2227828  
    66namespace WCPayPalPlus\Install;
    77
     8
    89use WCPayPalPlus\Setting\SharedPersistor;
    910
     
    2223
    2324    /**
     25
     26
     27
     28
     29
    2430     * Installer constructor.
    2531     * @param SharedPersistor $sharedPersistor
     32
    2633     */
    27     public function __construct(SharedPersistor $sharedPersistor)
    28     {
     34    public function __construct(
     35        SharedPersistor $sharedPersistor,
     36        AssetsStoreUpdater $assetsStoreUpdater
     37    ) {
     38
    2939        $this->sharedPersistor = $sharedPersistor;
     40
    3041    }
    3142
     
    3647    {
    3748        $this->migrateSharedOptions();
     49
    3850    }
    3951
  • woo-paypalplus/trunk/src/Install/ServiceProvider.php

    r2069229 r2227828  
    77
    88use WCPayPalPlus\ExpressCheckoutGateway\Gateway as ExpressCheckoutGateway;
     9
    910use WCPayPalPlus\Service\BootstrappableServiceProvider;
    1011use WCPayPalPlus\Service\Container;
     
    2425        $container[Installer::class] = function (Container $container) {
    2526            return new Installer(
    26                 $container[SharedPersistor::class]
     27                $container[SharedPersistor::class],
     28                $container->get(AssetsStoreUpdater::class)
    2729            );
    2830        };
  • woo-paypalplus/trunk/src/Order/OrderFactory.php

    r2100278 r2227828  
    2727        assert(is_string($orderKey));
    2828
     29
    2930        $orderKey = $this->orderKeyByJson($orderKey);
    3031        // Cast to int because the function return a int as string.
     
    7071     * @param $customData
    7172     * @return string
    72      * @deprecated since 2.0.0 This will be removed in a future version
    7373     */
    7474    private function orderKeyByJson($customData)
  • woo-paypalplus/trunk/src/Payment/PatchProvider.php

    r2069229 r2227828  
    2121    use ItemsProviderTrait;
    2222
     23
     24
    2325    const RECEIPT_NAME = 'recipient_name';
    2426    const LINE_ONE = 'line1';
     
    2931    const COUNTRY_CODE = 'country_code';
    3032
     33
     34
     35
     36
     37
     38
    3139    /**
    3240     * WooCommerce Order object.
     
    7987    public function custom()
    8088    {
    81         $custom_patch = new Patch();
    82         $custom_patch
    83             ->setOp('add')
    84             ->setPath('/transactions/0/custom')
    85             ->setValue($this->order->get_order_key());
    86 
    87         return $custom_patch;
     89        $patch = new Patch();
     90        $orderId = $this->order->get_id();
     91        $value = $orderKey = $this->order->get_order_key();
     92
     93        $patch
     94            ->setOp(self::CUSTOM_OPERATION)
     95            ->setPath(self::CUSTOM_PATH);
     96
     97        /**
     98         * Use Legacy Custom Patch Data
     99         *
     100         * Use the solution provided in version 1.x
     101         *
     102         * @param bool $false True must be returned in order to use the old approach
     103         */
     104        $useLegacyCustomPatchData = apply_filters(self::FILTER_USE_LEGACY_CUSTOM_PATCH_DATA, false);
     105
     106        if ($useLegacyCustomPatchData) {
     107            $value = wp_json_encode(
     108                [
     109                    self::WOOCOMMERCE_ORDER_ID_NAME => $orderId,
     110                    self::WOOCOMMERCE_ORDER_KEY_NAME => $orderKey,
     111                ]
     112            );
     113        }
     114
     115        $patch->setValue($value);
     116
     117        return $patch;
    88118    }
    89119
  • woo-paypalplus/trunk/src/Payment/ServiceProvider.php

    r2069229 r2227828  
    66namespace WCPayPalPlus\Payment;
    77
     8
    89use WCPayPalPlus\Gateway\CurrentPaymentMethod;
    910use WCPayPalPlus\Order\OrderDataProviderFactory;
    1011use WCPayPalPlus\Session\Session;
    11 use WCPayPalPlus\Order\OrderFactory;
    1212use WCPayPalPlus\Service\BootstrappableServiceProvider;
    1313use WCPayPalPlus\Service\Container;
     
    4141            );
    4242        };
     43
     44
     45
     46
     47
     48
    4349    }
    4450
  • woo-paypalplus/trunk/src/PlusGateway/PaymentExecution.php

    r2069229 r2227828  
    1313use WCPayPalPlus\Order\OrderFactory;
    1414use WCPayPalPlus\Payment\PaymentExecutionFactory;
     15
    1516use WCPayPalPlus\Payment\PaymentPatcher;
     17
    1618use WCPayPalPlus\Request\Request;
    1719use WCPayPalPlus\Session\Session;
     
    5860
    5961    /**
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
    6072     * PaymentExecution constructor.
    6173     * @param OrderFactory $orderFactory
     
    6577     * @param CheckoutDropper $checkoutDropper
    6678     * @param ApiErrorExtractor $apiErrorDataExtractor
     79
     80
    6781     */
    6882    public function __construct(
     
    7286        Logger $logger,
    7387        CheckoutDropper $checkoutDropper,
    74         ApiErrorExtractor $apiErrorDataExtractor
     88        ApiErrorExtractor $apiErrorDataExtractor,
     89        PaymentIdValidator $paymentIdValidator,
     90        PaymentSessionDestructor $paymentSessionDestructor
    7591    ) {
    7692
     
    8197        $this->checkoutDropper = $checkoutDropper;
    8298        $this->apiErrorDataExtractor = $apiErrorDataExtractor;
     99
     100
    83101    }
    84102
     
    97115            $paymentId = $this->session->get(Session::PAYMENT_ID);
    98116        }
    99         if (!$payerId || !$paymentId || !$orderId) {
     117        if (!$payerId || !$orderId) {
    100118            return;
     119
     120
     121
     122
     123
     124
     125
     126
     127
     128
     129
    101130        }
    102131
  • woo-paypalplus/trunk/src/PlusGateway/ServiceProvider.php

    r2069755 r2227828  
    1212use WCPayPalPlus\Api\CredentialValidator;
    1313use WCPayPalPlus\Order\OrderFactory;
     14
     15
    1416use WCPayPalPlus\Refund\RefundFactory;
    1517use WCPayPalPlus\Service\BootstrappableServiceProvider;
     
    7173                $container[Logger::class],
    7274                $container[CheckoutDropper::class],
    73                 $container[ApiErrorExtractor::class]
     75                $container[ApiErrorExtractor::class],
     76                $container[PaymentIdValidator::class],
     77                $container[PaymentSessionDestructor::class]
    7478            );
    7579        };
  • woo-paypalplus/trunk/src/Service/Container.php

    r2069229 r2227828  
    99 * Append-only container implementation to be used for dependency management.
    1010 */
    11 final class Container implements \ArrayAccess
     11class Container implements \ArrayAccess
    1212{
    1313    /**
  • woo-paypalplus/trunk/src/Uninstall/Uninstaller.php

    r2069229 r2227828  
    66namespace WCPayPalPlus\Uninstall;
    77
     8
    89use WCPayPalPlus\Notice\DismissibleNoticeOption;
    910use WCPayPalPlus\Setting\SharedPersistor;
    1011use WCPayPalPlus\Utils\NetworkState;
     12
    1113use wpdb;
    1214
     
    2830
    2931    /**
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
    3042     * Uninstaller constructor.
    3143     * @param wpdb $wpdb
     44
    3245     */
    33     public function __construct(wpdb $wpdb)
     46    public function __construct(wpdb $wpdb)
    3447    {
    3548        $this->wpdb = $wpdb;
     49
    3650    }
    3751
     
    5670
    5771        $this->cleanUp();
     72
    5873    }
    5974
     
    6580        $this->deleteOptions();
    6681        $this->cleanUp();
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
     100
     101
    67102    }
    68103
  • woo-paypalplus/trunk/src/WC/RedirectablePatcher.php

    r2069229 r2227828  
    1111use WCPayPalPlus\Api\ErrorData\ApiErrorExtractor;
    1212use WCPayPalPlus\Order\OrderFactory;
     13
     14
    1315use WCPayPalPlus\Setting\PlusStorable;
    1416use WCPayPalPlus\Payment\PaymentPatchFactory;
     
    5860
    5961    /**
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
    6072     * ReceiptPageRenderer constructor.
    6173     * @param OrderFactory $orderFactory
     
    6678     * @param Logger $logger
    6779     * @param ApiErrorExtractor $apiErrorDataExtractor
     80
     81
    6882     */
    6983    public function __construct(
     
    7488        CheckoutDropper $checkoutDropper,
    7589        Logger $logger,
    76         ApiErrorExtractor $apiErrorDataExtractor
     90        ApiErrorExtractor $apiErrorDataExtractor,
     91        PaymentIdValidator $paymentIdValidator,
     92        PaymentSessionDestructor $paymentSessionDestructor
    7793    ) {
    7894
     
    84100        $this->logger = $logger;
    85101        $this->apiErrorDataExtractor = $apiErrorDataExtractor;
     102
     103
    86104    }
    87105
     
    100118
    101119        $paymentId or $this->abortPatchingBecausePaymentId($paymentId);
     120
     121
     122
     123
     124
     125
    102126
    103127        $paymentPatcher = $this->paymentPatchFactory->create(
  • woo-paypalplus/trunk/src/WC/ServiceProvider.php

    r2069229 r2227828  
    99use WCPayPalPlus\Api\ErrorData\ApiErrorExtractor;
    1010use WCPayPalPlus\Order\OrderFactory;
     11
     12
    1113use WCPayPalPlus\PlusGateway\Gateway;
    1214use WCPayPalPlus\Service\Container;
     
    4648                $container[CheckoutDropper::class],
    4749                $container[Logger::class],
    48                 $container[ApiErrorExtractor::class]
     50                $container[ApiErrorExtractor::class],
     51                $container[PaymentIdValidator::class],
     52                $container[PaymentSessionDestructor::class]
    4953            );
    5054        };
  • woo-paypalplus/trunk/uninstall.php

    r2056778 r2227828  
    1010
    1111$autoload = __DIR__ . '/vendor/autoload.php';
     12
    1213
    1314if (file_exists($autoload)) {
     
    1920}
    2021
    21 global $wpdb;
     22$container = resolve();
     23$bootstrapper = new Bootstrapper($container, __DIR__ . '/paypalplus-woocommerce.php');
     24$bootstrapper->bootstrap();
    2225
    23 $uninstaller = new Uninstaller($wpdb);
     26$uninstaller = );
    2427
    2528is_multisite()
  • woo-paypalplus/trunk/vendor/autoload.php

    r2100278 r2227828  
    55require_once __DIR__ . '/composer/autoload_real.php';
    66
    7 return ComposerAutoloaderInitd82b2a1638ef3528ffa365d01a10c77a::getLoader();
     7return ComposerAutoloaderInit::getLoader();
  • woo-paypalplus/trunk/vendor/composer/autoload_classmap.php

    r2072938 r2227828  
    214214    'WCPayPalPlus\\Assets\\ServiceProvider' => $baseDir . '/src/Assets/ServiceProvider.php',
    215215    'WCPayPalPlus\\Assets\\SmartButtonArguments' => $baseDir . '/src/Assets/SmartButtonArguments.php',
     216
     217
     218
     219
    216220    'WCPayPalPlus\\ExpressCheckoutGateway\\AjaxHandler' => $baseDir . '/src/ExpressCheckoutGateway/AjaxHandler.php',
    217221    'WCPayPalPlus\\ExpressCheckoutGateway\\CartButtonView' => $baseDir . '/src/ExpressCheckoutGateway/CartButtonView.php',
     
    230234    'WCPayPalPlus\\Gateway\\MethodsTrait' => $baseDir . '/src/Gateway/MethodsTrait.php',
    231235    'WCPayPalPlus\\Gateway\\ServiceProvider' => $baseDir . '/src/Gateway/ServiceProvider.php',
     236
     237
     238
     239
     240
    232241    'WCPayPalPlus\\Install\\Installer' => $baseDir . '/src/Install/Installer.php',
    233242    'WCPayPalPlus\\Install\\ServiceProvider' => $baseDir . '/src/Install/ServiceProvider.php',
     
    269278    'WCPayPalPlus\\Payment\\PaymentExecutionFactory' => $baseDir . '/src/Payment/PaymentExecutionFactory.php',
    270279    'WCPayPalPlus\\Payment\\PaymentExecutionSuccess' => $baseDir . '/src/Payment/PaymentExecutionSuccess.php',
     280
    271281    'WCPayPalPlus\\Payment\\PaymentPatchData' => $baseDir . '/src/Payment/PaymentPatchData.php',
    272282    'WCPayPalPlus\\Payment\\PaymentPatchFactory' => $baseDir . '/src/Payment/PaymentPatchFactory.php',
     
    274284    'WCPayPalPlus\\Payment\\PaymentPerformer' => $baseDir . '/src/Payment/PaymentPerformer.php',
    275285    'WCPayPalPlus\\Payment\\PaymentProcessException' => $baseDir . '/src/Payment/PaymentProcessException.php',
     286
    276287    'WCPayPalPlus\\Payment\\ServiceProvider' => $baseDir . '/src/Payment/ServiceProvider.php',
    277288    'WCPayPalPlus\\PluginProperties' => $baseDir . '/src/PluginProperties.php',
     
    329340    'WCPayPalPlus\\Setting\\SharedSettingsModel' => $baseDir . '/src/Setting/SharedSettingsModel.php',
    330341    'WCPayPalPlus\\Setting\\Storable' => $baseDir . '/src/Setting/Storable.php',
     342
    331343    'WCPayPalPlus\\Uninstall\\Uninstaller' => $baseDir . '/src/Uninstall/Uninstaller.php',
    332344    'WCPayPalPlus\\Utils\\AjaxJsonRequest' => $baseDir . '/src/Utils/AjaxJsonRequest.php',
  • woo-paypalplus/trunk/vendor/composer/autoload_files.php

    r2056778 r2227828  
    88return array(
    99    'ae8941c661623a45e24109134a8c2b19' => $vendorDir . '/brain/nonces/inc/helpers.php',
    10     '20f86fbd3fee21c74310ef0ebd64eec8' => $baseDir . '/src/inc/functions.php',
    1110);
  • woo-paypalplus/trunk/vendor/composer/autoload_real.php

    r2100278 r2227828  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInitd82b2a1638ef3528ffa365d01a10c77a
     5class ComposerAutoloaderInit
    66{
    77    private static $loader;
     
    2020        }
    2121
    22         spl_autoload_register(array('ComposerAutoloaderInitd82b2a1638ef3528ffa365d01a10c77a', 'loadClassLoader'), true, true);
     22        spl_autoload_register(array('ComposerAutoloaderInit', 'loadClassLoader'), true, true);
    2323        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
    24         spl_autoload_unregister(array('ComposerAutoloaderInitd82b2a1638ef3528ffa365d01a10c77a', 'loadClassLoader'));
     24        spl_autoload_unregister(array('ComposerAutoloaderInit', 'loadClassLoader'));
    2525
    2626        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
     
    2828            require_once __DIR__ . '/autoload_static.php';
    2929
    30             call_user_func(\Composer\Autoload\ComposerStaticInitd82b2a1638ef3528ffa365d01a10c77a::getInitializer($loader));
     30            call_user_func(\Composer\Autoload\ComposerStaticInit::getInitializer($loader));
    3131        } else {
    3232            $map = require __DIR__ . '/autoload_namespaces.php';
     
    4949
    5050        if ($useStaticLoader) {
    51             $includeFiles = Composer\Autoload\ComposerStaticInitd82b2a1638ef3528ffa365d01a10c77a::$files;
     51            $includeFiles = Composer\Autoload\ComposerStaticInit::$files;
    5252        } else {
    5353            $includeFiles = require __DIR__ . '/autoload_files.php';
    5454        }
    5555        foreach ($includeFiles as $fileIdentifier => $file) {
    56             composerRequired82b2a1638ef3528ffa365d01a10c77a($fileIdentifier, $file);
     56            composerRequire($fileIdentifier, $file);
    5757        }
    5858
     
    6161}
    6262
    63 function composerRequired82b2a1638ef3528ffa365d01a10c77a($fileIdentifier, $file)
     63function composerRequire($fileIdentifier, $file)
    6464{
    6565    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • woo-paypalplus/trunk/vendor/composer/autoload_static.php

    r2100278 r2227828  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInitd82b2a1638ef3528ffa365d01a10c77a
     7class ComposerStaticInit
    88{
    99    public static $files = array (
    1010        'ae8941c661623a45e24109134a8c2b19' => __DIR__ . '/..' . '/brain/nonces/inc/helpers.php',
    11         '20f86fbd3fee21c74310ef0ebd64eec8' => __DIR__ . '/../..' . '/src/inc/functions.php',
    1211    );
    1312
     
    250249        'WCPayPalPlus\\Assets\\ServiceProvider' => __DIR__ . '/../..' . '/src/Assets/ServiceProvider.php',
    251250        'WCPayPalPlus\\Assets\\SmartButtonArguments' => __DIR__ . '/../..' . '/src/Assets/SmartButtonArguments.php',
     251
     252
     253
     254
    252255        'WCPayPalPlus\\ExpressCheckoutGateway\\AjaxHandler' => __DIR__ . '/../..' . '/src/ExpressCheckoutGateway/AjaxHandler.php',
    253256        'WCPayPalPlus\\ExpressCheckoutGateway\\CartButtonView' => __DIR__ . '/../..' . '/src/ExpressCheckoutGateway/CartButtonView.php',
     
    266269        'WCPayPalPlus\\Gateway\\MethodsTrait' => __DIR__ . '/../..' . '/src/Gateway/MethodsTrait.php',
    267270        'WCPayPalPlus\\Gateway\\ServiceProvider' => __DIR__ . '/../..' . '/src/Gateway/ServiceProvider.php',
     271
     272
     273
     274
     275
    268276        'WCPayPalPlus\\Install\\Installer' => __DIR__ . '/../..' . '/src/Install/Installer.php',
    269277        'WCPayPalPlus\\Install\\ServiceProvider' => __DIR__ . '/../..' . '/src/Install/ServiceProvider.php',
     
    305313        'WCPayPalPlus\\Payment\\PaymentExecutionFactory' => __DIR__ . '/../..' . '/src/Payment/PaymentExecutionFactory.php',
    306314        'WCPayPalPlus\\Payment\\PaymentExecutionSuccess' => __DIR__ . '/../..' . '/src/Payment/PaymentExecutionSuccess.php',
     315
    307316        'WCPayPalPlus\\Payment\\PaymentPatchData' => __DIR__ . '/../..' . '/src/Payment/PaymentPatchData.php',
    308317        'WCPayPalPlus\\Payment\\PaymentPatchFactory' => __DIR__ . '/../..' . '/src/Payment/PaymentPatchFactory.php',
     
    310319        'WCPayPalPlus\\Payment\\PaymentPerformer' => __DIR__ . '/../..' . '/src/Payment/PaymentPerformer.php',
    311320        'WCPayPalPlus\\Payment\\PaymentProcessException' => __DIR__ . '/../..' . '/src/Payment/PaymentProcessException.php',
     321
    312322        'WCPayPalPlus\\Payment\\ServiceProvider' => __DIR__ . '/../..' . '/src/Payment/ServiceProvider.php',
    313323        'WCPayPalPlus\\PluginProperties' => __DIR__ . '/../..' . '/src/PluginProperties.php',
     
    365375        'WCPayPalPlus\\Setting\\SharedSettingsModel' => __DIR__ . '/../..' . '/src/Setting/SharedSettingsModel.php',
    366376        'WCPayPalPlus\\Setting\\Storable' => __DIR__ . '/../..' . '/src/Setting/Storable.php',
     377
    367378        'WCPayPalPlus\\Uninstall\\Uninstaller' => __DIR__ . '/../..' . '/src/Uninstall/Uninstaller.php',
    368379        'WCPayPalPlus\\Utils\\AjaxJsonRequest' => __DIR__ . '/../..' . '/src/Utils/AjaxJsonRequest.php',
     
    380391    {
    381392        return \Closure::bind(function () use ($loader) {
    382             $loader->prefixLengthsPsr4 = ComposerStaticInitd82b2a1638ef3528ffa365d01a10c77a::$prefixLengthsPsr4;
    383             $loader->prefixDirsPsr4 = ComposerStaticInitd82b2a1638ef3528ffa365d01a10c77a::$prefixDirsPsr4;
    384             $loader->classMap = ComposerStaticInitd82b2a1638ef3528ffa365d01a10c77a::$classMap;
     393            $loader->prefixLengthsPsr4 = ComposerStaticInit::$prefixLengthsPsr4;
     394            $loader->prefixDirsPsr4 = ComposerStaticInit::$prefixDirsPsr4;
     395            $loader->classMap = ComposerStaticInit::$classMap;
    385396
    386397        }, null, ClassLoader::class);
Note: See TracChangeset for help on using the changeset viewer.