{"version":3,"file":"default/js/int_braintree.js","mappings":"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","sources":["webpack://brambleberry/./cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js","webpack://brambleberry/./cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js","webpack://brambleberry/./cartridges/app_storefront_base/cartridge/client/default/js/product/base.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/alertHandler.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/apma.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/alerthandler/applePayAlertHandlerModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/applePay.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/braintreesdk/braintreeApplePayModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/braintreesdk/braintreeApplePayModelBuilder.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/braintreesdk/braintreeApplePaySDK.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/components/applePayCart.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/components/applePayCheckout.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/components/applePayPaymentProcessing.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/constants/applePayPaymentProcessingConstants.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/constants/errorMessages.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/helpers/applePayHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/applepay/helpers/applePayPaymentProcessingHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeGeneral.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeSFRA.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/braintreeUtils.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/alertHandler/creditCardAlertHandlerModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/alertHandler/creditCardFormFieldsValidator.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/braintreesdk/braintreeCreditCardModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/braintreesdk/braintreeCreditCardModelBuilder.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/braintreesdk/braintreeCreditCardSDK.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/braintreesdk/hostedFieldsModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardFields.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardList.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardPaymentProcessing.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardSessionAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/components/creditCardVaultManagerModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/constants/creditCardPaymentProcessingConstants.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/creditCard.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/braintreeCreditCardSdkHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardBillingAddressHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardFormFieldsHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardPaymentProcessingHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/creditcard/helpers/creditCardSessionAccountHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/alerthandler/googlePayAlertHandlerModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/braintreesdk/braintreeGooglePayModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/braintreesdk/braintreeGooglePayModelBuilder.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/braintreesdk/braintreeGooglePaySDK.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePayCart.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePayCheckout.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePayList.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePayPaymentProcessing.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/components/googlePaySessionAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/constants/errorMessages.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/constants/googlePayPaymentProcessingConstants.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/googlePay.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/helpers/googlePayHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/helpers/googlePayPaymentProcessingHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/googlepay/helpers/googlePaySDKHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/helper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/loaderHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/alerthandler/lpmAlertHandlerModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/braintreesdk/braintreeLpmModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/braintreesdk/braintreeLpmModelBuilder.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/braintreesdk/braintreeLpmSDK.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/components/lpmPaymentProcessing.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/constants/errorMessages.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/helpers/lpmHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/helpers/lpmPaymentProcessorHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/lpm.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/local/lpmFallBack.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paymentMethodGeneral.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paymentMethodGeneralHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/alerthandler/paypalAlertHandlerModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/braintreesdk/braintreePayPalSDK.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/apmaPage.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/connectWithPayPal.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalAccountPage.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalButtonDisplayBehavior.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalCartPage.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalCheckoutPage.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalList.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalMiniCartPage.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalProductPage.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalProductViewPage.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalSessionAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/components/payPalStoredBillingAddress.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalAccountModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalAccountPage.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalBillingFormHelperGlobal.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalCheckoutModelHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalExpressModelHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalListHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalProductPageModelHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalRequestsHelperGlobal.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/helpers/payPalSessionAccountHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/apma.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalBaseModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalCartModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalCheckoutModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalExpressModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalProductModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/models/payPalScriptLoading.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/paypal/payPal.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/alerthandler/srcAlertHandlerModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/braintreesdk/braintreeSrcSDK.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcCart.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcCheckout.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcList.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/components/srcSessionAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/constants/srcConstants.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/helpers/srcButtonHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/helpers/srcHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/helpers/srcListHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/helpers/srcPaymentProcessingHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/models/srcAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/models/srcBaseModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/models/srcCartModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/models/srcCheckoutModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/src/src.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/alerthandler/venmoAlertHandlerModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/braintreesdk/braintreeVenmoModel.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/braintreesdk/braintreeVenmoModelBuilder.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/braintreesdk/braintreeVenmoSDK.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoBillingAddress.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoButton.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoCheckout.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoList.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoProcessing.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/components/venmoSessionAccount.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/constants/venmoConstants.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/helpers/venmoHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/helpers/venmoProcessingHelper.js","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/braintree/venmo/venmo.js","webpack://brambleberry/./node_modules/jquery/dist/jquery.js","webpack://brambleberry/webpack/bootstrap","webpack://brambleberry/webpack/runtime/node module decorator","webpack://brambleberry/./cartridges/int_braintree/cartridge/client/default/js/int_braintree.js"],"sourcesContent":["'use strict';\n\nmodule.exports = {\n setTabNextFocus: function (focusParams) {\n var KEYCODE_TAB = 9;\n var isTabPressed = (focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB);\n\n if (!isTabPressed) {\n return;\n }\n\n var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector);\n var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector);\n\n if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) {\n lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector);\n if ($('.product-quickview.product-set').length > 0) {\n var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons');\n lastFocusableEl = linkElements[linkElements.length - 1];\n }\n }\n\n if (focusParams.event.shiftKey) /* shift + tab */ {\n if ($(':focus').is(firstFocusableEl)) {\n lastFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n } else /* tab */ {\n if ($(':focus').is(lastFocusableEl)) { // eslint-disable-line\n firstFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n }\n }\n};\n","'use strict';\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearFormErrors(form) {\n $(form).find('.form-control.is-invalid').removeClass('is-invalid');\n}\n\nmodule.exports = function (formElement, payload) {\n // clear form validation first\n clearFormErrors(formElement);\n $('.alert', formElement).remove();\n\n if (typeof payload === 'object' && payload.fields) {\n Object.keys(payload.fields).forEach(function (key) {\n if (payload.fields[key]) {\n var feedbackElement = $(formElement).find('[name=\"' + key + '\"]')\n .parent()\n .children('.invalid-feedback');\n\n if (feedbackElement.length > 0) {\n if (Array.isArray(payload[key])) {\n feedbackElement.html(payload.fields[key].join('
'));\n } else {\n feedbackElement.html(payload.fields[key]);\n }\n feedbackElement.siblings('.form-control').addClass('is-invalid');\n }\n }\n });\n }\n if (payload && payload.error) {\n var form = $(formElement).prop('tagName') === 'FORM'\n ? $(formElement)\n : $(formElement).parents('form');\n\n form.prepend('
'\n + payload.error.join('
') + '
');\n }\n};\n","'use strict';\n\nvar focusHelper = require('../components/focus');\n\nvar location = window.location;\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n var pid;\n\n if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {\n pid = $($el).closest('.modal-content').find('.product-quickview').data('pid');\n } else if ($('.product-set-detail').length || $('.product-set').length) {\n pid = $($el).closest('.product-detail').find('.product-id').text();\n } else {\n pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n }\n\n return pid;\n}\n\n/**\n * Retrieve contextual quantity selector\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {jquery} - quantity selector DOM container\n */\nfunction getQuantitySelector($el) {\n var quantitySelected;\n if ($el && $('.set-items').length) {\n quantitySelected = $($el).closest('.product-detail').find('.quantity-select');\n } else if ($el && $('.product-bundle').length) {\n var quantitySelectedModal = $($el).closest('.modal-footer').find('.quantity-select');\n var quantitySelectedPDP = $($el).closest('.bundle-footer').find('.quantity-select');\n if (quantitySelectedModal.val() === undefined) {\n quantitySelected = quantitySelectedPDP;\n } else {\n quantitySelected = quantitySelectedModal;\n }\n } else {\n quantitySelected = $('.quantity-select');\n }\n return quantitySelected;\n}\n\n/**\n * Retrieves the value associated with the Quantity pull-down menu\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {string} - value found in the quantity input\n */\nfunction getQuantitySelected($el) {\n return getQuantitySelector($el).val();\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"'\n + attrValue.value + '\"]');\n var $swatchButton = $attrValue.parent();\n\n if (attrValue.selected) {\n $attrValue.addClass('selected');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n } else {\n $attrValue.removeClass('selected');\n $attrValue.siblings('.selected-assistive-text').empty();\n }\n\n if (attrValue.url) {\n $swatchButton.attr('data-url', attrValue.url);\n } else {\n $swatchButton.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n var $attr = '[data-attr=\"' + attr.id + '\"]';\n var $defaultOption = $productContainer.find($attr + ' .select-' + attr.id + ' option:first');\n $defaultOption.attr('value', attr.resetUrl);\n\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find($attr + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue.attr('value', attrValue.url)\n .removeAttr('disabled');\n\n if (!attrValue.selectable) {\n $attrValue.attr('disabled', true);\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object} attrs - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '
  • ' + message + '
  • ';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Generates html for product attributes section\n *\n * @param {array} attributes - list of attributes\n * @return {string} - Compiled HTML\n */\nfunction getAttributesHtml(attributes) {\n if (!attributes) {\n return '';\n }\n\n var html = '';\n\n attributes.forEach(function (attributeGroup) {\n if (attributeGroup.ID === 'mainAttributes') {\n attributeGroup.attributes.forEach(function (attribute) {\n html += '
    ' + attribute.label + ': '\n + attribute.value + '
    ';\n });\n }\n });\n\n return html;\n}\n\n/**\n * @typedef UpdatedOptionValue\n * @type Object\n * @property {string} id - Option value ID for look up\n * @property {string} url - Updated option value selection URL\n */\n\n/**\n * @typedef OptionSelectionResponse\n * @type Object\n * @property {string} priceHtml - Updated price HTML code\n * @property {Object} options - Updated Options\n * @property {string} options.id - Option ID\n * @property {UpdatedOptionValue[]} options.values - Option values\n */\n\n/**\n * Updates DOM using post-option selection Ajax response\n *\n * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction updateOptions(optionsHtml, $productContainer) {\n // Update options\n $productContainer.find('.product-options').empty().html(optionsHtml);\n}\n\n/**\n * Dynamically creates Bootstrap carousel from response containing images\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction createCarousel(imgs, $productContainer) {\n var carousel = $productContainer.find('.carousel');\n $(carousel).carousel('dispose');\n var carouselId = $(carousel).attr('id');\n $(carousel).empty().append('
      ' + $(carousel).data('prev') + '' + $(carousel).data('next') + '');\n for (var i = 0; i < imgs.length; i++) {\n $('
      \"'
      ').appendTo($(carousel).find('.carousel-inner'));\n $('
    1. ').appendTo($(carousel).find('.carousel-indicators'));\n }\n $($(carousel).find('.carousel-item')).first().addClass('active');\n $($(carousel).find('.carousel-indicators > li')).first().addClass('active');\n if (imgs.length === 1) {\n $($(carousel).find('.carousel-indicators, a[class^=\"carousel-control-\"]')).detach();\n }\n $(carousel).carousel();\n $($(carousel).find('.carousel-indicators')).attr('aria-hidden', true);\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object[]} response.product.images - Product images\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {jQuery} $productContainer - DOM element for a given product.\n */\nfunction handleVariantResponse(response, $productContainer) {\n var isChoiceOfBonusProducts = $productContainer.parents('.choose-bonus-product-dialog').length > 0;\n var isVaraint;\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n isVaraint = response.product.productType === 'variant';\n if (isChoiceOfBonusProducts && isVaraint) {\n $productContainer.parent('.bonus-product-item')\n .data('pid', response.product.id);\n\n $productContainer.parent('.bonus-product-item')\n .data('ready-to-order', response.product.readyToOrder);\n }\n }\n\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n createCarousel(primaryImageUrls, $productContainer);\n\n // Update pricing\n if (!isChoiceOfBonusProducts) {\n var $priceSelector = $('.prices .price', $productContainer).length\n ? $('.prices .price', $productContainer)\n : $('.prices .price');\n $priceSelector.replaceWith(response.product.price.html);\n }\n\n // Update promotions\n $productContainer.find('.promotions').empty().html(response.product.promotionsHtml);\n\n updateAvailability(response, $productContainer);\n\n if (isChoiceOfBonusProducts) {\n var $selectButton = $productContainer.find('.select-bonus-product');\n $selectButton.trigger('bonusproduct:updateSelectButton', {\n product: response.product, $productContainer: $productContainer\n });\n } else {\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n }\n\n // Update attributes\n $productContainer.find('.main-attributes').empty()\n .html(getAttributesHtml(response.product.attributes));\n}\n\n/**\n * @typespec UpdatedQuantity\n * @type Object\n * @property {boolean} selected - Whether the quantity has been selected\n * @property {string} value - The number of products to purchase\n * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,\n * etc.\n */\n\n/**\n * Updates the quantity DOM elements post Ajax call\n * @param {UpdatedQuantity[]} quantities -\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction updateQuantities(quantities, $productContainer) {\n if ($productContainer.parent('.bonus-product-item').length <= 0) {\n var optionsHtml = quantities.map(function (quantity) {\n var selected = quantity.selected ? ' selected ' : '';\n return '';\n }).join('');\n getQuantitySelector($productContainer).empty().html(optionsHtml);\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer) {\n if (selectedValueUrl) {\n $('body').trigger(\n 'product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer }\n );\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n handleVariantResponse(data, $productContainer);\n updateOptions(data.product.optionsHtml, $productContainer);\n updateQuantities(data.product.quantities, $productContainer);\n $('body').trigger(\n 'product:afterAttributeSelect',\n { data: data, container: $productContainer }\n );\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\nfunction parseHtml(html) {\n var $html = $('
      ').append($.parseHTML(html));\n\n var body = $html.find('.choice-of-bonus-product');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @param {Object} data - data object used to fill in dynamic portions of the html\n */\nfunction chooseBonusProducts(data) {\n $('.modal-body').spinner().start();\n\n if ($('#chooseBonusProductModal').length !== 0) {\n $('#chooseBonusProductModal').remove();\n }\n var bonusUrl;\n if (data.bonusChoiceRuleBased) {\n bonusUrl = data.showProductsUrlRuleBased;\n } else {\n bonusUrl = data.showProductsUrlListBased;\n }\n\n var htmlString = ''\n + '
      '\n + ''\n + '
      '\n + ''\n + '
      '\n + '
      '\n + ' ' + data.labels.selectprods + ''\n + ' '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      ';\n $('body').append(htmlString);\n $('.modal-body').spinner().start();\n\n $.ajax({\n url: bonusUrl,\n method: 'GET',\n dataType: 'json',\n success: function (response) {\n var parsedHtml = parseHtml(response.renderedTemplate);\n $('#chooseBonusProductModal .modal-body').empty();\n $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);\n $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);\n $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);\n $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);\n $('#chooseBonusProductModal').modal('show');\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {string} response - ajax response from clicking the add to cart button\n */\nfunction handlePostCartAdd(response) {\n $('.minicart').trigger('count:update', response);\n var messageType = response.error ? 'alert-danger' : 'alert-success';\n // show add to cart toast\n if (response.newBonusDiscountLineItem\n && Object.keys(response.newBonusDiscountLineItem).length !== 0) {\n chooseBonusProducts(response.newBonusDiscountLineItem);\n } else {\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append(\n '
      '\n );\n }\n\n $('.add-to-cart-messages').append(\n '
      '\n + response.message\n + '
      '\n );\n\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 5000);\n }\n}\n\n/**\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\n * items with their selected variants\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nfunction getChildProducts() {\n var childProducts = [];\n $('.bundle-item').each(function () {\n childProducts.push({\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n });\n });\n\n return childProducts.length ? JSON.stringify(childProducts) : [];\n}\n\n/**\n * Retrieve product options\n *\n * @param {jQuery} $productContainer - DOM element for current product\n * @return {string} - Product options and their selected values\n */\nfunction getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n methods: {\n editBonusProducts: function (data) {\n chooseBonusProducts(data);\n }\n },\n\n focusChooseBonusProductModal: function () {\n $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true');\n $('#chooseBonusProductModal .close').focus();\n });\n },\n\n onClosingChooseBonusProductModal: function () {\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false');\n });\n },\n\n trapChooseBonusProductModalFocus: function () {\n $('body').on('keydown', '#chooseBonusProductModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#chooseBonusProductModal',\n firstElementSelector: '.close',\n lastElementSelector: '.add-bonus-products'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button', function (e) {\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n\n attributeSelect($(this).attr('data-url'), $productContainer);\n });\n },\n\n selectAttribute: function () {\n $(document).on('change', 'select[class*=\"select-\"], .options-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect(e.currentTarget.value, $productContainer);\n });\n },\n\n availability: function () {\n $(document).on('change', '.quantity-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.modal-content').find('.product-quickview');\n }\n\n if ($('.bundle-items', $productContainer).length === 0) {\n attributeSelect(\n $(e.currentTarget).find('option:selected').data('url'),\n $productContainer\n );\n }\n });\n },\n\n addToCart: function () {\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n var addToCartUrl;\n var pid;\n var pidsObj;\n var setPids;\n\n $('body').trigger('product:beforeAddToCart', this);\n\n if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) {\n setPids = [];\n\n $('.product-detail').each(function () {\n if (!$(this).hasClass('product-set-detail')) {\n setPids.push({\n pid: $(this).find('.product-id').text(),\n qty: $(this).find('.quantity-select').val(),\n options: getOptions($(this))\n });\n }\n });\n pidsObj = JSON.stringify(setPids);\n }\n\n pid = getPidValue($(this));\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');\n }\n\n addToCartUrl = getAddToCartUrl();\n\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: getChildProducts(),\n quantity: getQuantitySelected($(this))\n };\n\n if (!$('.bundle-item').length) {\n form.options = getOptions($productContainer);\n }\n\n $(this).trigger('updateAddToCartFormData', form);\n if (addToCartUrl) {\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: form,\n success: function (data) {\n handlePostCartAdd(data);\n $('body').trigger('product:afterAddToCart', data);\n $.spinner().stop();\n miniCartReportingUrl(data.reportingURL);\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n selectBonusProduct: function () {\n $(document).on('click', '.select-bonus-product', function () {\n var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');\n var pid = $(this).data('pid');\n var maxPids = $('.choose-bonus-product-dialog').data('total-qty');\n var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);\n var totalQty = 0;\n $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {\n totalQty += $(this).data('qty');\n });\n totalQty += submittedQty;\n var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');\n var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');\n if (totalQty <= maxPids) {\n var selectedBonusProductHtml = ''\n + '
      '\n + '
      '\n + $choiceOfBonusProduct.find('.product-name').html()\n + '
      '\n + '
      '\n + '
      ';\n $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml);\n $('.pre-cart-products').html(totalQty);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n } else {\n $('.selected-bonus-products .bonus-summary').addClass('alert-danger');\n }\n });\n },\n removeBonusProduct: function () {\n $(document).on('click', '.selected-pid', function () {\n $(this).remove();\n var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');\n var count = 0;\n if ($selected.length) {\n $selected.each(function () {\n count += parseInt($(this).data('qty'), 10);\n });\n }\n\n $('.pre-cart-products').html(count);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n });\n },\n enableBonusProductSelection: function () {\n $('body').on('bonusproduct:updateSelectButton', function (e, response) {\n $('button.select-bonus-product', response.$productContainer).attr(\n 'disabled',\n (!response.product.readyToOrder || !response.product.available)\n );\n var pid = response.product.id;\n $('button.select-bonus-product', response.$productContainer).data('pid', pid);\n });\n },\n showMoreBonusProducts: function () {\n $(document).on('click', '.show-more-bonus-products', function () {\n var url = $(this).data('url');\n $('.modal-content').spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n success: function (html) {\n var parsedHtml = parseHtml(html);\n $('.modal-body').append(parsedHtml.body);\n $('.show-more-bonus-products:first').remove();\n $('.modal-content').spinner().stop();\n },\n error: function () {\n $('.modal-content').spinner().stop();\n }\n });\n });\n },\n addBonusProductsToCart: function () {\n $(document).on('click', '.add-bonus-products', function () {\n var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');\n var queryString = '?pids=';\n var url = $('.choose-bonus-product-dialog').data('addtocarturl');\n var pidsObject = {\n bonusProducts: []\n };\n\n $.each($readyToOrderBonusProducts, function () {\n var qtyOption = parseInt($(this)\n .data('qty'), 10);\n\n var option = null;\n if (qtyOption > 0) {\n if ($(this).data('optionid') && $(this).data('option-selected-value')) {\n option = {};\n option.optionId = $(this).data('optionid');\n option.productId = $(this).data('pid');\n option.selectedValueId = $(this).data('option-selected-value');\n }\n pidsObject.bonusProducts.push({\n pid: $(this).data('pid'),\n qty: qtyOption,\n options: [option]\n });\n pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);\n }\n });\n queryString += JSON.stringify(pidsObject);\n queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');\n queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');\n $.spinner().start();\n $.ajax({\n url: url + queryString,\n method: 'POST',\n success: function (data) {\n $.spinner().stop();\n if (data.error) {\n $('#chooseBonusProductModal').modal('hide');\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('
      ');\n }\n $('.add-to-cart-messages').append(\n '
      '\n + data.errorMessage + '
      '\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 3000);\n } else {\n $('.configure-bonus-product-attributes').html(data);\n $('.bonus-products-step2').removeClass('hidden-xl-down');\n $('#chooseBonusProductModal').modal('hide');\n\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('
      ');\n }\n $('.minicart-quantity').html(data.totalQty);\n $('.add-to-cart-messages').append(\n '
      '\n + data.msgSuccess + '
      '\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n if ($('.cart-page').length) {\n location.reload();\n }\n }, 1500);\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl\n};\n","'use strict';\n\n/**\n * Alert handler model\n */\nclass AlertHandlerModel {\n\tconstructor() {\n\t\tthis.$flashMessagesContainer = document.querySelector(\n\t\t\t'.js-flash-messages-container'\n\t\t);\n\t\tthis.$alertTemplate = document.querySelector('.js-alert-template');\n\t}\n\n\t/**\n\t * Creates an alert message\n\t * @param {string} alertMessage alert message\n\t * @param {string} alertType alert type, i.e. danger, warning, info etc\n\t */\n\tcreateAlertMessage(alertMessage, alertType) {\n\t\tconst $alertContainer = this.$alertTemplate.cloneNode(true);\n\n\t\t$alertContainer.classList.add(`alert-${alertType}`, 'show');\n\t\t$alertContainer.classList.remove('d-none');\n\n\t\t$alertContainer.append(alertMessage);\n\t\tthis.$flashMessagesContainer.append($alertContainer);\n\t}\n\n\t/**\n\t * ---- General method which should be used for cases when error came from Braintree ----\n\t * Shows an error notification by message\n\t * @param {string} errorMessage message to display inside error notification\n\t */\n\tshowError(errorMessage) {\n\t\tthis.createAlertMessage(\n\t\t\terrorMessage,\n\t\t\twindow.braintreeConstants.FLASH_MESSAGE_DANGER\n\t\t);\n\t}\n\n\t/**\n\t * ---- General method which should be used for cases when error came from Braintree ----\n\t * Shows an error notification by error Object from BT\n\t * NOTE this.alertMessages come from a child class that has alertMessages as an argument\n\t * @param {Object} error error object from BT\n\t * @param {Object} errorMessages object with error messages\n\t */\n\tshowBraintreeError(error, errorMessages) {\n\t\tconst message = error.message;\n\t\tconst errorCode = error.code;\n\t\tconst alertMessages = errorMessages || this.alertMessages;\n\t\tconst errorMessage =\n\t\t\talertMessages[errorCode] ||\n\t\t\tmessage ||\n\t\t\talertMessages.CLIENT_GATEWAY_NETWORK;\n\n\t\tthis.showError(errorMessage);\n\t}\n\n\t/**\n\t * Shows a warning message\n\t * @param {string} warningMessage warning message\n\t */\n\tshowWarning(warningMessage) {\n\t\tthis.createAlertMessage(\n\t\t\twarningMessage,\n\t\t\twindow.braintreeConstants.FLASH_MESSAGE_WARNING\n\t\t);\n\t}\n\n\t/**\n\t * Shows a warning message\n\t * @param {string} infoMessage warning message\n\t */\n\tshowInfo(infoMessage) {\n\t\tthis.createAlertMessage(\n\t\t\tinfoMessage,\n\t\t\twindow.braintreeConstants.FLASH_MESSAGE_INFO\n\t\t);\n\t}\n\n\t/**\n\t * Hides alert messages that are created by AlertHandler model\n\t */\n\thideAlerts() {\n\t\tconst $alertContainers = document.querySelectorAll('.js-alert-template');\n\n\t\t$alertContainers.forEach((element) => element.classList.add('d-none'));\n\t}\n\n\t/**\n\t * Hides alert messages that are created by FlashMessages controller\n\t */\n\thideControllerCreatedAlerts() {\n\t\tconst $alertContainers = document.querySelectorAll('.js-alert-dismissible');\n\n\t\t$alertContainers.forEach((element) => element.classList.add('d-none'));\n\t}\n}\n\nmodule.exports = AlertHandlerModel;\n","'use strict';\n\n/**\n * Inits APMA functionality\n */\nfunction init() {\n\tconst payPalBusinessLogic = require('./paypal/payPal');\n\tconst paymentMethodGeneral = require('./paymentMethodGeneral');\n\n\tpayPalBusinessLogic.init(\n\t\tpaymentMethodGeneral.createGeneralClientInstancePromise()\n\t);\n\tpayPalBusinessLogic.initAPMA(\n\t\tpaymentMethodGeneral.createGeneralClientInstancePromise()\n\t);\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst AlertHandlerModel = require('../../alertHandler');\n\n/**\n * ApplePay alert handler model\n */\nclass ApplePayAlertHandlerModel extends AlertHandlerModel {\n\tconstructor(alertMessages) {\n\t\tsuper();\n\t\tthis.alertMessages = alertMessages;\n\t}\n\n\t/**\n\t * Handles an error by type\n\t * @param {Object} error Error object or error message\n\t */\n\thandleApplePayError(error) {\n\t\tif (error.name === 'BraintreeError') {\n\t\t\tthis.showBraintreeError(error);\n\t\t} else {\n\t\t\tthis.showError(error.message);\n\t\t}\n\t}\n}\n\nmodule.exports = ApplePayAlertHandlerModel;\n","'use strict';\n\nconst braintreeApplePayModelBuilder = require('./braintreesdk/braintreeApplePayModelBuilder');\nconst applePayPaymentProcessing = require('./components/applePayPaymentProcessing');\nconst applePayErrorMessages = require('./constants/errorMessages');\n\nconst AlertHandlerModel = require('./alerthandler/applePayAlertHandlerModel');\n\nlet braintreeApplePayModelResponse;\nlet applePayMessages;\n\n/**\n * Inits Apple Pay payment processing on Cart/Checkout Page\n */\nfunction initApplePay() {\n\tconst alertHandler = new AlertHandlerModel(applePayMessages);\n\n\tif (!braintreeApplePayModelResponse || braintreeApplePayModelResponse.error) {\n\t\tconst error =\n\t\t\tbraintreeApplePayModelResponse.error ||\n\t\t\tapplePayErrorMessages.NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS;\n\n\t\talertHandler.handleApplePayError(error);\n\t}\n\n\tapplePayPaymentProcessing.init(\n\t\tbraintreeApplePayModelResponse.btApplePayModel,\n\t\talertHandler\n\t);\n}\n\n/**\n * Inits Apple Pay on the Cart/Billing-Checkout Pages\n */\nfunction init() {\n\tbraintreeApplePayModelResponse = braintreeApplePayModelBuilder.init();\n\n\tif (!braintreeApplePayModelResponse.error) {\n\t\tapplePayMessages =\n\t\t\tbraintreeApplePayModelResponse.btApplePayConfigs.messages;\n\t}\n}\n\nmodule.exports = {\n\tinit,\n\tinitApplePay,\n};\n","'use strict';\n\n/* global Promise braintree $ */\n\nconst applePayErrorMessages = require('../constants/errorMessages');\n\nconst braintreeApplePaySDK = require('./braintreeApplePaySDK');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst helper = require('../../helper');\n\n// Global variables\n// Is Froud tools enabled\nlet isFtEnabled;\nlet btClientInstancePromise;\nlet apInstance;\nlet amount;\n\n/**\n * Init braintree Apple Pay model\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n * @param {boolean} isFraudToolsEnabled Is fraud tools enabled value\n */\nfunction init(braintreeClientInstancePromise, isFraudToolsEnabled) {\n\tbraintreeApplePaySDK.init(braintreeClientInstancePromise);\n\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n\tisFtEnabled = isFraudToolsEnabled;\n}\n\n/**\n * Returns fraud data from dataCollector payload\n * @returns {Object} Payload with fraud data\n */\nfunction collectFraudData() {\n\tlet response;\n\n\tif (isFtEnabled) {\n\t\tresponse = braintreeGeneral.collectFraudData(btClientInstancePromise);\n\t} else {\n\t\tresponse = Promise.resolve({\n\t\t\tcustomMessage: applePayErrorMessages.FRAUD_DATA_CELLECTION_ISNOT_ENABLED,\n\t\t});\n\t}\n\n\treturn response;\n}\n\n/**\n * Preparing Apple Pay payment\n * @param {Object} ApplePaySession Apple Pay session\n * @returns {Promise} Promise with 'canMakePayments' boolean value\n */\nfunction initApplePay(ApplePaySession) {\n\treturn braintreeApplePaySDK\n\t\t.createApplePayPayment()\n\t\t.then(function (applePayInstance) {\n\t\t\tapInstance = applePayInstance;\n\n\t\t\treturn ApplePaySession.canMakePaymentsWithActiveCard(\n\t\t\t\tapplePayInstance.merchantIdentifier\n\t\t\t);\n\t\t});\n}\n\n/**\n * Merges a payment request with Braintree defaults to return an {external:ApplePayPaymentRequest}\n * @param {Object} applePayConfigs Apple Pay config object\n * @returns {Object} Payment request object\n */\nfunction createPaymentDataRequest(applePayConfigs) {\n\treturn braintreeApplePaySDK.createPaymentDataRequest(\n\t\tapInstance,\n\t\tapplePayConfigs,\n\t\tamount\n\t);\n}\n\n/**\n * Validates merchant website, as required by ApplePaySession before payment can be authorized\n * @param {Object} sessionEvent Apple Pay session event\n * @param {Object} applePayConfigs Apple Pay config object\n * @returns {Promise} Promise with merchant session\n */\nfunction onValidateMerchant(sessionEvent, applePayConfigs) {\n\treturn braintreeApplePaySDK.performValidation(\n\t\tapInstance,\n\t\tsessionEvent,\n\t\tapplePayConfigs\n\t);\n}\n\n/**\n * Tokenizes an Apple Pay payment\n * @param {Object} sessionEvent Apple Pay session event\n * @returns {Promise} Promise with tokenized payload\n */\nfunction onPaymentAuthorized(sessionEvent) {\n\treturn braintreeApplePaySDK.tokenize(apInstance, sessionEvent);\n}\n\n/**\n * Adds shipping methods based on the address\n * @param {Object} sessionEvent Apple Pay session event\n * @param {Object} applePayConfigs Apple Pay config object\n * @returns {Promise} Promise with applicable shipping options\n */\nasync function onShippingContactSelected(sessionEvent, applePayConfigs) {\n\tconst shippingAddress = sessionEvent.shippingContact;\n\tconst city = shippingAddress.locality;\n\tconst stateCode = shippingAddress.administrativeArea;\n\tconst countryCode = shippingAddress.countryCode;\n\tconst postalCode = shippingAddress.postalCode;\n\tconst addressQueryString = `city=${city}&stateCode=${stateCode}&countryCode=${countryCode}&postalCode=${postalCode}`;\n\tconst paymentMethodId = window.braintreeConstants.PAYMENT_METHOD_ID_APPLEPAY;\n\tconst url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\n\n\tconst responseData = await helper.getApplicableShippingOptions(url);\n\n\treturn {\n\t\tnewTotal: {\n\t\t\tlabel: applePayConfigs.options.displayName,\n\t\t\tamount: amount,\n\t\t},\n\t\tnewShippingMethods: responseData.shippingOptions,\n\t};\n}\n\n/**\n * Updates price based on a selected shipping method\n * @param {Object} sessionEvent Apple Pay session event\n * @param {Object} applePayConfigs Apple Pay config object\n * @returns {Promise} Promise with new order amount\n */\nasync function onShippingMethodSelected(sessionEvent, applePayConfigs) {\n\tconst newShippingMethod = sessionEvent.shippingMethod;\n\tconst shippingOptionId = newShippingMethod.identifier;\n\n\tconst updatedAmount = await helper.updateAmountForShippingOption(\n\t\tshippingOptionId\n\t);\n\n\treturn {\n\t\tnewTotal: {\n\t\t\tlabel: applePayConfigs.options.displayName,\n\t\t\tamount: updatedAmount,\n\t\t},\n\t};\n}\n\n/**\n * Update order amount\n * @param {Object} applePayConfigs Apple Pay config object\n */\nfunction updateApplePayAmount(applePayConfigs) {\n\tfetch(helper.getUrlWithCsrfToken(applePayConfigs.getOrderInfoUrl))\n\t\t.then((response) => response.json())\n\t\t.then((data) => {\n\t\t\tamount = data.amount;\n\t\t})\n\t\t.catch(() => window.location.reload());\n}\n\nmodule.exports = {\n\tinit,\n\tcollectFraudData,\n\tinitApplePay,\n\tcreatePaymentDataRequest,\n\tonValidateMerchant,\n\tonPaymentAuthorized,\n\tupdateApplePayAmount,\n\tonShippingContactSelected,\n\tonShippingMethodSelected,\n};\n","'use strict';\n\nconst applePayHelper = require('../helpers/applePayHelper');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst braintreeApplePayModel = require('./braintreeApplePayModel');\n\nconst applePayErrorMessages = require('../constants/errorMessages');\n\n/**\n * Initialize Braintree Apple Pay Model. Pattern Builder is used\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n\tconst braintreeApplePayConfigs = applePayHelper.getBraintreeApplePayConfigs();\n\tconst response = {\n\t\terror: false,\n\t\tmessage: '',\n\t\tbtApplePayModel: null,\n\t\tbtApplePayConfigs: null,\n\t};\n\n\tlet clientToken;\n\tlet btClientInstancePromise;\n\n\tif (braintreeApplePayConfigs) {\n\t\tclientToken = braintreeApplePayConfigs.clientToken;\n\t\tbtClientInstancePromise =\n\t\t\tbraintreeGeneral.createClientInstance(clientToken);\n\n\t\tbraintreeApplePayModel.init(\n\t\t\tbtClientInstancePromise,\n\t\t\tbraintreeApplePayConfigs.isFraudToolsEnabled\n\t\t);\n\n\t\tresponse.btApplePayModel = braintreeApplePayModel;\n\t\tresponse.btApplePayConfigs = braintreeApplePayConfigs;\n\t} else {\n\t\tresponse.error = true;\n\t\tresponse.message =\n\t\t\tapplePayErrorMessages.NO_APPLE_PAY_BRAINTREE_CONFIGURATIONS;\n\t}\n\n\treturn response;\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nlet btClientInstancePromise;\n\n/**\n * Creates Apple Pay payment instance\n * @returns {Promise} A promise resolve with the Apple Pay instance\n */\n\nfunction createApplePayPayment() {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\treturn braintree.applePay.create({\n\t\t\tclient: btClientInstance,\n\t\t});\n\t});\n}\n\n/**\n * Creates a configuration object for creation an Apple Pay session\n * @param {applePayInstance} applePayInstance Apple Pay instance\n * @param {Object} applePayConfigs Apple Pay configs object\n * @param {number} amount Order total amount\n * @returns {Object} Configuration object\n */\nfunction createPaymentDataRequest(applePayInstance, applePayConfigs, amount) {\n\treturn applePayInstance.createPaymentRequest({\n\t\ttotal: {\n\t\t\tlabel: applePayConfigs.options.displayName,\n\t\t\tamount: amount,\n\t\t},\n\t});\n}\n\n/**\n * Validates merchant website, as required by Apple Pay Session before payment can be authorized\n * @param {applePayInstance} applePayInstance Apple Pay instance\n * @param {Object} sessionEvent Apple Pay session event\n * @param {Object} applePayConfigs Apple Pay configs object\n * @returns {Promise} Promise that resolve with 'merchantSession'\n */\nfunction performValidation(applePayInstance, sessionEvent, applePayConfigs) {\n\treturn applePayInstance.performValidation({\n\t\tvalidationURL: sessionEvent.validationURL,\n\t\tdisplayName: applePayConfigs.options.displayName,\n\t});\n}\n\n/**\n * Tokenizes an Apple Pay payment\n * @param {applePayInstance} applePayInstance Apple pay instance\n * @param {Object} sessionEvent Apple pay session event\n * @returns {Promise} Promise that resolve with 'tokenizePayload'\n */\nfunction tokenize(applePayInstance, sessionEvent) {\n\treturn applePayInstance.tokenize({\n\t\ttoken: sessionEvent.payment.token,\n\t});\n}\n\n/**\n * Inits braintreeApplePaySDK with client instance promise\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n */\n\nfunction init(braintreeClientInstancePromise) {\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n\tcreateApplePayPayment,\n\tcreatePaymentDataRequest,\n\tperformValidation,\n\ttokenize,\n\tinit,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\nconst $applePayButton = document.querySelector('.js-braintree-applepay-button');\n\nlet paymentData;\nlet $braintreeCartButtons;\nlet applePayCheckoutFormData;\nlet alertHandler;\n\n/**\n * Expends Apple Pay Checkout Form with required data\n */\nfunction expandApplePayCheckoutFormData() {\n\tconst $csrfToken = document.querySelector(\n\t\t'.js-braintree-cart-buttons-wrap #csrf_token'\n\t);\n\n\tapplePayCheckoutFormData.append($csrfToken.name, $csrfToken.value);\n\tapplePayCheckoutFormData.append('braintreeApplePayNonce', paymentData.nonce);\n\tapplePayCheckoutFormData.append(\n\t\t'braintreeApplePayDeviceDataInput',\n\t\tpaymentData.deviceData\n\t);\n\tapplePayCheckoutFormData.append(\n\t\t'braintreeApplePayShippingAddress',\n\t\tJSON.stringify(paymentData.shippingAddress) || '{}'\n\t);\n\tapplePayCheckoutFormData.append(\n\t\t'braintreeApplePayBillingAddress',\n\t\tJSON.stringify(paymentData.billingAddress) || '{}'\n\t);\n}\n\n/**\n * Process Apple Pay on the Cart Page\n */\nfunction processCartFlow() {\n\tconst billingAddressData = paymentData.billingAddress;\n\tconst paymentMethodName = helper.tryParseJSON(\n\t\t$applePayButton.getAttribute('data-braintree-config')\n\t).paymentMethodName;\n\tconst placeOrderUrl = window.braintreeUrls.placeOrderUrl;\n\tconst checkoutSubmitPayment = window.braintreeUrls.checkoutSubmitPayment;\n\tconst checkoutFormFields = $braintreeCartButtons.getAttribute(\n\t\t'data-checkout-form-fields'\n\t);\n\tconst paymentFieldData = helper.getPaymentFieldsData(\n\t\tbillingAddressData,\n\t\tpaymentMethodName\n\t);\n\n\tapplePayCheckoutFormData = helper.createPaymentFormData(\n\t\tcheckoutFormFields,\n\t\tpaymentFieldData\n\t);\n\tapplePayCheckoutFormData.append('pageFlowCart', true);\n\texpandApplePayCheckoutFormData();\n\t// submit customer form with email (CheckoutServices-SubmitCustomer)\n\t// as we skip step \"login via guest/registered user\" while express checkout\n\t// email is set only in case of guest checkout and if email is not already set\n\tpaymentMethodGeneral.submitCustomerForm(billingAddressData.email);\n\n\tfetch(helper.getUrlWithCsrfToken(checkoutSubmitPayment), {\n\t\tmethod: 'POST',\n\t\tbody: applePayCheckoutFormData,\n\t})\n\t\t.then((response) => response.json())\n\t\t.then((data) => {\n\t\t\tif (!helper.handleSubmitPaymentErrors(data, alertHandler)) {\n\t\t\t\twindow.location.href = placeOrderUrl;\n\t\t\t}\n\t\t})\n\t\t.catch((error) => {\n\t\t\tif (error && error.redirectUrl) {\n\t\t\t\twindow.location.href = error.redirectUrl;\n\t\t\t}\n\t\t});\n}\n\n/**\n * Inits Apple Pay Cart components\n * @param {Object} data Apple Pay payment data\n * @param {Constructor} alertHandlingModel Alert handling model\n */\nfunction init(data, alertHandlingModel) {\n\tpaymentData = data;\n\t$braintreeCartButtons = document.querySelector(\n\t\t'.js-braintree-cart-buttons-wrap'\n\t);\n\t$applePayButton.setAttribute('data-is-inited', true);\n\talertHandler = alertHandlingModel;\n\n\tprocessCartFlow();\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\nlet paymentData;\n\n/**\n * Process Apple Pay on the Checkout page\n */\nfunction processCheckoutFlow() {\n\tdocument.getElementById('braintreeApplePayNonce').value = paymentData.nonce;\n\tdocument.getElementById('braintreeApplePayBillingAddress').value =\n\t\tJSON.stringify(paymentData.billingAddress);\n\n\t// Updating Storefront Billing Form data with ApplePay Billing\n\tconst storeFrontBillingData = helper.getUpdatedStoreFrontBillingData(\n\t\tpaymentData.billingAddress\n\t);\n\n\thelper.updateBillingFormValues(storeFrontBillingData);\n}\n\n/**\n * Inits Apple Pay checkout components\n * @param {Object} data Apple Pay payment data\n */\nfunction init(data) {\n\tpaymentData = data;\n\n\tprocessCheckoutFlow();\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ ApplePaySession */\n\n// Helpers\nconst loaderInstance = require('../../loaderHelper');\nconst applePayHelper = require('../helpers/applePayHelper');\nconst applePayPaymentProcessingHelper = require('../helpers/applePayPaymentProcessingHelper');\nconst helper = require('../../helper');\n\nconst applePayPaymentProcessingConstants = require('../constants/applePayPaymentProcessingConstants');\n\n// Components\nconst applePayCart = require('./applePayCart');\nconst applePayCheckout = require('./applePayCheckout');\n\nconst $braintreeApplePayLoader = document.querySelector(\n\t'.js-braintree-applepay-loader'\n);\nconst $applePayButtonContainer = document.querySelector(\n\t'.js-braintree-applepay-button'\n);\n\nconst $continueButton = document.querySelector('button.submit-payment');\nconst applePayEnabledOnCheckout = Boolean(\n\tdocument.querySelector('.js-braintree-applepay-content')\n);\n\n// global variables\nlet loader;\nlet applePayModel;\nlet applePayButtonConfig;\nlet alertHandler;\n\n/**\n * Functionality over tokenized payment\n * @param {Object} paymentData Apple Pay payment data\n */\nfunction onTokenizedPayment(paymentData) {\n\tconst applePayFlow = applePayPaymentProcessingHelper.getApplePayFlowId();\n\n\thelper.removeActiveSessionPayment();\n\n\tswitch (applePayFlow) {\n\t\tcase applePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME:\n\t\t\tapplePayCheckout.init(paymentData);\n\t\t\t$continueButton.click();\n\n\t\t\tbreak;\n\t\tcase applePayPaymentProcessingConstants.FLOW_CART_NAME:\n\t\t\tapplePayCart.init(paymentData, alertHandler);\n\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Creates Apple Pay session. Opens and processes Apple Pay payment window.\n */\nasync function createApplePaySession() {\n\t// Updates order amount for paymentDataRequest\n\tawait applePayModel.updateApplePayAmount(applePayButtonConfig);\n\n\t// Creates a configuration object for creating Apple pay session\n\tconst paymentDataRequest =\n\t\tapplePayModel.createPaymentDataRequest(applePayButtonConfig);\n\n\tif (applePayButtonConfig.isRequiredBillingContactFields) {\n\t\tpaymentDataRequest.requiredBillingContactFields = ['postalAddress', 'name'];\n\t}\n\n\tif (applePayButtonConfig.isRequiredShippingContactFields) {\n\t\tpaymentDataRequest.requiredShippingContactFields = [\n\t\t\t'postalAddress',\n\t\t\t'name',\n\t\t\t'phone',\n\t\t\t'email',\n\t\t];\n\t}\n\n\t// Creates new Apple Pay session\n\tconst session = new ApplePaySession(1, paymentDataRequest);\n\tconst applePayFlow = applePayPaymentProcessingHelper.getApplePayFlowId();\n\n\tif (applePayFlow === applePayPaymentProcessingConstants.FLOW_CART_NAME) {\n\t\t// Adds shipping methods based on the address\n\t\tsession.onshippingcontactselected = function (event) {\n\t\t\tapplePayModel\n\t\t\t\t.onShippingContactSelected(event, applePayButtonConfig)\n\t\t\t\t.then((applePayShippingContactUpdate) => {\n\t\t\t\t\tsession.completeShippingContactSelection(\n\t\t\t\t\t\tapplePayShippingContactUpdate\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\talertHandler.handleApplePayError(error);\n\t\t\t\t\tsession.abort();\n\t\t\t\t});\n\t\t};\n\n\t\t// Updates price based on a selected shipping method\n\t\tsession.onshippingmethodselected = function (event) {\n\t\t\tapplePayModel\n\t\t\t\t.onShippingMethodSelected(event, applePayButtonConfig)\n\t\t\t\t.then((applePayShippingMethodUpdate) => {\n\t\t\t\t\tsession.completeShippingMethodSelection(applePayShippingMethodUpdate);\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\talertHandler.handleApplePayError(error);\n\t\t\t\t\tsession.abort();\n\t\t\t\t});\n\t\t};\n\t}\n\n\t// Validates merchant website\n\tsession.onvalidatemerchant = function (event) {\n\t\tapplePayModel\n\t\t\t.onValidateMerchant(event, applePayButtonConfig)\n\t\t\t.then(function (merchantSession) {\n\t\t\t\tsession.completeMerchantValidation(merchantSession);\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\talertHandler.handleApplePayError(error);\n\t\t\t\tsession.abort();\n\t\t\t});\n\t};\n\n\t// Tokenizes an Apple Pay payment\n\tsession.onpaymentauthorized = function (event) {\n\t\tloader.show();\n\n\t\tapplePayModel\n\t\t\t.onPaymentAuthorized(event)\n\t\t\t.then(function (tokenizedPayload) {\n\t\t\t\tsession.completePayment(ApplePaySession.STATUS_SUCCESS);\n\n\t\t\t\tconst TokenizedPaymentData =\n\t\t\t\t\tapplePayPaymentProcessingHelper.getTokenizedPaymentData(\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\ttokenizedPayload\n\t\t\t\t\t);\n\n\t\t\t\tonTokenizedPayment(TokenizedPaymentData);\n\n\t\t\t\tloader.hide();\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\tsession.completePayment(ApplePaySession.STATUS_FAILURE);\n\t\t\t\tloader.hide();\n\t\t\t\talertHandler.handleApplePayError(error);\n\t\t\t});\n\t};\n\n\tsession.begin();\n}\n\n/**\n * Call back function to be resolved when Apple Pay payment button is clicked\n */\nfunction onApplePayButtonClick() {\n\talertHandler.hideAlerts();\n\n\t// Billing flow\n\tif (applePayEnabledOnCheckout) {\n\t\t// Validates email and phone fields on the Billing page\n\t\tif (applePayHelper.isBilligFiledsValid()) {\n\t\t\tcreateApplePaySession();\n\t\t}\n\t\t// Cart flow\n\t} else {\n\t\tcreateApplePaySession();\n\t}\n}\n\n/**\n * Init and add Apple Pay on the Cart or Billing page\n */\nfunction initApplePay() {\n\tloader.show();\n\n\tconst result = applePayModel\n\t\t.collectFraudData()\n\t\t.then(function (fraudDataPayload) {\n\t\t\tapplePayHelper.setApplePayDeviceData(fraudDataPayload);\n\t\t\tloader.hide();\n\n\t\t\treturn applePayModel\n\t\t\t\t.initApplePay(ApplePaySession)\n\t\t\t\t.then(function (canMakePayments) {\n\t\t\t\t\tloader.hide();\n\t\t\t\t\tapplePayHelper.renderApplePayButton(\n\t\t\t\t\t\tapplePayButtonConfig.applePayConfig.style\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!canMakePayments) {\n\t\t\t\t\t\tapplePayHelper.makeApplePayButtonDisabled();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst $applePayBtn = document.getElementById('apple-pay-btn');\n\t\t\t\t\t\tapplePayModel.updateApplePayAmount(applePayButtonConfig);\n\t\t\t\t\t\t$applePayBtn.addEventListener('click', onApplePayButtonClick);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\n\tresult.catch(function (error) {\n\t\tloader.hide();\n\t\talertHandler.handleApplePayError(error);\n\t});\n}\n\n/**\n * Inits Apple Pay payment processing components\n * @param {Object} braintreeApplePayModel Apple Pay model\n * @param {Constructor} alertHandlingModel Alert handling model\n */\nfunction init(braintreeApplePayModel, alertHandlingModel) {\n\tloader = loaderInstance($braintreeApplePayLoader);\n\tapplePayModel = braintreeApplePayModel;\n\tapplePayButtonConfig = helper.tryParseJSON(\n\t\t$applePayButtonContainer.getAttribute('data-braintree-config')\n\t);\n\talertHandler = alertHandlingModel;\n\n\tif (window.ApplePaySession) {\n\t\tinitApplePay();\n\t} else {\n\t\tapplePayHelper.hideApplePayTab();\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nmodule.exports = {\n\tFLOW_CHECKOUT_NAME: 'checkout',\n\tFLOW_CART_NAME: 'cart',\n};\n","'use strict';\n\nmodule.exports = {\n\tNO_APPLE_PAY_BRAINTREE_CONFIGURATIONS:\n\t\t'No Apple Pay Braintree Configurations',\n\tFRAUD_DATA_CELLECTION_ISNOT_ENABLED:\n\t\t'Fraud Data collection isn\\t enabled via Custom Site Preference',\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\nconst $applePayButton = document.querySelector('.js-braintree-applepay-button');\nconst $applepayDataMethod = document.querySelector(\n\t'.payment-options[role=tablist] .nav-item[data-method-id=\"ApplePay\"]'\n);\nconst $phoneField = document.querySelector(\n\t'.contact-info-block [name=dwfrm_billing_contactInfoFields_phone]'\n);\n\n/**\n * Returns Braintree Apple Pay configs\n * @returns {Object} Braintree Apple Pay configs\n */\nfunction getBraintreeApplePayConfigs() {\n\tlet braintreeApplePayButtonConfigs = null;\n\n\ttry {\n\t\tbraintreeApplePayButtonConfigs = helper.tryParseJSON(\n\t\t\tdocument\n\t\t\t\t.querySelector('.js-braintree-applepay-button')\n\t\t\t\t.getAttribute('data-braintree-config')\n\t\t);\n\t} catch (error) {\n\t\treturn braintreeApplePayButtonConfigs;\n\t}\n\n\treturn braintreeApplePayButtonConfigs;\n}\n\n/**\n * Sets device data from 'data collector' to corresponding input field\n * @param {Object} fraudDataPayload Froud payload data\n */\n\nfunction setApplePayDeviceData(fraudDataPayload) {\n\tconst $braintreeApplePayDeviceData = document.getElementById(\n\t\t'braintreeApplePayDeviceData'\n\t);\n\n\tif (fraudDataPayload.deviceData) {\n\t\t$braintreeApplePayDeviceData.value = fraudDataPayload.deviceData;\n\t}\n}\n\n/**\n * Builds and shows Apple Pay button\n * @param {Object} buttonStyles An object with Apple pay button styles\n */\nfunction renderApplePayButton(buttonStyles) {\n\tconst $applePayBtn = document.getElementById('apple-pay-btn');\n\n\t// Builds an Apple pay button by parameters\n\t$applePayBtn.setAttribute('type', buttonStyles.type);\n\t$applePayBtn.setAttribute('buttonstyle', buttonStyles.buttonStyle);\n\n\t// Shows an Apple pay container\n\t$applePayButton.classList.add('d-block');\n\n\t// Shows an Apple pay tab on the billing page\n\tif ($applepayDataMethod) {\n\t\t$applepayDataMethod.classList.add('d-block');\n\t}\n}\n\n/**\n * Hides Apple Pay tab on the Checkout/Billing page\n */\nfunction hideApplePayTab() {\n\tconst $applePayButtonContainer = document.querySelector(\n\t\t'.js-applepay-container'\n\t);\n\n\tif ($applepayDataMethod) {\n\t\t$applepayDataMethod.classList.add('d-none');\n\t}\n\n\tif ($applePayButtonContainer) {\n\t\t$applePayButtonContainer.classList.add('d-none');\n\t}\n}\n\n/**\n * Marks Apple Pay button as disabled\n */\nfunction makeApplePayButtonDisabled() {\n\t$applePayButton.classList.add('js-braintree-applepay-button_disabled');\n}\n\n/**\n * Remove session Apple Pay nonce\n */\nfunction removeSessionNonce() {\n\tdocument.getElementById('braintreeApplePayNonce').value = '';\n\tdocument.getElementById('braintreeApplePayDeviceData').value = '';\n}\n\n/**\n * Validates required billing form fields\n * @returns {boolean} Whether billing form fields are valid\n */\nfunction isBilligFiledsValid() {\n\treturn helper.isValidInputField($phoneField);\n}\n\n/**\n * Depends of the 'data-paypal-is-hide-continue-button' hides or shows continue button on the Billing Page\n */\nfunction toggleContinueButtonOnBillingPage() {\n\tconst applePayContent = document.querySelector(\n\t\t'.js-braintree-applepay-content'\n\t);\n\n\thelper.continueButtonToggle(\n\t\tapplePayContent.getAttribute('data-paypal-is-hide-continue-button')\n\t);\n}\n\nmodule.exports = {\n\tgetBraintreeApplePayConfigs,\n\tsetApplePayDeviceData,\n\trenderApplePayButton,\n\tmakeApplePayButtonDisabled,\n\tremoveSessionNonce,\n\tisBilligFiledsValid,\n\thideApplePayTab,\n\ttoggleContinueButtonOnBillingPage,\n};\n","'use strict';\n\nconst applePayPaymentProcessingConstants = require('../constants/applePayPaymentProcessingConstants');\n\n/**\n * Returns current Apple Pay flow\n * @returns {string} Flow id checkout/cart\n */\nfunction getApplePayFlowId() {\n\tconst applePayEnabledOnCheckout = Boolean(\n\t\tdocument.querySelector('.js-braintree-applepay-content')\n\t);\n\n\treturn applePayEnabledOnCheckout\n\t\t? applePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME\n\t\t: applePayPaymentProcessingConstants.FLOW_CART_NAME;\n}\n\n/**\n * Returns shipping address based on Apple Pay payment shipping contact\n * @param {Object} shippingContact Shipping address data\n * @returns {Object} Shipping address with required fields\n */\nfunction getShippingAddress(shippingContact) {\n\treturn {\n\t\tstreetAddress: shippingContact.addressLines[0],\n\t\textendedAddress: shippingContact.addressLines[1],\n\t\tlocality: shippingContact.locality,\n\t\tregion: shippingContact.administrativeArea.toUpperCase(),\n\t\tpostalCode: decodeURIComponent(shippingContact.postalCode),\n\t\tcountryCodeAlpha2: shippingContact.countryCode.toUpperCase(),\n\t\tfirstName: shippingContact.givenName,\n\t\tlastName: shippingContact.familyName,\n\t\tphone: shippingContact.phoneNumber,\n\t\temail: shippingContact.emailAddress,\n\t};\n}\n\n/**\n * Returns billing address based on Apple Pay payment billing contact\n * @param {Object} billingContact Billing address data\n * @param {string} email Email\n * @param {string} phone Phone number\n * @returns {Object} Billing address with required fields\n */\nfunction getBillingAddress(billingContact, email, phone) {\n\treturn {\n\t\tstreetAddress: billingContact.addressLines[0],\n\t\textendedAddress: billingContact.addressLines[1],\n\t\tlocality: billingContact.locality,\n\t\tregion: billingContact.administrativeArea.toUpperCase(),\n\t\tpostalCode: decodeURIComponent(billingContact.postalCode),\n\t\tcountryCodeAlpha2: billingContact.countryCode.toUpperCase(),\n\t\tfirstName: billingContact.givenName,\n\t\tlastName: billingContact.familyName,\n\t\temail: email,\n\t\tphone: phone,\n\t};\n}\n\n/**\n * Returns Apple Pay payment object with required data for backend\n * @param {Object} sessionEvent Apple Pay Session event\n * @param {Object} tokenizedPayload Apple Pay payment data\n * @returns {Object} Apple Pay payment object with required fileds\n */\nfunction getTokenizedPaymentData(sessionEvent, tokenizedPayload) {\n\tconst data = {\n\t\tevent: sessionEvent,\n\t\tpayload: tokenizedPayload,\n\t\tnonce: tokenizedPayload.nonce,\n\t\tdeviceData: document.getElementById('braintreeApplePayDeviceData').value,\n\t};\n\n\tlet shippingAddressData = sessionEvent.payment.shippingContact;\n\n\tif (shippingAddressData) {\n\t\tdata.shippingAddress = getShippingAddress(shippingAddressData);\n\t} else {\n\t\tshippingAddressData = {\n\t\t\temailAddress: document.querySelector('.customer-summary-email').innerHTML,\n\t\t\tphoneNumber: document.querySelector(\n\t\t\t\t'.contact-info-block [name=dwfrm_billing_contactInfoFields_phone]'\n\t\t\t).value,\n\t\t};\n\t}\n\n\tconst billingAddressData = sessionEvent.payment.billingContact;\n\n\tif (billingAddressData) {\n\t\tdata.billingAddress = getBillingAddress(\n\t\t\tbillingAddressData,\n\t\t\tshippingAddressData.emailAddress,\n\t\t\tshippingAddressData.phoneNumber\n\t\t);\n\t}\n\n\treturn data;\n}\n\nmodule.exports = {\n\tgetApplePayFlowId,\n\tgetShippingAddress,\n\tgetBillingAddress,\n\tgetTokenizedPaymentData,\n};\n","'use strict';\n\n/**\n * This file was created to provide functionality and business logic for Credit and SRC payment methods. Do not expand this file!\n * Changes and additions to the code should be made to the appropriate files in the folders, depending on the payment method required, to maintain a clear code architecture.\n */\n\nconst AlertHandlerModel = require('./alertHandler');\nconst helper = require('./helper');\n\nconst cssClass = {\n\tD_NONE: 'd-none',\n\tFONT_WEIGHT_BOLD: 'font-weight-bold',\n};\n\nconst errorHandler = new AlertHandlerModel();\nlet creditCardListLoader;\n\n/**\n * Shows the new card block on the Account Page\n */\nfunction showAddNewCardOptions() {\n\tconst $addNewCardButton = document.querySelector(\n\t\t'.js-braintree-add-new-card-btn'\n\t);\n\tconst $addNewCardButtonWrapper = document.querySelector(\n\t\t'.js-braintree-add-new-card-wrapper-btn'\n\t);\n\tconst $addNewCardBlock = document.querySelector(\n\t\t'.js-braintree-add-new-card-block'\n\t);\n\n\t// Hide \"Credit Card error message\" container\n\terrorHandler.hideAlerts();\n\t// Hide \"Add New Card\" button\n\t$addNewCardButton.classList.add(cssClass.D_NONE);\n\t$addNewCardButtonWrapper.classList.add(cssClass.D_NONE);\n\t// Display \"Add New Card\" form\n\t$addNewCardBlock.classList.remove(cssClass.D_NONE);\n}\n\n/**\n * Removes card from Credit/SRC Cards list\n * @param {Object} e Event object\n */\nfunction initRemoveCardEvent() {\n\tconst $removeCardBtns = document.querySelectorAll(\n\t\t'.js-credit-card-accounts .js-remove-bt-payment'\n\t);\n\n\t$removeCardBtns.forEach((el) =>\n\t\tel.addEventListener('click', function (e) {\n\t\t\tconst target = e.target;\n\n\t\t\tcreditCardListLoader.show();\n\n\t\t\tfetch(\n\t\t\t\thelper.getUrlWithCsrfToken(\n\t\t\t\t\t`${window.braintreeUrls.deletePaymentUrl}?UUID=${target.getAttribute(\n\t\t\t\t\t\t'data-id'\n\t\t\t\t\t)}`\n\t\t\t\t),\n\t\t\t\t{ method: 'GET' }\n\t\t\t)\n\t\t\t\t.then((response) => {\n\t\t\t\t\treturn response.json();\n\t\t\t\t})\n\t\t\t\t.then((data) => {\n\t\t\t\t\tif (data.error && data.error.message) {\n\t\t\t\t\t\t// Show error message in a case of current PI removal is not allowed\n\t\t\t\t\t\terrorHandler.showError(data.error.message);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdocument.getElementById(`uuid-${data.UUID}`).remove();\n\n\t\t\t\t\t\tif (data.newDefaultAccount) {\n\t\t\t\t\t\t\tdocument\n\t\t\t\t\t\t\t\t.getElementById(`uuid-${data.newDefaultAccount}`)\n\t\t\t\t\t\t\t\t.classList.add(cssClass.FONT_WEIGHT_BOLD);\n\t\t\t\t\t\t\tdocument\n\t\t\t\t\t\t\t\t.getElementsByClassName(`uuid-${data.newDefaultAccount}`)\n\t\t\t\t\t\t\t\t.classList.add(cssClass.D_NONE);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcreditCardListLoader.hide();\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tlocation.reload();\n\t\t\t\t});\n\t\t})\n\t);\n}\n\n/**\n * Select default card in Credit/SRC Cards list\n * @param {Object} e Event object\n */\nfunction initMakeDefaultCardEvent() {\n\tconst $makeDefaultCardBtns = document.querySelectorAll(\n\t\t'.js-credit-card-accounts .js-braintree-make-default-card'\n\t);\n\n\t$makeDefaultCardBtns.forEach((el) =>\n\t\tel.addEventListener('click', function (e) {\n\t\t\tconst target = e.target;\n\t\t\tconst url = window.braintreeUrls.makePaymentMethodDefaultUrl;\n\t\t\tconst id = target.getAttribute('data-id');\n\t\t\tconst paymentMethodID = 'CARD';\n\n\t\t\t// Hide \"Credit Card error message\" container\n\t\t\terrorHandler.hideAlerts();\n\t\t\tcreditCardListLoader.show();\n\n\t\t\tfetch(\n\t\t\t\thelper.getUrlWithCsrfToken(`${url}?UUID=${id}&pmID=${paymentMethodID}`)\n\t\t\t)\n\t\t\t\t.then((response) => response.json())\n\t\t\t\t.then((data) => {\n\t\t\t\t\t// New default Card changes\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.querySelector(`#uuid-${data.newDefaultProperty} span`)\n\t\t\t\t\t\t.classList.add(cssClass.FONT_WEIGHT_BOLD);\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t\t'.js-braintree-make-default-card.uuid-' + data.newDefaultProperty\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.classList.add(cssClass.D_NONE);\n\n\t\t\t\t\t// Previous default Card changes\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.querySelector(`#uuid-${data.toRemoveDefaultProperty} span`)\n\t\t\t\t\t\t.classList.remove(cssClass.FONT_WEIGHT_BOLD);\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t\t'.js-braintree-make-default-card.uuid-' +\n\t\t\t\t\t\t\t\tdata.toRemoveDefaultProperty\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.classList.remove(cssClass.D_NONE);\n\n\t\t\t\t\tcreditCardListLoader.hide();\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tcreditCardListLoader.hide();\n\t\t\t\t});\n\t\t})\n\t);\n}\n\n/**\n * Inits braintree account page functionality\n */\nfunction initAccount() {\n\tconst loaderInstance = require('./loaderHelper');\n\n\tconst $creditCardAccountBtLoader = document.getElementById(\n\t\t'creditCardAccountBtLoader'\n\t);\n\tconst $addNewCard = document.querySelector('.js-braintree-add-new-card-btn');\n\tconst $submitCwppUnlinkBtn = document.querySelector('.js-unlink-submit');\n\tconst $unlinkSection = document.querySelector('.js-unlink-section');\n\n\tconst creditCardListLoaderExists = Boolean($creditCardAccountBtLoader);\n\n\tif (creditCardListLoaderExists) {\n\t\tcreditCardListLoader = loaderInstance($creditCardAccountBtLoader);\n\t}\n\n\tif ($addNewCard) {\n\t\t// \"Add new card\" area link functionality initiation\n\t\t$addNewCard.addEventListener('click', showAddNewCardOptions);\n\t}\n\n\t// User unlinking functionality initiation\n\tif ($submitCwppUnlinkBtn && $unlinkSection) {\n\t\t$submitCwppUnlinkBtn.addEventListener('click', () => {\n\t\t\tfetch(helper.getUrlWithCsrfToken(window.braintreeUrls.unlinkCwppUrl), {\n\t\t\t\tmethod: 'POST',\n\t\t\t})\n\t\t\t\t.then((res) => res.json())\n\t\t\t\t.then((res) => {\n\t\t\t\t\tif (res.errorMessage) {\n\t\t\t\t\t\terrorHandler.showError(res.errorMessage);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$unlinkSection.classList.add('d-none');\n\n\t\t\t\t\t\terrorHandler.showInfo(res.alertMessage);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tlocation.reload();\n\t\t\t\t});\n\t\t});\n\t}\n\n\t// \"Make default\" link functionality initiation\n\tinitMakeDefaultCardEvent();\n\n\t// \"Remove Card\" link functionality initiation\n\tinitRemoveCardEvent();\n}\n\nmodule.exports = {\n\tinitAccount,\n\tinitRemoveCardEvent,\n\tinitMakeDefaultCardEvent,\n};\n","'use strict';\n\n/* global braintree $ */\n\n/**\n * Create Braintree Client Instance from Client Token\n * @param {string} clientToken Braintree client token\n * @returns {Promise} returns promise with Braintree Client Instance\n */\nfunction createClientInstance(clientToken) {\n\treturn braintree.client.create({\n\t\tauthorization: clientToken,\n\t});\n}\n\n/**\n * Fraud data generation\n * @param {Promise} btClientInstancePromise Promise with Client Instance\n * @returns {Promise} returns promise with fraud data\n */\nfunction collectFraudData(btClientInstancePromise) {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\treturn braintree.dataCollector.create({\n\t\t\tclient: btClientInstance,\n\t\t\tkount: true,\n\t\t});\n\t});\n}\n\n/**\n * Get array with Braintree Customer Payment Mehtods by Personalized Client Instance\n * @param {Promise} btClientInstancePromise Promise with Client Instance\n * @returns {array} array with Braintree Customer Payment Mehtod (if any) in opposite case empty array will be returned\n */\nfunction getBtCustomerPaymentMethods(btClientInstancePromise) {\n\treturn btClientInstancePromise\n\t\t.then(function (clientInstance) {\n\t\t\treturn braintree.vaultManager.create({\n\t\t\t\tclient: clientInstance,\n\t\t\t});\n\t\t})\n\t\t.then(function (vaultManager) {\n\t\t\treturn vaultManager.fetchPaymentMethods({\n\t\t\t\tdefaultFirst: true,\n\t\t\t});\n\t\t});\n}\n\nmodule.exports = {\n\tcreateClientInstance,\n\tcollectFraudData,\n\tgetBtCustomerPaymentMethods,\n};\n","'use strict';\n\n/**\n * Inits credit card functionality on Storefront\n * @returns {void}\n */\nfunction initCreditCardFunctionality() {\n\tconst creditCardOnAccountEnabled = Boolean(\n\t\tdocument.querySelector('.js-braintree-add-credit-card-form')\n\t);\n\tconst creditCardEnabledOnCheckout = Boolean(\n\t\tdocument.querySelector('.js-braintree-credit-card-content')\n\t);\n\n\tlet creditCardBusinessLogic;\n\n\tif (creditCardOnAccountEnabled || creditCardEnabledOnCheckout) {\n\t\tcreditCardBusinessLogic = require('./creditcard/creditCard');\n\t\tcreditCardBusinessLogic.init();\n\t}\n\n\tif (creditCardOnAccountEnabled) {\n\t\tcreditCardBusinessLogic.initAccount();\n\t}\n\n\tif (creditCardEnabledOnCheckout) {\n\t\tcreditCardBusinessLogic.initCheckout();\n\t}\n}\n\n/**\n * Inits PayPal functionality on Storefront\n * @param {Promise} clientTokenPromise promise with Braintree Client Instance\n * @returns {void}\n */\nasync function initPayPalFunctionality(clientTokenPromise) {\n\tconst payPalBusinessLogic = require('./paypal/payPal');\n\n\tconst payPalEnabledOnCheckout = Boolean(\n\t\tdocument.querySelector('.js-braintree-paypal-content')\n\t);\n\tconst payPalEnabledOnProduct = Boolean(\n\t\tdocument.querySelector(\n\t\t\t'.prices-add-to-cart-actions .js-braintree-paypal-cart-button'\n\t\t)\n\t);\n\tconst payPalEnabledOnPvp = Boolean(\n\t\tdocument.querySelector('#quickViewModal .js-braintree-paypal-cart-button')\n\t);\n\tconst payPalEnabledOnCart = Boolean(\n\t\tdocument.querySelector('.cart-page .js-braintree-paypal-cart-button')\n\t);\n\tconst payPalEnabledOnAccountPage = Boolean(\n\t\tdocument.querySelector('.js-paypal-accounts')\n\t);\n\tconst payPalEnabledOnLoginPage = Boolean(\n\t\tdocument.querySelector('.login-form-nav')\n\t);\n\tconst cwppEnabledOnPage = Boolean(document.getElementById('js-cwpp-button'));\n\tconst payPalBannerOnCategory = Boolean(\n\t\tdocument.querySelector('.js-category-banner')\n\t);\n\n\tpayPalBusinessLogic.init(clientTokenPromise);\n\n\tconst availablePages = [\n\t\tpayPalEnabledOnProduct,\n\t\tpayPalEnabledOnCart,\n\t\tpayPalEnabledOnCheckout,\n\t\tpayPalEnabledOnLoginPage,\n\t\tpayPalEnabledOnAccountPage,\n\t\tcwppEnabledOnPage,\n\t\tpayPalEnabledOnPvp,\n\t];\n\n\tif (availablePages.includes(true)) {\n\t\tconst PayPalScriptLoading = require('./paypal/models/payPalScriptLoading');\n\t\tconst cwpp = require('./paypal/components/connectWithPayPal.js');\n\n\t\tconst payPalScriptLoading = new PayPalScriptLoading();\n\n\t\tif (cwpp.isContainerExist()) {\n\t\t\tawait payPalScriptLoading.loadPayPalSDK();\n\n\t\t\tpayPalScriptLoading.loadConnectWithPayPal(cwpp.init);\n\t\t}\n\t}\n\n\tif (payPalBannerOnCategory) {\n\t\tconst PayPalScriptLoading = require('./paypal/models/payPalScriptLoading');\n\t\tconst payPalScriptLoading = new PayPalScriptLoading();\n\n\t\tpayPalScriptLoading.loadPayPalCreditMessages();\n\t}\n\n\tif (payPalEnabledOnCheckout) {\n\t\tpayPalBusinessLogic.initCheckout();\n\t}\n\n\tif (payPalEnabledOnProduct) {\n\t\tpayPalBusinessLogic.initProduct();\n\t}\n\n\tif (payPalEnabledOnPvp) {\n\t\tpayPalBusinessLogic.initQuickView();\n\t}\n\n\t// Validation on enabled/disabled PayPal button for MiniCart located isinside MiniCart component\n\tpayPalBusinessLogic.initMiniCart();\n\n\tif (payPalEnabledOnCart) {\n\t\tpayPalBusinessLogic.initCart();\n\t}\n\n\tif (payPalEnabledOnAccountPage) {\n\t\tpayPalBusinessLogic.initAccount();\n\t}\n}\n\n/**\n * Inits GooglePay functionality on Storefront\n * @returns {void}\n */\nfunction initGooglePayFunctionality() {\n\tconst googlePayBusinnessLogic = require('./googlepay/googlePay');\n\n\tconst googlePayEnabledOnCheckout = Boolean(\n\t\tdocument.querySelector('.js-braintree-billing-googlepay-button')\n\t);\n\tconst googlePayEnabledOnCart = Boolean(\n\t\tdocument.querySelector('.js-braintree-cart-googlepay-button')\n\t);\n\n\tgooglePayBusinnessLogic.init();\n\n\tif (googlePayEnabledOnCheckout) {\n\t\tgooglePayBusinnessLogic.initCheckout();\n\t}\n\n\tif (googlePayEnabledOnCart) {\n\t\tgooglePayBusinnessLogic.initCart();\n\t}\n}\n\n/**\n * Inits ApplePay functionality on Storefront\n * @returns {void}\n */\nfunction initApplePayFunctionality() {\n\tconst applePayBusinessLogic = require('./applepay/applePay');\n\n\tconst applePayEnabledOnCheckout = Boolean(\n\t\tdocument.querySelector('.js-braintree-applepay-content')\n\t);\n\tconst applePayEnabledOnCart = Boolean(\n\t\tdocument.querySelector('.js-braintree-applepay-button')\n\t);\n\n\tapplePayBusinessLogic.init();\n\n\tif (applePayEnabledOnCart || applePayEnabledOnCheckout) {\n\t\tapplePayBusinessLogic.initApplePay();\n\t}\n}\n\n/**\n * Inits Venmo functionality on Storefront\n * @returns {void}\n */\nfunction initVenmoFunctionality() {\n\tconst venmoBusinessLogic = require('./venmo/venmo');\n\n\tconst isVenmoEnabledOnAccountPage = Boolean(\n\t\tdocument.querySelector('.js-venmo-accounts')\n\t);\n\tconst isVenmoEnabledOnBillingPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-venmo-content')\n\t);\n\n\tif (isVenmoEnabledOnAccountPage || isVenmoEnabledOnBillingPage) {\n\t\tvenmoBusinessLogic.init();\n\t}\n\n\tif (isVenmoEnabledOnAccountPage) {\n\t\tvenmoBusinessLogic.initAccount();\n\t}\n\n\tif (isVenmoEnabledOnBillingPage) {\n\t\tvenmoBusinessLogic.initBillingCheckout();\n\t}\n}\n\n/**\n * Inits SRC functionality on Storefront\n * @returns {void}\n */\nfunction initSRCFunctionality() {\n\tconst srcBusinessLogic = require('./src/src');\n\n\tconst isSrcEnabledOnAccountPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-account-add-src')\n\t);\n\tconst isSrcEnabledOnCartPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-cart-src-button')\n\t);\n\tconst isSrcEnabledOnBillingPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-billing-src-button')\n\t);\n\n\tsrcBusinessLogic.init();\n\n\tif (isSrcEnabledOnAccountPage) {\n\t\tsrcBusinessLogic.initAccount();\n\t}\n\n\tif (isSrcEnabledOnCartPage) {\n\t\tsrcBusinessLogic.initCartCheckout();\n\t}\n\n\tif (isSrcEnabledOnBillingPage) {\n\t\tsrcBusinessLogic.initBillingCheckout();\n\t}\n}\n\n/**\n * Inits LPM functionality on Storefront\n * @returns {void}\n */\nfunction initLPMFunctionality() {\n\tconst lpmBusinessLogic = require('./local/lpm');\n\tconst isLpmEnebledOnBillingPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-lpm-content')\n\t);\n\n\tif (isLpmEnebledOnBillingPage) {\n\t\tlpmBusinessLogic.init();\n\t}\n\n\t// LPM fallback process\n\tif (document.querySelector('.js-lpm-fallback')) {\n\t\tconst lpmFallback = require('./local/lpmFallBack');\n\n\t\tlpmFallback.process();\n\t}\n}\n\n/**\n * Inits APMA functionality on Storefront\n * @returns {void}\n */\nfunction initAPMAFunctionality() {\n\tconst apmaBusinessLogic = require('./apma');\n\tconst isApmaEnebled = Boolean(\n\t\tdocument.getElementById('js-apma-button-paypal')\n\t);\n\n\tif (isApmaEnebled) {\n\t\tapmaBusinessLogic.init();\n\t}\n}\n\n/**\n * Handle payment`s errors on checkout page\n * @returns {void}\n */\nfunction handlePaymentMethodErrorCheckout() {\n\tconst helper = require('./helper');\n\n\t$(document).on(\n\t\t'ajaxSuccess',\n\t\tfunction (event, jqXHR, ajaxSettings, response) {\n\t\t\tif (response.error && response.action === 'CheckoutServices-PlaceOrder') {\n\t\t\t\tfetch(\n\t\t\t\t\thelper.getUrlWithCsrfToken(\n\t\t\t\t\t\t`${window.braintreeUrls.deleteSessionPayments}`\n\t\t\t\t\t)\n\t\t\t\t).catch(() => {\n\t\t\t\t\tlocation.reload();\n\t\t\t\t});\n\n\t\t\t\thelper.removeActiveSessionPayment(true);\n\t\t\t}\n\t\t}\n\t);\n}\n\nmodule.exports = async function () {\n\t// Used only for Paypal. In future \"client token\" generation approach will be refactored\n\tconst paymentMethodGeneral = require('./paymentMethodGeneral');\n\n\t// General global variables\n\tconst isCheckoutPage = Boolean(document.getElementById('checkout-main'));\n\tconst isAccountPage = Boolean(\n\t\tdocument.querySelector('.js-account-dashboard')\n\t);\n\n\t/* ------------------------General Account functionality------------------------ */\n\tif (isAccountPage) {\n\t\tconst btAccountBusinessLogic = require('./braintreeAccount');\n\t\t// Common Credit Card and SRC Account functionality\n\n\t\tbtAccountBusinessLogic.initAccount();\n\t}\n\n\t/* ------------------------General Checkout functionality----------------------- */\n\tif (isCheckoutPage) {\n\t\tpaymentMethodGeneral.fillPaymentSummaryContainer();\n\t\tpaymentMethodGeneral.initPaymentMethodTabClickBehavior();\n\t\tpaymentMethodGeneral.initChangeShippingBehavior();\n\t\tpaymentMethodGeneral.initBillingSelectorChangeFunctionality();\n\t\tpaymentMethodGeneral.initAmountObserver();\n\t\thandlePaymentMethodErrorCheckout();\n\n\t\tconst lastAmount = parseFloat(window.sessionStorage.getItem('amount-used'));\n\t\tconst isSessionPaymentsEnabled =\n\t\t\twindow.braintreePreferences.isSessionPaymentsEnabled;\n\n\t\tif (\n\t\t\t(window.braintreePreferences.is3DSecureEnabled ||\n\t\t\t\twindow.braintreePreferences.is3DSecureFallback) &&\n\t\t\tlastAmount &&\n\t\t\tisSessionPaymentsEnabled\n\t\t) {\n\t\t\tpaymentMethodGeneral.handleActiveCCSessionPayment(lastAmount);\n\t\t}\n\t}\n\n\t/* ------------------------Credit Card------------------------ */\n\n\tinitCreditCardFunctionality();\n\n\t/* --------------------------PayPal-------------------------- */\n\n\t$('body').on('quickview:ready', async () => {\n\t\tawait initPayPalFunctionality(\n\t\t\tpaymentMethodGeneral.createGeneralClientInstancePromise()\n\t\t);\n\t});\n\n\tawait initPayPalFunctionality(\n\t\tpaymentMethodGeneral.createGeneralClientInstancePromise()\n\t);\n\n\t/* --------------------------GooglePay------------------------- */\n\n\tinitGooglePayFunctionality();\n\n\t/* --------------------------ApplePay------------------------- */\n\n\tinitApplePayFunctionality();\n\n\t/* --------------------------Venmo---------------------------- */\n\n\tinitVenmoFunctionality();\n\n\t/* --------------------------SRC------------------------------ */\n\n\tinitSRCFunctionality();\n\n\t/* --------------------------LPM-------------------------- */\n\n\tinitLPMFunctionality();\n\n\t/* --------------------------APMA-------------------------- */\n\n\tinitAPMAFunctionality();\n};\n","'use strict';\n\nmodule.exports = {\n\tgetSelectedData: function (selectElement) {\n\t\tlet option = null;\n\n\t\tif (!selectElement) {\n\t\t\treturn option;\n\t\t}\n\n\t\tconst options = selectElement.getElementsByTagName('option');\n\n\t\tfor (let i = 0; i < options.length; i++) {\n\t\t\toption = options[i];\n\n\t\t\tif (option.selected) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn option.attributes;\n\t},\n};\n","'use strict';\n\nconst AlertHandlerModel = require('../../alertHandler');\nconst creditCardFormFieldValidation = require('./creditCardFormFieldsValidator');\n\n/**\n * Credit card alert handler model\n */\nclass CreditCardAlertHandlerModel extends AlertHandlerModel {\n\tconstructor(alertMessages) {\n\t\tsuper();\n\t\tthis.alertMessages = alertMessages;\n\t}\n\n\t/**\n\t * Converts Braintree fields\n\t * @param {Array} arrayOfBtFormFields Credit Cards hosted fileds in array\n\t * @returns {Array} Converted array\n\t */\n\tconvertBtFromFieldsToDw(arrayOfBtFormFields) {\n\t\tconst creditCardFieldsMap = {\n\t\t\tcardholderName: 'braintreeCardOwner',\n\t\t\tnumber: 'braintreeCardNumber',\n\t\t\tcvv: 'braintreeCvv',\n\t\t\texpirationDate: 'braintreeExpirationDate',\n\t\t};\n\n\t\treturn arrayOfBtFormFields.map(\n\t\t\t(fieldName) => creditCardFieldsMap[fieldName]\n\t\t);\n\t}\n\n\t/**\n\t * Handles all fields are empty behavior\n\t */\n\tallFieldsAreEmptyErrorBehavior() {\n\t\tcreditCardFormFieldValidation.makeAllFormFieldsInvalid(this.ccFields);\n\t}\n\n\t/**\n\t * Handles some fileds are empty behavior\n\t * @param {Array} btInvalidHostedFields Invalid fileds\n\t */\n\tsomeFieldsAreInvalidErrorBehavior(btInvalidHostedFields) {\n\t\tconst convertedFormFields = this.convertBtFromFieldsToDw(\n\t\t\tbtInvalidHostedFields\n\t\t);\n\n\t\tcreditCardFormFieldValidation.makeFormFieldsInvalid(\n\t\t\tconvertedFormFields,\n\t\t\tthis.ccFields\n\t\t);\n\t}\n\n\t/**\n\t * Process and validates case when buyer left hosted feieds empty\n\t * @param {Object} errorPayload Payload with error information\n\t * @param {string} braintreeErrorCode Error code\n\t */\n\tprocessBraintreeHostedFiledsErrors(errorPayload, braintreeErrorCode) {\n\t\tconst ALL_HOSTED_FIELDS_FIELDS_EMPTY = 'HOSTED_FIELDS_FIELDS_EMPTY';\n\t\tconst HOSTED_FIELDS_FIELDS_INVALID = 'HOSTED_FIELDS_FIELDS_INVALID';\n\n\t\tswitch (braintreeErrorCode) {\n\t\t\tcase ALL_HOSTED_FIELDS_FIELDS_EMPTY:\n\t\t\t\tthis.allFieldsAreEmptyErrorBehavior();\n\n\t\t\t\tbreak;\n\n\t\t\tcase HOSTED_FIELDS_FIELDS_INVALID: {\n\t\t\t\tconst invalidFields = errorPayload.details.invalidFieldKeys;\n\n\t\t\t\tthis.someFieldsAreInvalidErrorBehavior(invalidFields);\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * Handle \"Credit Card\" error cases.\n\t * Cases can be split on Custom (errors trigered via \"Promise.reject\" from our side)\n\t * and on Braintree (errors from Braintree Client SDK)\n\t * @param {Object} error Error payload from \".catch()\" block\n\t * @param {Object} ccFieldsInitiated An object with initiated hosted fields\n\t */\n\thandleCreditCardError(error, ccFieldsInitiated) {\n\t\tif (error.name === 'BraintreeError') {\n\t\t\tthis.ccFields = ccFieldsInitiated;\n\t\t\t// Puts error on the top of the Credit Page\n\t\t\tthis.showBraintreeError(error);\n\t\t\tthis.processBraintreeHostedFiledsErrors(error, error.code);\n\t\t} else {\n\t\t\tlet errorMsg;\n\n\t\t\t// Handles the cases when 3ds secure failed\n\t\t\tif (error.customError) {\n\t\t\t\terrorMsg = this.alertMessages.secure3DFailed;\n\t\t\t\t// Not braintree errors\n\t\t\t} else {\n\t\t\t\terrorMsg = error.message ? error.message : error;\n\t\t\t}\n\n\t\t\tthis.showError(errorMsg);\n\t\t}\n\t}\n}\n\nmodule.exports = CreditCardAlertHandlerModel;\n","'use strict';\n\n// File for form fields validation (applying red, green, yellow frame)\n// This file is used ONLY for validation of Owner field (since Owner field isn't a Hosted Field provided by Braintree client SDK)\n\nconst creditCardFormFieldsHelper = require('../helpers/creditCardFormFieldsHelper');\n\nconst BRAINTREE_ERROR_SELECTOR = 'braintree-hosted-fields-invalid';\nconst BRAINTREE_VALID_SELECTOR = 'braintree-hosted-fields-valid';\nconst BRAINTREE_FOCUSED_SELECTOR = 'braintree-hosted-fields-focused';\n\n/**\n * Returns array of filed containers\n * @param {Array} arrayOfFormFields Array of invalid fields\n * @param {Object} ccFields An object of DOM credit card fields\n * @returns {Array} Array of filed containers\n */\nfunction getArrayOfFieldContainers(arrayOfFormFields, ccFields) {\n\tconst arrayOfFieldContainers = [];\n\tlet fieldContainer;\n\n\tarrayOfFormFields.forEach(function (fieldName) {\n\t\tfieldContainer = ccFields[fieldName];\n\n\t\tif (fieldContainer) {\n\t\t\tarrayOfFieldContainers.push(fieldContainer);\n\t\t}\n\t});\n\n\treturn arrayOfFieldContainers;\n}\n\n/**\n * Sets 'BRAINTREE_ERROR_SELECTOR' selector to the invalid form fields\n * @param {Array} arrayOfInvalidFieldsFrom Array of invalisd fields\n * @param {Object} ccFields An object of DOM credit card fields\n */\nfunction makeFormFieldsInvalid(arrayOfInvalidFieldsFrom, ccFields) {\n\tconst arrayOfInvalidFormFields = getArrayOfFieldContainers(\n\t\tarrayOfInvalidFieldsFrom,\n\t\tccFields\n\t);\n\n\tarrayOfInvalidFormFields.forEach(function ($field) {\n\t\t// remove \"field valid\" class\n\t\t$field.classList.remove(BRAINTREE_VALID_SELECTOR);\n\t\t// add \"field not valid\" class\n\t\t$field.classList.add(BRAINTREE_ERROR_SELECTOR);\n\t});\n}\n\n/**\n * Makes all fields invalid\n * @param {Object} ccFields An object of DOM credit card fields\n */\nfunction makeAllFormFieldsInvalid(ccFields) {\n\tconst arrayOfCreditCardFieldNames = Object.keys(ccFields);\n\n\tmakeFormFieldsInvalid(arrayOfCreditCardFieldNames, ccFields);\n}\n\n/**\n * Makes all form fields valid\n */\nfunction makeAllFormFieldsValid() {\n\tconst arrayOfCreditCardFields =\n\t\tcreditCardFormFieldsHelper.getCCFields().asArray;\n\n\tarrayOfCreditCardFields.forEach(function ($field) {\n\t\t// remove \"field in focuse\" class\n\t\t$field.classList.remove(BRAINTREE_FOCUSED_SELECTOR);\n\t\t// remove \"field not valid\" class\n\t\t$field.classList.remove(BRAINTREE_ERROR_SELECTOR);\n\t\t// add \"field valid\" class\n\t\t$field.classList.add(BRAINTREE_VALID_SELECTOR);\n\t});\n}\n\nmodule.exports = {\n\tmakeFormFieldsInvalid,\n\tmakeAllFormFieldsInvalid,\n\tmakeAllFormFieldsValid,\n};\n","'use strict';\n\nconst braintreeCreditCardSDK = require('./braintreeCreditCardSDK');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst helper = require('../../helper');\n\n/* global Promise braintree $ */\n\n// global variables\nlet btClientInstancePromise;\nlet orderData;\nlet sitePrefs = {};\n\n/**\n * Init Braintree Credit Card model\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n * @param {boolean} is3dSecureEnabled 'BRAINTREE_CREDIT_3DSecure_Enabled' site preference value\n * @param {boolean} isFraudToolsEnabled Is fraud tools enabled value\n * @param {boolean} is3dSecureFallback Is fraud tools enabled value\n */\nfunction init(\n\tbraintreeClientInstancePromise,\n\tis3dSecureEnabled,\n\tisFraudToolsEnabled,\n\tis3dSecureFallback\n) {\n\tbraintreeCreditCardSDK.init(braintreeClientInstancePromise);\n\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n\tsitePrefs = {\n\t\tis3dSecureEnabled: is3dSecureEnabled,\n\t\tis3dSecureFallback: is3dSecureFallback,\n\t\tisFraudToolsEnabled: isFraudToolsEnabled,\n\t};\n}\n\n/**\n * Gets required additional shipping info for 3ds\n *\n * @param {Object} orderAddress - User's shipping address\n * @returns {Object} an object with required fields\n */\nfunction getShippingAdditionalInfo(orderAddress) {\n\treturn {\n\t\tworkPhoneNumber: orderAddress.phone,\n\t\tshippingGivenName: orderAddress.recipientName\n\t\t\t.split(' ')\n\t\t\t.slice(0, -1)\n\t\t\t.join(' '),\n\t\tshippingSurname: orderAddress.recipientName.split(' ').slice(-1).join(' '),\n\t\tshippingPhone: orderAddress.phone,\n\t\tshippingAddress: {\n\t\t\tstreetAddress: orderAddress.line1,\n\t\t\textendedAddress: orderAddress.line2,\n\t\t\tlocality: orderAddress.city,\n\t\t\tregion: orderAddress.state,\n\t\t\tpostalCode: decodeURIComponent(orderAddress.postalCode),\n\t\t\tcountryCodeAlpha2: orderAddress.countryCode,\n\t\t},\n\t};\n}\n\n/**\n * Updates Order data on Checkout\n */\nfunction updateOrderData() {\n\tfetch(\n\t\thelper.getUrlWithCsrfToken(\n\t\t\t`${window.braintreeUrls.getOrderInfoUrl}?qwe=2344`\n\t\t)\n\t)\n\t\t.then((response) => {\n\t\t\tif (!response.ok) {\n\t\t\t\twindow.location.reload();\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((data) => {\n\t\t\tdata.shippingAdditionalInfo = data.shippingAddress\n\t\t\t\t? getShippingAdditionalInfo(data.shippingAddress)\n\t\t\t\t: null;\n\t\t\torderData = data;\n\t\t});\n}\n\n/**\n * Returns fraud data from dataCollector payload\n * @returns {Object} Payload with fraud data\n */\nfunction collectFraudData() {\n\tlet response;\n\n\tif (sitePrefs && sitePrefs.isFraudToolsEnabled) {\n\t\tresponse = braintreeGeneral.collectFraudData(btClientInstancePromise);\n\t} else {\n\t\tresponse = Promise.resolve({\n\t\t\tcustomMessage:\n\t\t\t\t'Fraud Data collection isn\\t enabled via Custom Site Preference',\n\t\t});\n\t}\n\n\treturn response;\n}\n\n/**\n * @param {Object} tokenizationOptions Tokenize options\n */\nfunction addAuthenticationInsight(tokenizationOptions) {\n\tconst braintreeCreditCardConfigs =\n\t\trequire('../helpers/creditCardHelper').getCheckoutBraintreeCreditCardConfigs();\n\n\tif (braintreeCreditCardConfigs) {\n\t\ttokenizationOptions.authenticationInsight = {\n\t\t\tmerchantAccountId: braintreeCreditCardConfigs.merchantAccountId,\n\t\t};\n\t}\n}\n\n/**\n * @param {string} nonce payment nonce value\n * @returns {Object} regulation environment value of false if an error occurs\n */\nfunction getAuthInsightRegulationEnvironment(nonce) {\n\tconst config =\n\t\trequire('../helpers/creditCardHelper').getCheckoutBraintreeCreditCardConfigs();\n\tconst token = document.querySelector(\n\t\t'#dwfrm_billing [name=\"csrf_token\"]'\n\t).value;\n\n\treturn fetch(config.vaultCreditCardUrl, {\n\t\tmethod: 'POST',\n\t\tbody: `nonce=${nonce}&csrf_token=${token}`,\n\t\theaders: { 'Content-Type': 'application/x-www-form-urlencoded' },\n\t}).then((response) => response.json());\n}\n\n/**\n * Launch the 3D Secure login flow, returning a nonce payload.\n * @param {string} nonce Payment method nonce\n * @param {string} bin Payment method bin\n * @param {number} amount Total amount\n * @param {string} email Email\n * @param {Object} billingData Object with Credit Card billing data\n * @param {Object} shippingAdditionalInfo Object with shipping info\n * @param {Object} btTokenizePayload Tokenize payload\n * @returns {Object} Object with nonce payload or custom error\n */\nfunction apply3dSecureValidation(\n\tnonce,\n\tbin,\n\tamount,\n\temail,\n\tbillingData,\n\tshippingAdditionalInfo,\n\tbtTokenizePayload\n) {\n\treturn braintreeCreditCardSDK\n\t\t.apply3dSecureValidation(\n\t\t\tnonce,\n\t\t\tbin,\n\t\t\tamount,\n\t\t\temail,\n\t\t\tbillingData,\n\t\t\tshippingAdditionalInfo\n\t\t)\n\t\t.then(function (payload) {\n\t\t\tif (payload.liabilityShifted) {\n\t\t\t\t// \"Nonce\" is changed after successful 3DS validation. We need this line to store the last \"nonce\" value\n\t\t\t\tif (btTokenizePayload) {\n\t\t\t\t\t// For stored card use case we don't need this param\n\t\t\t\t\tbtTokenizePayload.nonce = payload.nonce;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tthreeDSecureDataValidationPayload: payload,\n\t\t\t\t\tbtTokenizePayload: btTokenizePayload,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Case when buyer \"canceled\" 3DS window\n\t\t\treturn {\n\t\t\t\tcustomError: '3DS popup was canceled by buyer',\n\t\t\t};\n\t\t});\n}\n\n/**\n * @param {Object} payload Payload\n * @returns {boolean} Triggered 3DSecure Flow or not\n */\nfunction isTrigger3DSecureFlow(payload) {\n\tconst is3dSecureDisabled = sitePrefs && !sitePrefs.is3dSecureEnabled;\n\tconst is3dSecureFallback = sitePrefs && sitePrefs.is3dSecureFallback;\n\tconst regulationEnvironment = payload.authenticationInsight\n\t\t? payload.authenticationInsight.regulationEnvironment\n\t\t: '';\n\n\treturn (\n\t\tis3dSecureDisabled &&\n\t\tis3dSecureFallback &&\n\t\t['unavailable', 'psd2', 'psdtwo'].includes(regulationEnvironment)\n\t);\n}\n\n/**\n * Process the new Credit Card\n * @param {string} email Email\n * @param {Object} billingData Object with Credit Card billing data\n * @param {boolean} isCheckoutPage Is checkout flow flag\n * @param {HostedFields} hfInstance A hosted fields instance\n * @returns {Object} Object with nonce payload or custom error\n */\nfunction processNewCard(email, billingData, isCheckoutPage, hfInstance) {\n\tconst is3dSecureEnabled = sitePrefs && sitePrefs.is3dSecureEnabled;\n\tconst is3dSecureFallback = sitePrefs && sitePrefs.is3dSecureFallback;\n\tconst orderAmount = orderData.amount;\n\tconst shippingAdditionalInfo = orderData.shippingAdditionalInfo;\n\n\tlet result = hfInstance.tokenize(isCheckoutPage);\n\n\tif (is3dSecureEnabled || is3dSecureFallback) {\n\t\tconst resultTokenize = result;\n\n\t\tresult = result.then(function (payload) {\n\t\t\tconst nonce = payload.btTokenizePayload.nonce;\n\t\t\tconst bin = payload.btTokenizePayload.details\n\t\t\t\t? payload.btTokenizePayload.details.bin\n\t\t\t\t: '';\n\n\t\t\tif (\n\t\t\t\tis3dSecureFallback &&\n\t\t\t\t!isTrigger3DSecureFlow(payload.btTokenizePayload)\n\t\t\t) {\n\t\t\t\treturn resultTokenize;\n\t\t\t}\n\n\t\t\treturn apply3dSecureValidation(\n\t\t\t\tnonce,\n\t\t\t\tbin,\n\t\t\t\torderAmount,\n\t\t\t\temail,\n\t\t\t\tbillingData,\n\t\t\t\tshippingAdditionalInfo,\n\t\t\t\tpayload.btTokenizePayload\n\t\t\t);\n\t\t});\n\t}\n\n\treturn result;\n}\n\n/**\n * Process the stored Credit Card\n * @param {string} email Email\n * @param {Object} billingData Object with Credit Card billing data\n * @param {Object} paymentMethodResponse Payment method resonse\n * @returns {Object} Object with nonce payload or custom error\n */\nfunction processStoredCard(email, billingData, paymentMethodResponse) {\n\tconst nonce = paymentMethodResponse.nonce;\n\tconst bin = paymentMethodResponse.details\n\t\t? paymentMethodResponse.details.bin\n\t\t: '';\n\n\tconst orderAmount = orderData.amount;\n\tconst shippingAdditionalInfo = orderData.shippingAdditionalInfo;\n\tconst is3dSecureEnabled = sitePrefs && sitePrefs.is3dSecureEnabled;\n\n\tlet result = Promise.resolve({\n\t\tnonce,\n\t\temail,\n\t\tbin,\n\t});\n\n\t// Case when we have a nonce, it is the case when buyer use stored credit card\n\t// otherwise, it is the case when buyer use new credit card\n\tif (is3dSecureEnabled || isTrigger3DSecureFlow(paymentMethodResponse)) {\n\t\tresult = apply3dSecureValidation(\n\t\t\tnonce,\n\t\t\tbin,\n\t\t\torderAmount,\n\t\t\temail,\n\t\t\tbillingData,\n\t\t\tshippingAdditionalInfo\n\t\t);\n\t}\n\n\treturn result;\n}\n\n/**\n * In case of session card we can do nothing since the nonce, 3ds, hosted fields validation already was passed\n * @returns {Promise} return Promise with success data\n */\nfunction processSessionCard() {\n\treturn Promise.resolve({});\n}\n\n/**\n * Checks whether the basket is valid\n * @param {string} errorMessage Error message\n * @returns {Object} response object\n */\nfunction isBasketDataValid(errorMessage) {\n\tconst response = {\n\t\terror: false,\n\t\tcustomErrorMessage: '',\n\t};\n\n\tif (!orderData || orderData.amount === 0) {\n\t\tresponse.error = true;\n\t\tresponse.customErrorMessage = errorMessage;\n\t}\n\n\treturn response;\n}\n\n/**\n * Get BT client instance which is used currently in the model\n * @returns {Promise} BT client instance promise\n */\nfunction getClientInstancePromise() {\n\treturn btClientInstancePromise;\n}\n\nmodule.exports = {\n\tinit,\n\t// \"tokenize\" or \"processNewCard\", or \"processStoredCard\"\n\t// can be called only after excution of \"initCreditCardFields\"\n\tprocessNewCard,\n\tprocessStoredCard,\n\tprocessSessionCard,\n\tgetClientInstancePromise,\n\tgetAuthInsightRegulationEnvironment,\n\taddAuthenticationInsight,\n\t// \"isBasketDataValid\" can be called only after calling of \"updateOrderData\"\n\tisBasketDataValid,\n\tupdateOrderData,\n\tcollectFraudData,\n\tisTrigger3DSecureFlow,\n};\n","'use strict';\n\nconst braintreeCreditCardModel = require('./braintreeCreditCardModel');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst creditCardHelper = require('../helpers/creditCardHelper');\n\n/**\n * Initialize Braintree Credit Card Model. Pattern Builder is used\n * @returns {Object} object with booleam \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n\tconst braintreeCreditCardConfigs =\n\t\tcreditCardHelper.getCheckoutBraintreeCreditCardConfigs();\n\tconst response = {\n\t\terror: false,\n\t\tmessage: '',\n\t\tbtCreditCardModel: null,\n\t\tbtCreditCardConfigs: null,\n\t};\n\n\tlet clientToken;\n\tlet btClientInstancePromise;\n\tlet is3dSecureEnabled;\n\tlet is3dSecureFallback;\n\tlet isFraudToolsEnabled;\n\n\tif (braintreeCreditCardConfigs) {\n\t\tclientToken = braintreeCreditCardConfigs.clientToken;\n\t\tbtClientInstancePromise =\n\t\t\tbraintreeGeneral.createClientInstance(clientToken);\n\t\tis3dSecureEnabled = braintreeCreditCardConfigs.is3dSecureEnabled;\n\t\tis3dSecureFallback = braintreeCreditCardConfigs.is3dSecureFallback;\n\t\tisFraudToolsEnabled = braintreeCreditCardConfigs.isFraudToolsEnabled;\n\n\t\tbraintreeCreditCardModel.init(\n\t\t\tbtClientInstancePromise,\n\t\t\tis3dSecureEnabled,\n\t\t\tisFraudToolsEnabled,\n\t\t\tis3dSecureFallback\n\t\t);\n\n\t\tresponse.btCreditCardModel = braintreeCreditCardModel;\n\t\tresponse.btCreditCardConfigs = braintreeCreditCardConfigs;\n\t} else {\n\t\tresponse.error = true;\n\t\tresponse.message = 'No Credit Card Braintree Configurations';\n\t}\n\n\treturn response;\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nlet btClientInstancePromise;\n\n/**\n * Returns a promise that resolves with the HostedFields instance.\n * @param {Object} hostedFieldsParams Object of hosted fieds parameters\n * @returns {Object} Object with hosted field parameters\n */\nfunction createHostedFields(hostedFieldsParams) {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\treturn braintree.hostedFields.create({\n\t\t\tclient: btClientInstance,\n\t\t\tstyles: hostedFieldsParams.styles,\n\t\t\tfields: hostedFieldsParams.configs,\n\t\t});\n\t});\n}\n\n/**\n * Launch the 3D Secure login flow, returning a nonce payload.\n * @param {string} nonce Payment method nonce\n * @param {string} bin Payment method bin\n * @param {number} amount Total amount\n * @param {string} email Email\n * @param {Object} billingData Object with Credit Card billing data\n * @param {Object} shippingAdditionalInfo Object with Credit Card shipping info\n * @returns {Object} 3DS instance\n */\nfunction apply3dSecureValidation(\n\tnonce,\n\tbin,\n\tamount,\n\temail,\n\tbillingData,\n\tshippingAdditionalInfo\n) {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\treturn braintree.threeDSecure\n\t\t\t.create({\n\t\t\t\tclient: btClientInstance,\n\t\t\t\tversion: 2,\n\t\t\t})\n\t\t\t.then(function (threeDSecure) {\n\t\t\t\treturn threeDSecure.verifyCard({\n\t\t\t\t\tamount: amount,\n\t\t\t\t\tnonce: nonce,\n\t\t\t\t\tbin: bin || '',\n\t\t\t\t\temail: email,\n\t\t\t\t\tbillingAddress: {\n\t\t\t\t\t\tgivenName: billingData.firstName,\n\t\t\t\t\t\tsurname: billingData.lastName,\n\t\t\t\t\t\tphoneNumber: billingData.phone,\n\t\t\t\t\t\tstreetAddress: billingData.address1,\n\t\t\t\t\t\textendedAddress: billingData.address2,\n\t\t\t\t\t\tlocality: billingData.city,\n\t\t\t\t\t\tregion: billingData.stateCode,\n\t\t\t\t\t\tpostalCode: decodeURIComponent(billingData.postalCode),\n\t\t\t\t\t\tcountryCodeAlpha2: billingData.country,\n\t\t\t\t\t},\n\t\t\t\t\tadditionalInformation: shippingAdditionalInfo,\n\t\t\t\t\tonLookupComplete: function (data, next) {\n\t\t\t\t\t\tnext();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t});\n}\n\n/**\n * Tokenizes a Credit Card and returns a nonce payload.\n * @param {HostedFileds} hfInstance Hosted fieled instance\n * @param {Object} tokenizationOptions Credit Card tokenization option\n * @returns {Promise} A promise that resolves with a tokenizePayload.\n */\nfunction tokenize(hfInstance, tokenizationOptions) {\n\tconst tokenizeOption = tokenizationOptions || {};\n\n\treturn hfInstance.tokenize(tokenizeOption);\n}\n\n/**\n *\n * @param {Promise} braintreeClientInstancePromise Braintree Credit Card instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n\tinit,\n\tcreateHostedFields,\n\tapply3dSecureValidation,\n\ttokenize,\n};\n","'use strict';\n\n/* global Promise */\n\nconst braintreeCreditCardSDK = require('./braintreeCreditCardSDK');\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\nconst braintreeCreditCardSdkHelper = require('../helpers/braintreeCreditCardSdkHelper');\nconst helper = require('../../helper');\n\n/**\n * Returns a hosted fields config object\n * @returns {Object} A hosted fields config object\n */\nconst getHostedFieldsConfig = () => {\n\tconst $braintreeCreditCardsFields = document.querySelector(\n\t\t'.js-braintree-credit-card-fields'\n\t);\n\n\treturn helper.tryParseJSON(\n\t\t$braintreeCreditCardsFields.getAttribute('data-braintree-config')\n\t);\n};\n\n/**\n * HostedFields constructor\n */\nfunction HostedFieldsModel() {\n\tthis.sdkHfInstance = null;\n\tthis.fieldsOptions = null;\n\tthis.hostedFieldsConfigs = getHostedFieldsConfig();\n\tthis.verifiedCardsArray = [];\n}\n\n/**\n * Returns an object of hosted fields initiated to the DOM\n * @returns {Object} An object of dom elements\n */\nHostedFieldsModel.prototype.getCcFields = function () {\n\treturn Object.keys(this.fieldsOptions.configs).reduce((accum, curr) => {\n\t\tconst selector = this.fieldsOptions.configs[curr].selector;\n\n\t\taccum[selector.slice(1)] = document.querySelector(selector);\n\n\t\treturn accum;\n\t}, {});\n};\n\n/**\n * Sets an UUID of a Credit card if it is already verified\n * @param {string} ccUUID A Credit card UUID\n */\nHostedFieldsModel.prototype.setVerifiedCardUUIDtoArray = function (ccUUID) {\n\tthis.verifiedCardsArray.push(ccUUID);\n};\n\n/**\n * Returns whether a given credit card need to be verify\n * @param {string} ccUUID A Credit card UUID\n * @returns {boolean} True/False\n */\nHostedFieldsModel.prototype.isCcReVerifyRequired = function (ccUUID) {\n\treturn (\n\t\tthis.hostedFieldsConfigs.isCcReVerifyEnabled &&\n\t\t!this.verifiedCardsArray.includes(ccUUID)\n\t);\n};\n\n/**\n * Initiates an observer to handle a credit card re-verify, when it is sucessfully occurred\n * @param {string} ccUUID A credit card UUID\n */\nHostedFieldsModel.prototype.initPaymentDetailsSelectorObserver = function (\n\tccUUID\n) {\n\tconst that = this;\n\n\tconst observer = new MutationObserver(function () {\n\t\tif (that.hostedFieldsConfigs.isCcReVerifyEnabled) {\n\t\t\tif (!that.verifiedCardsArray.includes(ccUUID)) {\n\t\t\t\tthat.setVerifiedCardUUIDtoArray(ccUUID);\n\t\t\t}\n\n\t\t\tcreditCardFormFieldHelper.hideCardElements(\n\t\t\t\tcreditCardFormFieldHelper.getCcCvvField().asArray\n\t\t\t);\n\t\t\tcreditCardFormFieldHelper.showCardElements(\n\t\t\t\tcreditCardFormFieldHelper.getCcCvvToDisplayField().asArray\n\t\t\t);\n\t\t\tdocument.getElementById('braintreeCvvOnlyNonce').value = '';\n\t\t}\n\t});\n\n\tobserver.observe(document.querySelector('.js-braintree-payment-details'), {\n\t\tchildList: true,\n\t});\n};\n\n/**\n * Validates whether the sdkHfInstance exist\n * @returns {Object} An object\n */\nHostedFieldsModel.prototype.sdkHfInstanceValidation = function () {\n\tif (!this.sdkHfInstance) {\n\t\treturn {\n\t\t\texist: false,\n\t\t\terrorMessage:\n\t\t\t\tthis.hostedFieldsConfigs.customMessages\n\t\t\t\t\t.HOSTED_FIELDS_INSTANCE_NOT_DEFINE,\n\t\t};\n\t}\n\n\treturn {\n\t\texist: true,\n\t};\n};\n\n/**\n * Sets whether a re-verify or basic hosted fields options to the instance\n * @param {Object} options A hosted fields options\n */\nHostedFieldsModel.prototype.setHostedFieldsOptions = function (options) {\n\tthis.fieldsOptions = options;\n};\n\n/**\n * Initiates a hosted fileds instance\n * @returns {HostedFields} A Hosted fields instance\n */\nHostedFieldsModel.prototype.initHostedFields = function () {\n\tconst that = this;\n\n\treturn braintreeCreditCardSDK\n\t\t.createHostedFields(this.fieldsOptions)\n\t\t.then(function (hfInstance) {\n\t\t\t// init hosted fields instance globally\n\t\t\tthat.sdkHfInstance = hfInstance;\n\n\t\t\treturn hfInstance;\n\t\t});\n};\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Tokenizes previouselly filled hosted Credit Card fields and returns a nonce payload\n * @returns {Promise} Promise with { error: false, result: 'ok'} inside in case of positive response and\n * { error: true} in case of negative (reject, case)\n */\nHostedFieldsModel.prototype.tokenize = function (isCheckoutPage) {\n\tconst btCreditCardModel = require('../braintreesdk/braintreeCreditCardModel');\n\n\tlet tokenizationOptions;\n\n\tif (isCheckoutPage) {\n\t\t// Pull billing address from Storefront. Passed data will be tokenized and sent to Braintree\n\t\ttokenizationOptions =\n\t\t\tbraintreeCreditCardSdkHelper.createTokenizationOptions();\n\t} else {\n\t\ttokenizationOptions = {};\n\t}\n\n\tbtCreditCardModel.addAuthenticationInsight(tokenizationOptions);\n\n\treturn braintreeCreditCardSDK\n\t\t.tokenize(this.sdkHfInstance, tokenizationOptions)\n\t\t.then(function (payload) {\n\t\t\treturn {\n\t\t\t\tbtTokenizePayload: payload,\n\t\t\t};\n\t\t});\n};\n\n/**\n * Tokenizes previouselly filled hosted Credit Card fields and returns a nonce payload\n * @returns {Promise} Promise with { error: false, result: 'ok'} inside in case of positive response and\n * { error: true} in case of negative (reject, case)\n */\nHostedFieldsModel.prototype.tokenizeCvv = function () {\n\treturn braintreeCreditCardSDK\n\t\t.tokenize(this.sdkHfInstance)\n\t\t.then(function (cvvPayload) {\n\t\t\treturn {\n\t\t\t\tbtTokenizePayload: cvvPayload,\n\t\t\t};\n\t\t});\n};\n\n/**\n * Clear Credit Card hosted fields\n */\nHostedFieldsModel.prototype.clearHostedFields = function () {\n\tconst that = this;\n\n\tObject.keys(this.fieldsOptions.configs).forEach((option) => {\n\t\tthat.sdkHfInstance.clear(option);\n\t});\n};\n\n/**\n * Cleanly remove anything set up to the Hosted fields\n */\nHostedFieldsModel.prototype.teardown = function () {\n\tthis.sdkHfInstance.teardown();\n};\n\n/**\n * Returns An object contains the hosted fileds options for basic as weel as re-verify flow\n * @returns {Object} The hosted fields options\n */\nHostedFieldsModel.prototype.getFieldsOptions = function () {\n\tconst braintreeCvvElId = '#braintreeCvv';\n\tconst reverifyFlow = {\n\t\tcvv: {\n\t\t\tselector: braintreeCvvElId,\n\t\t\tplaceholder: this.hostedFieldsConfigs.customMessages.REVERIFY_CC,\n\t\t},\n\t};\n\n\tconst basicFlow = {\n\t\tcardholderName: {\n\t\t\tselector: '#braintreeCardOwner',\n\t\t},\n\t\tnumber: {\n\t\t\tselector: '#braintreeCardNumber',\n\t\t},\n\t\tcvv: {\n\t\t\tselector: braintreeCvvElId,\n\t\t},\n\t\texpirationDate: {\n\t\t\tselector: '#braintreeExpirationDate',\n\t\t},\n\t};\n\n\tconst styles = creditCardFormFieldHelper.getHostedFieldsStyles();\n\n\treturn {\n\t\treverifyFlowConfigs: reverifyFlow,\n\t\tbasicFlowConfigs: basicFlow,\n\t\tstyles: styles,\n\t};\n};\n\nmodule.exports = HostedFieldsModel;\n","'use strict';\n\nconst helper = require('../../helper');\n\nlet braintreeCreditCardModel;\nlet addNewCreditCardLoader;\nlet alertHandler;\nlet ccMessages;\n\nlet hfFieldsInstance;\n\n/**\n * Closes js-braintree-add-new-card-block & clears hosted fields input data\n */\nfunction closeAddNewCardBlock() {\n\tconst $addNewCardButton = document.querySelector(\n\t\t'.js-braintree-add-new-card-btn'\n\t);\n\tconst $addNewCardButtonWrapper = document.querySelector(\n\t\t'.js-braintree-add-new-card-wrapper-btn'\n\t);\n\tconst $addNewCardBlock = document.querySelector(\n\t\t'.js-braintree-add-new-card-block'\n\t);\n\n\t// Hide \"Add New Card\" form\n\t$addNewCardBlock.classList.add('d-none');\n\t// Show \"Add New Card\" button\n\t$addNewCardButton.classList.remove('d-none');\n\t$addNewCardButtonWrapper.classList.remove('d-none');\n\t// Clear hosted fields input data\n\thfFieldsInstance.clearHostedFields();\n}\n\n/**\n * Stores new Credit Card on account page\n * @param {Object} event Event object\n * @returns {void}\n */\nfunction storeNewCreditCard(event) {\n\tconst creditCardAccountHelper = require('../helpers/creditCardAccount');\n\tconst braintreeAccount = require('../../braintreeAccount');\n\n\tconst $customCreditCardErrorContainer = document.getElementById(\n\t\t'customCreditCardErrorContainer'\n\t);\n\tconst customErrorList = helper.tryParseJSON(\n\t\t$customCreditCardErrorContainer.getAttribute('data-errors')\n\t);\n\n\tconst isCheckoutPage = false;\n\n\t// Clears error messages on the top of the Account Page\n\talertHandler.hideAlerts();\n\n\ttry {\n\t\tif (!braintreeCreditCardModel) {\n\t\t\tthrow ccMessages.CLIENT_MISSING_GATEWAY_CONFIGURATION;\n\t\t}\n\n\t\taddNewCreditCardLoader.show();\n\n\t\tconst $addCreditCardForm = document.querySelector(\n\t\t\t'.js-braintree-add-credit-card-form'\n\t\t);\n\n\t\thelper.clearForm($addCreditCardForm);\n\n\t\thfFieldsInstance\n\t\t\t.tokenize(isCheckoutPage)\n\t\t\t.then(function (btModelPayload) {\n\t\t\t\tconst formValidation = require('base/components/formValidation');\n\n\t\t\t\tconst tokenizePayload = btModelPayload.btTokenizePayload;\n\t\t\t\tconst addCreditCardFormUrl = $addCreditCardForm.getAttribute('action');\n\n\t\t\t\tif (!helper.validateForm($addCreditCardForm)) {\n\t\t\t\t\taddNewCreditCardLoader.hide();\n\n\t\t\t\t\treturn Promise.reject(customErrorList.VALIDATION_INVALID); // eslint-disable-line no-undef\n\t\t\t\t}\n\n\t\t\t\treturn helper\n\t\t\t\t\t.checkForDuplicatedCC(tokenizePayload)\n\t\t\t\t\t.then(function (result) {\n\t\t\t\t\t\tif (result.error) {\n\t\t\t\t\t\t\tthrow result;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.then(function () {\n\t\t\t\t\t\treturn creditCardAccountHelper.verifyCard3dSecure(\n\t\t\t\t\t\t\tbraintreeCreditCardModel,\n\t\t\t\t\t\t\ttokenizePayload,\n\t\t\t\t\t\t\tcustomErrorList\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.then(function () {\n\t\t\t\t\t\t// Sets value of Credit Card hidden fields needed for server side\n\t\t\t\t\t\tcreditCardAccountHelper.setCardHiddenFields(tokenizePayload);\n\n\t\t\t\t\t\t// Call to Braintree-AccountAddCreditCardHandle preparation\n\t\t\t\t\t\tconst formData = new FormData($addCreditCardForm);\n\t\t\t\t\t\tconst $braintreeCreditCardNonce = document.getElementById(\n\t\t\t\t\t\t\t'braintreeCreditCardNonce'\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfetch(\n\t\t\t\t\t\t\t`${addCreditCardFormUrl}?braintreePaymentMethodNonce=${$braintreeCreditCardNonce.value}`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\t\t\tbody: formData,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.then((response) => response.json())\n\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\tif (data.error) {\n\t\t\t\t\t\t\t\t\taddNewCreditCardLoader.hide();\n\t\t\t\t\t\t\t\t\talertHandler.handleCreditCardError(data.error);\n\t\t\t\t\t\t\t\t\tdelete data.error;\n\n\t\t\t\t\t\t\t\t\tformValidation($addCreditCardForm, data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfetch(data.renderAccountsUrl)\n\t\t\t\t\t\t\t\t\t\t.then((template) => template.text())\n\t\t\t\t\t\t\t\t\t\t.then((templateHtml) => {\n\t\t\t\t\t\t\t\t\t\t\tcloseAddNewCardBlock();\n\t\t\t\t\t\t\t\t\t\t\taddNewCreditCardLoader.hide();\n\t\t\t\t\t\t\t\t\t\t\tdocument.querySelector(\n\t\t\t\t\t\t\t\t\t\t\t\t'.js-credit-card-accounts'\n\t\t\t\t\t\t\t\t\t\t\t).innerHTML = templateHtml;\n\t\t\t\t\t\t\t\t\t\t\t// \"Make default\" link functionality reinitiation\n\t\t\t\t\t\t\t\t\t\t\tbraintreeAccount.initMakeDefaultCardEvent();\n\t\t\t\t\t\t\t\t\t\t\t// \"Remove Card\" link functionality reinitiation\n\t\t\t\t\t\t\t\t\t\t\tbraintreeAccount.initRemoveCardEvent();\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\taddNewCreditCardLoader.hide();\n\t\t\t\talertHandler.handleCreditCardError(\n\t\t\t\t\terror,\n\t\t\t\t\thfFieldsInstance.getCcFields()\n\t\t\t\t);\n\n\t\t\t\thelper.validateForm($addCreditCardForm);\n\t\t\t});\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t} catch (error) {\n\t\taddNewCreditCardLoader.hide();\n\t\talertHandler.handleCreditCardError(error);\n\t}\n}\n\n/**\n * Inits Credit Card account loaders\n */\nfunction initCreditCartAccountLoaders() {\n\tconst loaderInstance = require('../../loaderHelper');\n\tconst $braintreeCreditCardLoader = document.getElementById(\n\t\t'braintreeCreditCardLoader'\n\t);\n\tconst braintreeCreditCardLoaderExists = Boolean($braintreeCreditCardLoader);\n\n\tif (braintreeCreditCardLoaderExists) {\n\t\taddNewCreditCardLoader = loaderInstance($braintreeCreditCardLoader);\n\t}\n}\n\n/**\n * Init Credit Card Account functionality\n * @param {Object} btCreditCardModel Braintree Credit Card model\n * @param {Constructor} alertHandlerModel Alert handling model\n * @param {Object} creditCardMessages List of Credit Card error messages\n * @param {Object} hostedFieldsInstance A Hosted fields instance\n */\nfunction init(\n\tbtCreditCardModel,\n\talertHandlerModel,\n\tcreditCardMessages,\n\thostedFieldsInstance\n) {\n\tccMessages = creditCardMessages;\n\talertHandler = alertHandlerModel;\n\tbraintreeCreditCardModel = btCreditCardModel;\n\thfFieldsInstance = hostedFieldsInstance;\n\n\tconst addNewCreditCardFormExists = Boolean(\n\t\tdocument.querySelector('.js-braintree-add-credit-card-form')\n\t);\n\n\tinitCreditCartAccountLoaders();\n\n\tif (addNewCreditCardFormExists) {\n\t\tdocument\n\t\t\t.querySelector('.js-braintree-add-new-card-save-btn')\n\t\t\t.addEventListener('click', storeNewCreditCard);\n\t\tdocument\n\t\t\t.querySelector('.js-braintree-add-new-card-cancel-btn')\n\t\t\t.addEventListener('click', closeAddNewCardBlock);\n\t}\n}\n\nmodule.exports = {\n\tinit,\n\tcloseAddNewCardBlock,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * General validation of params needed for initialization of hosted fields\n * @param {Object} $braintreeCreditCardFieldsContainer Braintree Credit Card fields container\n * @param {Object} braintreeCreditCardConfig Braintree Credit Card configurations (they came from server via data attr)\n * @returns {Object} object with \"error\" boolean flag and array of error messages from \"massages\" attr\n */\nfunction generalHfValidation(\n\t$braintreeCreditCardFieldsContainer,\n\tbraintreeCreditCardConfig\n) {\n\tconst response = {\n\t\terror: false,\n\t\tmessages: '',\n\t};\n\n\ttry {\n\t\tconst isHostedFieldsWasInited = helper.tryParseJSON(\n\t\t\t$braintreeCreditCardFieldsContainer.getAttribute('data-is-inited')\n\t\t);\n\t\tconst isBraintreeCreditCardConfigValid =\n\t\t\ttypeof braintreeCreditCardConfig !== 'object' ||\n\t\t\tbraintreeCreditCardConfig !== null;\n\n\t\tif (isHostedFieldsWasInited) {\n\t\t\t// do not add error msg since this case is expected (hosted fields should be inited just once)\n\t\t\tresponse.error = true;\n\t\t}\n\n\t\tif (!isBraintreeCreditCardConfigValid) {\n\t\t\tresponse.error = true;\n\t\t\tresponse.messages =\n\t\t\t\t'.js-braintree-credit-card-fields has not valid data-braintree-config';\n\t\t}\n\t} catch (error) {\n\t\tresponse.error = true;\n\t\tresponse.messages = error;\n\t}\n\n\treturn response;\n}\n\n/**\n * Init Credit Card fields functionality\n * @param {Object} btCreditCardModel Braintree Credit Card model\n * @param {Constructor} alertHandlerModel Alert handling model\n * @param {Object} hostedFieldsInstance A Hosted fields instance\n */\nfunction init(btCreditCardModel, alertHandlerModel, hostedFieldsInstance) {\n\talertHandlerModel.hideAlerts();\n\n\tdocument\n\t\t.querySelectorAll('.js-braintree-credit-card-fields')\n\t\t.forEach(function (el) {\n\t\t\ttry {\n\t\t\t\tconst $braintreeCreditCardFieldsContainer = el;\n\t\t\t\tconst braintreeCreditCardConfig = helper.tryParseJSON(\n\t\t\t\t\t$braintreeCreditCardFieldsContainer.getAttribute(\n\t\t\t\t\t\t'data-braintree-config'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst generalHostedFieldsValidation = generalHfValidation(\n\t\t\t\t\t$braintreeCreditCardFieldsContainer,\n\t\t\t\t\tbraintreeCreditCardConfig\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tgeneralHostedFieldsValidation.error &&\n\t\t\t\t\tgeneralHostedFieldsValidation.messages.length\n\t\t\t\t) {\n\t\t\t\t\tthrow generalHostedFieldsValidation.messages;\n\t\t\t\t}\n\n\t\t\t\t// Fraud Data will be only collected in case if corresponding Site Preference is enabled\n\t\t\t\t// For more details go inside \"btCreditCardModel.collectFraudData\" function logic\n\t\t\t\tbtCreditCardModel\n\t\t\t\t\t.collectFraudData()\n\t\t\t\t\t.then(function (fraudDataPayload) {\n\t\t\t\t\t\tconst $braintreeDeviceData = document.getElementById(\n\t\t\t\t\t\t\t'braintreeDeviceData'\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (fraudDataPayload.deviceData) {\n\t\t\t\t\t\t\t$braintreeDeviceData.value = fraudDataPayload.deviceData;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Init \"Credit Card Hosted Fields\"\n\t\t\t\t\t\treturn hostedFieldsInstance.initHostedFields();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(function (error) {\n\t\t\t\t\t\talertHandlerModel.handleCreditCardError(error);\n\t\t\t\t\t});\n\n\t\t\t\t// Update order data inside BT model each time when buyer update checkout view\n\t\t\t\t$('body').on(\n\t\t\t\t\t'checkout:updateCheckoutView',\n\t\t\t\t\tbtCreditCardModel.updateOrderData\n\t\t\t\t);\n\n\t\t\t\t// To prevent from repeatable Credit Card hosted fields initialization\n\t\t\t\t$braintreeCreditCardFieldsContainer.setAttribute(\n\t\t\t\t\t'data-is-inited',\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\talertHandlerModel.handleCreditCardError(error);\n\t\t\t}\n\t\t});\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\nconst creditCardHelper = require('../helpers/creditCardHelper');\nconst paymentMethodGeneralHelper = require('../../paymentMethodGeneralHelper');\nconst creditCardBillingAddressHelper = require('../helpers/creditCardBillingAddressHelper');\n\nlet hostedFieldsInstance;\n\n/**\n * Makes the necessary setting for 'Save Credit Card block' on the Billing Page\n * @param {boolean} saveCreditCard true/false\n * @param {boolean} displaySaveCreditCardBlock true/false\n */\nfunction saveCreditCardBlockManipulation(\n\tsaveCreditCard,\n\tdisplaySaveCreditCardBlock\n) {\n\tconst $saveCreditCard = document.getElementById('braintreeSaveCreditCard');\n\tconst $braintreeSaveCardContainer = document.getElementById(\n\t\t'braintreeSaveCardContainer'\n\t);\n\n\tif ($braintreeSaveCardContainer) {\n\t\t$braintreeSaveCardContainer.style.display = displaySaveCreditCardBlock\n\t\t\t? 'block'\n\t\t\t: 'none';\n\t\t$saveCreditCard.checked = saveCreditCard;\n\t}\n}\n\n/**\n * Handles changing of Credit Card list on the Billing Page\n * @param {Constructor} alertHandlerModel Alert handling model\n */\nfunction cardListChange(alertHandlerModel) {\n\tconst btUtils = require('../../braintreeUtils');\n\n\tconst $creditCardList =\n\t\tcreditCardFormFieldHelper.getCreditCardListContainer();\n\tconst $braintreeCreditCardNonce =\n\t\tcreditCardFormFieldHelper.getCreditCardNonceFieldContainer();\n\tconst $braintreeCardPaymentMethod = document.getElementById(\n\t\t'braintreeCardPaymentMethod'\n\t);\n\tconst creditCardOption = $creditCardList.selectedOptions[0];\n\tconst creditCardOptionID = creditCardOption.id;\n\tconst creditCardFiledsToDisplayObject =\n\t\tcreditCardFormFieldHelper.getCCFieldsToDisplay().asObject;\n\n\tlet creditCardFieldsToDisplayArray =\n\t\tcreditCardFormFieldHelper.getCCFieldsToDisplay().asArray;\n\tlet creditCardHostedFieldsArray =\n\t\tcreditCardFormFieldHelper.getCCFields().asArray;\n\t// Variables only for \"braintreeSessionCreditAccount\" case\n\tlet selectedCreditCard;\n\tlet nonce = '';\n\tlet saveCreditCard = true;\n\tlet showSaveCreditCardBlock = true;\n\n\tconst isReVerifyFlow =\n\t\thostedFieldsInstance.hostedFieldsConfigs.isCcReVerifyEnabled &&\n\t\thostedFieldsInstance.hostedFieldsConfigs.isSavedCreditCard;\n\n\tconst ccCvvToDisplayField =\n\t\tcreditCardFormFieldHelper.getCcCvvToDisplayField();\n\tconst ccCvvField = creditCardFormFieldHelper.getCcCvvField();\n\tconst $selectedCcAccountOption =\n\t\tcreditCardHelper.getSelectedCcAccountOption();\n\tconst savedBillingAddress = $selectedCcAccountOption.getAttribute(\n\t\t'data-billing-address'\n\t);\n\tconst isCcReVerifyRequired = hostedFieldsInstance.isCcReVerifyRequired(\n\t\t$selectedCcAccountOption.value\n\t);\n\n\t// Clear error messages on the Billing Page\n\talertHandlerModel.hideAlerts();\n\n\tif (!savedBillingAddress) {\n\t\tpaymentMethodGeneralHelper.enableBillingAddressFunctionality();\n\t}\n\n\tcreditCardBillingAddressHelper.displaySelectedStoredBillingAddress(\n\t\t$selectedCcAccountOption\n\t);\n\n\t// Shows or hides a billing info alert for Credit card payment\n\tcreditCardBillingAddressHelper.initBillingInfoAlert(savedBillingAddress);\n\n\tswitch (creditCardOptionID) {\n\t\t// When buyer selected \"new cc\"\n\t\tcase 'newCardAccount':\n\t\t\t// Initiates a basic hosted fields for new card only\n\t\t\tif (hostedFieldsInstance.sdkHfInstance && isReVerifyFlow) {\n\t\t\t\tconst { basicFlowConfigs, styles } =\n\t\t\t\t\thostedFieldsInstance.getFieldsOptions();\n\n\t\t\t\thostedFieldsInstance.teardown();\n\t\t\t\t// Sets an appropriate hosted fields options object for Checkout page\n\t\t\t\thostedFieldsInstance.setHostedFieldsOptions({\n\t\t\t\t\tstyles: styles,\n\t\t\t\t\tconfigs: basicFlowConfigs,\n\t\t\t\t});\n\t\t\t\t// Initiates the appropriate hosted fileds for new Card account\n\t\t\t\thostedFieldsInstance.initHostedFields();\n\t\t\t}\n\n\t\t\t// Hide 'toDisplay' fields\n\t\t\tcreditCardFormFieldHelper.hideCardElements(\n\t\t\t\tcreditCardFieldsToDisplayArray.concat(ccCvvToDisplayField.asArray)\n\t\t\t);\n\n\t\t\tcreditCardFormFieldHelper.showCardElements(\n\t\t\t\tcreditCardHostedFieldsArray.concat(ccCvvField.asArray)\n\t\t\t);\n\n\t\t\t// Display \"Save Credit Card\" block, and mark it as checked\n\t\t\tsaveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\n\n\t\t\t$braintreeCreditCardNonce.value = '';\n\t\t\t$braintreeCardPaymentMethod.value = 'CREDIT';\n\n\t\t\tbreak;\n\n\t\tcase 'braintreeSessionCreditAccount':\n\t\t\tselectedCreditCard = btUtils.getSelectedData($creditCardList);\n\t\t\tnonce = selectedCreditCard['data-nonce'].value;\n\t\t\tsaveCreditCard = selectedCreditCard['data-save-card'].value;\n\n\t\t\t// Display \"Save Credit Card\" block, and mark it as checked\n\t\t\tsaveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\n\n\t\t\tcreditCardFiledsToDisplayObject.cardCvvToDisplay =\n\t\t\t\tccCvvToDisplayField.asObject.cardCvvToDisplay;\n\n\t\t\t// Add values to the \"toDisplay\" and hidden input fields.\n\t\t\tcreditCardFormFieldHelper.setCardFields(\n\t\t\t\tselectedCreditCard,\n\t\t\t\tcreditCardFiledsToDisplayObject\n\t\t\t);\n\n\t\t\tcreditCardFormFieldHelper.hideCardElements(\n\t\t\t\tcreditCardHostedFieldsArray.concat(ccCvvField.asArray)\n\t\t\t);\n\t\t\tcreditCardFormFieldHelper.showCardElements(\n\t\t\t\tcreditCardFieldsToDisplayArray.concat(ccCvvToDisplayField.asArray)\n\t\t\t);\n\n\t\t\t$braintreeCreditCardNonce.value = nonce;\n\t\t\t$braintreeCardPaymentMethod.value =\n\t\t\t\tselectedCreditCard['data-payment-method'].value.toUpperCase();\n\n\t\t\tbreak;\n\n\t\t// Case for saved credit cards\n\t\tdefault:\n\t\t\tif (hostedFieldsInstance.sdkHfInstance && isCcReVerifyRequired) {\n\t\t\t\tconst { reverifyFlowConfigs, styles } =\n\t\t\t\t\thostedFieldsInstance.getFieldsOptions();\n\n\t\t\t\thostedFieldsInstance.teardown();\n\t\t\t\t// Sets an appropriate hosted fields options object for Checkout page\n\t\t\t\thostedFieldsInstance.setHostedFieldsOptions({\n\t\t\t\t\tstyles: styles,\n\t\t\t\t\tconfigs: reverifyFlowConfigs,\n\t\t\t\t});\n\t\t\t\t// Initiates the appropriate hosted fileds for new Card account\n\t\t\t\thostedFieldsInstance.initHostedFields();\n\t\t\t}\n\n\t\t\tsaveCreditCard = false;\n\t\t\tshowSaveCreditCardBlock = false;\n\t\t\tselectedCreditCard = btUtils.getSelectedData($creditCardList);\n\n\t\t\tif (isCcReVerifyRequired) {\n\t\t\t\tcreditCardFieldsToDisplayArray = creditCardFieldsToDisplayArray.concat(\n\t\t\t\t\tccCvvField.asArray\n\t\t\t\t);\n\t\t\t\tcreditCardHostedFieldsArray = creditCardHostedFieldsArray.concat(\n\t\t\t\t\tccCvvToDisplayField.asArray\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcreditCardFieldsToDisplayArray = creditCardFieldsToDisplayArray.concat(\n\t\t\t\t\tccCvvToDisplayField.asArray\n\t\t\t\t);\n\t\t\t\tcreditCardHostedFieldsArray = creditCardHostedFieldsArray.concat(\n\t\t\t\t\tccCvvField.asArray\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Add values to the 'toDisplay' and hidden input fields\n\t\t\tcreditCardFormFieldHelper.setCardFields(\n\t\t\t\tselectedCreditCard,\n\t\t\t\tcreditCardFiledsToDisplayObject\n\t\t\t);\n\n\t\t\t// Show these fields to the buyer\n\t\t\tcreditCardFormFieldHelper.showCardElements(\n\t\t\t\tcreditCardFieldsToDisplayArray\n\t\t\t);\n\n\t\t\t// Hide hosted fields (since we don't need them)\n\t\t\tcreditCardFormFieldHelper.hideCardElements(creditCardHostedFieldsArray);\n\n\t\t\t// Display \"Save Credit Card\" block, and uncheck it\n\t\t\tsaveCreditCardBlockManipulation(saveCreditCard, showSaveCreditCardBlock);\n\n\t\t\tif (savedBillingAddress) {\n\t\t\t\tpaymentMethodGeneralHelper.disableBillingAddressFunctionality();\n\t\t\t}\n\n\t\t\t$braintreeCreditCardNonce.value = nonce;\n\t\t\t$braintreeCardPaymentMethod.value =\n\t\t\t\tselectedCreditCard['data-payment-method'].value.toUpperCase();\n\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Inits Credit Card list functionality\n * @param {Object} btCreditCardModel BT Credit Card model\n * @param {Constructor} alertHandlerModel alertHandlerModel Error handling model\n * @param {Object} hfInstance A Hosted fields instance\n */\nfunction init(btCreditCardModel, alertHandlerModel, hfInstance) {\n\tconst $creditCardList = document.getElementById('braintreeCreditCardList');\n\tconst creditCardListExist = Boolean($creditCardList);\n\n\thostedFieldsInstance = hfInstance;\n\n\tif (creditCardListExist) {\n\t\t$creditCardList.addEventListener('change', function () {\n\t\t\tcardListChange(alertHandlerModel);\n\t\t});\n\t}\n\n\tcardListChange(alertHandlerModel);\n}\n\nmodule.exports = {\n\tinit,\n\tcardListChange,\n};\n","/* eslint-disable no-console */\n\n'use strict';\n\n/* global Promise braintree $ */\n\nconst helper = require('../../helper');\nconst btCreditCardModel = require('../braintreesdk/braintreeCreditCardModel');\nconst creditCardPaymentProcessingHelper = require('../helpers/creditCardPaymentProcessingHelper');\nconst loaderInstance = require('../../loaderHelper');\nconst creditCardPaymentProcessingConstants = require('../constants/creditCardPaymentProcessingConstants');\nconst creditCardHelper = require('../helpers/creditCardHelper');\n\nconst creditCardBillingAddressHelper = require('../helpers/creditCardBillingAddressHelper');\n\nconst $continueButton = document.querySelector('button.submit-payment');\nconst $continueButtonNew = document.querySelector('button.submit-payment-new');\nconst $creditCardList = document.getElementById('braintreeCreditCardList');\nconst $braintreeCreditCardLoader = document.getElementById(\n\t'braintreeCreditCardLoader'\n);\nconst $customCreditCardErrorContainer = document.getElementById(\n\t'customCreditCardErrorContainer'\n);\n\nlet loader;\nlet alertHandler;\n\nlet hfInstance;\n\n/**\n * Checking for customError property in payload\n * @param {Object} payload object with btPayload\n * @throws {Object} when customError property exists in payload\n */\nfunction checkForErrorInPayload(payload) {\n\tif (Object.hasOwnProperty.call(payload, 'customError')) {\n\t\tthrow payload;\n\t}\n}\n\n/**\n * Process a stored card\n * @param {clientInstancePromise} clientInstancePromise A ClientInstancePromise\n * @param {string} email An email address\n * @param {string} billingData A billing address data\n * @returns {Promise} A promise\n */\nconst processStoredCard = (clientInstancePromise, email, billingData) => {\n\tconst savedCcBillingAddressAsString =\n\t\tcreditCardHelper.getSavedCcBillingAddressAsString();\n\n\t// Fills a credit card billing address input with billing address data\n\tif (savedCcBillingAddressAsString) {\n\t\t// Case when a Credit card has a saved billing address\n\t\t// Using only for updating a billing address on the server side\n\t\tcreditCardBillingAddressHelper.setCreditCardBillingAddress(\n\t\t\thelper.tryParseJSON(savedCcBillingAddressAsString)\n\t\t);\n\t} else {\n\t\t// Case when a Credit Card does not have a saved billing address\n\t\tcreditCardBillingAddressHelper.setCreditCardBillingAddress(\n\t\t\tcreditCardBillingAddressHelper.createCreditCardBillingAddress()\n\t\t);\n\t}\n\n\tconst $selectedCcOption = creditCardHelper.getSelectedCcAccountOption();\n\tconst selectedCcOptionId = $selectedCcOption.value;\n\n\tif (hfInstance.isCcReVerifyRequired(selectedCcOptionId)) {\n\t\thfInstance\n\t\t\t.tokenizeCvv()\n\t\t\t.then((tokenizePaylaod) => {\n\t\t\t\thfInstance.initPaymentDetailsSelectorObserver(selectedCcOptionId);\n\t\t\t\tdocument.getElementById('braintreeCvvOnlyNonce').value =\n\t\t\t\t\ttokenizePaylaod.btTokenizePayload.nonce;\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tdocument.getElementById('braintreeCvvOnlyNonce').value = 'error';\n\t\t\t});\n\t}\n\n\treturn creditCardPaymentProcessingHelper\n\t\t.getNonceFromStoredCard(clientInstancePromise, $creditCardList)\n\t\t.then(function (response) {\n\t\t\tif (!response) {\n\t\t\t\tthrow Error('Payment method was not found in vault manager.');\n\t\t\t}\n\n\t\t\treturn btCreditCardModel.getAuthInsightRegulationEnvironment(\n\t\t\t\tresponse.nonce\n\t\t\t);\n\t\t})\n\t\t.then(function (response) {\n\t\t\treturn creditCardPaymentProcessingHelper\n\t\t\t\t.getNonceFromStoredCard(clientInstancePromise, $creditCardList)\n\t\t\t\t.then(function (paymentMethodResponse) {\n\t\t\t\t\tpaymentMethodResponse.authenticationInsight = {\n\t\t\t\t\t\tregulationEnvironment: response.regulationEnvironment,\n\t\t\t\t\t};\n\n\t\t\t\t\treturn btCreditCardModel\n\t\t\t\t\t\t.processStoredCard(email, billingData, paymentMethodResponse)\n\t\t\t\t\t\t.then(function (btStoredCardPayload) {\n\t\t\t\t\t\t\tcheckForErrorInPayload(btStoredCardPayload);\n\n\t\t\t\t\t\t\tconst threeDSecureDataValidationPayload =\n\t\t\t\t\t\t\t\tbtStoredCardPayload.threeDSecureInfo;\n\n\t\t\t\t\t\t\tif (threeDSecureDataValidationPayload) {\n\t\t\t\t\t\t\t\tcreditCardPaymentProcessingHelper.fill3DsData(\n\t\t\t\t\t\t\t\t\tthreeDSecureDataValidationPayload\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn Promise.resolve(btStoredCardPayload);\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t});\n};\n\n/**\n * Processes a new card\n * @param {Object} btPayload Payload from Braintree\n * @returns {Promise} A promise\n */\nconst processNewCard = (btPayload) => {\n\tconst isSessionPaymentsEnabled =\n\t\twindow.braintreePreferences.isSessionPaymentsEnabled;\n\n\t// Fills a credit card billing address input with billing address data\n\tcreditCardBillingAddressHelper.setCreditCardBillingAddress(\n\t\tcreditCardBillingAddressHelper.createCreditCardBillingAddress()\n\t);\n\n\tdocument.getElementById('braintreeCreditCardBin').value =\n\t\tbtPayload.btTokenizePayload.details.bin;\n\n\t// Fill hidden inputs CreditCard fields and Session CreditCard div fields\n\tcreditCardPaymentProcessingHelper.fillCreditCardFormWithPayloadData(\n\t\tbtPayload\n\t);\n\n\t// Filling of session card attributes for using them in business logic (client/server)\n\tcreditCardPaymentProcessingHelper.setCreditCardDataAttributes(\n\t\tbtPayload,\n\t\tisSessionPaymentsEnabled\n\t);\n\n\tif (isSessionPaymentsEnabled) {\n\t\tconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\n\n\t\t// Fill 'toDisplay' fields with data to display them for buyer\n\t\tcreditCardPaymentProcessingHelper.fillSessionCreditCardFormWithPayloadData(\n\t\t\tbtPayload\n\t\t);\n\t\t// Select \"Session Account Option\" in \"Account List\"\n\t\tcreditCardPaymentProcessingHelper.markAsSelectedSessionAccount();\n\t\t// Display \"Stored Accounts\" list\n\t\tcreditCardPaymentProcessingHelper.displayStoredCreditCardList();\n\t\t// Show \"Session Credit Card\" fields (in div blocks)\n\t\tcreditCardFormFieldHelper.showCardElements(\n\t\t\tcreditCardFormFieldHelper\n\t\t\t\t.getCCFieldsToDisplay()\n\t\t\t\t.asArray.concat(\n\t\t\t\t\tcreditCardFormFieldHelper.getCcCvvToDisplayField().asArray\n\t\t\t\t)\n\t\t);\n\t\t// Hide hosted fields (iframe fields)\n\t\tcreditCardFormFieldHelper.hideCardElements(\n\t\t\tcreditCardFormFieldHelper\n\t\t\t\t.getCCFields()\n\t\t\t\t.asArray.concat(creditCardFormFieldHelper.getCcCvvField().asArray)\n\t\t);\n\t}\n\n\t// Clear \"Hosted Fields\" (from iframe)\n\thfInstance.clearHostedFields();\n\n\thelper.continueButtonToggle(false);\n\n\treturn Promise.resolve(btPayload);\n};\n\n/**\n * Process Credit Card on the Billing Page\n * @param {Object} event Event object\n * @returns {void}\n */\nfunction processCreditCard(event) {\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\n\t// Removes error messages on the Billing Page\n\talertHandler.hideAlerts();\n\n\ttry {\n\t\tconst customErrorMessages = helper.tryParseJSON(\n\t\t\t$customCreditCardErrorContainer.getAttribute('data-errors')\n\t\t);\n\t\tconst basketDataValidResponse = btCreditCardModel.isBasketDataValid(\n\t\t\tcustomErrorMessages.TOTAL_BASKET_AMOUNT_INVALID\n\t\t);\n\t\tconst clientInstancePromise = btCreditCardModel.getClientInstancePromise();\n\t\tconst creditCardFlow =\n\t\t\tcreditCardPaymentProcessingHelper.getCreditCardFlowID($creditCardList);\n\n\t\tif (basketDataValidResponse.error) {\n\t\t\tthrow basketDataValidResponse.customErrorMessage;\n\t\t}\n\n\t\t// Data passed inside \"braintreeCreditCardModel\"\n\t\tconst billingData = helper.getBillingAddressFormValues();\n\t\tconst email = document.querySelector('.customer-summary-email').textContent;\n\t\tconst isCheckoutFlow = true;\n\n\t\tlet result;\n\n\t\t// \"Hosted Field Instance\" validation\n\t\tconst sdkHfInstanceValResult = hfInstance.sdkHfInstanceValidation();\n\n\t\tif (!sdkHfInstanceValResult.exist) {\n\t\t\tthrow sdkHfInstanceValResult.errorMessage;\n\t\t}\n\n\t\tloader.show();\n\n\t\tconst $billingForm = document.getElementById('dwfrm_billing');\n\n\t\thelper.clearForm($billingForm);\n\n\t\tswitch (creditCardFlow) {\n\t\t\t// Case for new card\n\t\t\tcase creditCardPaymentProcessingConstants.FLOW_NEW_CARD_NAME:\n\t\t\t\tresult = btCreditCardModel\n\t\t\t\t\t.processNewCard(email, billingData, isCheckoutFlow, hfInstance)\n\t\t\t\t\t.then((btPayload) => {\n\t\t\t\t\t\tcheckForErrorInPayload(btPayload);\n\n\t\t\t\t\t\tif (!helper.validateForm($billingForm)) {\n\t\t\t\t\t\t\tloader.hide();\n\n\t\t\t\t\t\t\treturn Promise.reject(customErrorMessages.VALIDATION_INVALID);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst $saveCardCheckbox = document.getElementById(\n\t\t\t\t\t\t\t'braintreeSaveCreditCard'\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ($saveCardCheckbox && $saveCardCheckbox.checked) {\n\t\t\t\t\t\t\tconst response = helper.checkForDuplicatedCC(btPayload);\n\n\t\t\t\t\t\t\tif (response.error) {\n\t\t\t\t\t\t\t\treturn Promise.reject(response.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn btPayload;\n\t\t\t\t\t})\n\t\t\t\t\t.then((btPayload) => processNewCard(btPayload));\n\n\t\t\t\tbreak;\n\n\t\t\t// Case for session card\n\t\t\tcase creditCardPaymentProcessingConstants.FLOW_SESSION_CARD_NAME:\n\t\t\t\tresult = btCreditCardModel.processSessionCard();\n\n\t\t\t\tbreak;\n\n\t\t\t// Case for stored card\n\t\t\tcase creditCardPaymentProcessingConstants.FLOW_STORED_CARD_NAME:\n\t\t\t\tresult = processStoredCard(clientInstancePromise, email, billingData);\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Handle error with wrong checkout flow\n\t\t\t\tresult = Promise.reject(customErrorMessages.WROND_CHECKOUT_FLOW);\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tresult\n\t\t\t.then(function () {\n\t\t\t\tloader.hide();\n\t\t\t\t// Trigger \"Submit Payment\" button\n\t\t\t\tevent.target.click();\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\tloader.hide();\n\n\t\t\t\t// Braintree Errors\n\t\t\t\talertHandler.handleCreditCardError(error, hfInstance.getCcFields());\n\n\t\t\t\thelper.validateForm($billingForm);\n\t\t\t});\n\t} catch (error) {\n\t\tloader.hide();\n\t\talertHandler.handleCreditCardError(error);\n\t}\n}\n\n/**\n * Inits Credit Card process on the Billing Page\n * @param {Constructor} alertHandlerModel Alert handling constructor\n * @param {Object} hostedFieldsInstance A hosted fields instance\n */\nfunction init(alertHandlerModel, hostedFieldsInstance) {\n\tloader = loaderInstance($braintreeCreditCardLoader);\n\talertHandler = alertHandlerModel;\n\thfInstance = hostedFieldsInstance;\n\n\t$continueButton.addEventListener('click', function (event) {\n\t\tconst isCreditCardTabActive =\n\t\t\tcreditCardPaymentProcessingHelper.isActiveCreditCardTab();\n\n\t\t// Removes active session payment method once 'Next: Place order' button clicked\n\t\thelper.removeActiveSessionPayment();\n\n\t\tif (!event.isTrusted || !isCreditCardTabActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocessCreditCard(event);\n\t});\n\t$continueButtonNew.addEventListener('click', function (event) {\n\t\tconst isCreditCardTabActive =\n\t\t\tcreditCardPaymentProcessingHelper.isActiveCreditCardTab();\n\n\t\t// Removes active session payment method once 'Next: Place order' button clicked\n\t\thelper.removeActiveSessionPayment();\n\n\t\tif (!event.isTrusted || !isCreditCardTabActive) {\n\t\t\treturn;\n\t\t}\n\n\t\tprocessCreditCard(event);\n\t});\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst creditCardPaymentProcessingHelper = require('../helpers/creditCardPaymentProcessingHelper');\nconst creditCardHelper = require('../helpers/creditCardHelper');\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\nconst creditCardSessionAccountHelper = require('../helpers/creditCardSessionAccountHelper');\n\n/**\n * Update Session account\n * @param {Object} sessionOption - session option\n */\nfunction clearSessionAccount(sessionOption) {\n\tsessionOption.selected = false;\n\tsessionOption.classList.add('used-creditcard-account-hide');\n\tsessionOption.classList.remove('used-creditcard-account');\n\tsessionOption.text = '';\n\tsessionOption.setAttribute('data-session-account', false);\n\tsessionOption.setAttribute('data-owner', false);\n\tsessionOption.setAttribute('data-expiration', false);\n\tsessionOption.setAttribute('data-number', false);\n\tsessionOption.setAttribute('data-nonce', false);\n\tsessionOption.setAttribute('data-type', false);\n\tsessionOption.setAttribute('data-save-card', false);\n}\n\n/**\n * Remove Credit Card session account\n */\nfunction removeSessionNonce() {\n\tconst defaultCreditCard = helper.getOptionByDataDefault(\n\t\t'#braintreeCreditCardList'\n\t);\n\tconst creditCardFieldstoDisplay =\n\t\tcreditCardFormFieldHelper.getCCFieldsToDisplay();\n\tconst creditCardFieldsAsArray =\n\t\tcreditCardFormFieldHelper.getCCFields().asArray;\n\tconst ccCvvToDisplayField =\n\t\tcreditCardFormFieldHelper.getCcCvvToDisplayField().asArray;\n\tconst ccCvvField = creditCardFormFieldHelper.getCcCvvField().asArray;\n\tconst sessionOption = helper.getSessionAccountOption({\n\t\tquerySelector: '#braintreeCreditCardList',\n\t\tid: 'braintreeSessionCreditAccount',\n\t});\n\n\tif (!sessionOption) {\n\t\treturn;\n\t}\n\n\tconst sessionLastFour = sessionOption.getAttribute('data-last-four');\n\tconst sessionType = sessionOption.getAttribute('data-type').toLowerCase();\n\n\tclearSessionAccount(sessionOption);\n\n\t// Handles case when stored and session credit card have the same type and last four digest\n\t// Makes visable already stored Credit Card in Credit Card List\n\tcreditCardPaymentProcessingHelper.showAlreadyStoredCard(\n\t\tsessionLastFour,\n\t\tsessionType\n\t);\n\n\tcreditCardSessionAccountHelper.clearCreditCardFields();\n\tcreditCardSessionAccountHelper.clearCreditCardNonceField();\n\n\tif (defaultCreditCard) {\n\t\tdefaultCreditCard.selected = true;\n\n\t\tcreditCardFormFieldHelper.setCreditCardFieldsToDisplay(\n\t\t\tdefaultCreditCard,\n\t\t\tcreditCardFieldstoDisplay.asObject\n\t\t);\n\n\t\t// Uncheck Save Credit Card checkbox\n\t\tcreditCardHelper.saveCreditCard(false);\n\t\tcreditCardHelper.hideSaveCreditCardBlock(true);\n\t} else {\n\t\tcreditCardFormFieldHelper.hideCardElements(\n\t\t\tcreditCardFieldstoDisplay.asArray.concat(ccCvvToDisplayField)\n\t\t);\n\t\tcreditCardFormFieldHelper.showCardElements(\n\t\t\tcreditCardFieldsAsArray.concat(ccCvvField)\n\t\t);\n\n\t\t// Hides 'Select a Credit Card block' on the Billing Page\n\t\tconst ccAccount = document.querySelector(\n\t\t\t'.js-braintree-used-creditcard-account'\n\t\t);\n\n\t\tccAccount.classList.remove('used-creditcard-account');\n\t\tccAccount.classList.add('used-creditcard-account-hide');\n\t}\n}\n\nmodule.exports = {\n\tremoveSessionNonce,\n};\n","'use strict';\n\nconst braintreeGeneral = require('../../braintreeGeneral');\n\n/**\n * Constructor of VaultMgr model\n * @param {Promise} personalizedClientTokenPromise BT clietn instance promise\n */\nfunction CreditCardVaultManagerModel(personalizedClientTokenPromise) {\n\tthis.customerPaymentMethodsFromVaultPromise =\n\t\tbraintreeGeneral.getBtCustomerPaymentMethods(\n\t\t\tpersonalizedClientTokenPromise\n\t\t);\n}\n\n/**\n * Find CC by data within VaultMgr\n * @param {Promise} customerPaymentMethodsFromVaultPromise Array with Payment Methods from VaultMgr\n * @param {string} lastFour Last four credit card digits\n * @param {string} cardType Credit Card type (Visa, Mastercard)\n * @param {Object} expiration Month and year\n * @returns {Promise} Promise with found Credit Card\n */\nfunction getCardFromVaultMgrByData(\n\tcustomerPaymentMethodsFromVaultPromise,\n\tlastFour,\n\tcardType,\n\texpiration\n) {\n\treturn customerPaymentMethodsFromVaultPromise.then(function (\n\t\tvaultMgrPaymentMethods\n\t) {\n\t\treturn vaultMgrPaymentMethods.find(function (paymentMethod) {\n\t\t\tconst isCardType =\n\t\t\t\tpaymentMethod.type === 'CreditCard' ||\n\t\t\t\tpaymentMethod.type === 'VisaCheckoutCard';\n\t\t\tconst pmDetails = paymentMethod.details;\n\t\t\tconst isExpirationMatched =\n\t\t\t\tpmDetails.expirationMonth === expiration.month &&\n\t\t\t\tpmDetails.expirationYear.endsWith(expiration.year);\n\n\t\t\treturn (\n\t\t\t\tisCardType &&\n\t\t\t\tisExpirationMatched &&\n\t\t\t\tpmDetails.cardType.toLowerCase() === cardType &&\n\t\t\t\tpmDetails.lastFour === lastFour\n\t\t\t);\n\t\t});\n\t});\n}\n\n/**\n * Return CC from VaultManager by passed data\n * @param {string} lastFour Last four credit card digits\n * @param {string} cardType Credit Card type (Visa, Mastercard)\n * @param {Object} expiration Month and year\n * @returns {Promise} Promise with nonce or empty string\n */\nCreditCardVaultManagerModel.prototype.getNonceByCardData = function (\n\tlastFour,\n\tcardType,\n\texpiration\n) {\n\treturn getCardFromVaultMgrByData(\n\t\tthis.customerPaymentMethodsFromVaultPromise,\n\t\tlastFour,\n\t\tcardType,\n\t\texpiration\n\t);\n};\n\nmodule.exports = CreditCardVaultManagerModel;\n","'use strict';\n\nmodule.exports = {\n\tFLOW_NEW_CARD_NAME: 'newcard',\n\tFLOW_SESSION_CARD_NAME: 'sessioncard',\n\tFLOW_STORED_CARD_NAME: 'js-stored-card',\n};\n","'use strict';\n\n// Braintree SDK model builder, we need to init Braintree Credit Card model on this level, since we are using it on step of \"creditCardFields.init()\"\n// and on step of \"creditCardPayment.init()\".\n\nconst creditCardFields = require('./components/creditCardFields');\n\nconst HostedFieldsModel = require('./braintreesdk/hostedFieldsModel');\nconst CreditCardAlertHandlerModel = require('../creditcard/alertHandler/creditCardAlertHandlerModel');\n\nconst hostedFieldsInstance = new HostedFieldsModel();\n\nlet btCreditCardModelResponse;\nlet creditCardMessages;\n\n/**\n * Inits Credit Card functionality on the Account Page\n * @returns {void}\n */\nfunction initAccount() {\n\tconst creditCardAccount = require('./components/creditCardAccount');\n\n\tconst alertHandler = new CreditCardAlertHandlerModel(creditCardMessages);\n\tconst { basicFlowConfigs, styles } = hostedFieldsInstance.getFieldsOptions();\n\n\t// Sets an appropriate hosted fields options object for Account page\n\thostedFieldsInstance.setHostedFieldsOptions({\n\t\tstyles: styles,\n\t\tconfigs: basicFlowConfigs,\n\t});\n\n\tif (!btCreditCardModelResponse || btCreditCardModelResponse.error) {\n\t\talertHandler.handleCreditCardError(btCreditCardModelResponse.message);\n\t}\n\n\tcreditCardAccount.init(\n\t\tbtCreditCardModelResponse.btCreditCardModel,\n\t\talertHandler,\n\t\tcreditCardMessages,\n\t\thostedFieldsInstance\n\t);\n\n\tcreditCardFields.init(\n\t\tbtCreditCardModelResponse.btCreditCardModel,\n\t\talertHandler,\n\t\thostedFieldsInstance\n\t);\n}\n\n/**\n * Inits Credit Card functionality on the Checkout Page\n * @returns {void}\n */\nasync function initCheckout() {\n\tconst creditCardList = require('./components/creditCardList');\n\tconst creditCardPaymentProcessing = require('./components/creditCardPaymentProcessing');\n\n\tconst alertHandler = new CreditCardAlertHandlerModel(creditCardMessages);\n\t// Hosted fields options initializations\n\tconst fieldsOptions = hostedFieldsInstance.getFieldsOptions();\n\tconst isReVerifyFlow =\n\t\thostedFieldsInstance.hostedFieldsConfigs.isCcReVerifyEnabled &&\n\t\thostedFieldsInstance.hostedFieldsConfigs.isSavedCreditCard;\n\tconst configs = isReVerifyFlow\n\t\t? fieldsOptions.reverifyFlowConfigs\n\t\t: fieldsOptions.basicFlowConfigs;\n\n\t// Sets an appropriate hosted fields options object for Checkout page\n\thostedFieldsInstance.setHostedFieldsOptions({\n\t\tstyles: fieldsOptions.styles,\n\t\tconfigs,\n\t});\n\n\tif (!btCreditCardModelResponse || btCreditCardModelResponse.error) {\n\t\talertHandler.handleCreditCardError(btCreditCardModelResponse.message);\n\t}\n\n\t// Call server to update data from basket\n\tawait btCreditCardModelResponse.btCreditCardModel.updateOrderData();\n\n\tcreditCardFields.init(\n\t\tbtCreditCardModelResponse.btCreditCardModel,\n\t\talertHandler,\n\t\thostedFieldsInstance\n\t);\n\n\tcreditCardList.init(\n\t\tbtCreditCardModelResponse.btCreditCardModel,\n\t\talertHandler,\n\t\thostedFieldsInstance\n\t);\n\n\tcreditCardPaymentProcessing.init(alertHandler, hostedFieldsInstance);\n}\n\n/**\n * Inits 'braintreeCreditCardModelBuilder' on creditCard level\n */\nfunction init() {\n\tconst braintreeCreditCardModelBuilder = require('./braintreesdk/braintreeCreditCardModelBuilder');\n\n\tbtCreditCardModelResponse = braintreeCreditCardModelBuilder.init();\n\n\tif (!btCreditCardModelResponse.error) {\n\t\tcreditCardMessages = btCreditCardModelResponse.btCreditCardConfigs.messages;\n\t}\n}\n\nmodule.exports = {\n\tinitAccount,\n\tinitCheckout,\n\tinit,\n};\n","'use strict';\n\n/**\n * Creates tokenization options for 'tokenize' function.\n * @returns {Object} Object with tokenization options.\n */\nfunction createTokenizationOptions() {\n\tconst creditCardBillingAddressHelper = require('./creditCardBillingAddressHelper');\n\n\treturn {\n\t\tbillingAddress:\n\t\t\tcreditCardBillingAddressHelper.createCreditCardBillingAddress(),\n\t};\n}\n\nmodule.exports = {\n\tcreateTokenizationOptions,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * Sets value of credit card hidden fields needed for server side\n * @param {Object} tokenizePayload Tokenize payload\n */\nfunction setCardHiddenFields(tokenizePayload) {\n\tconst tokenizePayloadDetails = tokenizePayload.details;\n\n\tdocument.getElementById('braintreeCreditCardNonce').value =\n\t\ttokenizePayload.nonce;\n\tdocument.getElementById('braintreeCardType').value =\n\t\ttokenizePayloadDetails.cardType;\n\tdocument.getElementById('braintreeCardMaskNumber').value =\n\t\ttokenizePayloadDetails.lastFour;\n\tdocument.getElementById('braintreeCardHolder').value =\n\t\ttokenizePayloadDetails.cardholderName;\n}\n\n/**\n * @param {Object} billingAddress billing address\n * @returns {Object} preperad data\n */\nfunction getDataForVerifyCard(billingAddress) {\n\tlet preparedData = {};\n\n\tconst $customerInfo = document.querySelector(\n\t\t'.js-braintree-add-new-card-block'\n\t);\n\n\tif ($customerInfo) {\n\t\tpreparedData = helper.tryParseJSON(\n\t\t\t$customerInfo.getAttribute('data-customer-info-card')\n\t\t);\n\t}\n\n\tif (\n\t\tObject.keys(preparedData.billingData).length ===\n\t\tObject.keys(billingAddress).length\n\t) {\n\t\tpreparedData.billingData = billingAddress;\n\t}\n\n\treturn preparedData;\n}\n\n/**\n * @param {Object} braintreeCreditCardModel credit card model\n * @param {Object} tokenizePayload payload\n * @param {Object} errorList object with errors\n * @returns {Object} result of validation\n */\nfunction verifyCard3dSecure(\n\tbraintreeCreditCardModel,\n\ttokenizePayload,\n\terrorList\n) {\n\tconst creditCardHelper = require('../helpers/creditCardHelper');\n\n\tconst prefs = creditCardHelper.getCheckoutBraintreeCreditCardConfigs();\n\tconst is3DSecureFlow =\n\t\tprefs.is3dSecureEnabled ||\n\t\tbraintreeCreditCardModel.isTrigger3DSecureFlow(tokenizePayload);\n\n\tif (prefs.is3DSecureVerificationAccountPage && is3DSecureFlow) {\n\t\t// Fill in this data\n\t\tconst billingData = {};\n\t\tconst orderAmount = '0.00';\n\t\tconst customerInfo = getDataForVerifyCard(billingData);\n\n\t\tconst nonce = tokenizePayload.nonce;\n\t\tconst bin = tokenizePayload.details ? tokenizePayload.details.bin : '';\n\n\t\tconst braintreeCreditCardSDK = require('../braintreesdk/braintreeCreditCardSDK');\n\n\t\treturn braintreeCreditCardSDK\n\t\t\t.apply3dSecureValidation(\n\t\t\t\tnonce,\n\t\t\t\tbin,\n\t\t\t\torderAmount,\n\t\t\t\tcustomerInfo.email,\n\t\t\t\tcustomerInfo.billingData,\n\t\t\t\tcustomerInfo.shippingAdditionalInfo\n\t\t\t)\n\t\t\t.then(function (payload) {\n\t\t\t\tif (payload.liabilityShifted) {\n\t\t\t\t\t// \"Nonce\" is changed after successful 3DS validation. We need this line to store the last \"nonce\" value\n\t\t\t\t\tif (tokenizePayload) {\n\t\t\t\t\t\t// For stored card use case we don't need this param\n\t\t\t\t\t\ttokenizePayload.nonce = payload.nonce;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tthreeDSecureDataValidationPayload: payload,\n\t\t\t\t\t\tbtTokenizePayload: tokenizePayload,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case when buyer \"canceled\" 3DS window\n\t\t\t\tthrow new Error(errorList.CARD_VERIFY_ERROR_MESSAGE);\n\t\t\t});\n\t}\n\n\treturn {};\n}\n\nmodule.exports = {\n\tverifyCard3dSecure,\n\tsetCardHiddenFields,\n\tgetDataForVerifyCard,\n};\n","'use strict';\n\n/**\n * Display billing address of passed payment option (of selected Credit Card payment option)\n * @param {Object} $selectedCreditCardPayment Selected PayPal payment option\n */\nfunction displaySelectedStoredBillingAddress($selectedCreditCardPayment) {\n\tconst paymentMethodGeneralHelper = require('../../paymentMethodGeneralHelper');\n\n\tif ($selectedCreditCardPayment) {\n\t\tconst selectedOptionClassList = $selectedCreditCardPayment.classList;\n\t\tconst storedCcAddressClassName = 'js-stored-credit-card-address';\n\t\tconst $storedCreditCardAddressOption = document.querySelector(\n\t\t\t`.${storedCcAddressClassName}`\n\t\t);\n\n\t\tif (selectedOptionClassList.contains('js-stored-card')) {\n\t\t\tconst billingAddressAsString =\n\t\t\t\tpaymentMethodGeneralHelper.getBillingAddressAsString(\n\t\t\t\t\t$selectedCreditCardPayment\n\t\t\t\t);\n\n\t\t\tif (billingAddressAsString !== '') {\n\t\t\t\tif ($storedCreditCardAddressOption) {\n\t\t\t\t\t$storedCreditCardAddressOption.innerText = billingAddressAsString;\n\t\t\t\t\t$storedCreditCardAddressOption.selected = true;\n\t\t\t\t} else {\n\t\t\t\t\tconst option = document.createElement('option');\n\n\t\t\t\t\toption.innerHTML = billingAddressAsString;\n\t\t\t\t\toption.selected = true;\n\t\t\t\t\toption.classList.add(storedCcAddressClassName);\n\n\t\t\t\t\tdocument.getElementById('billingAddressSelector').append(option);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ($storedCreditCardAddressOption) {\n\t\t\t$storedCreditCardAddressOption.selected = false;\n\t\t}\n\t}\n}\n\n/**\n * Shows or hides a billing info alert for the credit cart payment method\n * @param {Object} savedBillingAddress A billing Address object\n */\nfunction initBillingInfoAlert(savedBillingAddress) {\n\tconst $creditCardBillingInfoAlert = document.querySelector(\n\t\t'.js-creditcard-billing-address-info-alert'\n\t);\n\t// Shows or hides a billing info alert for Credit card payment\n\n\tif (savedBillingAddress) {\n\t\t$creditCardBillingInfoAlert.style.display = 'block';\n\t} else {\n\t\t$creditCardBillingInfoAlert.style.display = 'none';\n\t}\n}\n\n/**\n * Creates a valid billing address for Credit card payment method\n * @returns {Object} A billing address object\n */\nfunction createCreditCardBillingAddress() {\n\tconst helper = require('../../helper');\n\n\tconst billingData = helper.getBillingAddressFormValues();\n\n\treturn {\n\t\tfirstName: billingData.firstName,\n\t\tlastName: billingData.lastName,\n\t\taddress1: decodeURIComponent(billingData.address1),\n\t\taddress2: decodeURIComponent(billingData.address2),\n\t\tcity: decodeURIComponent(billingData.city),\n\t\tstateCode: billingData.stateCode,\n\t\tpostalCode: decodeURIComponent(billingData.postalCode),\n\t\tcountry: decodeURIComponent(billingData.country),\n\t\tphone: billingData.phone,\n\t};\n}\n\n/**\n * Fills a credit card billing address input the with billing address data\n * @param {Object} billingAddress A billing address object\n */\nfunction setCreditCardBillingAddress(billingAddress) {\n\tdocument.getElementById('braintreeCardBillingAddress').value =\n\t\tJSON.stringify(billingAddress);\n}\n\nmodule.exports = {\n\tinitBillingInfoAlert,\n\tcreateCreditCardBillingAddress,\n\tsetCreditCardBillingAddress,\n\tdisplaySelectedStoredBillingAddress,\n};\n","'use strict';\n\n// This file is about form fields manipulations.\n\n/**\n * Returns an object contains an object and an array of credit card fields to Display\n * @returns {Object} Object\n */\nfunction getCCFieldsToDisplay() {\n\tconst ccToDisplayFieldsAsObject = {\n\t\tcardOwnerToDisplay: document.getElementById('braintreeCardOwnerToDisplay'),\n\t\tcardNumberToDisplay: document.getElementById(\n\t\t\t'braintreeCardNumberToDisplay'\n\t\t),\n\t\tcardExpirationToDisplay: document.getElementById(\n\t\t\t'braintreeExpirationToDisplay'\n\t\t),\n\t};\n\n\treturn {\n\t\tasObject: ccToDisplayFieldsAsObject,\n\t\tasArray: Object.values(ccToDisplayFieldsAsObject),\n\t};\n}\n\n/**\n * Returns an object contains an object and an array of credit card cvv field to Display\n * @returns {Object} Object\n */\nconst getCcCvvToDisplayField = () => {\n\tconst asObject = {\n\t\tcardCvvToDisplay: document.getElementById('braintreeCvvToDisplay'),\n\t};\n\n\treturn {\n\t\tasObject: asObject,\n\t\tasArray: Object.values(asObject),\n\t};\n};\n\n/**\n * Returns an object contains an object and an array of cvv credit card field\n * @returns {Object} Object\n */\nconst getCcCvvField = () => {\n\tconst asObject = {\n\t\tbraintreeCvv: document.getElementById('braintreeCvv'),\n\t};\n\n\treturn {\n\t\tasObject: asObject,\n\t\tasArray: Object.values(asObject),\n\t};\n};\n\n/**\n * Returns an object contains an object and an array of credit card fields\n * @returns {Object} Object\n */\nfunction getCCFields() {\n\tconst ccFieldsAsObject = {\n\t\tbraintreeCardOwner: document.getElementById('braintreeCardOwner'),\n\t\tbraintreeExpirationDate: document.getElementById('braintreeExpirationDate'),\n\t\tbraintreeCardNumber: document.getElementById('braintreeCardNumber'),\n\t};\n\n\treturn {\n\t\tasObject: ccFieldsAsObject,\n\t\tasArray: Object.values(ccFieldsAsObject),\n\t};\n}\n\n/**\n * Returns braintreeCreditCardNonce container\n * @returns {Object} Input element\n */\nfunction getCreditCardNonceFieldContainer() {\n\treturn document.getElementById('braintreeCreditCardNonce');\n}\n\n/**\n * Returns braintreeCreditCardList container\n * @returns {Object} Select element\n */\nfunction getCreditCardListContainer() {\n\treturn document.getElementById('braintreeCreditCardList');\n}\n\n/**\n * Sets Credit Card field to display\n * @param {Object} selectedCard The values of fields to be set\n * @param {Object} cacheCardFields Object of elements contain credit cards fields to display\n */\nfunction setCreditCardFieldsToDisplay(selectedCard, cacheCardFields) {\n\tconst cartNumber = selectedCard.dataset.number;\n\n\tcacheCardFields.cardNumberToDisplay.innerHTML = cartNumber;\n\tcacheCardFields.cardExpirationToDisplay.innerHTML =\n\t\tselectedCard.dataset.expiration;\n\tcacheCardFields.cardOwnerToDisplay.innerHTML = selectedCard.dataset.owner;\n\n\tif (cacheCardFields.cardCvvToDisplay) {\n\t\tcacheCardFields.cardCvvToDisplay.innerHTML = '***';\n\t}\n\n\tdocument.getElementById('braintreeCardType').value =\n\t\tselectedCard.dataset.type;\n\tdocument.getElementById('braintreeCardMaskNumber').value = cartNumber;\n}\n\n/**\n * Sets Credit Card fileds on the Billing Page\n * @param {Object} selectedCard The values of fields to be set\n * @param {Object} cacheCardFields Object of elements contain credit cards fields\n */\nfunction setCardFields(selectedCard, cacheCardFields) {\n\tcacheCardFields.cardNumberToDisplay.innerHTML =\n\t\tselectedCard['data-number'].value;\n\tcacheCardFields.cardExpirationToDisplay.innerHTML =\n\t\tselectedCard['data-expiration'].value;\n\tcacheCardFields.cardOwnerToDisplay.innerHTML =\n\t\tselectedCard['data-owner'].value;\n\n\tif (cacheCardFields.cardCvvToDisplay) {\n\t\tcacheCardFields.cardCvvToDisplay.innerHTML = '***';\n\t}\n\n\tdocument.getElementById('braintreeCardType').value =\n\t\tselectedCard['data-type'].value;\n\tdocument.getElementById('braintreeCardMaskNumber').value =\n\t\tselectedCard['data-number'].value;\n}\n\n/**\n * Shows Credit Card fileds on the Billing Page\n * @param {Array} cardFields Array of credit card fileds\n */\nfunction showCardElements(cardFields) {\n\tcardFields.forEach(function (el) {\n\t\tel.style.display = '';\n\t});\n}\n\n/**\n * Hides Credit Card fileds on the Billing Page\n * @param {Array} cardFields Array of Credit Card fileds\n */\nfunction hideCardElements(cardFields) {\n\tcardFields.forEach(function (el) {\n\t\tel.style.display = 'none';\n\t});\n}\n\n/**\n * Returns Credit Card hosted fileds styles\n * @returns {Object} Object of styles\n */\nfunction getHostedFieldsStyles() {\n\treturn {\n\t\tinput: {\n\t\t\t'font-size': '12px',\n\t\t\tcolor: '#b7802a',\n\t\t},\n\t\t':focus': {\n\t\t\tcolor: 'blue',\n\t\t},\n\t\t'.valid': {\n\t\t\tcolor: 'green',\n\t\t},\n\t\t'.invalid': {\n\t\t\tcolor: 'red',\n\t\t},\n\t\t'.cvv::placeholder': {\n\t\t\tcolor: 'red',\n\t\t},\n\t};\n}\n\nmodule.exports = {\n\tgetCCFieldsToDisplay,\n\tgetCCFields,\n\tgetCreditCardNonceFieldContainer,\n\tgetCreditCardListContainer,\n\tshowCardElements,\n\thideCardElements,\n\tsetCreditCardFieldsToDisplay,\n\tsetCardFields,\n\tgetHostedFieldsStyles,\n\tgetCcCvvToDisplayField,\n\tgetCcCvvField,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * Uncheck Save Credit Card checkbox\n * @param {boolean} save true/false\n */\nfunction saveCreditCard(save) {\n\tconst isSave = save ? true : false; // eslint-disable-line\n\n\tdocument.getElementById('braintreeSaveCreditCard').checked = isSave;\n}\n\n/**\n * Hides or Display 'braintreeSaveCardContainer' container\n * @param {boolean} hide true/false\n */\nfunction hideSaveCreditCardBlock(hide) {\n\tconst isHide = hide ? true : false; // eslint-disable-line\n\n\tdocument.getElementById('braintreeSaveCardContainer').style.display = isHide\n\t\t? 'none'\n\t\t: 'block';\n}\n\n/**\n * Returns Braintree Credit Card configs\n * @returns {Object} Braintree Credit Card configs\n */\nfunction getCheckoutBraintreeCreditCardConfigs() {\n\tlet braintreeCreditCardFieldsConfigs = null;\n\n\ttry {\n\t\tbraintreeCreditCardFieldsConfigs = helper.tryParseJSON(\n\t\t\tdocument\n\t\t\t\t.querySelector('.js-braintree-credit-card-fields')\n\t\t\t\t.getAttribute('data-braintree-config')\n\t\t);\n\t} catch (error) {\n\t\treturn braintreeCreditCardFieldsConfigs;\n\t}\n\n\treturn braintreeCreditCardFieldsConfigs;\n}\n\n/**\n * Returns a selected credit card option\n * @returns {DomElement} A selected credit card option\n */\nfunction getSelectedCcAccountOption() {\n\tconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\n\tconst $creditCardList =\n\t\tcreditCardFormFieldHelper.getCreditCardListContainer();\n\n\treturn document.getElementById('braintreeCreditCardList').options[\n\t\t$creditCardList.selectedIndex\n\t];\n}\n\n/**\n * Returns a credit card billing address as string from data attribute\n * @returns {string} A credit card billing address as string\n */\nfunction getSavedCcBillingAddressAsString() {\n\treturn getSelectedCcAccountOption().getAttribute('data-billing-address');\n}\n\nmodule.exports = {\n\tgetCheckoutBraintreeCreditCardConfigs,\n\tsaveCreditCard,\n\thideSaveCreditCardBlock,\n\tgetSavedCcBillingAddressAsString,\n\tgetSelectedCcAccountOption,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst CreditCardVaultManagerModel = require('../components/creditCardVaultManagerModel');\n\nconst cardPlaceholder = '************';\nconst btSessionCreditAccountSelectorID = 'braintreeSessionCreditAccount';\nconst ATTR_DATA_EXPIRATION = 'data-expiration';\n\n/**\n * Displays stores Credit Cards list on the Billing Page\n */\nfunction displayStoredCreditCardList() {\n\tconst $creditCardAccount = document.querySelector(\n\t\t'.js-braintree-used-creditcard-account'\n\t);\n\n\t$creditCardAccount.classList.remove('used-creditcard-account-hide');\n\t$creditCardAccount.classList.add('used-creditcard-account');\n}\n\n/**\n * Fills the Credit Card form hidden inputs with payload data\n * @param {Object} braintreeResponse Object contains the data of new payment method\n */\nfunction fillCreditCardFormWithPayloadData(braintreeResponse) {\n\tconst btResponse = braintreeResponse.btTokenizePayload;\n\tconst $creditCardFieldsCardNumber = document.querySelector(\n\t\t'input[name=dwfrm_billing_creditCardFields_cardNumber]'\n\t);\n\n\tif (btResponse) {\n\t\tconst btResponseDetails = btResponse.details;\n\n\t\tdocument.getElementById('braintreeCardType').value =\n\t\t\tbtResponseDetails.cardType;\n\t\tdocument.getElementById('braintreeCardMaskNumber').value =\n\t\t\tcardPlaceholder + btResponseDetails.lastFour;\n\t\tdocument.getElementById('braintreeCardExpirationMonth').value =\n\t\t\tbtResponseDetails.expirationMonth;\n\t\tdocument.getElementById('braintreeCardExpirationYear').value =\n\t\t\tbtResponseDetails.expirationYear.substr(2);\n\t\tdocument.getElementById('braintreeCardHolder').value =\n\t\t\tbtResponseDetails.cardholderName;\n\n\t\tif ($creditCardFieldsCardNumber) {\n\t\t\t$creditCardFieldsCardNumber.value =\n\t\t\t\tcardPlaceholder + btResponseDetails.lastFour;\n\t\t}\n\n\t\tdocument.querySelector('input[name=braintreePaymentMethodNonce]').value =\n\t\t\tbtResponse.nonce;\n\t}\n}\n\n/**\n * Fills the session Credit Card form inputs with payload data\n * @param {Object} braintreeResponse Object contains the data of new payment method\n */\nfunction fillSessionCreditCardFormWithPayloadData(braintreeResponse) {\n\tconst btResponse = braintreeResponse.btTokenizePayload;\n\tconst usedCreditCardAccount = Boolean(\n\t\tdocument.querySelector('.js-braintree-used-creditcard-account')\n\t);\n\n\tif (usedCreditCardAccount && btResponse) {\n\t\tconst btResponseDetails = btResponse.details;\n\t\tconst $sessionCreditCard = document.getElementById(\n\t\t\tbtSessionCreditAccountSelectorID\n\t\t);\n\n\t\t// Fields filling for displaying session card fields to the buyer\n\t\tdocument.getElementById('braintreeCardOwnerToDisplay').textContent =\n\t\t\tbtResponseDetails.cardholderName;\n\t\tdocument.getElementById('braintreeCardNumberToDisplay').textContent =\n\t\t\tcardPlaceholder + btResponseDetails.lastFour;\n\t\tdocument.getElementById('braintreeExpirationToDisplay').textContent = `${\n\t\t\tbtResponseDetails.expirationMonth\n\t\t}/${btResponseDetails.expirationYear.substr(2)}`;\n\n\t\t// Fields filling for displaying session card option value\n\t\t$sessionCreditCard.textContent = `${$sessionCreditCard.getAttribute(\n\t\t\t'data-type'\n\t\t)}\n ${$sessionCreditCard.getAttribute('data-number')}\n ${$sessionCreditCard.getAttribute(ATTR_DATA_EXPIRATION)}\n ${$sessionCreditCard.getAttribute('data-owner')}`;\n\t}\n}\n\n/**\n * Fills new/session credit card attributes to available option for using them in business logic (client/server)\n * @param {Object} braintreeResponse Tokenize payload from braintree\n * @param {boolean} isSessionCard Whether session card or not, depending on Session Payments Enabled pref\n */\nfunction setCreditCardDataAttributes(braintreeResponse, isSessionCard) {\n\tconst $sessionCreditCard = document.getElementById(\n\t\t`${isSessionCard ? btSessionCreditAccountSelectorID : 'newCardAccount'}`\n\t);\n\tconst $braintreeSaveCreditCard = document.getElementById(\n\t\t'braintreeSaveCreditCard'\n\t);\n\n\tconst btResponse = braintreeResponse.btTokenizePayload;\n\tconst btResponseDetails = btResponse.details;\n\tconst isSavedCard = $braintreeSaveCreditCard\n\t\t? $braintreeSaveCreditCard.checked\n\t\t: false;\n\n\t$sessionCreditCard.classList.remove('used-creditcard-account-hide');\n\t$sessionCreditCard.setAttribute(\n\t\t'data-number',\n\t\tcardPlaceholder + btResponseDetails.lastFour\n\t);\n\t$sessionCreditCard.setAttribute(\n\t\tATTR_DATA_EXPIRATION,\n\t\t`${\n\t\t\tbtResponseDetails.expirationMonth\n\t\t}/${btResponseDetails.expirationYear.substr(2)}`\n\t);\n\t$sessionCreditCard.setAttribute('data-type', btResponseDetails.cardType);\n\t$sessionCreditCard.setAttribute('data-last-four', btResponseDetails.lastFour);\n\t$sessionCreditCard.setAttribute(\n\t\t'data-owner',\n\t\tbtResponseDetails.cardholderName\n\t);\n\t$sessionCreditCard.setAttribute('data-nonce', btResponse.nonce);\n\t$sessionCreditCard.setAttribute('data-session-account', isSessionCard);\n\t$sessionCreditCard.setAttribute('data-save-card', isSavedCard);\n}\n\n/**\n * Marks a session Credit Card account as selected\n */\nfunction markAsSelectedSessionAccount() {\n\tconst $newCCAccount = document.getElementById('newCardAccount');\n\tconst $sessionCreditCard = document.getElementById(\n\t\tbtSessionCreditAccountSelectorID\n\t);\n\n\t$newCCAccount.removeAttribute('selected');\n\t$sessionCreditCard.selected = true;\n}\n\n/**\n * Returns a Credit Card flow ID from selector\n * @param {Object} $creditCardList Selector contained the Credit Card flow ID\n * @returns {string} Credit Card flow ID\n */\nfunction getCreditCardFlowID($creditCardList) {\n\tconst selectedOptionValue = $creditCardList.value;\n\tconst newCardID = 'newcard';\n\tconst sessionCardID = 'sessioncard';\n\tconst storedCardID = 'js-stored-card';\n\n\tlet selectedOption = null;\n\tlet creditCardFlowID = null;\n\n\tswitch (selectedOptionValue) {\n\t\tcase newCardID:\n\t\t\tcreditCardFlowID = newCardID;\n\n\t\t\tbreak;\n\n\t\tcase sessionCardID:\n\t\t\tcreditCardFlowID = sessionCardID;\n\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tselectedOption = helper.getSelectedOption($creditCardList);\n\n\t\t\tif (selectedOption.classList.contains(storedCardID)) {\n\t\t\t\tcreditCardFlowID = storedCardID;\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\treturn creditCardFlowID;\n}\n\n/**\n * Returns object with nonce related to stored card\n * @param {Promise} clientInstancePromise Client instance promise\n * @param {Object} $creditCardList Selector with needed data\n * @returns {Object} Response object\n */\nfunction getNonceFromStoredCard(clientInstancePromise, $creditCardList) {\n\tconst CreditCardVaultManagerModelInstance = new CreditCardVaultManagerModel(\n\t\tclientInstancePromise\n\t);\n\tconst $selectedOption = helper.getSelectedOption($creditCardList);\n\tconst cardType = $selectedOption.getAttribute('data-type').toLowerCase();\n\tconst lastFour = $selectedOption.getAttribute('data-last-four').toString();\n\tconst [month, year] = $selectedOption\n\t\t.getAttribute(ATTR_DATA_EXPIRATION)\n\t\t.split('/');\n\tconst expiration = { month, year };\n\n\treturn CreditCardVaultManagerModelInstance.getNonceByCardData(\n\t\tlastFour,\n\t\tcardType,\n\t\texpiration\n\t);\n}\n\n/**\n * Fills 3DS data\n * @param {Object} threeDSecureDataValidationPayload 3DS information about the card\n */\nfunction fill3DsData(threeDSecureDataValidationPayload) {\n\tconst $braintreeIs3dSecureRequired = document.getElementById(\n\t\t'braintreeIs3dSecureRequired'\n\t);\n\n\tif (\n\t\tthreeDSecureDataValidationPayload &&\n\t\tthreeDSecureDataValidationPayload.liabilityShifted\n\t) {\n\t\t$braintreeIs3dSecureRequired.value = 'true';\n\t}\n}\n\n/**\n * Returns whether Credit Card tab is active on the Billing Page\n * @returns {boolean} true/false\n */\nfunction isActiveCreditCardTab() {\n\treturn document\n\t\t.querySelector(\n\t\t\t'.payment-options[role=tablist] a[data-toggle=\"tab\"][href=\"#creditcard-content\"]'\n\t\t)\n\t\t.classList.contains('active');\n}\n\n/**\n * Get stored card by last four digits and card type\n * @param {string} lastFour Last four card digits\n * @param {string} cardType Card type\n * @returns {Object} Jquery object of found stored card\n */\nfunction getStoredCardByData(lastFour, cardType) {\n\treturn Array.from(document.querySelectorAll('.js-stored-card')).find(\n\t\t($card) => {\n\t\t\tconst storedCardType = $card.dataset.type.toLowerCase();\n\t\t\tconst storedCardLastFour = $card.dataset.lastFour.toString();\n\n\t\t\treturn storedCardType === cardType && storedCardLastFour === lastFour;\n\t\t}\n\t);\n}\n\n/**\n * Shows already stored card by last four digits and card type\n * @param {string} lastFour Last four card digits\n * @param {string} cardType Card type\n * @returns {boolean} true in case if stored card with provided params (lastFour, cardType) was found\n */\nfunction showAlreadyStoredCard(lastFour, cardType) {\n\tconst $storedCard = getStoredCardByData(lastFour, cardType);\n\tlet flag = false;\n\n\tif ($storedCard) {\n\t\tflag = true;\n\t}\n\n\treturn flag;\n}\n\nmodule.exports = {\n\tdisplayStoredCreditCardList,\n\tfillCreditCardFormWithPayloadData,\n\tfillSessionCreditCardFormWithPayloadData,\n\tsetCreditCardDataAttributes,\n\tmarkAsSelectedSessionAccount,\n\tgetCreditCardFlowID,\n\tgetNonceFromStoredCard,\n\tfill3DsData,\n\tisActiveCreditCardTab,\n\tshowAlreadyStoredCard,\n};\n","'use strict';\n\nconst creditCardFormFieldHelper = require('../helpers/creditCardFormFieldsHelper');\n\n/**\n * Clears Credit Card fields of session account\n */\nfunction clearCreditCardFields() {\n\tconst creditCardFieldsArray = creditCardFormFieldHelper.getCCFields().asArray;\n\n\tcreditCardFieldsArray.forEach(function (el) {\n\t\tel.value = '';\n\t});\n}\n\n/**\n * Clears Credit Card nonce of session account\n */\nfunction clearCreditCardNonceField() {\n\tdocument.getElementById('braintreeCreditCardNonce').value = '';\n}\n\nmodule.exports = {\n\tclearCreditCardFields,\n\tclearCreditCardNonceField,\n};\n","'use strict';\n\nconst AlertHandlerModel = require('../../alertHandler');\nconst googlePayErrorMessages = require('../constants/errorMessages');\n\n/**\n * Google Pay alert handler model\n */\nclass GooglePayAlertHandlerModel extends AlertHandlerModel {\n\tconstructor(alertMessages) {\n\t\tsuper();\n\t\tthis.alertMessages = alertMessages;\n\t}\n\n\t/**\n\t * Shows order total equal 0 error\n\t */\n\tshowOrderTotalError() {\n\t\tconst zeroAmountErrorMsg = googlePayErrorMessages.ORDER_TOTAL_0;\n\n\t\tthis.showError(zeroAmountErrorMsg);\n\t\tthrow zeroAmountErrorMsg;\n\t}\n\n\t/**\n\t * Handles Google Pay error by types\n\t * @param {Object} error Error object or error message\n\t */\n\thandleGooglePayError(error) {\n\t\tif (error.name === 'BraintreeError') {\n\t\t\tthis.showBraintreeError(error);\n\t\t} else if (error.statusCode === 'DEVELOPER_ERROR') {\n\t\t\tthis.showError(error.statusMessage);\n\t\t} else if (\n\t\t\terror.message !== googlePayErrorMessages.GOOGLE_PAY_WINDOW_CLOSED\n\t\t) {\n\t\t\tthis.showError(error.message);\n\t\t}\n\t}\n\n\t/**\n\t * Creates a Google Pay error object to show on Google Pay popup\n\t * @param {string} intent Intent of Google Pay error\n\t * @param {string} errorMessage Error message\n\t * @returns {Object} An error pbject\n\t */\n\tgetPaymentDataError(intent, errorMessage) {\n\t\tconst googlePayConstants = require('../constants/googlePayPaymentProcessingConstants');\n\t\tconst errorMessages = require('../constants/errorMessages');\n\n\t\tif (intent === googlePayConstants.INTENT_SHIPPING_OPTION) {\n\t\t\treturn {\n\t\t\t\treason: googlePayConstants.REASON_SHIPPING_OPTION_INVALID,\n\t\t\t\tmessage: errorMessage || errorMessages.SHIPPING_OPTION_INVALID,\n\t\t\t\tintent: intent,\n\t\t\t};\n\t\t}\n\n\t\tif (intent === googlePayConstants.INTENT_SHIPPING_ADDRESS) {\n\t\t\treturn {\n\t\t\t\treason: googlePayConstants.REASON_SHIPPING_ADDRESS_UNSERVICEABLE,\n\t\t\t\tmessage: errorMessages.SHIPPING_ADDRESS_UNSERVICEABLE,\n\t\t\t\tintent: intent,\n\t\t\t};\n\t\t}\n\n\t\treturn {};\n\t}\n}\n\nmodule.exports = GooglePayAlertHandlerModel;\n","'use strict';\n\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst braintreeGooglePaySDK = require('../braintreesdk/braintreeGooglePaySDK');\nconst helper = require('../../helper');\n\n/* global Promise braintree $ */\n\n// Global variables\n// Is Froud tools enabled\nlet isFtEnabled;\nlet btClientInstancePromise;\nlet googlePaymentInstance;\nlet paymentsClient;\n\nlet amount;\nlet currencyCode;\n\nlet shippingOptionId;\n\n/**\n * Init Baintree Credit Card model\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n * @param {boolean} isFraudToolsEnabled Is fraud tools enabled value\n */\nfunction init(braintreeClientInstancePromise, isFraudToolsEnabled) {\n\tbraintreeGooglePaySDK.init(braintreeClientInstancePromise);\n\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n\tisFtEnabled = isFraudToolsEnabled;\n}\n\n/**\n * Returns fraud data from dataCollector payload\n * @returns {Object} Payload with fraud data\n */\nfunction collectFraudData() {\n\tlet response;\n\n\tif (isFtEnabled) {\n\t\tresponse = braintreeGeneral.collectFraudData(btClientInstancePromise);\n\t} else {\n\t\tresponse = Promise.resolve({\n\t\t\tcustomMessage:\n\t\t\t\t'Fraud Data collection isn\\t enabled via Custom Site Preference',\n\t\t});\n\t}\n\n\treturn response;\n}\n\n/**\n * Preparing googlePay payment\n * @param {string} googleMerchantId Google Pay merchant identifier\n * @returns {Promise} Promise with resolve 'true' if ready to pay\n */\nfunction initGooglePay(googleMerchantId) {\n\treturn braintreeGooglePaySDK\n\t\t.createGooglePayment(googleMerchantId)\n\t\t.then(function (gpInstance) {\n\t\t\tconst allowedPaymentMethods =\n\t\t\t\tgpInstance.createPaymentDataRequest().allowedPaymentMethods;\n\n\t\t\tgooglePaymentInstance = gpInstance;\n\n\t\t\treturn paymentsClient.isReadyToPay({\n\t\t\t\t// see https://developers.google.com/pay/api/web/reference/object#IsReadyToPayRequest\n\t\t\t\tapiVersion: 2,\n\t\t\t\tapiVersionMinor: 0,\n\t\t\t\tallowedPaymentMethods: allowedPaymentMethods,\n\t\t\t});\n\t\t});\n}\n\n/**\n * Creates a configuration object for use in the loadPaymentData method.\n * @param {Object} options Object with payment options\n * @returns {Object} Configuration object\n */\nfunction createPaymentDataRequest(options) {\n\treturn braintreeGooglePaySDK.createPaymentDataRequest(\n\t\tgooglePaymentInstance,\n\t\toptions,\n\t\tamount\n\t);\n}\n\n/**\n * Parse the response from the tokenization.\n * @param {Object} paymentData The response back from the Google Pay tokenization.\n * @returns {Promise} Promise that resolve with a tokenizePayload\n */\nfunction parseResponse(paymentData) {\n\treturn braintreeGooglePaySDK.parseResponse(\n\t\tpaymentData,\n\t\tgooglePaymentInstance\n\t);\n}\n\n/**\n * Update order amount\n * @returns {Promise} resolved promise which updates the amount\n */\nfunction googlePayUpdateAmount() {\n\tconst config = helper.tryParseJSON(\n\t\tdocument\n\t\t\t.querySelector('.js-braintree-googlepay-button')\n\t\t\t.getAttribute('data-braintree-config')\n\t);\n\n\treturn fetch(helper.getUrlWithCsrfToken(config.getOrderInfoUrl))\n\t\t.then((response) => {\n\t\t\tif (!response.ok) {\n\t\t\t\twindow.location.reload();\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((data) => {\n\t\t\tamount = data.amount;\n\t\t\tcurrencyCode = data.currencyCode;\n\t\t});\n}\n\n/**\n * Handles dynamic buy flow shipping address and shipping options callback intents.\n * @param {Object} intermediatePaymentData response from Google Pay API a shipping address or shipping option is selected in the payment sheet.\n * @returns {Promise} Promise of PaymentDataRequestUpdate object to update the payment sheet.\n */\nasync function onPaymentDataChanged(intermediatePaymentData) {\n\tconst googlePayConstants = require('../constants/googlePayPaymentProcessingConstants');\n\tconst GooglePayAlertHandlerModel = require('../alerthandler/googlePayAlertHandlerModel');\n\n\tconst alertHandler = new GooglePayAlertHandlerModel();\n\tconst shippingAddress = intermediatePaymentData.shippingAddress;\n\tconst paymentDataRequestUpdate = {};\n\n\tlet isShippingMethodApplicable;\n\n\tshippingOptionId = intermediatePaymentData.shippingOptionData.id;\n\n\tif (shippingAddress) {\n\t\tconst city = shippingAddress.locality;\n\t\tconst stateCode = shippingAddress.administrativeArea;\n\t\tconst countryCode = shippingAddress.countryCode;\n\t\tconst postalCode = shippingAddress.postalCode;\n\t\tconst addressQueryString = `city=${city}&stateCode=${stateCode}&countryCode=${countryCode}&postalCode=${postalCode}`;\n\t\tconst paymentMethodId =\n\t\t\twindow.braintreeConstants.PAYMENT_METHOD_ID_GOOGLEPAY;\n\t\tconst url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\n\n\t\tconst responseData = await helper.getApplicableShippingOptions(url);\n\n\t\tamount = responseData.amount;\n\t\tconst applicableShippingMethods = responseData.shippingOptions;\n\n\t\tisShippingMethodApplicable = applicableShippingMethods.find(\n\t\t\t(shippingMethod) => shippingMethod.id === shippingOptionId\n\t\t);\n\t}\n\n\tif (\n\t\tintermediatePaymentData.callbackTrigger ===\n\t\t\tgooglePayConstants.INTENT_INITIALIZE ||\n\t\tintermediatePaymentData.callbackTrigger ===\n\t\t\tgooglePayConstants.INTENT_SHIPPING_ADDRESS\n\t) {\n\t\t// Showing error if store doesn't ship to the address selected in Google Pay\n\t\tif (!shippingAddress) {\n\t\t\treturn Promise.reject(paymentDataRequestUpdate);\n\t\t}\n\n\t\tif (!isShippingMethodApplicable) {\n\t\t\tpaymentDataRequestUpdate.error = alertHandler.getPaymentDataError(\n\t\t\t\tgooglePayConstants.INTENT_SHIPPING_ADDRESS\n\t\t\t);\n\t\t}\n\n\t\t// Recalculation amount taking into account new shipping price\n\t\t// Showing new amount in Google Pay\n\t\tconst totalAmount = await helper.updateAmountForShippingOption(\n\t\t\tshippingOptionId\n\t\t);\n\n\t\tpaymentDataRequestUpdate.newTransactionInfo = {\n\t\t\tcurrencyCode: currencyCode,\n\t\t\ttotalPriceStatus: 'FINAL',\n\t\t\ttotalPrice: totalAmount,\n\t\t\ttotalPriceLabel: 'Final',\n\t\t};\n\t} else if (\n\t\tintermediatePaymentData.callbackTrigger ===\n\t\tgooglePayConstants.INTENT_SHIPPING_OPTION\n\t) {\n\t\t// Showing error if store doesn't ship to the address selected in Google Pay\n\t\tif (!isShippingMethodApplicable) {\n\t\t\tpaymentDataRequestUpdate.error = alertHandler.getPaymentDataError(\n\t\t\t\tgooglePayConstants.INTENT_SHIPPING_OPTION\n\t\t\t);\n\t\t}\n\n\t\t// Recalculation amount taking into account new shipping price\n\t\t// Showing new amount in Google Pay\n\t\tconst totalAmount = await helper.updateAmountForShippingOption(\n\t\t\tshippingOptionId\n\t\t);\n\n\t\tpaymentDataRequestUpdate.newTransactionInfo = {\n\t\t\tcurrencyCode: currencyCode,\n\t\t\ttotalPriceStatus: 'FINAL',\n\t\t\ttotalPrice: totalAmount,\n\t\t\ttotalPriceLabel: 'Final',\n\t\t};\n\t}\n\n\treturn Promise.resolve(paymentDataRequestUpdate);\n}\n\n/**\n * Inits 'Google Pay' payment client object into braintreeGooglePayModel\n * @param {string} instanceType The type of the instance TEST/PRODUCTION\n * @param {string} flow Page flow\n */\nfunction initPaymentsClient(instanceType, flow) {\n\tconst paymentDataCallbacks = {\n\t\tonPaymentAuthorized: () => Promise.resolve({ transactionState: 'SUCCESS' }),\n\t};\n\n\tif (flow === window.braintreeConstants.PAGE_FLOW_CART) {\n\t\tpaymentDataCallbacks.onPaymentDataChanged = onPaymentDataChanged;\n\t}\n\n\tpaymentsClient = new google.payments.api.PaymentsClient({\n\t\t// eslint-disable-line no-undef\n\t\tenvironment: instanceType, // TEST/PRODUCTION\n\t\tpaymentDataCallbacks: paymentDataCallbacks,\n\t});\n}\n\n/**\n * Gets 'Google Pay' payment client object\n * @returns {Object} 'Google Pay' payment client object\n */\nfunction getPaymentsClient() {\n\treturn paymentsClient;\n}\n\nmodule.exports = {\n\tinit,\n\tcollectFraudData,\n\tinitGooglePay,\n\tcreatePaymentDataRequest,\n\tparseResponse,\n\tgooglePayUpdateAmount,\n\t// initialize a Google Pay 'PaymentsClient' object\n\tinitPaymentsClient,\n\tgetPaymentsClient,\n};\n","'use strict';\n\nconst braintreeGooglePayModel = require('./braintreeGooglePayModel');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst googlePayHelper = require('../helpers/googlePayHelper');\n\nconst googlePayErrorMessages = require('../constants/errorMessages');\n\n/**\n * Initialize Braintree Google Pay Model. Pattern Builder is used\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n\tconst braintreeGooglePayConfigs =\n\t\tgooglePayHelper.getBraintreeGooglePayConfigs();\n\tconst response = {\n\t\terror: false,\n\t\tmessage: '',\n\t\tbtGooglePayModel: null,\n\t\tbtGooglePayConfigs: null,\n\t};\n\n\tlet clientToken;\n\tlet btClientInstancePromise;\n\n\tif (braintreeGooglePayConfigs) {\n\t\tclientToken = braintreeGooglePayConfigs.clientToken;\n\t\tbtClientInstancePromise =\n\t\t\tbraintreeGeneral.createClientInstance(clientToken);\n\n\t\tbraintreeGooglePayModel.init(\n\t\t\tbtClientInstancePromise,\n\t\t\tbraintreeGooglePayConfigs.isFraudToolsEnabled\n\t\t);\n\n\t\tresponse.btGooglePayModel = braintreeGooglePayModel;\n\t\tresponse.btGooglePayConfigs = braintreeGooglePayConfigs;\n\t} else {\n\t\tresponse.error = true;\n\t\tresponse.message =\n\t\t\tgooglePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\n\t}\n\n\treturn response;\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nconst googlePaySDKHelper = require('../helpers/googlePaySDKHelper');\n\nlet btClientInstancePromise;\n\n/**\n * Creates googlePayment instance\n * @param {string} googleMerchantId Google Pay merchant identifier\n * @returns {Promise} A promise resolve with with the GooglePaymnet instance\n */\nfunction createGooglePayment(googleMerchantId) {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\tconst googlePayOptions = googlePaySDKHelper.createGooglePayOptions(\n\t\t\tbtClientInstance,\n\t\t\tgoogleMerchantId\n\t\t);\n\n\t\treturn braintree.googlePayment.create(googlePayOptions);\n\t});\n}\n\n/**\n * Creates a configuration object for use in the loadPaymentData method.\n * @param {googlePaymentInstance} googlePaymentInstance Google Pay instance\n * @param {Object} options Object with payment options\n * @param {number} amount Order total amount\n * @returns {Object} Configuration object\n */\nfunction createPaymentDataRequest(googlePaymentInstance, options, amount) {\n\tconst requestObject = {\n\t\ttransactionInfo: {\n\t\t\tcurrencyCode: options.currency,\n\t\t\ttotalPriceStatus: 'FINAL',\n\t\t\ttotalPrice: String(amount),\n\t\t},\n\t\tmerchantInfo: {\n\t\t\tmerchantName: options.displayName,\n\t\t},\n\t\tshippingAddressRequired: options.isShippingAddressRequired,\n\t\tshippingAddressParameters: {\n\t\t\tallowedCountryCodes: options.countries,\n\t\t\tphoneNumberRequired: true,\n\t\t},\n\t\temailRequired: true,\n\t\tcallbackIntents: ['PAYMENT_AUTHORIZATION'],\n\t};\n\n\tif (options.isShippingOptionRequired) {\n\t\trequestObject.shippingOptionRequired = options.isShippingOptionRequired;\n\t\trequestObject.shippingOptionParameters = {\n\t\t\tdefaultSelectedOptionId: options.shippingOptions[0].id,\n\t\t\tshippingOptions: options.shippingOptions,\n\t\t};\n\t\trequestObject.callbackIntents.push('SHIPPING_ADDRESS', 'SHIPPING_OPTION');\n\t}\n\n\tif (options.merchantId) {\n\t\trequestObject.merchantInfo.merchantId = options.merchantId;\n\t}\n\n\treturn googlePaymentInstance.createPaymentDataRequest(requestObject);\n}\n\n/**\n * Parse the response from the tokenization.\n * @param {Object} paymentData The response back from the Google Pay tokenization.\n * @param {googlePaymentInstance} googlePaymentInstance Google Pay instance\n * @returns {Promise} Promise that resolve with a tokenizePayload\n */\nfunction parseResponse(paymentData, googlePaymentInstance) {\n\treturn googlePaymentInstance.parseResponse(paymentData);\n}\n\n/**\n * Inits braintreeGooglePaySDK with client instance promise\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n\tcreateGooglePayment,\n\tcreatePaymentDataRequest,\n\tparseResponse,\n\tinit,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst loaderInstance = require('../../loaderHelper');\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\n\nconst $braintreeGooglePayLoader = document.querySelector(\n\t'.js-braintree-googlepay-loader'\n);\n\n// Global variables\nlet googlePayConfigs;\nlet googlePayBillingAddressData;\nlet googlePayShippingAddressData;\nlet googlePayNonce;\nlet googlepayPaymentType;\nlet googlePayCardDescription;\nlet googlepayCheckoutFormData;\nlet alertHandler;\nlet loader;\n\n/**\n * Expends Google Pay checkout form with required data\n */\nfunction expandGooglePayCheckoutFormData() {\n\tconst deviceData = document.getElementById(\n\t\t'braintreeGooglePayDeviceData'\n\t).value;\n\tconst $csrfToken = document.querySelector(\n\t\t'.js-braintree-cart-buttons-wrap #csrf_token'\n\t);\n\n\tgooglepayCheckoutFormData.append($csrfToken.name, $csrfToken.value);\n\tgooglepayCheckoutFormData.append('braintreeGooglePayNonce', googlePayNonce);\n\tgooglepayCheckoutFormData.append('braintreeGooglePayDeviceData', deviceData);\n\tgooglepayCheckoutFormData.append(\n\t\t'braintreeGooglePayCardDescription',\n\t\tgooglePayCardDescription\n\t);\n\tgooglepayCheckoutFormData.append(\n\t\t'braintreeGooglepayPaymentType',\n\t\tgooglepayPaymentType\n\t);\n\tgooglepayCheckoutFormData.append(\n\t\t'braintreeGooglePayShippingAddress',\n\t\tJSON.stringify(googlePayShippingAddressData) || '{}'\n\t);\n\tgooglepayCheckoutFormData.append(\n\t\t'braintreeGooglePayBillingAddress',\n\t\tJSON.stringify(googlePayBillingAddressData) || '{}'\n\t);\n}\n\n/**\n * Process Google Pay on the Cart Page\n */\nfunction processCartFlow() {\n\tconst $braintreeCartButtons = document.querySelector(\n\t\t'.js-braintree-cart-buttons-wrap'\n\t);\n\tconst placeOrderUrl = window.braintreeUrls.placeOrderUrl;\n\tconst checkoutSubmitPayment = window.braintreeUrls.checkoutSubmitPayment;\n\tconst checkoutFormFields = $braintreeCartButtons.getAttribute(\n\t\t'data-checkout-form-fields'\n\t);\n\tconst paymentFieldsData = helper.getPaymentFieldsData(\n\t\tgooglePayBillingAddressData,\n\t\tgooglePayConfigs.paymentMethodName\n\t);\n\n\t// Creates and updates Google Pay checkout form for service side\n\tgooglepayCheckoutFormData = helper.createPaymentFormData(\n\t\tcheckoutFormFields,\n\t\tpaymentFieldsData\n\t);\n\tgooglepayCheckoutFormData.append('pageFlowCart', true);\n\texpandGooglePayCheckoutFormData();\n\t// submit customer form with email (CheckoutServices-SubmitCustomer)\n\t// as we skip step \"login via guest/registered user\" while express checkout\n\t// email is set only in case of guest checkout and if email is not already set\n\tpaymentMethodGeneral.submitCustomerForm(googlePayBillingAddressData.email);\n\n\tfetch(helper.getUrlWithCsrfToken(checkoutSubmitPayment), {\n\t\tmethod: 'POST',\n\t\tbody: googlepayCheckoutFormData,\n\t})\n\t\t.then((response) => response.json())\n\t\t.then((data) => {\n\t\t\tif (!helper.handleSubmitPaymentErrors(data, alertHandler)) {\n\t\t\t\tsessionStorage.setItem('pageState', 'cart');\n\t\t\t\twindow.location.href = placeOrderUrl;\n\t\t\t}\n\n\t\t\tloader.hide();\n\t\t})\n\t\t.catch((error) => {\n\t\t\tif (error && error.redirectUrl) {\n\t\t\t\twindow.location.href = error.redirectUrl;\n\t\t\t}\n\t\t});\n}\n\n/**\n * Inits Google Pay cart components\n * @param {Object} billingAddressData Billing address data object\n * @param {Object} shippingAddressData Shipping address data object\n * @param {string} nonce Payment method nonce\n * @param {string} paymentType Payment method type\n * @param {string} description Google Pay card description\n * @param {Constructor} alertHandlerModel Alert handler Model\n */\nfunction init(\n\tbillingAddressData,\n\tshippingAddressData,\n\tnonce,\n\tpaymentType,\n\tdescription,\n\talertHandlerModel\n) {\n\tconst $googlepayButton = document.querySelector(\n\t\t'.js-braintree-googlepay-button'\n\t);\n\n\tgooglePayConfigs = helper.tryParseJSON(\n\t\t$googlepayButton.getAttribute('data-braintree-config')\n\t);\n\tgooglePayBillingAddressData = billingAddressData;\n\tgooglePayShippingAddressData = shippingAddressData;\n\tgooglePayNonce = nonce;\n\tgooglepayPaymentType = paymentType;\n\tgooglePayCardDescription = description;\n\tloader = loaderInstance($braintreeGooglePayLoader);\n\talertHandler = alertHandlerModel;\n\n\tprocessCartFlow();\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n// Global variables\nlet googlePayBillingAddressData;\nlet googlePayNonce;\nlet googlepayPaymentType;\nlet googlePayCardDescription;\n\nconst $googlepayNonce = document.getElementById('braintreeGooglePayNonce');\nconst $googlepayCardDescription = document.getElementById(\n\t'braintreeGooglePayCardDescription'\n);\nconst $braintreeGooglepayPaymentType = document.getElementById(\n\t'braintreeGooglepayPaymentType'\n);\nconst $googlePayBillingAddress = document.getElementById(\n\t'braintreeGooglePayBillingAddress'\n);\n\n/**\n * Process Google Pay on the Checkout Page\n */\nfunction processCheckoutFlow() {\n\t$googlepayNonce.value = googlePayNonce;\n\t$googlepayCardDescription.value = googlePayCardDescription;\n\t$braintreeGooglepayPaymentType.value = googlepayPaymentType;\n\n\t// Updating Storefront Billing Form data with GooglePay Billing\n\tconst storeFrontBillingData = helper.getUpdatedStoreFrontBillingData(\n\t\tgooglePayBillingAddressData\n\t);\n\n\t$googlePayBillingAddress.value = JSON.stringify(googlePayBillingAddressData);\n\n\thelper.updateBillingFormValues(storeFrontBillingData);\n}\n\n/**\n * Inits Google Pay checkout components\n * @param {string} nonce Payment method nonce\n * @param {string} description Google Pay card description\n * @param {string} paymentType Payment method type\n * @param {Object} billingAddressData Billing address data object\n */\nfunction init(nonce, description, paymentType, billingAddressData) {\n\tgooglePayBillingAddressData = billingAddressData;\n\tgooglePayNonce = nonce;\n\tgooglepayPaymentType = paymentType;\n\tgooglePayCardDescription = description;\n\n\tprocessCheckoutFlow();\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst googlePayHelper = require('../helpers/googlePayHelper');\n\n/**\n * Inits Google Pay list components\n */\nfunction init() {\n\tconst $googlepayCardDescription = document.getElementById(\n\t\t'braintreeGooglePayCardDescription'\n\t);\n\tconst $btGooglepayAccountsList = document.getElementById(\n\t\t'braintreeGooglepayAccountsList'\n\t);\n\tconst googlePayAccountListExist = Boolean($btGooglepayAccountsList);\n\n\tif (googlePayAccountListExist) {\n\t\t$btGooglepayAccountsList.addEventListener('change', function () {\n\t\t\tgooglePayHelper.googlePayContentTabHandler(true);\n\t\t});\n\t}\n\n\tif ($googlepayCardDescription.value === 'GooglePay') {\n\t\t$googlepayCardDescription.value =\n\t\t\t$btGooglepayAccountsList.selectedOptions[0].label;\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\n// Helpers\nconst googlePayHelper = require('../helpers/googlePayHelper');\nconst loaderInstance = require('../../loaderHelper');\nconst googlePayPaymentProcessingHelper = require('../helpers/googlePayPaymentProcessingHelper');\nconst helper = require('../../helper');\n\n// Components\nconst googlePayCart = require('../components/googlePayCart');\nconst googlePayCheckout = require('../components/googlePayCheckout');\nconst googlePaySessionAccount = require('../components/googlePaySessionAccount');\nconst googlePayPaymentProcessingConstants = require('../constants/googlePayPaymentProcessingConstants');\nconst { data, error } = require('jquery');\n\n// Global varibales\nlet googlePayModel;\nlet paymentsClient;\nlet googlePayConfig;\nlet alertHandler;\n\nconst $googlePayButton = document.querySelector(\n\t'.js-braintree-googlepay-button'\n);\nconst $braintreeGooglePayLoader = document.querySelector(\n\t'.js-braintree-googlepay-loader'\n);\nconst $continueButton = document.querySelector('button.submit-payment');\n\nlet loader;\n\n/**\n * Functionality over tokenized payment\n * @param {Objet} data data object\n * @param {Object} result data object\n */\nfunction onTokenizePayment(data, result) {\n\t// General functionality for Cart and Billing Page\n\tconst googlePayNonce = result.nonce;\n\tconst googlePayPaymentType = result.type;\n\tconst gpCardDescription = `${result.details.cardType} ${result.details.lastFour}`;\n\tconst billingAddressData =\n\t\tgooglePayPaymentProcessingHelper.createGooglepayBillingAddressData(data);\n\tconst googlePayFlow = googlePayPaymentProcessingHelper.getGooglePayFlowId();\n\n\tlet shippingAddressData;\n\n\thelper.removeActiveSessionPayment();\n\n\tswitch (googlePayFlow) {\n\t\tcase googlePayPaymentProcessingConstants.FLOW_CART_NAME:\n\t\t\tshippingAddressData =\n\t\t\t\tgooglePayPaymentProcessingHelper.createGooglepayShippingAddressData(\n\t\t\t\t\tdata.shippingAddress\n\t\t\t\t);\n\n\t\t\tgooglePayCart.init(\n\t\t\t\tbillingAddressData,\n\t\t\t\tshippingAddressData,\n\t\t\t\tgooglePayNonce,\n\t\t\t\tgooglePayPaymentType,\n\t\t\t\tgpCardDescription,\n\t\t\t\talertHandler\n\t\t\t);\n\n\t\t\tbreak;\n\t\tcase googlePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME:\n\t\t\tconst isSessionPaymentsEnabled =\n\t\t\t\twindow.braintreePreferences.isSessionPaymentsEnabled;\n\n\t\t\tgooglePayCheckout.init(\n\t\t\t\tgooglePayNonce,\n\t\t\t\tgpCardDescription,\n\t\t\t\tgooglePayPaymentType,\n\t\t\t\tbillingAddressData\n\t\t\t);\n\n\t\t\tif (isSessionPaymentsEnabled) {\n\t\t\t\tgooglePaySessionAccount.showGooglepayAccount(gpCardDescription);\n\t\t\t}\n\n\t\t\t$continueButton.click();\n\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Call back function to be resolved when on Google Pay payment button is clicked\n * @returns {void}\n */\nasync function onGooglePaymentButtonClicked() {\n\t// eslint-disable-line no-inner-declarations\n\tconst options = googlePayConfig.options;\n\tconst amount = options.amount;\n\n\tif (googlePayConfig.googleMerchantId) {\n\t\toptions.merchantId = googlePayConfig.googleMerchantId;\n\t}\n\n\talertHandler.hideAlerts();\n\n\ttry {\n\t\tif (amount === 0) {\n\t\t\talertHandler.showOrderTotalError();\n\t\t}\n\n\t\tloader.show();\n\n\t\t// Updates order amount for paymentDataRequest\n\t\tawait googlePayModel.googlePayUpdateAmount();\n\n\t\tif (options.isShippingOptionRequired) {\n\t\t\tconst paymentMethodId =\n\t\t\t\twindow.braintreeConstants.PAYMENT_METHOD_ID_GOOGLEPAY;\n\t\t\tconst url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}`;\n\t\t\tconst data = await helper.getApplicableShippingOptions(url);\n\t\t\toptions.amount = data.amount;\n\t\t\toptions.shippingOptions = data.shippingOptions;\n\n\t\t\tif ('errorMessages' in data && data.errorMessages !== '') {\n\t\t\t\tloader.hide();\n\t\t\t\tthrow error(data.errorMessages);\n\t\t\t}\n\t\t}\n\n\t\t// Updates order amount for paymentDataRequest\n\t\tawait googlePayModel.googlePayUpdateAmount();\n\n\t\t// Create a configuration object for use in the loadPaymentData method.\n\t\tconst paymentDataRequest = googlePayModel.createPaymentDataRequest(options);\n\n\t\t// Update card payment methods to require billing address\n\t\tconst cardPaymentMethod = paymentDataRequest.allowedPaymentMethods[0];\n\n\t\tcardPaymentMethod.parameters.billingAddressRequired = true;\n\t\tcardPaymentMethod.parameters.billingAddressParameters = {\n\t\t\tformat: 'FULL',\n\t\t\tphoneNumberRequired: true,\n\t\t};\n\n\t\tpaymentsClient\n\t\t\t.loadPaymentData(paymentDataRequest)\n\t\t\t.then(function (paymentData) {\n\t\t\t\tgooglePayModel\n\t\t\t\t\t.parseResponse(paymentData)\n\t\t\t\t\t.then(function (tokenizePayload) {\n\t\t\t\t\t\tonTokenizePayment(paymentData, tokenizePayload);\n\t\t\t\t\t});\n\t\t\t\tloader.hide();\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\tloader.hide();\n\t\t\t\talertHandler.handleGooglePayError(error);\n\t\t\t});\n\t} catch (error) {\n\t\talertHandler.handleGooglePayError(error);\n\t}\n}\n\n/**\n * Init and add Google Pay on the Cart or Billing Page\n */\nfunction initGooglePay() {\n\t// This class generated by the Google Pay API, if size mode in BM is set to fill\n\tconst $googlePayButtonFillStyle = document.querySelector(\n\t\t'.gpay-button-fill-new-style'\n\t);\n\n\tif (!$googlePayButtonFillStyle) {\n\t\t$googlePayButton.classList.add('googlepay-container');\n\t}\n\n\t// added default Google Pay style configuration in case of an error\n\tlet googlePayButtonStyle = {\n\t\tbuttonColor: 'black',\n\t\tbuttonType: 'buy',\n\t\tbuttonSizeMode: 'static',\n\t};\n\n\tconst googlePayButtonConfigs = googlePayHelper.getBraintreeGooglePayConfigs();\n\n\tif (googlePayButtonConfigs && googlePayButtonConfigs.style) {\n\t\tgooglePayButtonStyle = googlePayButtonConfigs.style;\n\t}\n\n\tconst result = googlePayModel\n\t\t.collectFraudData()\n\t\t.then(function (fraudDataPayload) {\n\t\t\tgooglePayHelper.setGooglePayDeviceData(fraudDataPayload);\n\t\t\tloader.hide();\n\n\t\t\treturn googlePayModel\n\t\t\t\t.initGooglePay(googlePayConfig.googleMerchantId)\n\t\t\t\t.then(function (response) {\n\t\t\t\t\tif (response.result) {\n\t\t\t\t\t\t// Creates 'Google Pay Button' and append to the DOM\n\t\t\t\t\t\tgooglePayButtonStyle.onClick = onGooglePaymentButtonClicked;\n\t\t\t\t\t\tconst button = paymentsClient.createButton(googlePayButtonStyle);\n\n\t\t\t\t\t\t$googlePayButton.appendChild(button);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\n\tresult.catch(function (error) {\n\t\tloader.hide();\n\t\talertHandler.handleGooglePayError(error);\n\t});\n}\n\n/**\n * Inits Google Pay payment processing components\n * @param {Object} braintreeGooglePayModel Google Pay model\n * @param {Constructor} alertHandlerModel Alert handler model\n */\nfunction init(braintreeGooglePayModel, alertHandlerModel) {\n\tloader = loaderInstance($braintreeGooglePayLoader);\n\tgooglePayModel = braintreeGooglePayModel;\n\tpaymentsClient = braintreeGooglePayModel.getPaymentsClient();\n\tgooglePayConfig = helper.tryParseJSON(\n\t\t$googlePayButton.getAttribute('data-braintree-config')\n\t);\n\talertHandler = alertHandlerModel;\n\n\tinitGooglePay();\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst $googlepayButton = document.querySelector(\n\t'.js-braintree-googlepay-button'\n);\nconst $googlepayContent = document.querySelector(\n\t'.js-braintree-googlepay-content'\n);\n\n// Helpers\nconst helper = require('../../helper');\nconst googlePayHelper = require('../helpers/googlePayHelper');\n\nconst usedGooglePayAccountClassName = 'used-googlepay-account';\nconst usedGooglePayAccountHideClassName = 'used-googlepay-account-hide';\n\n/**\n * Shows session Google Pay account on the Billing Page\n * @param {string} cardDescription Session card description\n */\nfunction showGooglepayAccount(cardDescription) {\n\tconst $newGPAccount = document.getElementById('newGPAccount');\n\tconst $gpAccount = document.querySelector(\n\t\t'.js-braintree-used-googlepay-account'\n\t);\n\tconst $sessionAccount = document.getElementById('sessionGPAccount');\n\n\t$newGPAccount.removeAttribute('selected');\n\n\t// Sets new session account\n\t$sessionAccount.classList.remove(usedGooglePayAccountHideClassName);\n\t$sessionAccount.classList.add(usedGooglePayAccountClassName);\n\t$sessionAccount.text = cardDescription;\n\t$sessionAccount.selected = true;\n\t$sessionAccount.setAttribute('data-session-account', 'true');\n\n\t$gpAccount.classList.remove(usedGooglePayAccountHideClassName);\n\t$gpAccount.classList.add(usedGooglePayAccountClassName);\n\n\t$googlepayButton.classList.add('d-none');\n\t$googlepayContent.setAttribute('data-paypal-is-hide-continue-button', false);\n\thelper.continueButtonToggle(false);\n}\n\n/*\n Remove method was used and change appearance of Google Pay tab\n* */\nfunction removeSessionNonce() {\n\tconst $gpAccount = document.querySelector(\n\t\t'.js-braintree-used-googlepay-account'\n\t);\n\n\t$gpAccount.classList.remove(usedGooglePayAccountClassName);\n\t$gpAccount.classList.add(usedGooglePayAccountHideClassName);\n\n\tconst $sessionAccount = document.getElementById('sessionGPAccount');\n\n\tif ($sessionAccount) {\n\t\t$sessionAccount.classList.add(usedGooglePayAccountHideClassName);\n\t\t$sessionAccount.classList.remove(usedGooglePayAccountClassName);\n\t\t$sessionAccount.value = '';\n\t\t$sessionAccount.text = '';\n\t\t$sessionAccount.setAttribute('data-session-account', false);\n\t\t$sessionAccount.setAttribute('data-save', false);\n\t}\n\n\tdocument.getElementById('braintreeGooglePayNonce').value = '';\n\tdocument.getElementById('braintreeGooglePayBillingAddress').value = '';\n\tdocument.getElementById('braintreeGooglepayPaymentType').value = '';\n\tdocument.getElementById('braintreeGooglePayDeviceData').value = '';\n\n\tdocument.getElementById('newGPAccount').selected = true;\n\tgooglePayHelper.googlePayContentTabHandler(false);\n}\n\nmodule.exports = {\n\tshowGooglepayAccount,\n\tremoveSessionNonce,\n};\n","'use strict';\n\nmodule.exports = {\n\tNO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS:\n\t\t'No Google Pay Braintree Configurations',\n\tORDER_TOTAL_0: 'Order total 0 is not allowed for GooglePay',\n\tGOOGLE_PAY_WINDOW_CLOSED: 'User closed the Payment Request UI.',\n\tSHIPPING_ADDRESS_UNSERVICEABLE:\n\t\t'Cannot ship to the selected address. Please choose another shipping address or shipping method.',\n\tSHIPPING_OPTION_INVALID:\n\t\t'This shipping option is invalid for the given address',\n};\n","'use strict';\n\nmodule.exports = {\n\tFLOW_CHECKOUT_NAME: 'checkout',\n\tFLOW_CART_NAME: 'cart',\n\tFLOW_NEW_GP_ACCOUNT_NAME: 'newGpAccount',\n\tINTENT_INITIALIZE: 'INITIALIZE',\n\tINTENT_SHIPPING_ADDRESS: 'SHIPPING_ADDRESS',\n\tINTENT_SHIPPING_OPTION: 'SHIPPING_OPTION',\n\tREASON_SHIPPING_ADDRESS_UNSERVICEABLE: 'SHIPPING_ADDRESS_UNSERVICEABLE',\n\tREASON_SHIPPING_OPTION_INVALID: 'SHIPPING_OPTION_INVALID',\n};\n","'use strict';\n\nconst braintreeGooglePayModelBuilder = require('./braintreesdk/braintreeGooglePayModelBuilder');\n\nconst googlePayHelper = require('./helpers/googlePayHelper');\n\n// Components\nconst googlePayList = require('./components/googlePayList');\nconst googlePayPaymentProcessing = require('./components/googlePayPaymentProcessing');\n\nconst GooglePayAlertHandlerModel = require('./alerthandler/googlePayAlertHandlerModel');\n\nconst googlePayErrorMessages = require('./constants/errorMessages');\n\nlet braintreeGooglePayModelResponse;\nlet googlePayMessages;\n\n/**\n * Inits Google Pay on the Cart Page\n */\nfunction initCart() {\n\tconst alertHandler = new GooglePayAlertHandlerModel(googlePayMessages);\n\n\tif (\n\t\t!braintreeGooglePayModelResponse ||\n\t\tbraintreeGooglePayModelResponse.error\n\t) {\n\t\tconst error =\n\t\t\tbraintreeGooglePayModelResponse.error ||\n\t\t\tgooglePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\n\n\t\talertHandler.handleGooglePayError(error);\n\t}\n\n\t// Initialize a Google Pay 'PaymentsClient' object\n\tbraintreeGooglePayModelResponse.btGooglePayModel.initPaymentsClient(\n\t\tbraintreeGooglePayModelResponse.btGooglePayConfigs.instanceType,\n\t\twindow.braintreeConstants.PAGE_FLOW_CART\n\t);\n\n\tgooglePayPaymentProcessing.init(\n\t\tbraintreeGooglePayModelResponse.btGooglePayModel,\n\t\talertHandler\n\t);\n}\n\n/**\n * Inits Google Pay on the Checkout Page\n */\nfunction initCheckout() {\n\tconst alertHandler = new GooglePayAlertHandlerModel(googlePayMessages);\n\n\tif (\n\t\t!braintreeGooglePayModelResponse ||\n\t\tbraintreeGooglePayModelResponse.error\n\t) {\n\t\tconst error =\n\t\t\tbraintreeGooglePayModelResponse.error ||\n\t\t\tgooglePayErrorMessages.NO_GOOGLE_PAY_BRAINTREE_CONFIGURATIONS;\n\n\t\talertHandler.handleGooglePayError(error);\n\t}\n\n\t// Triggers the Google Pay tab if Google Pay session account uses\n\tgooglePayHelper.triggerGooglePayTab(\n\t\tbraintreeGooglePayModelResponse.btGooglePayConfigs\n\t);\n\n\t// Initialize a Google Pay 'PaymentsClient' object\n\tbraintreeGooglePayModelResponse.btGooglePayModel.initPaymentsClient(\n\t\tbraintreeGooglePayModelResponse.btGooglePayConfigs.instanceType\n\t);\n\n\tgooglePayPaymentProcessing.init(\n\t\tbraintreeGooglePayModelResponse.btGooglePayModel,\n\t\talertHandler\n\t);\n\n\tgooglePayList.init();\n}\n\n/**\n * Inits Google Pay components\n */\nfunction init() {\n\tbraintreeGooglePayModelResponse = braintreeGooglePayModelBuilder.init();\n\n\tif (!braintreeGooglePayModelResponse.error) {\n\t\tgooglePayMessages =\n\t\t\tbraintreeGooglePayModelResponse.btGooglePayConfigs.messages;\n\t}\n}\n\nmodule.exports = {\n\tinit,\n\tinitCart,\n\tinitCheckout,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * Returns Braintree Google Pay configs\n * @returns {Object} Braintree Google Pay configs\n */\nfunction getBraintreeGooglePayConfigs() {\n\tlet braintreeGooglePayButtonConfigs = null;\n\n\ttry {\n\t\tbraintreeGooglePayButtonConfigs = helper.tryParseJSON(\n\t\t\tdocument\n\t\t\t\t.querySelector('.js-braintree-googlepay-button')\n\t\t\t\t.getAttribute('data-braintree-config')\n\t\t);\n\t} catch (error) {\n\t\treturn braintreeGooglePayButtonConfigs;\n\t}\n\n\treturn braintreeGooglePayButtonConfigs;\n}\n\n/**\n * Sets device data from 'data collector' to corresponding input field\n * @param {Object} fraudDataPayload Froud payload data\n */\nfunction setGooglePayDeviceData(fraudDataPayload) {\n\tconst $braintreeGooglePayDeviceData = document.getElementById(\n\t\t'braintreeGooglePayDeviceData'\n\t);\n\n\tif (fraudDataPayload.deviceData) {\n\t\t$braintreeGooglePayDeviceData.value = fraudDataPayload.deviceData;\n\t}\n}\n\n/**\n * Handles all behavior related to the Google Pay content tab\n * @param {boolean} isActiveGooglePayTab Whether Google Pay tab is active\n */\nfunction googlePayContentTabHandler(isActiveGooglePayTab) {\n\tconst $btGooglepayAccountsList = document.getElementById(\n\t\t'braintreeGooglepayAccountsList'\n\t);\n\tconst $googlepayButton = document.querySelector(\n\t\t'.js-braintree-googlepay-button'\n\t);\n\tconst $googlepayContent = document.querySelector(\n\t\t'.js-braintree-googlepay-content'\n\t);\n\n\tif ($btGooglepayAccountsList.value === 'newaccount') {\n\t\t$googlepayButton.classList.remove('d-none');\n\n\t\tif (isActiveGooglePayTab) {\n\t\t\thelper.continueButtonToggle(true);\n\t\t}\n\n\t\t$googlepayContent.setAttribute('data-paypal-is-hide-continue-button', true);\n\t} else {\n\t\t$googlepayButton.classList.add('d-none');\n\t\thelper.continueButtonToggle(false);\n\t\t$googlepayContent.setAttribute(\n\t\t\t'data-paypal-is-hide-continue-button',\n\t\t\tfalse\n\t\t);\n\t}\n}\n\n/**\n * Triggers the Google Pay tab if Google Pay session account uses\n * @param {Object} googlePayConfigs Google Pay config object\n */\nfunction triggerGooglePayTab(googlePayConfigs) {\n\tconst sessionPaymentMethodId = googlePayConfigs.sessionPaymentMethodId;\n\tconst $googlePayTab = document.querySelector('.js-googlepay-tab');\n\n\tif (sessionPaymentMethodId === 'GooglePay') {\n\t\t$googlePayTab.click();\n\t}\n}\n\nmodule.exports = {\n\tgetBraintreeGooglePayConfigs,\n\tsetGooglePayDeviceData,\n\tgooglePayContentTabHandler,\n\ttriggerGooglePayTab,\n};\n","'use strict';\n\nconst googlePayPaymentProcessingConstants = require('../constants/googlePayPaymentProcessingConstants');\n\n/**\n * Returns current Google Pay flow\n * @returns {string} Flow id checkout/cart/newGpAccount\n */\nfunction getGooglePayFlowId() {\n\tconst googlePayEnabledOnCart = Boolean(\n\t\tdocument.querySelector('.js-braintree-cart-googlepay-button')\n\t);\n\tconst googlePayEnabledOnCheckout = Boolean(\n\t\tdocument.querySelector('.js-braintree-billing-googlepay-button')\n\t);\n\tlet googlePayFlowId = null;\n\n\tconst flows = {\n\t\tcheckout: googlePayPaymentProcessingConstants.FLOW_CHECKOUT_NAME,\n\t\tcart: googlePayPaymentProcessingConstants.FLOW_CART_NAME,\n\t\tnewGpAccount: googlePayPaymentProcessingConstants.FLOW_NEW_GP_ACCOUNT_NAME,\n\t};\n\n\tif (googlePayEnabledOnCart) {\n\t\tgooglePayFlowId = flows.cart;\n\t} else if (googlePayEnabledOnCheckout) {\n\t\tgooglePayFlowId = flows.checkout;\n\t} else {\n\t\tgooglePayFlowId = flows.newGpAccount;\n\t}\n\n\treturn googlePayFlowId;\n}\n\n/**\n * Creates Google Pay billing address from payload data\n * @param {Object} data Data object\n * @returns {Objcet} billing address data object\n */\nfunction createGooglepayBillingAddressData(data) {\n\tconst billingData = data.paymentMethodData.info.billingAddress;\n\tconst billingAddress = {};\n\tconst recipientName = billingData.name.split(' ');\n\n\tbillingAddress.firstName = recipientName[0];\n\tbillingAddress.lastName = recipientName[1];\n\tbillingAddress.phone = billingData.phoneNumber;\n\tbillingAddress.countryCodeAlpha2 = billingData.countryCode;\n\tbillingAddress.streetAddress = billingData.address1;\n\tbillingAddress.extendedAddress = billingData.address2;\n\tbillingAddress.locality = billingData.locality;\n\tbillingAddress.stateCode = billingData.administrativeArea;\n\tbillingAddress.postalCode = decodeURIComponent(billingData.postalCode);\n\tbillingAddress.email = data.email;\n\n\treturn billingAddress;\n}\n\n/**\n * Creates shipping address object\n * @param {Object} shippingData Shipping data object\n * @returns {Object} Shipping data object in required format\n */\nfunction createGooglepayShippingAddressData(shippingData) {\n\tconst shippingAddress = {};\n\tconst recipientName = shippingData.name.split(' ');\n\n\tshippingAddress.firstName = recipientName[0];\n\tshippingAddress.lastName = recipientName[1];\n\tshippingAddress.phone = shippingData.phoneNumber;\n\tshippingAddress.countryCodeAlpha2 = shippingData.countryCode;\n\tshippingAddress.streetAddress = shippingData.address1;\n\tshippingAddress.extendedAddress = shippingData.address2;\n\tshippingAddress.locality = shippingData.locality;\n\tshippingAddress.region = shippingData.administrativeArea;\n\tshippingAddress.postalCode = decodeURIComponent(shippingData.postalCode);\n\n\treturn shippingAddress;\n}\n\nmodule.exports = {\n\tgetGooglePayFlowId,\n\tcreateGooglepayBillingAddressData,\n\tcreateGooglepayShippingAddressData,\n};\n","'use strict';\n\n/**\n * Creates an object of configuration for creating a Google Pay payment\n * @param {Client} btClientInstance A client instance\n * @param {string} googleMerchantId Google Pay merchant identifier\n * @returns {Object} Configuration object\n */\nfunction createGooglePayOptions(btClientInstance, googleMerchantId) {\n\tconst gpOptions = {\n\t\tclient: btClientInstance,\n\t\tgooglePayVersion: 2,\n\t};\n\n\tif (googleMerchantId !== '' && googleMerchantId !== null) {\n\t\tgpOptions.googleMerchantId = googleMerchantId;\n\t}\n\n\treturn gpOptions;\n}\n\n/**\n * Gets selected shipping id\n * @returns {string} Selected shipping id\n */\nfunction getSelectedShippingId() {\n\tconst shippingMethods = document.getElementById('shippingMethods');\n\tconst selectedShippingMethod =\n\t\tshippingMethods.options[shippingMethods.selectedIndex];\n\n\treturn selectedShippingMethod.dataset.shippingId;\n}\n\nmodule.exports = {\n\tcreateGooglePayOptions,\n\tgetSelectedShippingId,\n};\n","'use strict';\n\nconst errorMessages = require('./googlepay/constants/errorMessages');\n\nconst $continueButton = document.querySelector('button.submit-payment');\nconst $continueButtonNew = document.querySelector('button.submit-payment-new');\n\nconst cssClass = {\n\tD_NONE: 'd-none',\n\tFONT_WEIGHT_BOLD: 'font-weight-bold',\n};\n\nconst INVALID_CLASSNAME = 'is-invalid';\n\n/**\n * function to proceed a save parsing\n * @param {string} element string what should be parsed\n * @returns {Object} result of parsing\n */\nfunction tryParseJSON(element) {\n\tconst AlertHandlerModel = require('./alertHandler');\n\tconst alertHandler = new AlertHandlerModel();\n\n\tlet result = null;\n\n\ttry {\n\t\tresult = JSON.parse(element);\n\t} catch (error) {\n\t\talertHandler.showError('External server error. Try again');\n\t}\n\n\treturn result;\n}\n\n/**\n * Get CSRF Token\n * @returns {string} - csrf token value\n */\nfunction getCsrfToken() {\n\tlet $element = document.querySelector('[name=\"csrf_token\"]');\n\n\tif ($element && $element.value !== '') {\n\t\treturn $element.value;\n\t}\n\n\t$element = document.querySelector('[data-tokenname=\"csrf_token\"]');\n\n\tif ($element && $element.getAttribute('data-token') !== '') {\n\t\treturn $element.getAttribute('data-token');\n\t}\n\n\treturn '';\n}\n\n/**\n * Add csrf token param to url\n * @param {string} url - source url\n * @returns {string} - url with csrf_token param\n */\nfunction getUrlWithCsrfToken(url) {\n\tconst urlInstance = new URL(url, location.origin);\n\n\turlInstance.searchParams.append('csrf_token', getCsrfToken());\n\n\treturn urlInstance.toString();\n}\n\n/**\n * Depends on the value flag, sets style.display to the $continueButton\n * @param {boolean} flag Boolean value\n * @returns {void}\n */\nfunction continueButtonToggle(flag) {\n\tconst stage = window.location.hash.substring(1);\n\n\tif (\n\t\tstage === 'placeOrder' ||\n\t\tstage === 'shipping' ||\n\t\tstage === null ||\n\t\tstage === ''\n\t) {\n\t\treturn;\n\t}\n\n\t$continueButton.style.display = flag ? 'none' : '';\n\t$continueButtonNew.style.display = flag ? 'none' : '';\n}\n\n/**\n * Return payment method name in lovercase\n * @param {string} paymentMethodName Payment method name\n * @returns {string} Paymnet method name\n */\nfunction getPaymentMethodToLowerCase(paymentMethodName) {\n\tlet paymentMethod = paymentMethodName.split('_');\n\n\tif (paymentMethod.length === 1) {\n\t\treturn paymentMethodName;\n\t}\n\n\tpaymentMethod = paymentMethod.map(function (element) {\n\t\treturn element.charAt(0) + element.slice(1).toLocaleLowerCase();\n\t});\n\n\treturn `${paymentMethod[0]} ${paymentMethod[1]}`;\n}\n\n/**\n * Appends a div to payment summary\n * @param {Element} $element HTML element\n * @param {*} text inner text\n * @returns {void}\n */\nfunction appendDivToElement($element, text) {\n\tconst $div = $element.cloneNode(false);\n\tconst innerText = document.createTextNode(text);\n\n\t$div.removeAttribute('class');\n\t$div.appendChild(innerText);\n\t$element.appendChild($div);\n}\n\n/**\n * Updates checkout view\n * @param {Object} e Event object\n * @param {Object} data Data object\n */\nfunction updateCheckoutView(e, data) {\n\tconst $paymentSummary = document.querySelector(\n\t\t'.summary-details .js-braintree-payment-details'\n\t);\n\tconst order = data.order;\n\tconst payment = order.billing.payment;\n\n\tif (payment?.selectedPaymentInstruments?.length === 0 || !$paymentSummary) {\n\t\treturn;\n\t}\n\n\tpayment.selectedPaymentInstruments.forEach((selectedPaymentInstrument) => {\n\t\tconst paymentMethodId = selectedPaymentInstrument.paymentMethod;\n\t\tconst fundingSource = selectedPaymentInstrument.fundingSource;\n\n\t\t$paymentSummary.innerHTML = '';\n\n\t\tif (\n\t\t\tfundingSource === window.braintreeConstants.PP_FUNDING_SOURCE_PAYLATER\n\t\t) {\n\t\t\tappendDivToElement(\n\t\t\t\t$paymentSummary,\n\t\t\t\twindow.braintreeConstants.PP_PAYLATER_PAYMENT_TYPE\n\t\t\t);\n\t\t} else if (\n\t\t\tfundingSource === window.braintreeConstants.PP_FUNDING_SOURCE_CARD\n\t\t) {\n\t\t\tappendDivToElement(\n\t\t\t\t$paymentSummary,\n\t\t\t\twindow.braintreeConstants.PP_DEBIT_CREDIT_PAYMENT_TYPE\n\t\t\t);\n\t\t} else {\n\t\t\tappendDivToElement(\n\t\t\t\t$paymentSummary,\n\t\t\t\tgetPaymentMethodToLowerCase(paymentMethodId)\n\t\t\t);\n\t\t}\n\n\t\tif (selectedPaymentInstrument.maskedCreditCardNumber) {\n\t\t\tappendDivToElement(\n\t\t\t\t$paymentSummary,\n\t\t\t\tselectedPaymentInstrument.maskedCreditCardNumber\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\tpaymentMethodId === window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL\n\t\t) {\n\t\t\tappendDivToElement(\n\t\t\t\t$paymentSummary,\n\t\t\t\tselectedPaymentInstrument.braintreePaypalEmail\n\t\t\t);\n\t\t} else if (\n\t\t\tpaymentMethodId === window.braintreeConstants.PAYMENT_METHOD_ID_VENMO\n\t\t) {\n\t\t\tappendDivToElement(\n\t\t\t\t$paymentSummary,\n\t\t\t\tselectedPaymentInstrument.braintreeVenmoUserId\n\t\t\t);\n\t\t}\n\n\t\tif (selectedPaymentInstrument.type) {\n\t\t\tappendDivToElement($paymentSummary, selectedPaymentInstrument.type);\n\t\t}\n\n\t\tappendDivToElement(\n\t\t\t$paymentSummary,\n\t\t\t`${order.priceTotal.charAt(0)}${selectedPaymentInstrument.amount}`\n\t\t);\n\t});\n}\n\n/**\n * Validates whether input field is valid\n * @param {Object} field Input filed\n * @returns {boolean} true/false\n */\nfunction isValidInputField(field) {\n\tif (!field.checkValidity()) {\n\t\tif (!field.classList.contains(INVALID_CLASSNAME)) {\n\t\t\tfield.classList.add(INVALID_CLASSNAME);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tif (field.checkValidity() && field.classList.contains(INVALID_CLASSNAME)) {\n\t\tfield.classList.remove(INVALID_CLASSNAME);\n\t}\n\n\treturn true;\n}\n\n/**\n * Gets Billing Address Form Values\n *\n * @returns {Object} with Billing Address\n */\nfunction getBillingAddressFormValues() {\n\tconst billingFormData = Object.fromEntries(\n\t\tnew FormData(document.getElementById('dwfrm_billing'))\n\t);\n\n\treturn Array.from(Object.entries(billingFormData)).reduce(function (\n\t\taccumulator,\n\t\t[key, value]\n\t) {\n\t\tlet elem = key.lastIndexOf('_');\n\n\t\tif (elem < 0) {\n\t\t\taccumulator[key] = value;\n\t\t} else {\n\t\t\telem = key.substring(elem + 1);\n\t\t\taccumulator[elem] = value;\n\t\t}\n\n\t\treturn accumulator;\n\t},\n\t{});\n}\n\n/**\n * Gets Nonce depending on payment method name\n *\n * @param {string} paymentMethodName - payment method name\n * @returns {boolean} nonce exist\n */\nfunction isNonceExist(paymentMethodName) {\n\t// Payment method name\n\tlet pmName = paymentMethodName;\n\n\t// Сhange 'CREDIT_CARD' to 'CreditCard' in order to get braintreewCreditCardNonce input\n\tif (paymentMethodName === 'CREDIT_CARD') {\n\t\tpmName = 'CreditCard';\n\t}\n\n\tconst $nonce = document.querySelector(`#braintree${pmName}Nonce`);\n\n\tif (!$nonce) {\n\t\treturn false;\n\t}\n\n\tconst nonceValue = $nonce.value;\n\tconst $tab = document.querySelector(`.${pmName.toLowerCase()}-tab`);\n\tlet isActiveTab;\n\n\tif ($tab) {\n\t\tisActiveTab = $tab.classList.contains('active');\n\t}\n\n\treturn !isActiveTab && nonceValue;\n}\n\n/**\n * Removing BT payment from account page\n * @param {Object} e Event object\n * @returns {void}\n */\nfunction removeBtPayment(e) {\n\tconst loaderInstance = require('./loaderHelper');\n\n\tconst target = e.target;\n\n\tconst $loaderContainter = document.getElementById(\n\t\ttarget.getAttribute('data-loader')\n\t);\n\tconst accountsLoader = loaderInstance($loaderContainter);\n\n\taccountsLoader.show();\n\n\tfetch(\n\t\tgetUrlWithCsrfToken(\n\t\t\t`${window.braintreeUrls.deletePaymentUrl}?UUID=${target.getAttribute(\n\t\t\t\t'data-id'\n\t\t\t)}`\n\t\t)\n\t)\n\t\t.then((response) => response.json())\n\t\t.then((data) => {\n\t\t\tdocument.getElementById(`uuid-${data.UUID}`).remove();\n\n\t\t\tif (data.newDefaultAccount) {\n\t\t\t\tdocument\n\t\t\t\t\t.querySelector(`#uuid-${data.newDefaultAccount} span`)\n\t\t\t\t\t.classList.add(cssClass.FONT_WEIGHT_BOLD);\n\t\t\t\tdocument\n\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t`#uuid-${data.newDefaultAccount} button.js-braintree-make-default-card`\n\t\t\t\t\t)\n\t\t\t\t\t.classList.add(cssClass.D_NONE);\n\t\t\t}\n\n\t\t\t$('body').trigger('cart:update');\n\t\t\taccountsLoader.hide();\n\t\t})\n\t\t.catch(() => {\n\t\t\tlocation.reload();\n\t\t\taccountsLoader.hide();\n\t\t});\n}\n\n/**\n * Create formData from fields data\n *\n * @param {Object} paymentFields fields data values\n * @param {Object} fieldsData fields data values\n * @returns {Object} cart billing form data\n */\nfunction createPaymentFormData(paymentFields, fieldsData) {\n\tlet paymentFieldsParsed;\n\n\tif (paymentFields instanceof Object) {\n\t\tpaymentFieldsParsed = paymentFields;\n\t} else {\n\t\tpaymentFieldsParsed = tryParseJSON(paymentFields);\n\t}\n\n\treturn Object.entries(paymentFieldsParsed).reduce(function (formData, entry) {\n\t\tconst [key, field] = entry;\n\n\t\tif (field instanceof Object) {\n\t\t\tformData.append(\n\t\t\t\tfield.name,\n\t\t\t\tfieldsData && fieldsData[key] !== null ? fieldsData[key] : field.value\n\t\t\t);\n\t\t}\n\n\t\treturn formData;\n\t}, new FormData());\n}\n\n// eslint-disable-next-line require-jsdoc\nfunction setDefaultProperty(params) {\n\treturn fetch(\n\t\tgetUrlWithCsrfToken(\n\t\t\t`${params.url}?UUID=${params.id}&pmID=${params.paymentMethodID}`\n\t\t)\n\t)\n\t\t.then((response) => response.json())\n\t\t.then((data) => {\n\t\t\tdocument\n\t\t\t\t.querySelector(`#uuid-${data.newDefaultProperty} span`)\n\t\t\t\t.classList.add(cssClass.FONT_WEIGHT_BOLD);\n\t\t\tdocument\n\t\t\t\t.querySelector(\n\t\t\t\t\t`.js-braintree-make-default-card.uuid-${data.newDefaultProperty}`\n\t\t\t\t)\n\t\t\t\t.classList.add(cssClass.D_NONE);\n\t\t\tdocument\n\t\t\t\t.querySelector(`#uuid-${data.toRemoveDefaultProperty} span`)\n\t\t\t\t.classList.remove(cssClass.FONT_WEIGHT_BOLD);\n\t\t\tdocument\n\t\t\t\t.querySelector(\n\t\t\t\t\t`.js-braintree-make-default-card.uuid-${data.toRemoveDefaultProperty}`\n\t\t\t\t)\n\t\t\t\t.classList.remove(cssClass.D_NONE);\n\t\t\tparams.loader.hide();\n\t\t})\n\t\t.catch(() => params.loader.hide());\n}\n\n/**\n * Checks authenticated customer, account list for default Payment Method\n *\n * @param {string} selector - querySelector\n * @returns {Object} default data attribute or null\n */\nfunction getOptionByDataDefault(selector) {\n\tif (!document.querySelector(selector)) {\n\t\treturn null;\n\t}\n\n\treturn Array.apply(null, document.querySelector(selector).options).find(\n\t\tfunction (el) {\n\t\t\treturn el.getAttribute('data-default')\n\t\t\t\t? tryParseJSON(el.getAttribute('data-default'))\n\t\t\t\t: null;\n\t\t}\n\t);\n}\n\n/**\n * Checks authenticated customer, account list for session Account\n *\n * @param {Object} params querySelector + el.id\n * @returns {Object} session account object\n */\nfunction getSessionAccountOption(params) {\n\treturn Array.apply(\n\t\tnull,\n\t\tdocument.querySelector(params.querySelector).options\n\t).find(function (el) {\n\t\treturn (\n\t\t\tel.id === params.id &&\n\t\t\ttryParseJSON(el.getAttribute('data-session-account'))\n\t\t);\n\t});\n}\n\n/**\n * This method is called to remove active session account\n *\n * @param {Object} isCurrent determines if delete session account for current payment\n * @returns {void}\n */\nfunction removeActiveSessionPayment(isCurrent = false) {\n\tconst helpers = {\n\t\tPayPal: require('./paypal/components/payPalSessionAccount'),\n\t\tVenmo: require('./venmo/components/venmoSessionAccount'),\n\t\tGooglePay: require('./googlepay/components/googlePaySessionAccount'),\n\t\tCREDIT_CARD: require('./creditcard/components/creditCardSessionAccount'),\n\t\tSRC: require('./src/components/srcSessionAccount'),\n\t\tApplePay: require('./applepay/helpers/applePayHelper'),\n\t};\n\n\tconst activePaymentMethods = [];\n\n\tlet selectedPaymentMethod;\n\n\tdocument.querySelectorAll('.payment-options li').forEach(function (el) {\n\t\tactivePaymentMethods.push(el.dataset.methodId);\n\n\t\tif (el.querySelector('.active')) {\n\t\t\tselectedPaymentMethod = el.dataset.methodId;\n\t\t}\n\t});\n\n\tif (isCurrent) {\n\t\thelpers[selectedPaymentMethod].removeSessionNonce();\n\t} else {\n\t\t// removes active session account but just in case if tab of currently active\n\t\t// session payment isn't active (buyer submited another payment method)\n\t\tconst activePM = activePaymentMethods.find(function (el) {\n\t\t\treturn isNonceExist(el);\n\t\t});\n\n\t\tif (activePM) {\n\t\t\thelpers[activePM].removeSessionNonce();\n\t\t}\n\t}\n}\n\n/**\n * Update Checkout Billing form values\n *\n * @param {Object} billingData fields data values\n */\nfunction updateBillingFormValues(billingData) {\n\tconst $billingFormFields = document.querySelectorAll(\n\t\t'.billing-address select, .billing-address input, .contact-info-block input'\n\t);\n\n\t$billingFormFields.forEach(function (el) {\n\t\tif (billingData[el.name]) {\n\t\t\tel.value = billingData[el.name];\n\t\t}\n\t});\n}\n\n/**\n * Returns selected option from select container\n * @param {Object} $selectContainer Select container\n * @returns {Object} Selected option\n */\nfunction getSelectedOption($selectContainer) {\n\tconst selectedOptionIndex = $selectContainer.selectedIndex;\n\n\treturn $selectContainer.options[selectedOptionIndex];\n}\n\n/**\n * Returns payment field data to be send on backend\n * @param {Object} addressData Address data to be set\n * @param {string} paymentMethodName Payment method name\n * @returns {Object} payment data\n */\nfunction getPaymentFieldsData(addressData, paymentMethodName) {\n\treturn {\n\t\tfirstName: addressData.firstName,\n\t\tlastName: addressData.lastName,\n\t\taddress1: addressData.streetAddress,\n\t\taddress2: addressData.extendedAddress || '',\n\t\tcity: addressData.locality,\n\t\tpostalCode: decodeURIComponent(addressData.postalCode),\n\t\tstateCode: addressData.stateCode || addressData.region,\n\t\tcountry: addressData.countryCodeAlpha2,\n\t\tphone: addressData.phone,\n\t\tpaymentMethod: paymentMethodName,\n\t};\n}\n\n// eslint-disable-next-line require-jsdoc\nfunction getUpdatedStoreFrontBillingData(billingAddress) {\n\tconst storeFrontBillingData = tryParseJSON(\n\t\tdocument\n\t\t\t.querySelector('.js-braintree-billing-payment-wrap')\n\t\t\t.getAttribute('data-billing-form-fields-names')\n\t);\n\n\tstoreFrontBillingData.dwfrm_billing_addressFields_firstName =\n\t\tbillingAddress.firstName;\n\tstoreFrontBillingData.dwfrm_billing_addressFields_lastName =\n\t\tbillingAddress.lastName;\n\tstoreFrontBillingData.dwfrm_billing_addressFields_address1 =\n\t\tbillingAddress.streetAddress;\n\tstoreFrontBillingData.dwfrm_billing_addressFields_address2 =\n\t\tbillingAddress.extendedAddress || '';\n\tstoreFrontBillingData.dwfrm_billing_addressFields_city =\n\t\tbillingAddress.locality;\n\tstoreFrontBillingData.dwfrm_billing_addressFields_postalCode =\n\t\tdecodeURIComponent(billingAddress.postalCode);\n\tstoreFrontBillingData.dwfrm_billing_addressFields_states_stateCode =\n\t\tbillingAddress.stateCode || billingAddress.region;\n\tstoreFrontBillingData.dwfrm_billing_addressFields_country =\n\t\tbillingAddress.countryCodeAlpha2;\n\tstoreFrontBillingData.dwfrm_billing_contactInfoFields_phone =\n\t\tbillingAddress.phone;\n\n\treturn storeFrontBillingData;\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {HTMLFormElement} form - Form to be cleared\n * @returns {void}\n */\nfunction clearForm(form) {\n\tArray.from(form.querySelectorAll('input, select')).forEach((element) => {\n\t\tif (element.classList.contains(INVALID_CLASSNAME)) {\n\t\t\telement.classList.remove(INVALID_CLASSNAME);\n\t\t}\n\t});\n}\n\n/**\n * Validate whole form\n * @param {HTMLFormElement} form - Form elemenent\n * @returns {boolean} - true if valid otherwise false\n */\nfunction validateForm(form) {\n\tif (form.checkValidity && !form.checkValidity()) {\n\t\tArray.from(form.querySelectorAll('input, select')).forEach((element) => {\n\t\t\tif (!element.validity.valid) {\n\t\t\t\telement.classList.add(INVALID_CLASSNAME);\n\t\t\t}\n\t\t});\n\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * It checks for duplicated Credit Card and returns response as JSON object.\n * @param {string} body - request body.\n * @returns {Promise} A promise that resolves to a JSON object.\n */\nfunction checkForDuplicatedCC(body) {\n\treturn fetch(\n\t\tgetUrlWithCsrfToken(window.braintreeUrls.validateCreditCardUrl),\n\t\t{\n\t\t\tmethod: 'POST',\n\t\t\tbody: JSON.stringify(body),\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t}\n\t).then((response) => response.json());\n}\n\n/**\n * Gets applicable shipping methods\n * @param {string} url Validate address url\n * @returns {Object} Object with applicable shipping options\n */\nasync function getApplicableShippingOptions(url) {\n\tlet responseData = { shippingOptions: [], amount: 0, errorMessages: '' };\n\n\tconst response = await fetch(getUrlWithCsrfToken(url));\n\n\tif (response.ok) {\n\t\tconst data = await response.json();\n\n\t\tresponseData.shippingOptions = data.applicableShippingMethods;\n\t\tresponseData.amount = data.amount;\n\t\tresponseData.errorMessages = data.shippingError;\n\t}\n\n\treturn responseData;\n}\n\n/**\n * Updates order amount when a certain shipping option gets selected\n * @param {string} shippingOptionID the id of the user choosen shipping method from GP pop-up\n * @returns {Promise} resolved promise which returns the amount\n */\nfunction updateAmountForShippingOption(shippingOptionID) {\n\treturn fetch(\n\t\tgetUrlWithCsrfToken(window.braintreeUrls.getAmountForShippingOption),\n\t\t{\n\t\t\tmethod: 'POST',\n\t\t\tbody: shippingOptionID,\n\t\t}\n\t)\n\t\t.then((response) => {\n\t\t\tif (!response.ok) {\n\t\t\t\twindow.location.reload();\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((data) => {\n\t\t\treturn data.amount;\n\t\t});\n}\n\n/**\n * Handle Submit Payment Errors from response data.\n * @param {Object} response - Response data.\n * @param {Object} alertHandler - Alert instance.\n * @returns {boolean} - true if there is an error otherwise.\n */\nfunction handleSubmitPaymentErrors(response, alertHandler) {\n\tif (response.error) {\n\t\tlet errorMessage = '';\n\n\t\tif (response.fieldErrors.length) {\n\t\t\tresponse.fieldErrors.forEach((error, index) => {\n\t\t\t\tconst keys = Object.keys(error);\n\n\t\t\t\tif (keys.length) {\n\t\t\t\t\terrorMessage += `${keys[index]\n\t\t\t\t\t\t.replace('dwfrm_billing_', '')\n\t\t\t\t\t\t.replace('_', ' ')} ${response.fieldErrors[index][keys[index]]}. `;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\talertHandler.showError(errorMessage);\n\t\t}\n\n\t\tif (response.serverErrors.length) {\n\t\t\tresponse.serverErrors.forEach((error) => {\n\t\t\t\terrorMessage += `${error}. `;\n\t\t\t});\n\n\t\t\talertHandler.showError(errorMessage);\n\t\t}\n\n\t\t// Usually in case of any errors \"cartError\" will be \"true\"\n\t\tif (response.cartError) {\n\t\t\twindow.location.href = response.redirectUrl;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nmodule.exports = {\n\tcontinueButtonToggle,\n\tupdateCheckoutView,\n\tisValidInputField,\n\tgetBillingAddressFormValues,\n\tremoveBtPayment,\n\tcreatePaymentFormData,\n\tisNonceExist,\n\tsetDefaultProperty,\n\tgetOptionByDataDefault,\n\tremoveActiveSessionPayment,\n\tgetSessionAccountOption,\n\tupdateBillingFormValues,\n\tgetSelectedOption,\n\tgetPaymentFieldsData,\n\tgetUpdatedStoreFrontBillingData,\n\tclearForm,\n\tvalidateForm,\n\tcheckForDuplicatedCC,\n\tgetUrlWithCsrfToken,\n\tgetApplicableShippingOptions,\n\tupdateAmountForShippingOption,\n\ttryParseJSON,\n\tappendDivToElement,\n\thandleSubmitPaymentErrors,\n};\n","module.exports = function (containerElement) {\n\tif (!containerElement) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error('Braintree: No container for showing loaders');\n\t}\n\n\tfunction Constructor() {\n\t\tthis.containerEl = containerElement;\n\t}\n\n\tConstructor.prototype.show = function () {\n\t\tthis.containerEl.style.display = 'block';\n\t};\n\n\tConstructor.prototype.hide = function () {\n\t\tthis.containerEl.style.display = 'none';\n\t};\n\n\treturn new Constructor();\n};\n","'use strict';\n\nconst lpmHelper = require('../helpers/lpmHelper');\nconst lpmErrorMessages = require('../constants/errorMessages');\nconst AlertHandlerModel = require('../../alertHandler');\n\n/**\n * LPM alert handler model\n */\nclass LpmAlertHandlerModel extends AlertHandlerModel {\n\tconstructor() {\n\t\tsuper();\n\t\tconst lpmConfigs = lpmHelper.getBraintreeLpmConfigs();\n\n\t\tif (lpmConfigs) {\n\t\t\tthis.alertMessages = lpmConfigs.messages;\n\t\t}\n\t}\n\n\t/**\n\t * Process error form Braintree or Braintree-PaymentConfirm endpoint\n\t * @param {Object} error Error object\n\t */\n\thandleLpmError(error) {\n\t\tif (error.name === 'BraintreeError') {\n\t\t\tthis.showBraintreeError(error);\n\t\t} else {\n\t\t\tthis.showError(error.responseText);\n\t\t}\n\t}\n\n\t/**\n\t * Creates and throws an error if order amount is 0\n\t * @param {string} paymentMethodName Payment method name\n\t */\n\thandleZeroAmountOnCheckoutError(paymentMethodName) {\n\t\tconst zeroAmountErrorMsg = lpmErrorMessages.ORDER_TOTAL_0.concat(\n\t\t\t'',\n\t\t\tpaymentMethodName\n\t\t);\n\n\t\tthis.showError(zeroAmountErrorMsg);\n\t\tthrow zeroAmountErrorMsg;\n\t}\n}\n\nmodule.exports = LpmAlertHandlerModel;\n","'use strict';\n\nconst lpmHelper = require('../helpers/lpmHelper');\nconst braintreeLpmSDK = require('./braintreeLpmSDK');\n\nconst lpmConfigs = lpmHelper.getBraintreeLpmConfigs();\n// Global variables\nlet lpmInstance;\nlet shippingAddress;\nlet amount;\n\n/**\n * Init Braintree LPM pay model\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n */\n\nfunction init(braintreeClientInstancePromise) {\n\tbraintreeLpmSDK.init(braintreeClientInstancePromise);\n}\n\n/**\n * Inits LPM instance for the next payment actions\n * @returns {Promise} Promise resolved with the 'createLpmClickListener' boolean value\n */\nfunction initLpm() {\n\treturn braintreeLpmSDK\n\t\t.createLpmPayment()\n\t\t.then(function (localPaymentInstance) {\n\t\t\tlpmInstance = localPaymentInstance;\n\n\t\t\treturn {\n\t\t\t\tcreateLpmClickListener: true,\n\t\t\t};\n\t\t});\n}\n\n/**\n * Updates order data\n * @param {Object} updatedShippingAddress Updates order shipping address from backend\n * @param {number} updatedAmount Updated order amount from backend\n */\nfunction updateLpmOrderData(updatedShippingAddress, updatedAmount) {\n\tshippingAddress = updatedShippingAddress;\n\tamount = updatedAmount;\n}\n\n/**\n * Returns order shipping address\n * @returns {Object} Shipping address\n */\nfunction getShippingAddress() {\n\treturn shippingAddress;\n}\n\n/**\n * Creates and returns object with all options for initiating the lpm payment flow\n * @param {string} paymentMethodName Payment method name\n * @param {string} email Email address\n * @returns {Object} {Object} Options object\n */\nfunction createRequestData(paymentMethodName, email) {\n\treturn Object.assign(\n\t\tbraintreeLpmSDK.createRequestData(\n\t\t\tshippingAddress,\n\t\t\tlpmConfigs,\n\t\t\tpaymentMethodName,\n\t\t\temail,\n\t\t\tamount\n\t\t),\n\t\t{\n\t\t\tonPaymentStart: function (_, continueCallback) {\n\t\t\t\tcontinueCallback();\n\t\t\t},\n\t\t}\n\t);\n}\n\n/**\n * Launches the local payment flow and returns a nonce payload\n * @param {Object} reqData Options object\n * @returns {Promise} Promise resolved with a startPaymentPayload\n */\nfunction startPayment(reqData) {\n\treturn braintreeLpmSDK.startPayment(lpmInstance, reqData);\n}\n\nmodule.exports = {\n\tinit,\n\tinitLpm,\n\tupdateLpmOrderData,\n\tgetShippingAddress,\n\tcreateRequestData,\n\tstartPayment,\n};\n","'use strict';\n\nconst lpmHelper = require('../helpers/lpmHelper');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst braintreeLpmModel = require('./braintreeLpmModel');\n\nconst lpmErrorMessages = require('../constants/errorMessages');\n\n/**\n * Initialize Braintree Lpm Model. Pattern Builder is used\n * @returns {Object} Object with booleam \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n\tconst braintreeLpmConfigs = lpmHelper.getBraintreeLpmConfigs();\n\tconst response = {\n\t\terror: false,\n\t\tmessage: '',\n\t\tbtLpmModel: null,\n\t};\n\n\tlet clientToken;\n\tlet btClientInstancePromise;\n\n\tif (braintreeLpmConfigs) {\n\t\tclientToken = braintreeLpmConfigs.clientToken;\n\t\tbtClientInstancePromise =\n\t\t\tbraintreeGeneral.createClientInstance(clientToken);\n\n\t\tbraintreeLpmModel.init(btClientInstancePromise);\n\n\t\tresponse.btLpmModel = braintreeLpmModel;\n\t} else {\n\t\tresponse.error = true;\n\t\tresponse.message = lpmErrorMessages.NO_LPM_BRAINTREE_CONFIGURATIONS;\n\t}\n\n\treturn response;\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nlet btClientInstancePromise;\n\n/**\n * Creates Lpm payment instance\n * @returns {Promise} A promise resolved with the Lpm instance\n */\n\nfunction createLpmPayment() {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\treturn braintree.localPayment.create({\n\t\t\tclient: btClientInstance,\n\t\t});\n\t});\n}\n\n/**\n * Creates and returns object with all options for initiating the LPM payment flow\n * @param {Object} shippingData Order Shipping address\n * @param {Object} lpmConfigs LPM configs object\n * @param {string} paymentMethodName Payment method name\n * @param {string} email Email address\n * @param {number} amount Order total amount\n * @returns {Object} Options object\n */\nfunction createRequestData(\n\tshippingData,\n\tlpmConfigs,\n\tpaymentMethodName,\n\temail,\n\tamount\n) {\n\tconst recipientName = shippingData.recipientName.split(' ');\n\n\tshippingData.firstName = recipientName[0];\n\tshippingData.lastName = recipientName[1];\n\n\treturn {\n\t\tpaymentType: paymentMethodName,\n\t\tamount: amount,\n\t\tfallback: {\n\t\t\turl: `${lpmConfigs.fallbackUrl}?lpmName=${paymentMethodName}&email=${email}`,\n\t\t\tbuttonText: 'Complete Payment',\n\t\t},\n\t\tcurrencyCode: lpmConfigs.options.currency,\n\t\tshippingAddressRequired: false,\n\t\temail: email,\n\t\tphone: shippingData && shippingData.phone,\n\t\tgivenName: shippingData && shippingData.firstName,\n\t\tsurname: shippingData && shippingData.lastName,\n\t\taddress: {\n\t\t\tcountryCode: shippingData && shippingData.countryCode,\n\t\t},\n\t};\n}\n\n/**\n *\n * @param {lpmInstance} localPaymentInstance LPM instance\n * @param {Object} reqData Options object\n * @returns {Promise} Promise resolved with a startPaymentPayload\n */\nfunction startPayment(localPaymentInstance, reqData) {\n\treturn localPaymentInstance.startPayment(reqData);\n}\n\n/**\n * Inits braintreeLpmSDK with client instance promise\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n\tinit,\n\tcreateLpmPayment,\n\tcreateRequestData,\n\tstartPayment,\n};\n","'use strict';\n\n// Helpers\nconst lpmHelper = require('../helpers/lpmHelper');\nconst loaderInstance = require('../../loaderHelper');\nconst lpmPaymentProcessingHelper = require('../helpers/lpmPaymentProcessorHelper');\n\nconst LpmAlertHandlerModel = require('../alerthandler/lpmAlertHandlerModel');\nconst helper = require('../../helper');\nconst alertHandler = new LpmAlertHandlerModel();\n\nconst $braintreeLpmLoader = document.querySelector(\n\t'.js-braintree-loader-container'\n);\n\n// Global variables\nlet lpmConfigs;\nlet loader;\nlet lpmModel;\n\n/**\n * Opens LPM page and process a payment\n * @param {Object} reqData Options object\n * @param {string} paymentMethodName Payment method name\n */\nfunction startLpmPayment(reqData, paymentMethodName) {\n\tlpmModel\n\t\t.startPayment(reqData)\n\t\t.then(function (startPaymentPayload) {\n\t\t\t// Handles LPM processing messages on the Billing-Checkout Page\n\t\t\talertHandler.hideAlerts();\n\t\t\talertHandler.showInfo(alertHandler.alertMessages.LPM_PAYMENT_SUCCESS);\n\n\t\t\t// Sends payment details to the backend\n\t\t\treturn lpmPaymentProcessingHelper.confirmPayment(\n\t\t\t\tlpmConfigs,\n\t\t\t\tpaymentMethodName,\n\t\t\t\treqData.email,\n\t\t\t\tstartPaymentPayload\n\t\t\t);\n\t\t})\n\t\t.then(function (response) {\n\t\t\treturn response.json();\n\t\t})\n\t\t.then(function (data) {\n\t\t\tlpmPaymentProcessingHelper.processLpmConfirmForm(data.redirectUrl);\n\t\t\tloader.hide();\n\t\t})\n\t\t.catch(function (error) {\n\t\t\tloader.hide();\n\t\t\talertHandler.handleLpmError(error);\n\t\t});\n}\n\n/**\n * Prepares and checks all necessary options for start LPM payment\n * @param {Object} event On LPM button click event\n */\nfunction onLpmButtonClick(event) {\n\tconst $email = document.querySelector('.customer-summary-email');\n\tconst paymentMethodName = this.dataset.localPaymentMethodName;\n\n\talertHandler.hideAlerts();\n\tevent.preventDefault();\n\n\ttry {\n\t\tif (lpmConfigs.options.amount === 0) {\n\t\t\tloader.hide();\n\t\t\talertHandler.handleZeroAmountOnCheckoutError(paymentMethodName);\n\t\t}\n\n\t\tfetch(helper.getUrlWithCsrfToken(lpmConfigs.getOrderInfoUrl))\n\t\t\t.then((response) => response.json())\n\t\t\t.then((data) => {\n\t\t\t\tloader.show();\n\t\t\t\talertHandler.showInfo(\n\t\t\t\t\talertHandler.alertMessages.LPM_PAYMENT_PROCESSING\n\t\t\t\t);\n\n\t\t\t\t// Updates shipping address and amount of order from server\n\t\t\t\tlpmModel.updateLpmOrderData(data.shippingAddress, data.amount);\n\n\t\t\t\t// Creates all options for initiating the local payment payment flow.\n\t\t\t\tconst reqData = lpmModel.createRequestData(\n\t\t\t\t\tpaymentMethodName,\n\t\t\t\t\t$email.textContent\n\t\t\t\t);\n\n\t\t\t\tstartLpmPayment(reqData, paymentMethodName);\n\t\t\t})\n\t\t\t// Handles errors form Braintree-GetOrderInfo endpoint\n\t\t\t.catch((error) => {\n\t\t\t\tloader.hide();\n\t\t\t\talertHandler.showError(error.responseJSON.message);\n\t\t\t});\n\t\tloader.hide();\n\t} catch (error) {\n\t\talertHandler.showError(error);\n\t}\n}\n\n/**\n * Inits LPM functionality on the Checkout-Billing Page\n */\nfunction initLpm() {\n\tlpmModel\n\t\t.initLpm()\n\t\t.then(function (response) {\n\t\t\tif (response.createLpmClickListener) {\n\t\t\t\tdocument\n\t\t\t\t\t.querySelectorAll('.js-braintree-lpm-button')\n\t\t\t\t\t.forEach((button) => {\n\t\t\t\t\t\tbutton.addEventListener('click', onLpmButtonClick);\n\t\t\t\t\t});\n\t\t\t}\n\t\t})\n\t\t.catch(function (error) {\n\t\t\talertHandler.showError(error.message);\n\t\t});\n}\n\n/**\n * Inits LPM payment processing components\n * @param {Object} braintreeLpmModel LPM model\n */\nfunction init(braintreeLpmModel) {\n\tloader = loaderInstance($braintreeLpmLoader);\n\tlpmConfigs = lpmHelper.getBraintreeLpmConfigs();\n\tlpmModel = braintreeLpmModel;\n\n\tinitLpm();\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nmodule.exports = {\n\tNO_LPM_BRAINTREE_CONFIGURATIONS: 'No Lpm Braintree Configurations',\n\tORDER_TOTAL_0: 'Order total 0 is not allowed for ',\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * Returns Braintree LPM configs\n * @returns {Object} Braintree LPM configs\n */\nfunction getBraintreeLpmConfigs() {\n\tconst $braintreeLpmButton = document.querySelector(\n\t\t'.js-braintree-lpm-button'\n\t);\n\n\tlet braintreeLpmConfigs = {};\n\n\ttry {\n\t\tif ($braintreeLpmButton) {\n\t\t\tbraintreeLpmConfigs = helper.tryParseJSON(\n\t\t\t\t$braintreeLpmButton.getAttribute('data-braintree-config')\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\treturn braintreeLpmConfigs;\n\t}\n\n\treturn braintreeLpmConfigs;\n}\n\nmodule.exports = {\n\tgetBraintreeLpmConfigs,\n};\n","'use strict';\n\nconst lpmModel = require('../braintreesdk/braintreeLpmModel');\nconst helper = require('../../helper');\n\n/**\n * Whether 'details' parameter is exist returns 'details' or shipping address if not exist\n *\n * @param {Object} details Details object from StartPaymentPayload\n * @param {string} email Email Address\n * @returns {Object} Details object\n */\nfunction getPaymentDetailsParameter(details, email) {\n\tconst shippingAddress = lpmModel.getShippingAddress();\n\n\tshippingAddress.email = email;\n\n\treturn jQuery.isEmptyObject(details) ? shippingAddress : details;\n}\n\n/**\n *\n * @param {Object} lpmConfigs LPM configs object\n * @param {string} paymentMethodName Payment method name\n * @param {string} email Email address\n * @param {Object} startPaymentPayload StartPaymnetPayload\n * @returns {Promise} Promise resolved with 'redirectUrl'\n */\nfunction confirmPayment(\n\tlpmConfigs,\n\tpaymentMethodName,\n\temail,\n\tstartPaymentPayload\n) {\n\treturn fetch(helper.getUrlWithCsrfToken(lpmConfigs.paymentConfirmUrl), {\n\t\tmethod: 'POST',\n\t\tbody: JSON.stringify({\n\t\t\tnonce: startPaymentPayload.nonce,\n\t\t\tlpmName: paymentMethodName,\n\t\t\tdetails: getPaymentDetailsParameter(startPaymentPayload.details, email),\n\t\t\tdeviceData: JSON.stringify({\n\t\t\t\tcorrelation_id: startPaymentPayload.correlationId,\n\t\t\t}),\n\t\t}),\n\t});\n}\n\n/**\n * Creates a redirecting form to Order-Confirm endpoint\n * @param {Object} params The helping object for creating a from\n * @returns {Object} form element\n */\nfunction createConfirmForm(params) {\n\tconst form = document.createElement('form');\n\tconst orderIdInput = document.createElement('input');\n\tconst orderTokenInput = document.createElement('input');\n\n\tform.method = 'POST';\n\tform.action = params.url;\n\n\torderIdInput.value = params.orderID;\n\torderIdInput.name = 'orderID';\n\tform.appendChild(orderIdInput);\n\n\torderTokenInput.value = params.orderToken;\n\torderTokenInput.name = 'orderToken';\n\tform.appendChild(orderTokenInput);\n\n\tdocument.body.appendChild(form);\n\n\treturn form;\n}\n\n/**\n * Prepare and submits form in order to confirm order with Lpm\n * @param {string} redirectUrl Redirect Url\n */\nfunction processLpmConfirmForm(redirectUrl) {\n\tconst splitUrl = redirectUrl.split('?');\n\tconst url = splitUrl.shift();\n\tconst searchParams = new URLSearchParams(splitUrl.join());\n\tconst formParam = {\n\t\torderID: searchParams.get('orderID'),\n\t\torderToken: searchParams.get('orderToken'),\n\t\turl: url,\n\t};\n\n\tconst form = createConfirmForm(formParam);\n\n\tform.submit();\n}\n\nmodule.exports = {\n\tgetPaymentDetailsParameter,\n\tconfirmPayment,\n\tprocessLpmConfirmForm,\n\tcreateConfirmForm,\n};\n","'use strict';\n\nconst braintreeLpmModelBuilder = require('./braintreesdk/braintreeLpmModelBuilder');\nconst lpmPaymentProcessing = require('./components/lpmPaymentProcessing');\n\n/**\n * Inits LPM on the Billing-Checkout Page\n */\nfunction init() {\n\tconst braintreeLpmModelResponse = braintreeLpmModelBuilder.init();\n\n\tlpmPaymentProcessing.init(braintreeLpmModelResponse.btLpmModel);\n}\n\nmodule.exports = {\n\tinit,\n};\n","const LpmAlertHandlerModel = require('./alerthandler/lpmAlertHandlerModel');\nconst helper = require('../helper');\n\nconst $lpmFallback = document.querySelector('.js-lpm-fallback');\nconst $lpmLoader = document.querySelector('.js-braintree-loader-container');\nconst lpmData = helper.tryParseJSON(\n\t$lpmFallback.getAttribute('data-braintree-lpm')\n);\nconst alertHandler = new LpmAlertHandlerModel();\n\n/**\n * LPM fallback process\n */\nconst process = () => {\n\tbraintree.client\n\t\t.create({\n\t\t\tauthorization: lpmData.clientToken,\n\t\t})\n\t\t.then((clientInstance) => {\n\t\t\t$lpmLoader.style.display = 'block';\n\n\t\t\treturn braintree.localPayment.create({\n\t\t\t\tclient: clientInstance,\n\t\t\t});\n\t\t})\n\t\t.then((localPaymentInstance) => {\n\t\t\tlocalPaymentInstance\n\t\t\t\t.tokenize()\n\t\t\t\t.then(function ({ nonce, details }) {\n\t\t\t\t\tconst buyerAddressDetails = Object.keys(details).length\n\t\t\t\t\t\t? details\n\t\t\t\t\t\t: { email: lpmData.customerEmail };\n\n\t\t\t\t\talertHandler.showInfo(alertHandler.alertMessages.LPM_PAYMENT_SUCCESS);\n\n\t\t\t\t\tfetch(helper.getUrlWithCsrfToken(lpmData.paymentConfirmUrl), {\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\t\tnonce: nonce,\n\t\t\t\t\t\t\tlpmName: lpmData.lpmName,\n\t\t\t\t\t\t\tdetails: buyerAddressDetails,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t\t\t})\n\t\t\t\t\t\t.then((response) => response.json())\n\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\tconst lpmPaymentProcessorHelper = require('../local/helpers/lpmPaymentProcessorHelper');\n\n\t\t\t\t\t\t\tlpmPaymentProcessorHelper.processLpmConfirmForm(data.redirectUrl);\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\talertHandler.showError(alertHandler.alertMessages.LPM_PAYMENT_ERROR);\n\t\t\t\t});\n\t\t});\n};\n\nmodule.exports = {\n\tprocess,\n};\n","'use strict';\n\nconst braintreeGeneral = require('./braintreeGeneral');\n\n// Components\nconst payPalStoredBillingAddressComponent = require('./paypal/components/payPalStoredBillingAddress');\nconst venmoBillingAddressComponent = require('./venmo/components/venmoBillingAddress');\n\n// Helpers\nconst paymentMethodGeneralHelper = require('./paymentMethodGeneralHelper');\nconst helper = require('./helper');\nconst googlePayHelper = require('./googlepay/helpers/googlePayHelper');\nconst srcHelper = require('./src/helpers/srcHelper');\nconst venmoHelper = require('./venmo/helpers/venmoHelper');\nconst applePayHelper = require('./applepay/helpers/applePayHelper');\nconst payPalListHelper = require('./paypal/helpers/payPalListHelper');\nconst creditCardPaymentProcessingHelper = require('./creditcard/helpers/creditCardPaymentProcessingHelper');\n\n// Constants used only for \"createGeneralClientInstancePromise\" function\nconst creditCardPaymentProcessingConstants = require('./creditcard/constants/creditCardPaymentProcessingConstants');\n\nconst CHECKOUT_PAGE = 'checkout_page';\nconst CART_MINICART_PRODUCT_PAGE = 'cart_minicart_product_page';\nconst LOCAL_PAYMENT_METHODS_LIST = [\n\t'sepa',\n\t'bancontact',\n\t'eps',\n\t'giropay',\n\t'ideal',\n\t'mybank',\n\t'p24',\n\t'sofort',\n];\nconst PAYMENT_METHODS_WITH_DISABLED_BILLING_ADDRESS_FUNCTIONALITY = [\n\t'PayPal',\n\t'GooglePay',\n\t'SRC',\n\t'ApplePay',\n\t'Venmo',\n];\n\n// Other constants\nconst DATA_METHOD_ID_ATTRIBUTE = 'data-method-id';\nconst DATA_BILLING_ADDRESS_ATTRIBUTE = 'data-billing-address';\nconst PAYMENT_OPTIONS_CLASS = '.payment-options';\n\n/**\n * Returns current page name\n * @returns {string} name of the current page\n */\nfunction getApplicablePageType() {\n\tconst isCheckoutPage = Boolean(document.getElementById('checkout-main'));\n\t// It is so, since MiniCart is exists on all mentioned pages\n\tconst isCartMiniCartProductPage = Boolean(\n\t\tdocument.getElementsByClassName('minicart').length\n\t);\n\n\tlet currentPageType;\n\n\tif (isCheckoutPage) {\n\t\tcurrentPageType = CHECKOUT_PAGE;\n\t} else if (isCartMiniCartProductPage) {\n\t\tcurrentPageType = CART_MINICART_PRODUCT_PAGE;\n\t}\n\n\treturn currentPageType;\n}\n\n/**\n * Create Braintree Client Instance\n * @returns {Promise} with Braintree Client Instance\n */\nfunction createGeneralClientInstancePromise() {\n\tconst applycablePageType = getApplicablePageType();\n\tconst attrBtClientToken = 'data-bt-client-token';\n\n\tlet clientToken = null;\n\tlet clientInstancePromise = null;\n\tlet $billingElement;\n\tlet $btExpressCheckoutPayPalButtonWrapper;\n\tlet $btAccountPayPalButtonWrapper;\n\tlet $btApmaPayPalButtonWrapper;\n\n\t// eslint-disable-next-line default-case\n\tswitch (applycablePageType) {\n\t\tcase CHECKOUT_PAGE:\n\t\t\t$billingElement = document.querySelector('.summary-details.billing');\n\n\t\t\tclientToken = $billingElement.getAttribute(attrBtClientToken);\n\n\t\t\tbreak;\n\n\t\tcase CART_MINICART_PRODUCT_PAGE:\n\t\t\t$btExpressCheckoutPayPalButtonWrapper = document.querySelector(\n\t\t\t\t'.js-braintree-cart-paypal-buttons-wrap'\n\t\t\t);\n\t\t\t$btAccountPayPalButtonWrapper = document.querySelector(\n\t\t\t\t'.js-braintree-account-paypal-button-wrapper'\n\t\t\t);\n\t\t\t$btApmaPayPalButtonWrapper = document.querySelector(\n\t\t\t\t'.js-braintree-apma-paypal-button-wrapper'\n\t\t\t);\n\n\t\t\tif ($btExpressCheckoutPayPalButtonWrapper) {\n\t\t\t\tclientToken =\n\t\t\t\t\t$btExpressCheckoutPayPalButtonWrapper.getAttribute(attrBtClientToken);\n\t\t\t} else if ($btAccountPayPalButtonWrapper) {\n\t\t\t\tclientToken =\n\t\t\t\t\t$btAccountPayPalButtonWrapper.getAttribute(attrBtClientToken);\n\t\t\t} else if ($btApmaPayPalButtonWrapper) {\n\t\t\t\tclientToken =\n\t\t\t\t\t$btApmaPayPalButtonWrapper.getAttribute(attrBtClientToken);\n\t\t\t}\n\n\t\t\tbreak;\n\t}\n\n\tif (clientToken) {\n\t\tclientInstancePromise = braintreeGeneral.createClientInstance(clientToken);\n\t}\n\n\treturn clientInstancePromise;\n}\n\n/**\n * Method override default SFRA payment-details filling behavior.\n * Method fill payment-details block with the right payment methdo data (like name, account, etc.)\n */\nfunction fillPaymentSummaryContainer() {\n\tconst $summaryDetails = document.querySelector(\n\t\t'.summary-details .payment-details'\n\t);\n\n\tif ($summaryDetails) {\n\t\t$summaryDetails.classList.add('js-braintree-payment-details');\n\t\t$summaryDetails.classList.remove('payment-details');\n\n\t\t$('body').on('checkout:updateCheckoutView', helper.updateCheckoutView);\n\t}\n}\n\n/**\n * May be used for all payment methods\n * Create error container and append it after PayPal button\n * @param {string} payPalButtonSelector selector of PayPal button\n * @returns {Object} return created error container\n */\nfunction createErrorContainerAfterPayPalButton(payPalButtonSelector) {\n\tconst $errorContainer = document.createElement('div');\n\tconst $payPalButton = document.querySelector(payPalButtonSelector);\n\n\t$errorContainer.classList.add('alert-danger');\n\t$errorContainer.style.cssText = 'text-align: center';\n\n\t$payPalButton.parentNode.insertBefore(\n\t\t$errorContainer,\n\t\t$payPalButton.nextSibling\n\t);\n\n\treturn $errorContainer;\n}\n\n/**\n * Initiates all necessary manipulation for credit card billing address due tab click\n *\n * @param {Element} paymentOption - payment option for which specific billing address needs to be selected\n */\nfunction initCreditCardBillingAddressBehavior(paymentOption) {\n\tconst creditCardHelper = require('./creditcard/helpers/creditCardHelper');\n\tconst creditCardBillingAddressHelper = require('./creditcard/helpers/creditCardBillingAddressHelper');\n\n\tconst $creditCardList = document.getElementById('braintreeCreditCardList');\n\tconst $selectedCcAccountOption =\n\t\tcreditCardHelper.getSelectedCcAccountOption();\n\tconst creditCardFlow =\n\t\tcreditCardPaymentProcessingHelper.getCreditCardFlowID($creditCardList);\n\tconst savedBillingAddress = $selectedCcAccountOption.getAttribute(\n\t\t'data-billing-address'\n\t);\n\n\tif (\n\t\tcreditCardFlow ===\n\t\t\tcreditCardPaymentProcessingConstants.FLOW_STORED_CARD_NAME &&\n\t\tsavedBillingAddress\n\t) {\n\t\tpaymentMethodGeneralHelper.disableBillingAddressFunctionality();\n\t\tcreditCardBillingAddressHelper.displaySelectedStoredBillingAddress(\n\t\t\t$selectedCcAccountOption\n\t\t);\n\t} else {\n\t\tconst billingAddressSelector = document.getElementById(\n\t\t\t'billingAddressSelector'\n\t\t);\n\t\tconst billingAddressId =\n\t\t\tpaymentMethodGeneralHelper.getStoredBillingAddressId(paymentOption);\n\n\t\tif (billingAddressId) {\n\t\t\tconst billingAddressToSelect = Array.from(\n\t\t\t\tbillingAddressSelector.children\n\t\t\t).find((option) => {\n\t\t\t\tconst stroredBillingAddress = option.getAttribute('value');\n\n\t\t\t\treturn (\n\t\t\t\t\tstroredBillingAddress === billingAddressId ||\n\t\t\t\t\tstroredBillingAddress === `ab_${billingAddressId}` ||\n\t\t\t\t\t`ab_${stroredBillingAddress}` === billingAddressId\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tif (billingAddressToSelect) {\n\t\t\t\tbillingAddressToSelect.selected = true;\n\t\t\t}\n\t\t}\n\n\t\tpaymentMethodGeneralHelper.enableBillingAddressFunctionality();\n\t}\n}\n\n/**\n * Deselects all selected options\n * @param {Element} billingAddressSelector selector of billing addresses\n */\nfunction deselectAllOptions(billingAddressSelector) {\n\tArray.from(billingAddressSelector.children).forEach((option) => {\n\t\toption.selected = false;\n\t\toption.removeAttribute('selected');\n\t});\n}\n\n/**\n * Removes option that was added by payment method\n */\nfunction removeAddedOption() {\n\tconst optionToRemove = document.querySelector('.stored-billing-address');\n\n\tif (optionToRemove) {\n\t\toptionToRemove.remove();\n\t}\n}\n\n/**\n * Selects billing address\n *\n * @param {Element} paymentOption payment option for which specific billing address needs to be selected\n */\nfunction selectBillingAddress(paymentOption) {\n\tconst selectedMethodID = paymentOption.getAttribute(DATA_METHOD_ID_ATTRIBUTE);\n\tconst optionClass = 'stored-billing-address';\n\n\tswitch (selectedMethodID) {\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL: {\n\t\t\tconst payPalAccountList = document.getElementById(\n\t\t\t\t'braintreePaypalAccountsList'\n\t\t\t);\n\t\t\tconst selectedPayPalAccountOption =\n\t\t\t\tpayPalAccountList.options[payPalAccountList.selectedIndex];\n\n\t\t\t// Display billing address of selected PayPal account\n\t\t\tpayPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress(\n\t\t\t\tselectedPayPalAccountOption\n\t\t\t);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_GOOGLEPAY: {\n\t\t\tconst googlePayBtn = document.querySelector(\n\t\t\t\t'.js-braintree-googlepay-button'\n\t\t\t);\n\n\t\t\tpaymentMethodGeneralHelper.createBillingAddressOption(\n\t\t\t\toptionClass,\n\t\t\t\tgooglePayBtn.getAttribute(DATA_BILLING_ADDRESS_ATTRIBUTE)\n\t\t\t);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_SRC: {\n\t\t\tconst srcBtn = document.querySelector('.js-braintree-src-button');\n\n\t\t\tpaymentMethodGeneralHelper.createBillingAddressOption(\n\t\t\t\toptionClass,\n\t\t\t\tsrcBtn.getAttribute(DATA_BILLING_ADDRESS_ATTRIBUTE)\n\t\t\t);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_APPLEPAY: {\n\t\t\tconst applePayBtn = document.querySelector(\n\t\t\t\t'.js-braintree-applepay-button'\n\t\t\t);\n\n\t\t\tpaymentMethodGeneralHelper.createBillingAddressOption(\n\t\t\t\toptionClass,\n\t\t\t\tapplePayBtn.getAttribute(DATA_BILLING_ADDRESS_ATTRIBUTE)\n\t\t\t);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_VENMO: {\n\t\t\t// Display shipping address as selected billing address\n\t\t\tvenmoBillingAddressComponent.displayShippingAddressAsSelected();\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault:\n\t}\n}\n\n/**\n * Handles billing address functionality (disable/enable)\n * @param {Element} paymentOption payment option\n */\nfunction handleBillingAddressFunctionality(paymentOption) {\n\tconst selectedMethodID = paymentOption.getAttribute(DATA_METHOD_ID_ATTRIBUTE);\n\n\tif (\n\t\tPAYMENT_METHODS_WITH_DISABLED_BILLING_ADDRESS_FUNCTIONALITY.includes(\n\t\t\tselectedMethodID\n\t\t)\n\t) {\n\t\tpaymentMethodGeneralHelper.disableBillingAddressFunctionality();\n\t} else if (selectedMethodID === 'CREDIT_CARD') {\n\t\tinitCreditCardBillingAddressBehavior(paymentOption);\n\t} else {\n\t\tpaymentMethodGeneralHelper.enableBillingAddressFunctionality();\n\t}\n}\n\n/**\n * Handles submit payment button for specific payment method\n * @param {Element} paymentOption payment option\n */\nfunction handlePaymentMethodsFunctionality(paymentOption) {\n\tlet selectedMethodID = paymentOption.getAttribute(DATA_METHOD_ID_ATTRIBUTE);\n\n\tif (LOCAL_PAYMENT_METHODS_LIST.includes(selectedMethodID)) {\n\t\tselectedMethodID = 'LPM';\n\t}\n\n\tswitch (selectedMethodID) {\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL: {\n\t\t\t// Submit Payment button behavior\n\t\t\tconst isAccountListHidden = document\n\t\t\t\t.querySelector('.js-braintree-used-paypal-account')\n\t\t\t\t.classList.contains('used-paypal-account-hide');\n\n\t\t\tif (isAccountListHidden) {\n\t\t\t\tpaymentMethodGeneralHelper.hideSubmitPaymentButton();\n\t\t\t} else if (!payPalListHelper.isNewPayPalAccountOptionSelected()) {\n\t\t\t\tpaymentMethodGeneralHelper.showSubmitPaymentButton();\n\t\t\t} else {\n\t\t\t\tpaymentMethodGeneralHelper.hideSubmitPaymentButton();\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_GOOGLEPAY: {\n\t\t\tgooglePayHelper.googlePayContentTabHandler(true);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_SRC: {\n\t\t\tsrcHelper.srcContentTabHandler(true);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_APPLEPAY: {\n\t\t\tapplePayHelper.toggleContinueButtonOnBillingPage();\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_CREDIT_CARD: {\n\t\t\t// Submit Payment button behavior\n\t\t\tpaymentMethodGeneralHelper.showSubmitPaymentButton();\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_VENMO: {\n\t\t\tconst isBtVenmoAccountsList = Boolean(\n\t\t\t\tdocument.getElementById('braintreeVenmoAccountsList')\n\t\t\t);\n\t\t\tconst isSessionAccountExist = Boolean(\n\t\t\t\tdocument.querySelector('.js-used-venmo-account')\n\t\t\t);\n\t\t\t// Handles continue button visibility on the Billing Page in Venmo tab\n\t\t\t// Case for the registered user with saved account\n\n\t\t\tif (isBtVenmoAccountsList) {\n\t\t\t\tvenmoHelper.venmoContentTabHandler();\n\t\t\t} else if (isSessionAccountExist) {\n\t\t\t\t// Case when only session account exist without saved account\n\t\t\t\thelper.continueButtonToggle(false);\n\t\t\t} else {\n\t\t\t\t// Case when no session/saved account exist and Venmo button is shown\n\t\t\t\thelper.continueButtonToggle(true);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase window.braintreeConstants.PAYMENT_METHOD_ID_LPM: {\n\t\t\tpaymentMethodGeneralHelper.hideSubmitPaymentButton();\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'GIFT_CERTIFICATE': {\n\t\t\tpaymentMethodGeneralHelper.hideSubmitPaymentButton();\n\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault:\n\t}\n}\n\n/**\n * Saves selected billing address on tab changing\n */\nfunction saveSelectedBillingAddressFromPreviousTab() {\n\tconst billingAddressSelector = document.getElementById(\n\t\t'billingAddressSelector'\n\t);\n\tconst paymentOptions = document.querySelector(PAYMENT_OPTIONS_CLASS);\n\n\tconst paymentOptionToSaveBillingAddress = Array.from(\n\t\tpaymentOptions.children\n\t).find((option) => {\n\t\treturn option.firstElementChild.classList.contains('active');\n\t});\n\n\tconst selectedMethodID = paymentOptionToSaveBillingAddress.getAttribute(\n\t\tDATA_METHOD_ID_ATTRIBUTE\n\t);\n\n\tif (\n\t\t!PAYMENT_METHODS_WITH_DISABLED_BILLING_ADDRESS_FUNCTIONALITY.includes(\n\t\t\tselectedMethodID\n\t\t)\n\t) {\n\t\tconst selectedBillingAddressOption =\n\t\t\tbillingAddressSelector.options[billingAddressSelector.selectedIndex];\n\n\t\tpaymentMethodGeneralHelper.setStoredBillingAddressId(\n\t\t\tpaymentOptionToSaveBillingAddress,\n\t\t\tselectedBillingAddressOption\n\t\t);\n\t}\n}\n\n/**\n * Inits billing address behavior on shipping change, so that:\n * When the checkout stage changes to payment, trigger a custom event that will select the billing\n * address based on the active payment option.\n */\nfunction initChangeShippingBehavior() {\n\tconst checkoutStageElement = document.querySelector('.data-checkout-stage');\n\n\tconst observer = new MutationObserver(() => {\n\t\tif (\n\t\t\tcheckoutStageElement.getAttribute('data-checkout-stage') === 'payment'\n\t\t) {\n\t\t\tconst shippingChangeEvent = new Event('shipping:update');\n\n\t\t\tdocument.dispatchEvent(shippingChangeEvent);\n\t\t}\n\t});\n\n\tobserver.observe(checkoutStageElement, { attributes: true });\n\n\tdocument.addEventListener('shipping:update', () => {\n\t\tconst paymentOptions = document.querySelector(PAYMENT_OPTIONS_CLASS);\n\t\tconst billingAddressSelector = document.getElementById(\n\t\t\t'billingAddressSelector'\n\t\t);\n\n\t\tif (paymentOptions && billingAddressSelector) {\n\t\t\tconst activePaymentOption = Array.from(paymentOptions.children).find(\n\t\t\t\t(option) => {\n\t\t\t\t\treturn option.firstElementChild.classList.contains('active');\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tselectBillingAddress(activePaymentOption);\n\t\t\thandleBillingAddressFunctionality(activePaymentOption);\n\t\t}\n\t});\n}\n\n/**\n * Inits functionality of billing selector change\n */\nfunction initBillingSelectorChangeFunctionality() {\n\tconst billingAddressSelector = document.getElementById(\n\t\t'billingAddressSelector'\n\t);\n\tconst paymentOptions = document.querySelector(PAYMENT_OPTIONS_CLASS);\n\n\tif (billingAddressSelector && paymentOptions) {\n\t\tbillingAddressSelector.addEventListener('change', () => {\n\t\t\tconst selectedBillingAddressOption =\n\t\t\t\tbillingAddressSelector.options[billingAddressSelector.selectedIndex];\n\t\t\tconst activePaymentOption = Array.from(paymentOptions.children).find(\n\t\t\t\t(option) => {\n\t\t\t\t\treturn option.firstElementChild.classList.contains('active');\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tpaymentMethodGeneralHelper.setStoredBillingAddressId(\n\t\t\t\tactivePaymentOption,\n\t\t\t\tselectedBillingAddressOption\n\t\t\t);\n\t\t});\n\t}\n}\n\n/**\n * Init behavior which should be triggered when buyer clicked on Payment Method tab.\n * Currently we handle billing address modification enabling/disabling.\n * We also have init behavior of \"Submit Payment\" button\n */\nfunction initPaymentMethodTabClickBehavior() {\n\tconst navLinks = document.querySelectorAll(\n\t\t'.payment-options .nav-item .nav-link'\n\t);\n\n\tnavLinks.forEach((navLink) => {\n\t\tnavLink.addEventListener('click', (e) => {\n\t\t\tconst clickedPaymentOption = e.target.closest('.nav-item');\n\t\t\tconst billingAddressSelector = document.getElementById(\n\t\t\t\t'billingAddressSelector'\n\t\t\t);\n\n\t\t\tsaveSelectedBillingAddressFromPreviousTab();\n\n\t\t\tremoveAddedOption();\n\t\t\tdeselectAllOptions(billingAddressSelector);\n\n\t\t\thandleBillingAddressFunctionality(clickedPaymentOption);\n\t\t\thandlePaymentMethodsFunctionality(clickedPaymentOption);\n\n\t\t\tselectBillingAddress(clickedPaymentOption);\n\t\t});\n\t});\n}\n\n/**\n * Creates customer form with email to submit it to CheckoutServices-SubmitCustomer endpoint\n * @param {string} email email from payment method's response\n * @returns {Object} customer form data\n */\nfunction createCustomerFormData(email) {\n\tconst data = {\n\t\temail: email,\n\t};\n\n\tconst $csrfToken = document.querySelector(\n\t\t'.js-braintree-cart-buttons-wrap #csrf_token'\n\t);\n\tconst checkoutCustomerFormFields = document\n\t\t.querySelector('.js-braintree-cart-buttons-wrap')\n\t\t.getAttribute('data-checkout-customer-form-fields');\n\tconst customerFormData = helper.createPaymentFormData(\n\t\tcheckoutCustomerFormFields,\n\t\tdata\n\t);\n\n\tcustomerFormData.append($csrfToken.name, $csrfToken.value);\n\n\treturn customerFormData;\n}\n\n/**\n * Submits customer form with email to CheckoutServices-SubmitCustomer endpoint\n * Call is triggered only in case if email in basket is empty (guest first checkout from cart)\n * @param {string} email email from payment method's response\n * @returns {Promise} call to CheckoutServices-SubmitCustomer endpoint\n */\nasync function submitCustomerForm(email) {\n\tconst buttonsWrapper = document.querySelector(\n\t\t'.js-braintree-cart-buttons-wrap'\n\t);\n\tconst isCustomerEmailEmpty = helper.tryParseJSON(\n\t\tbuttonsWrapper.getAttribute('data-is-customer-email-empty')\n\t);\n\n\tlet result;\n\t// Could be \"true\" only in case if email in basket is empty (first guest checkout from cart)\n\n\tif (isCustomerEmailEmpty) {\n\t\tconst submitCustomerUrl = window.braintreeUrls.submitCustomerUrl;\n\t\tconst customerFormData = createCustomerFormData(email);\n\n\t\tresult = await fetch(submitCustomerUrl, {\n\t\t\tmethod: 'POST',\n\t\t\tbody: customerFormData,\n\t\t});\n\t}\n\n\treturn result;\n}\n\n/**\n * Handles active CC session payment, removes active session payment if order amount changed\n * to avoid a mismatch error between nonce amount and actual amount\n * @param {number} lastAmount - amount of the last order\n */\nfunction handleActiveCCSessionPayment(lastAmount) {\n\tfetch(helper.getUrlWithCsrfToken(window.braintreeUrls.getOrderInfoUrl))\n\t\t.then((response) => response.json())\n\t\t.then((data) => {\n\t\t\tif (data.amount !== lastAmount) {\n\t\t\t\tconst creditCardSessionAccount = require('./creditcard/components/creditCardSessionAccount');\n\n\t\t\t\tcreditCardSessionAccount.removeSessionNonce();\n\t\t\t}\n\t\t});\n}\n\n/**\n * Inits payment amount observer\n */\nfunction initAmountObserver() {\n\tconst checkoutStageElement = document.querySelector('.data-checkout-stage');\n\n\tconst observer = new MutationObserver(() => {\n\t\tif (\n\t\t\tcheckoutStageElement.getAttribute('data-checkout-stage') === 'placeOrder'\n\t\t) {\n\t\t\tconst amountElement = document.querySelector('.grand-total-sum');\n\t\t\tconst amount = parseFloat(\n\t\t\t\tamountElement.textContent.replace(/[^0-9.]/g, '')\n\t\t\t);\n\n\t\t\twindow.sessionStorage.setItem('amount-used', amount);\n\t\t}\n\t});\n\n\tobserver.observe(checkoutStageElement, { attributes: true });\n}\n\nmodule.exports = {\n\tcreateGeneralClientInstancePromise,\n\tfillPaymentSummaryContainer,\n\tcreateErrorContainerAfterPayPalButton,\n\tinitPaymentMethodTabClickBehavior,\n\tinitChangeShippingBehavior,\n\tinitBillingSelectorChangeFunctionality,\n\tsubmitCustomerForm,\n\tsaveSelectedBillingAddressFromPreviousTab,\n\thandleActiveCCSessionPayment,\n\tinitAmountObserver,\n};\n","'use strict';\n\nconst helper = require('./helper');\n\nfunction hideBillingAddressManipulationButtons() {\n\tdocument.querySelector(\n\t\t'.address-selector-block .btn-show-details'\n\t).style.display = 'none';\n\tdocument.querySelector('.address-selector-block .btn-add-new').style.display =\n\t\t'none';\n}\n\nfunction showBillingAddressManipulationButtons() {\n\tdocument.querySelector(\n\t\t'.address-selector-block .btn-show-details'\n\t).style.display = '';\n\tdocument.querySelector('.address-selector-block .btn-add-new').style.display =\n\t\t'';\n}\n\nfunction disableBillingAddressList() {\n\tdocument\n\t\t.getElementById('billingAddressSelector')\n\t\t.setAttribute('disabled', 'disabled');\n}\n\nfunction enableBillingAddressList() {\n\tdocument.getElementById('billingAddressSelector').removeAttribute('disabled');\n}\n\nfunction hideSubmitPaymentButton() {\n\tdocument.querySelector('.submit-payment').style.display = 'none';\n\tdocument.querySelector('.submit-payment-new').style.display = 'none';\n}\n\nfunction showSubmitPaymentButton() {\n\tdocument.querySelector('.submit-payment').style.display = '';\n\tdocument.querySelector('.submit-payment-new').style.display = '';\n}\n\n/**\n * Hides biiling address form on the Billing Page for appropriate tabs.\n * Case when customer clicked 'Updated address' or 'Add New' button and flipped through the payment method tabs\n */\nfunction hideBillingAddressForm() {\n\tdocument.querySelector(\n\t\t'.billing-address-block .billing-address'\n\t).style.display = 'none';\n}\n\n/**\n * Shows biiling address form on the Billing Page for appropriate tabs.\n * Case when customer clicked 'Updated address' or 'Add New' button and flipped through the payment method tabs\n */\nfunction showBillingAddressForm() {\n\tdocument.querySelector(\n\t\t'.billing-address-block .billing-address'\n\t).style.display = '';\n}\n\n/**\n * Hides phone field on the Billing Page for appropriate tabs\n */\nfunction hidePhoneField() {\n\tdocument.querySelector(\n\t\t'.dwfrm_billing_contactInfoFields_phone'\n\t).style.display = 'none';\n}\n\n/**\n * Shows phone field on the Billing Page for appropriate tabs\n */\nfunction showPhoneField() {\n\tdocument.querySelector(\n\t\t'.dwfrm_billing_contactInfoFields_phone'\n\t).style.display = '';\n}\n\n/**\n * Disabled billing address functionality on the Billing Page\n */\nfunction disableBillingAddressFunctionality() {\n\tdisableBillingAddressList();\n\thideBillingAddressManipulationButtons();\n\thideBillingAddressForm();\n\thidePhoneField();\n}\n\n/**\n * Enabled billing address functionality on the Billing Page\n */\nfunction enableBillingAddressFunctionality() {\n\tshowBillingAddressManipulationButtons();\n\tenableBillingAddressList();\n\tshowBillingAddressForm();\n\tshowPhoneField();\n}\n\n/**\n * Returns a billing address represented as a string\n * @param {Object} billingAddress A billing address object\n * @returns {string} A string represented a billing address\n */\nfunction formatBaAsString(billingAddress) {\n\tconst firstName = billingAddress.firstName || '';\n\tconst lastname = billingAddress.lastName || '';\n\tconst address1 =\n\t\tbillingAddress.line1 ||\n\t\tbillingAddress.address1 ||\n\t\tbillingAddress.streetAddress ||\n\t\t'';\n\tconst city = billingAddress.city || billingAddress.locality || '';\n\tconst state =\n\t\tbillingAddress.state ||\n\t\tbillingAddress.stateCode ||\n\t\tbillingAddress.region ||\n\t\t'';\n\tconst postalCode = decodeURIComponent(billingAddress.postalCode) || '';\n\n\treturn `${firstName} ${lastname} ${address1} ${city}, ${state} ${postalCode}`;\n}\n\n/**\n * Extract billing address of corresponding payment account from account option\n * @param {Object} $selectedPayment PayPal payment option\n * @returns {string} return string representation of extracted address\n */\nfunction getBillingAddressAsString($selectedPayment) {\n\tconst selectedBillingAddressStr = $selectedPayment.getAttribute(\n\t\t'data-billing-address'\n\t);\n\n\tlet billingAddressRepresentationString = '';\n\n\tif (selectedBillingAddressStr) {\n\t\tconst selectedBillingAddressObj = helper.tryParseJSON(\n\t\t\tselectedBillingAddressStr\n\t\t);\n\n\t\tif (selectedBillingAddressObj && selectedBillingAddressStr !== '{}') {\n\t\t\tbillingAddressRepresentationString = formatBaAsString(\n\t\t\t\tselectedBillingAddressObj\n\t\t\t);\n\t\t}\n\t}\n\n\treturn billingAddressRepresentationString;\n}\n\n/**\n * It gets the ID of the last billing address used for the selected payment method\n * @param {Element} paymentOption - The payment option that was selected.\n * @returns {string} - The billing address ID that was stored in session storage.\n */\nfunction getStoredBillingAddressId(paymentOption) {\n\tconst selectedPaymentMethod = paymentOption.getAttribute('data-method-id');\n\n\treturn sessionStorage.getItem(`${selectedPaymentMethod}-last-billing-id`);\n}\n\n/**\n * It sets the billing address ID in session storage for the selected payment method\n * @param {Element} paymentOption - The payment method that was selected.\n * @param {Element} billingOption - The billing address option that was selected.\n */\nfunction setStoredBillingAddressId(paymentOption, billingOption) {\n\tconst selectedPaymentMethodName =\n\t\tpaymentOption.getAttribute('data-method-id');\n\n\tif (billingOption.getAttribute('value') !== null) {\n\t\tsessionStorage.setItem(\n\t\t\t`${selectedPaymentMethodName}-last-billing-id`,\n\t\t\tbillingOption.getAttribute('value')\n\t\t);\n\t}\n}\n\n/**\n * It creates an option element, sets its text, class, and selected property, and then appends it to\n * the billingAddressSelector element\n * @param {string} className - Class name of the option element.\n * @param {string} innerText - Text that will be displayed in the dropdown menu.\n */\nfunction createBillingAddressOption(className, innerText) {\n\tconst billingAddressSelector = document.getElementById(\n\t\t'billingAddressSelector'\n\t);\n\tconst option = document.createElement('option');\n\n\toption.innerText = innerText;\n\toption.className = className;\n\toption.selected = true;\n\n\tbillingAddressSelector.append(option);\n}\n\nmodule.exports = {\n\tdisableBillingAddressFunctionality,\n\tenableBillingAddressFunctionality,\n\thideBillingAddressManipulationButtons,\n\tshowBillingAddressManipulationButtons,\n\tdisableBillingAddressList,\n\tenableBillingAddressList,\n\thideBillingAddressForm,\n\tshowBillingAddressForm,\n\thideSubmitPaymentButton,\n\tshowSubmitPaymentButton,\n\thidePhoneField,\n\tshowPhoneField,\n\tgetStoredBillingAddressId,\n\tsetStoredBillingAddressId,\n\tcreateBillingAddressOption,\n\tgetBillingAddressAsString,\n};\n","'use strict';\n\nconst AlertHandlerModel = require('../../alertHandler');\n\n/**\n * Paypal alert handler model\n */\nclass PaypalAlertHandlerModel extends AlertHandlerModel {\n\tconstructor(alertMessages) {\n\t\tsuper();\n\t\tthis.alertMessages = alertMessages;\n\t}\n\n\t/**\n\t * Show \"Billing Address is not Supported\" error\n\t */\n\tshowBillingAddressIsNotSupportedError() {\n\t\tthis.showError(this.alertMessages.PAYPAL_BILLING_ADDRESS_NOT_SUPPORTED);\n\t}\n\n\t/**\n\t * Shows \"Zero amount\" error\n\t */\n\tshowZeroAmountError() {\n\t\tthis.showError(this.alertMessages.CUSTOM_PAYPAL_ZERO_AMOUNT_ERROR);\n\t}\n}\n\nmodule.exports = PaypalAlertHandlerModel;\n","'use strict';\n\n/* global paypal braintree $ */\n\nlet btPayPalCheckoutInstancePromise;\n\n/**\n * Function creates PayPal Checkout instance\n * @param {Promise} btClientInstancePromise BT Client Instance Promise\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model. Is needed to have customize CheckoutInstance generation\n * depending on PayPalPaymentProcessing instance configs\n * @returns {Promise} Promise with PayPal Checkout Instance\n */\nfunction createPayPalCheckoutInstance(\n\tbtClientInstancePromise,\n\tpayPalPaymentProcessingModal\n) {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\tconst payPalCheckoutConfigs =\n\t\t\tpayPalPaymentProcessingModal.payPalCheckoutInstanceConfigs(\n\t\t\t\tbtClientInstance\n\t\t\t);\n\n\t\treturn braintree.paypalCheckout.create(payPalCheckoutConfigs);\n\t});\n}\n\n/**\n * Creates PayPal button style configs\n * @param {Object} btPayPalConfigurations Configurations of PayPal button\n * @returns {Object} Style configs with the right format\n */\nfunction createPayPalStyleConfigurations(btPayPalConfigurations) {\n\tconst payPalButtonStyleConfigs = btPayPalConfigurations.paypalConfig.style;\n\n\treturn {\n\t\theight: payPalButtonStyleConfigs.height,\n\t\tcolor: payPalButtonStyleConfigs.color,\n\t\tshape: payPalButtonStyleConfigs.shape,\n\t\tlayout: payPalButtonStyleConfigs.layout,\n\t\tlabel: payPalButtonStyleConfigs.label,\n\t\ttagline: payPalButtonStyleConfigs.tagline,\n\t};\n}\n\n/**\n * Callback which is came from PayPal configurations. Should trigger only \"enable\" action\n * @param {Object} validateActions Object from Braintree\n */\nconst payPalFormValidationControl = function (validateActions) {\n\tconst isFormValid = true;\n\n\tif (isFormValid) {\n\t\tvalidateActions.enable();\n\t} else {\n\t\tvalidateActions.disable();\n\t}\n};\n\nconst onApprove = function (data, checkoutInstance, paymentProcessingModal) {\n\t// Some logic here before tokenization happens below\n\treturn checkoutInstance.tokenizePayment(data).then(function (payload) {\n\t\tpaymentProcessingModal.onApprovePaymentCallback(payload);\n\t});\n};\n\nconst createOrder = async function (checkoutInstance, paymentProcessingModal) {\n\t// Logic which executed after buyer clicked on the button, and PayPal modal start loading\n\t// \"onOrderCreateCallback\" is used for forming of order data object\n\tconst paymentObject = await paymentProcessingModal.onOrderCreateCallback();\n\n\treturn checkoutInstance.createPayment(paymentObject);\n};\n\n/**\n * Returns PayPal button behavior configs which are used when VaultMode is enabled\n * @param {Promise} btPayPalCheckoutInstance Promise with PayPal Checkout Instance\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model\n * @returns {Object} Object with PayPal button configs & callbacks which will handle PayPal button behavior\n */\nfunction getVaultModeButtonConfigurations(\n\tbtPayPalCheckoutInstance,\n\tbtPayPalConfigurations,\n\tpayPalPaymentProcessingModal\n) {\n\tlet vaultModePayPalButtonConfigs = {};\n\tconst payPalButtonStyleConfigs = createPayPalStyleConfigurations(\n\t\tbtPayPalConfigurations\n\t);\n\n\tvaultModePayPalButtonConfigs = {\n\t\tonClick: function (_, actions) {\n\t\t\treturn payPalPaymentProcessingModal.onPayPalButtonClickCallback(\n\t\t\t\t_,\n\t\t\t\tactions\n\t\t\t);\n\t\t},\n\t\tcreateBillingAgreement: function () {\n\t\t\treturn createOrder(\n\t\t\t\tbtPayPalCheckoutInstance,\n\t\t\t\tpayPalPaymentProcessingModal\n\t\t\t);\n\t\t},\n\t\tonApprove: function (data) {\n\t\t\treturn onApprove(\n\t\t\t\tdata,\n\t\t\t\tbtPayPalCheckoutInstance,\n\t\t\t\tpayPalPaymentProcessingModal\n\t\t\t);\n\t\t},\n\t\tonCancel: function () {\n\t\t\tpayPalPaymentProcessingModal.onCancelPaymentCallback();\n\t\t},\n\n\t\tonError: function (err) {\n\t\t\tpayPalPaymentProcessingModal.onErrorPaymentCallback(err);\n\t\t},\n\t\tstyle: payPalButtonStyleConfigs,\n\t\tvalidate: function (validateActions) {\n\t\t\tpayPalFormValidationControl(validateActions);\n\t\t},\n\t};\n\n\treturn vaultModePayPalButtonConfigs;\n}\n\n/**\n * Returns PayPal button behavior configs which are used when VaultMode is disabled or \"Checkout with Vault\" is enabled\n * @param {Promise} btPayPalCheckoutInstance Promise with PayPal Checkout Instance\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\n * @param {Object} payPalPaymentProcessingModal Instance of PayPalPaymentProcessing model\n * @returns {Object} Object with PayPal button configs & callbacks which will handle PayPal button behavior\n */\nfunction getCheckoutModeButtonConfigurations(\n\tbtPayPalCheckoutInstance,\n\tbtPayPalConfigurations,\n\tpayPalPaymentProcessingModal\n) {\n\tlet vaultModePayPalButtonConfigs = {};\n\tconst payPalButtonStyleConfigs = createPayPalStyleConfigurations(\n\t\tbtPayPalConfigurations\n\t);\n\n\tvaultModePayPalButtonConfigs = {\n\t\tonClick: function (_, actions) {\n\t\t\treturn payPalPaymentProcessingModal.onPayPalButtonClickCallback(\n\t\t\t\t_,\n\t\t\t\tactions\n\t\t\t);\n\t\t},\n\t\tcreateOrder: function () {\n\t\t\treturn createOrder(\n\t\t\t\tbtPayPalCheckoutInstance,\n\t\t\t\tpayPalPaymentProcessingModal\n\t\t\t);\n\t\t},\n\t\tonApprove: function (data) {\n\t\t\treturn onApprove(\n\t\t\t\tdata,\n\t\t\t\tbtPayPalCheckoutInstance,\n\t\t\t\tpayPalPaymentProcessingModal\n\t\t\t);\n\t\t},\n\t\tonCancel: function () {\n\t\t\tpayPalPaymentProcessingModal.onCancelPaymentCallback();\n\t\t},\n\n\t\tonError: function (err) {\n\t\t\tpayPalPaymentProcessingModal.onErrorPaymentCallback(err);\n\t\t},\n\t\tstyle: payPalButtonStyleConfigs,\n\t\tvalidate: function (validateActions) {\n\t\t\tpayPalFormValidationControl(validateActions);\n\t\t},\n\t};\n\n\treturn vaultModePayPalButtonConfigs;\n}\n\n/**\n * Hide PayPal banner block if eligible\n * @returns {void}\n */\nfunction hidePayPalBannerIfEligible() {\n\tconst payPalCreditBtn = paypal.Buttons({\n\t\tfundingSource: paypal.FUNDING.CREDIT,\n\t});\n\tconst isPayPalCreditEligible = payPalCreditBtn.isEligible();\n\tconst $payPalBanner = document.querySelector('.js-pp-banner');\n\n\tif (isPayPalCreditEligible && $payPalBanner) {\n\t\t$payPalBanner.classList.add('d-none');\n\t}\n}\n\n/**\n * Function which result is rendered PayPal button\n * @param {Promise} btClientInstancePromise Client instance promise\n * @param {boolean} isVaultMode \"true\" in case if VaultMode is enabled\n * @param {Object} btPayPalConfigurations Object with PayPal configurations\n * @param {Array} payPalPaymentProcessingModels array of instances for PayPalPaymentProcessing model\n * @returns {Promise} PayPal button\n */\nfunction payPalButtonRendering(\n\tbtClientInstancePromise,\n\tisVaultMode,\n\tbtPayPalConfigurations,\n\tpayPalPaymentProcessingModels\n) {\n\t// Get ppModel to identify the flow and create sdk config\n\tconst ppPaymentProcessingModel = payPalPaymentProcessingModels.find(Boolean);\n\n\tif (!btPayPalCheckoutInstancePromise) {\n\t\t// In case if paypal SDK is loaded only for credit messages, we need to delete it\n\t\t// and load again to avoid getting unhandled errors in console\n\t\tif (window.isPayPalCreditMessageLoaded) {\n\t\t\tdelete window.paypal;\n\t\t}\n\n\t\tbtPayPalCheckoutInstancePromise = createPayPalCheckoutInstance(\n\t\t\tbtClientInstancePromise,\n\t\t\tppPaymentProcessingModel\n\t\t);\n\t}\n\n\tfunction getPayPalButtonConfig(\n\t\tchangePMButtonEnabled,\n\t\tvaultMode,\n\t\tbtPayPalCheckoutInstance,\n\t\tbtPayPalConfig,\n\t\tpayPalPaymentProcessingModel\n\t) {\n\t\tif (changePMButtonEnabled) {\n\t\t\treturn getCheckoutModeButtonConfigurations(\n\t\t\t\tbtPayPalCheckoutInstance,\n\t\t\t\tbtPayPalConfig,\n\t\t\t\tpayPalPaymentProcessingModel\n\t\t\t);\n\t\t}\n\n\t\tif (vaultMode) {\n\t\t\treturn getVaultModeButtonConfigurations(\n\t\t\t\tbtPayPalCheckoutInstance,\n\t\t\t\tbtPayPalConfig,\n\t\t\t\tpayPalPaymentProcessingModel\n\t\t\t);\n\t\t}\n\n\t\treturn getCheckoutModeButtonConfigurations(\n\t\t\tbtPayPalCheckoutInstance,\n\t\t\tbtPayPalConfig,\n\t\t\tpayPalPaymentProcessingModel\n\t\t);\n\t}\n\n\treturn btPayPalCheckoutInstancePromise.then(function (\n\t\tbtPayPalCheckoutInstance\n\t) {\n\t\tlet paypalButtonSdkUrlConfigs = null;\n\n\t\tconst changePMButtonEnabled =\n\t\t\tppPaymentProcessingModel.changePMButtonEnabled;\n\n\t\tif (changePMButtonEnabled) {\n\t\t\tpaypalButtonSdkUrlConfigs =\n\t\t\t\tppPaymentProcessingModel.payPalCheckoutSdkConfigs();\n\t\t} else if (isVaultMode) {\n\t\t\tpaypalButtonSdkUrlConfigs =\n\t\t\t\tppPaymentProcessingModel.payPalVaultSdkConfigs();\n\t\t\t// If checkout mode (single use token)\n\t\t} else {\n\t\t\tpaypalButtonSdkUrlConfigs =\n\t\t\t\tppPaymentProcessingModel.payPalCheckoutSdkConfigs();\n\t\t}\n\n\t\t// PayPal button loading\n\t\tif (!window.isPayPalSDKLoaded) {\n\t\t\t// We pass params to customize PayPal SDK loading.\n\t\t\tbtPayPalCheckoutInstance\n\t\t\t\t.loadPayPalSDK(paypalButtonSdkUrlConfigs)\n\t\t\t\t.then(function () {\n\t\t\t\t\twindow.isPayPalSDKLoaded = true;\n\n\t\t\t\t\t// Loop through instances and render PP button\n\t\t\t\t\tpayPalPaymentProcessingModels.forEach(\n\t\t\t\t\t\t(payPalPaymentProcessingModel) => {\n\t\t\t\t\t\t\tconst paypalButtonConfigs = getPayPalButtonConfig(\n\t\t\t\t\t\t\t\tchangePMButtonEnabled,\n\t\t\t\t\t\t\t\tisVaultMode,\n\t\t\t\t\t\t\t\tbtPayPalCheckoutInstance,\n\t\t\t\t\t\t\t\tbtPayPalConfigurations,\n\t\t\t\t\t\t\t\tpayPalPaymentProcessingModel\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// eslint-disable-next-line new-cap\n\t\t\t\t\t\t\tpaypal\n\t\t\t\t\t\t\t\t.Buttons(paypalButtonConfigs)\n\t\t\t\t\t\t\t\t.render(payPalPaymentProcessingModel.payPalButtonSelector);\n\n\t\t\t\t\t\t\thidePayPalBannerIfEligible();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t} else {\n\t\t\t// In case if PayPal SDK was already loaded (with custom parameters), we can simply load PP buttons\n\t\t\tpayPalPaymentProcessingModels.forEach((payPalPaymentProcessingModel) => {\n\t\t\t\tconst paypalButtonConfigs = getPayPalButtonConfig(\n\t\t\t\t\tchangePMButtonEnabled,\n\t\t\t\t\tisVaultMode,\n\t\t\t\t\tbtPayPalCheckoutInstance,\n\t\t\t\t\tbtPayPalConfigurations,\n\t\t\t\t\tpayPalPaymentProcessingModel\n\t\t\t\t);\n\n\t\t\t\t// eslint-disable-next-line new-cap\n\t\t\t\tpaypal\n\t\t\t\t\t.Buttons(paypalButtonConfigs)\n\t\t\t\t\t.render(payPalPaymentProcessingModel.payPalButtonSelector);\n\t\t\t});\n\t\t}\n\t});\n}\n\nmodule.exports = {\n\tpayPalButtonRendering,\n};\n","'use strict';\n\nconst ApmaModel = require('../models/apma');\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\nconst helper = require('../../helper');\n\n/**\n * Function which initiate PayPal functionality on the Account Page\n * @param {Object} btClientInstancePromise BT Client Instance promise\n */\nfunction init(btClientInstancePromise) {\n\tconst payPalButtonSelector = '#js-apma-button-paypal';\n\tconst $payPalButton = document.querySelector(payPalButtonSelector);\n\n\tif ($payPalButton) {\n\t\tconst redirectUrl = $payPalButton.getAttribute('data-redirect-url');\n\t\tconst isAccountPage = redirectUrl\n\t\t\t.toLowerCase()\n\t\t\t.includes(window.braintreeConstants.PAGE_FLOW_ACCOUNT);\n\t\tconst addressObject = helper.tryParseJSON(\n\t\t\t$payPalButton.getAttribute('data-address-object')\n\t\t);\n\t\tconst payPalConfigurations = helper.tryParseJSON(\n\t\t\t$payPalButton.getAttribute('data-braintree-config')\n\t\t);\n\t\tconst addPayPalAccountUrl = $payPalButton.getAttribute(\n\t\t\t'data-paypal-add-account-handler'\n\t\t);\n\n\t\tconst errorMessages = payPalConfigurations.messages;\n\n\t\tconst alertHandler = new PaypalAlertHandlerModel(errorMessages);\n\t\tconst PayPalAPMA = new ApmaModel(\n\t\t\talertHandler,\n\t\t\tbtClientInstancePromise,\n\t\t\tpayPalButtonSelector,\n\t\t\tpayPalConfigurations,\n\t\t\t{\n\t\t\t\taddPayPalAccountUrl,\n\t\t\t\taddressObject,\n\t\t\t\tisAccountPage,\n\t\t\t\tredirectUrl,\n\t\t\t}\n\t\t);\n\n\t\tPayPalAPMA.initPayment();\n\t\tPayPalAPMA.initAddButtonEvent();\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\nfunction showPayPalStaticImageButton() {\n\tconst $staticImage = document.getElementById('js-cwpp-static-image');\n\n\tif ($staticImage) {\n\t\t$staticImage.classList.remove('d-none');\n\t}\n}\n\nfunction isContainerExist() {\n\tif (!document.getElementById('js-cwpp-button')) {\n\t\tshowPayPalStaticImageButton();\n\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Connect with PayPal\n * @link {https://developer.paypal.com/docs/log-in-with-paypal/integrate/generate-button}\n */\nfunction initConnectWithPayPal() {\n\tconst $container = document.getElementById('js-cwpp-button');\n\n\tif (!isContainerExist()) {\n\t\treturn;\n\t}\n\n\tconst MIN_NUMBER_OF_PARAMETERS = 8;\n\tconst parameters = helper.tryParseJSON(\n\t\t$container.getAttribute('data-parameters')\n\t);\n\n\tif (\n\t\t!(\n\t\t\twindow.paypal && Object.keys(parameters).length > MIN_NUMBER_OF_PARAMETERS\n\t\t)\n\t) {\n\t\tshowPayPalStaticImageButton();\n\n\t\treturn;\n\t}\n\n\twindow.paypal.use(['login'], function (login) {\n\t\tlogin.render(parameters);\n\t});\n}\n\n/**\n * Function which initiate PayPal functionality on the Login Page\n */\nfunction init() {\n\tinitConnectWithPayPal();\n}\n\nmodule.exports = {\n\tinit,\n\tisContainerExist,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * Init add new PayPal account button\n * @param {Object} PayPalAccount PayPal Account model instance\n */\nfunction initAddNewPayPalAccountEvent(PayPalAccount) {\n\tconst payPalAccountPageHelper = require('../helpers/payPalAccountPage');\n\tconst $addNewPayPalAccountButton = document.querySelector(\n\t\t'.js-add-paypal-account'\n\t);\n\n\t$addNewPayPalAccountButton.addEventListener('click', function () {\n\t\tpayPalAccountPageHelper.showPayPalAccountBtn();\n\n\t\tif (!window.accountPayPalButtonInited) {\n\t\t\twindow.accountPayPalButtonInited = true;\n\t\t\tPayPalAccount.initPayment();\n\t\t}\n\t});\n}\n\n/**\n * Function which initiate PayPal functionality on the Account Page\n * @param {Object} btClientInstancePromise BT Client Instance promise\n */\nfunction init(btClientInstancePromise) {\n\tconst payPalButtonSelector =\n\t\t'.js-braintree-account-paypal-button-wrapper .js-braintree-account-paypal-button';\n\tconst $payPalButton = document.querySelector(payPalButtonSelector);\n\n\tif ($payPalButton) {\n\t\tconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\n\t\tconst PayPalAccountModel = require('../models/payPalAccount');\n\n\t\tconst payPalConfigurations = helper.tryParseJSON(\n\t\t\t$payPalButton.getAttribute('data-braintree-config')\n\t\t);\n\t\tconst addPayPalAccountUrl = window.braintreeUrls.paypalAddAccountHandlerUrl;\n\n\t\tconst $csrfToken = document.querySelector(\n\t\t\t'.js-braintree-account-paypal-button-wrapper #csrf_token'\n\t\t);\n\t\tconst $loaderContainer = document.getElementById(\n\t\t\t'braintreePayPalAccLoader'\n\t\t);\n\n\t\t// Init params for AccountErrorHandling model\n\t\tconst errorMessages = payPalConfigurations.messages;\n\n\t\tconst alertHandler = new PaypalAlertHandlerModel(errorMessages);\n\t\tconst PayPalAccount = new PayPalAccountModel(\n\t\t\talertHandler,\n\t\t\tbtClientInstancePromise,\n\t\t\tpayPalButtonSelector,\n\t\t\tpayPalConfigurations,\n\t\t\t$csrfToken,\n\t\t\taddPayPalAccountUrl,\n\t\t\t$loaderContainer\n\t\t);\n\n\t\tinitAddNewPayPalAccountEvent(PayPalAccount);\n\t\tPayPalAccount.initRemovePayPalAccountEvent();\n\t\tPayPalAccount.initMakeDefaultPayPalAccountEvent();\n\t} else {\n\t\tconst $allRemovePayPalAccountButtons = document.querySelectorAll(\n\t\t\t'.js-paypal-accounts .js-remove-bt-payment'\n\t\t);\n\n\t\t$allRemovePayPalAccountButtons.forEach((btn) =>\n\t\t\tbtn.addEventListener('click', helper.removeBtPayment)\n\t\t);\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst PRICE_SELECTOR = '.price .sales .value';\nconst MINI_CART_QUANTITY_SELECTOR = '.minicart-quantity';\nconst PRODUCT_STATUS_UPDATE = 'product:statusUpdate';\nconst ADD_TO_CART_BTN_SELECTOR = '.js-add-to-cart, .js-add-to-cart-global';\nconst PAYPAL_BANNER_SELECTOR = '.js-pp-banner';\n\n/**\n * Hide PayPal button\n * @param {Object} $payPalButton PayPal button js container\n */\nfunction hidePayPalButton($payPalButton) {\n\t$payPalButton.style.display = 'none';\n}\n\n/**\n * Show PayPal button\n * @param {Object} $payPalButton PayPal button js container\n */\nfunction showPayPalButton($payPalButton) {\n\t$payPalButton.style.display = '';\n}\n\n/**\n * Check if PDP product price is zero\n * @returns {boolean} \"true\" in case if PDP product price is zero\n */\nfunction isZeroPdpProductPrice() {\n\tconst $productPriceSelector = document.querySelector(PRICE_SELECTOR);\n\n\tif ($productPriceSelector) {\n\t\tconst price = parseInt($productPriceSelector.getAttribute('content'), 0);\n\n\t\treturn price <= 0;\n\t}\n\n\treturn true;\n}\n\n/**\n * Is add to cart button disabled\n * @returns {boolean} \"true\" in case if add to cart button disabled\n */\nfunction isAddToCartButtonDisabled() {\n\tconst $addToCartButton = document.querySelector(\n\t\t'.js-add-to-cart, .js-add-to-cart-global'\n\t);\n\n\treturn $addToCartButton.disabled;\n}\n\n/**\n * Return mini cart quantity\n * @param {Object} $miniCartQuantitySelector Mini cart quantity selector\n * @returns {Int} Quantity\n */\nfunction getMiniCartQuantity($miniCartQuantitySelector) {\n\tlet quantity = null;\n\n\tif ($miniCartQuantitySelector) {\n\t\tquantity = parseInt($miniCartQuantitySelector.textContent, 0);\n\t}\n\n\treturn quantity;\n}\n\n/**\n * Check if basket is empty\n * @returns {boolean} \"true\" in case if basket is not empty\n */\nfunction isBasketNotEmpty() {\n\tconst miniCartQuantityElement = document.querySelector(\n\t\tMINI_CART_QUANTITY_SELECTOR\n\t);\n\n\treturn getMiniCartQuantity(miniCartQuantityElement) !== 0;\n}\n\n/**\n * Check if current total basket price is zero\n * @returns {boolean} \"true\" in case if current total basket price is zero\n */\nfunction isCurrentTotalBasketPriceZero() {\n\tconst $basketTotalAmount = document.querySelector('.js-sub-total');\n\n\tif ($basketTotalAmount) {\n\t\tconst basketTotalAmount = $basketTotalAmount.textContent.slice(1);\n\n\t\treturn parseInt(basketTotalAmount, 10) === 0;\n\t}\n\n\treturn false;\n}\n\n/**\n * Updates PayPal credit message amount\n * @param {Object} productData - product info after update\n * @param {Element} $creditMessage - credit message element\n * @returns {void}\n */\nfunction updateCreditMessageAmount(productData, $creditMessage) {\n\tconst { price, selectedQuantity } = productData.data?.product || productData;\n\tconst productPrice = price.max?.sales?.value || price.sales.value;\n\n\tconst newPrice = parseFloat(productPrice) * parseFloat(selectedQuantity);\n\n\t$creditMessage.setAttribute('data-pp-amount', newPrice);\n}\n\n/**\n * Show or hide PayPal button\n * @param {Object} paypalMinicartButton paypal button js container\n */\nfunction paypalMinicartButtonBehavior(paypalMinicartButton) {\n\tif (!isCurrentTotalBasketPriceZero()) {\n\t\tshowPayPalButton(paypalMinicartButton);\n\t} else {\n\t\thidePayPalButton(paypalMinicartButton);\n\t}\n}\n\n/**\n * Handles PP credit messages behavior on PDP\n * @returns {void}\n */\nfunction initPaypalCreditMessagesBehaviorOnPdp() {\n\t$('body').on('product:afterAttributeSelect', function (_, productData) {\n\t\tconst $creditMessage = document.querySelector(PAYPAL_BANNER_SELECTOR);\n\n\t\t// If PayPal credit message is available, then update credit message amount\n\t\tif ($creditMessage) {\n\t\t\tupdateCreditMessageAmount(productData, $creditMessage);\n\t\t}\n\t});\n}\n\n/**\n * Handles PP credit messages behavior on PDP for Product bandle\n * @returns {void}\n */\nfunction initPaypalCreditMessagesBehaviorOnPdpBundle() {\n\tconst $price = document.querySelector(PRICE_SELECTOR);\n\tconst $quantitySelector = document.querySelector('.quantity-select');\n\tconst $creditMessage = document.querySelector(PAYPAL_BANNER_SELECTOR);\n\n\tif ($creditMessage) {\n\t\t$quantitySelector.addEventListener('change', (event) => {\n\t\t\tconst price = parseFloat($price.getAttribute('content'));\n\t\t\tconst quantity = parseFloat(event.target.value);\n\n\t\t\tconst newPrice = price * quantity;\n\n\t\t\t$creditMessage.setAttribute('data-pp-amount', newPrice);\n\t\t});\n\t}\n}\n\n/**\n * Handles PP credit messages behavior on PDP for Product set\n * @returns {void}\n */\nfunction initPaypalCreditMessagesBehaviorOnPdpSet() {\n\t$('body').on('product:afterAttributeSelect', function (_, productData) {\n\t\tconst $productIds = document.querySelectorAll('.product-id');\n\t\tconst $targerProduct = Array.from($productIds).find(\n\t\t\t(el) => el.textContent === productData.data.product.id\n\t\t);\n\t\tconst $setItemContainer =\n\t\t\t$targerProduct && $targerProduct.closest('.set-item');\n\t\tconst $creditMessage =\n\t\t\t$setItemContainer &&\n\t\t\t$setItemContainer.querySelector(PAYPAL_BANNER_SELECTOR);\n\n\t\t// If PayPal credit message is available, then update credit message amount\n\t\tif ($creditMessage) {\n\t\t\tupdateCreditMessageAmount(productData, $creditMessage);\n\t\t}\n\t});\n}\n\n/**\n * Handles PP button behavior on PDP\n * @param {Object} $payPalButton - paypal button element\n * @returns {void}\n */\nfunction initPaypalButtonBehaviorOnPdp($payPalButton) {\n\tlet addToCartButtonDisabled = isAddToCartButtonDisabled();\n\tlet zeroProductPrice = isZeroPdpProductPrice();\n\tlet basketNotEmpty = isBasketNotEmpty();\n\n\tif (addToCartButtonDisabled || zeroProductPrice || basketNotEmpty) {\n\t\thidePayPalButton($payPalButton);\n\t}\n\n\t$('body').on('product:afterAddToCart', function () {\n\t\thidePayPalButton($payPalButton);\n\t});\n\n\t// Case when buyer remove product from Cart\n\t$('body').on('cart:update', function () {\n\t\tconst addToCartButtonEnabled = !isAddToCartButtonDisabled();\n\n\t\tzeroProductPrice = isZeroPdpProductPrice();\n\t\tbasketNotEmpty = isBasketNotEmpty();\n\n\t\tif (!basketNotEmpty && addToCartButtonEnabled && !zeroProductPrice) {\n\t\t\tshowPayPalButton($payPalButton);\n\t\t} else {\n\t\t\thidePayPalButton($payPalButton);\n\t\t}\n\t});\n\n\t// When buyer change some attribute of the product on PDP\n\t$('body').on(PRODUCT_STATUS_UPDATE, function () {\n\t\taddToCartButtonDisabled = isAddToCartButtonDisabled();\n\t\tzeroProductPrice = isZeroPdpProductPrice();\n\t\tbasketNotEmpty = isBasketNotEmpty();\n\n\t\tif (addToCartButtonDisabled || zeroProductPrice || basketNotEmpty) {\n\t\t\thidePayPalButton($payPalButton);\n\t\t} else {\n\t\t\tshowPayPalButton($payPalButton);\n\t\t}\n\t});\n}\n\n/**\n * Hides all PayPal buttons on Set.\n * @param {string} selector - The selector for the PayPal button.\n * @returns {void}\n */\nfunction hideAllPayPalButtonsOnSet(selector) {\n\tconst addToCartButtons = document.querySelectorAll(ADD_TO_CART_BTN_SELECTOR);\n\n\taddToCartButtons.forEach((btn) => {\n\t\tconst paypalButton = btn\n\t\t\t.closest('.attributes, .prices-add-to-cart-actions')\n\t\t\t.querySelector(selector);\n\n\t\thidePayPalButton(paypalButton);\n\t});\n}\n\n/**\n * Handling PVP button behavior on Quick View\n * @param {Object} $payPalButton - paypal button element\n * @returns {void}\n */\nfunction initPaypalButtonBehaviorOnPvp($payPalButton) {\n\tconst isProductReadyToOrderElement = document.querySelector(\n\t\t'.js-is-show-pp-button'\n\t);\n\tconst isProductReadyToOrder =\n\t\tisProductReadyToOrderElement &&\n\t\tisProductReadyToOrderElement.value === 'true';\n\n\tlet addToCartButtonDisabled = isAddToCartButtonDisabled();\n\tlet zeroProductPrice = isZeroPdpProductPrice();\n\tlet basketNotEmpty = isBasketNotEmpty();\n\n\tif (\n\t\taddToCartButtonDisabled ||\n\t\tzeroProductPrice ||\n\t\tbasketNotEmpty ||\n\t\t!isProductReadyToOrder\n\t) {\n\t\thidePayPalButton($payPalButton);\n\t}\n\n\t$('body').on(PRODUCT_STATUS_UPDATE, function () {\n\t\tbasketNotEmpty = isBasketNotEmpty();\n\t\taddToCartButtonDisabled = isAddToCartButtonDisabled();\n\t\tzeroProductPrice = isZeroPdpProductPrice();\n\n\t\tif (addToCartButtonDisabled || zeroProductPrice || basketNotEmpty) {\n\t\t\thidePayPalButton($payPalButton);\n\t\t} else {\n\t\t\tshowPayPalButton($payPalButton);\n\t\t}\n\t});\n}\n\n/**\n * Handling PP button behavior on Product Set\n * @param {string} ppBtnSelector - selector for PP buttons on product set\n * @returns {void}\n */\nfunction initPaypalButtonBehaviorOnSet(ppBtnSelector) {\n\tconst PP_BTN_CONTAINER_SELECTOR =\n\t\t'.attributes, .prices-add-to-cart-actions, .global-availability';\n\tconst addToCartButtons = document.querySelectorAll(ADD_TO_CART_BTN_SELECTOR);\n\n\tlet basketNotEmpty = isBasketNotEmpty();\n\n\taddToCartButtons.forEach((btn) => {\n\t\tconst paypalButton = btn\n\t\t\t.closest(PP_BTN_CONTAINER_SELECTOR)\n\t\t\t.querySelector(ppBtnSelector);\n\t\tconst isProductReadyToOrderElement = btn\n\t\t\t.closest(PP_BTN_CONTAINER_SELECTOR)\n\t\t\t.querySelector('.js-is-show-pp-button');\n\t\tconst isProductReadyToOrder =\n\t\t\tisProductReadyToOrderElement &&\n\t\t\tisProductReadyToOrderElement.value === 'true';\n\n\t\tconst prices = document.querySelectorAll(PRICE_SELECTOR);\n\n\t\tlet isWrongAmount;\n\n\t\tif (prices) {\n\t\t\tisWrongAmount = Array.from(prices).some((price) => {\n\t\t\t\treturn parseFloat(price.getAttribute('content')) <= 0;\n\t\t\t});\n\t\t}\n\n\t\tif (\n\t\t\t!basketNotEmpty &&\n\t\t\t!isWrongAmount &&\n\t\t\tisProductReadyToOrder &&\n\t\t\t!btn.disabled\n\t\t) {\n\t\t\tshowPayPalButton(paypalButton);\n\t\t} else {\n\t\t\thidePayPalButton(paypalButton);\n\t\t}\n\t});\n\n\t$('body').on(PRODUCT_STATUS_UPDATE, function (event) {\n\t\tconst addToCartButton = event.target;\n\n\t\tconst prices = document.querySelectorAll(PRICE_SELECTOR);\n\t\tconst paypalButton = addToCartButton\n\t\t\t.closest(PP_BTN_CONTAINER_SELECTOR)\n\t\t\t.querySelector(ppBtnSelector);\n\n\t\tlet isWrongAmount;\n\n\t\tbasketNotEmpty = isBasketNotEmpty();\n\n\t\tif (prices) {\n\t\t\tisWrongAmount = Array.from(prices).some((price) => {\n\t\t\t\treturn parseFloat(price.getAttribute('content')) <= 0;\n\t\t\t});\n\t\t}\n\n\t\tif (!basketNotEmpty && !isWrongAmount && !addToCartButton.disabled) {\n\t\t\tshowPayPalButton(paypalButton);\n\t\t} else {\n\t\t\thidePayPalButton(paypalButton);\n\t\t}\n\t});\n}\n\n/**\n * Handles PayPal button behavior on PDP for Product set.\n * @param {string} selector - The selector for the PayPal button.\n * @returns {void}\n */\nfunction initPaypalButtonBehaviorOnPdpSet(selector) {\n\tinitPaypalButtonBehaviorOnSet(selector);\n\n\t$('body').on('product:afterAddToCart', function () {\n\t\thideAllPayPalButtonsOnSet(selector);\n\t});\n\n\t// Case when buyer remove product from Cart\n\t$('body').on('cart:update', function () {\n\t\tconst addToCartButtons = document.querySelectorAll(\n\t\t\tADD_TO_CART_BTN_SELECTOR\n\t\t);\n\t\tconst basketNotEmpty = isBasketNotEmpty();\n\n\t\taddToCartButtons.forEach((btn) => {\n\t\t\tconst paypalButton = btn\n\t\t\t\t.closest('.attributes, .prices-add-to-cart-actions')\n\t\t\t\t.querySelector(selector);\n\n\t\t\tconst prices = document.querySelectorAll(PRICE_SELECTOR);\n\n\t\t\tlet isWrongAmount;\n\n\t\t\tif (prices) {\n\t\t\t\tisWrongAmount = Array.from(prices).some((price) => {\n\t\t\t\t\treturn parseFloat(price.getAttribute('content')) <= 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!basketNotEmpty && !isWrongAmount && !btn.disabled) {\n\t\t\t\tshowPayPalButton(paypalButton);\n\t\t\t} else {\n\t\t\t\thidePayPalButton(paypalButton);\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Init PayPal button display behavior. This code is handle only PayPal button on PVP page\n * @returns {void}\n */\nfunction initProductViewPage() {\n\tconst PP_BUTTONS_SELECTOR =\n\t\t'.js-braintree-pvp-button, .js-braintree-pvp-button-global';\n\n\tconst paypalButton = document.querySelector(\n\t\t'.quick-view-dialog .js-braintree-pvp-button-global'\n\t);\n\tconst isProductSet = Boolean(document.querySelector('.set-items'));\n\n\tif (isProductSet) {\n\t\tinitPaypalButtonBehaviorOnSet(PP_BUTTONS_SELECTOR);\n\t} else if (paypalButton) {\n\t\tinitPaypalButtonBehaviorOnPvp(paypalButton);\n\t}\n}\n\n/**\n * Init PayPal button display behavior on PDP.\n */\nfunction initProductPage() {\n\tconst PP_BUTTONS_SELECTOR =\n\t\t'.js-braintree-pdp-button, .js-braintree-pdp-button-global';\n\n\tconst paypalButton = document.querySelector(PP_BUTTONS_SELECTOR);\n\tconst paypalCreditBanner = document.querySelector(PAYPAL_BANNER_SELECTOR);\n\tconst isProductSet = Boolean(document.querySelector('.set-items'));\n\tconst isProductBundle = Boolean(document.querySelector('.product-bundle'));\n\n\tif (isProductSet) {\n\t\tinitPaypalButtonBehaviorOnPdpSet(PP_BUTTONS_SELECTOR);\n\t} else if (paypalButton) {\n\t\tinitPaypalButtonBehaviorOnPdp(paypalButton);\n\t}\n\n\tif (paypalCreditBanner) {\n\t\tif (isProductSet) {\n\t\t\tinitPaypalCreditMessagesBehaviorOnPdpSet();\n\t\t} else if (isProductBundle) {\n\t\t\tinitPaypalCreditMessagesBehaviorOnPdpBundle();\n\t\t} else {\n\t\t\tinitPaypalCreditMessagesBehaviorOnPdp();\n\t\t}\n\t}\n}\n\nmodule.exports = {\n\tinitProductPage,\n\tinitProductViewPage,\n\tpaypalMinicartButtonBehavior,\n};\n","'use strict';\n\nconst PayPalCartModel = require('../models/payPalCartModel');\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\nconst helper = require('../../helper');\n\n/**\n * Initialize Cart page PayPal button\n * @param {Promise} clientInstancePromise Client instance promise\n */\nfunction init(clientInstancePromise) {\n\tconst payPalButtonSelector = '.cart-page .js-braintree-paypal-cart-button';\n\tconst $payPalButton = document.querySelector(payPalButtonSelector);\n\tconst payPalConfigurations = helper.tryParseJSON(\n\t\t$payPalButton.getAttribute('data-braintree-config')\n\t);\n\n\tconst $csrfToken = document.querySelector(\n\t\t'.js-braintree-cart-paypal-buttons-wrap #csrf_token'\n\t);\n\tconst $loaderContainer = document.querySelector(\n\t\t'.js-braintree-paypal-loader'\n\t);\n\n\tconst alertHandler = new PaypalAlertHandlerModel(\n\t\tpayPalConfigurations.messages\n\t);\n\tconst PayPalExpress = new PayPalCartModel(\n\t\talertHandler,\n\t\tclientInstancePromise,\n\t\tpayPalButtonSelector,\n\t\tpayPalConfigurations,\n\t\t$csrfToken,\n\t\t$loaderContainer\n\t);\n\n\t// Generate Fraud Data if enabled\n\tPayPalExpress.generateFraudData();\n\t// Init PayPal button\n\tPayPalExpress.initPayment();\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst PayPalCheckoutModel = require('../models/payPalCheckoutModel');\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\nconst payPalAccountList = require('./payPalList');\nconst helper = require('../../helper');\n\nlet braintreeClientInstancePromise;\nlet payPalConfigs;\n\n/**\n * Initialize Checkout PayPal button functionality\n * @param {Promise} btClientInstancePromise BT Client Instance promise\n * @param {Object} payPalConfigurations PayPal checkout configurations object\n */\nfunction initCheckout(btClientInstancePromise, payPalConfigurations) {\n\tconst payPalButtonSelector = '.js-braintree-paypal-billing-button';\n\tconst $continueButton = document.querySelector('button.submit-payment');\n\n\tconst $loaderContainer = document.querySelector(\n\t\t'.js-braintree-paypal-loader'\n\t);\n\n\tconst alertHandler = new PaypalAlertHandlerModel(\n\t\tpayPalConfigurations.messages\n\t);\n\tconst PayPalCheckoutPayment = new PayPalCheckoutModel(\n\t\talertHandler,\n\t\tbtClientInstancePromise,\n\t\tpayPalButtonSelector,\n\t\tpayPalConfigurations,\n\t\t$continueButton,\n\t\t$loaderContainer\n\t);\n\n\t// Generate Fraud Data if enabled\n\tPayPalCheckoutPayment.generateFraudData();\n\t// Init account list\n\tpayPalAccountList.init(PayPalCheckoutPayment.fraudDataPromise);\n\t// Init PayPal button\n\tPayPalCheckoutPayment.initPayment();\n}\n\n/**\n * Initialize Checkout PayPal button functionality.\n * Additional code was added which is used for total amount extracting which is needed for \"Change Payment Method button\" feature\n * @param {Promise} btClientInstancePromise BT Client Instance promise\n */\nfunction init(btClientInstancePromise) {\n\tconst $payPalButton = document.querySelector(\n\t\t'.js-braintree-paypal-billing-button'\n\t);\n\tconst $paypalTab = document.querySelector(\n\t\t'.payment-options .nav-item[data-method-id=\"PayPal\"]'\n\t);\n\n\tpayPalConfigs = helper.tryParseJSON(\n\t\t$payPalButton.getAttribute('data-braintree-config')\n\t);\n\tbraintreeClientInstancePromise = btClientInstancePromise;\n\n\tconst sessionPaymentMethodId = payPalConfigs.sessionPaymentMethodId;\n\n\t// To load PayPal button only when buyer click (or from code) on PayPal Checkout tab\n\t$paypalTab.addEventListener('click', function () {\n\t\tconst selectedMethodID = this.dataset.methodId;\n\n\t\tif (selectedMethodID === 'PayPal' && !window.payPalCheckoutWasInited) {\n\t\t\twindow.payPalCheckoutWasInited = true;\n\n\t\t\tinitCheckout(braintreeClientInstancePromise, payPalConfigs);\n\t\t}\n\t});\n\n\t// Case when buyer use 'ChangePM' button\n\t// After click we select PayPal PM and init the rest of PP logic\n\tif (sessionPaymentMethodId === 'PayPal') {\n\t\t$paypalTab.click();\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst payPalSessionAccountComponent = require('./payPalSessionAccount');\nconst payPalStoredBillingAddressComponent = require('./payPalStoredBillingAddress');\nconst {\n\tisVaultModeEnabled,\n\tgetAccountType,\n\tsetNonceInputValue,\n\thideSavePayPalAccountBlock,\n\tdisplaySavePayPalAccountBlock,\n\tdisplayPayPalButton,\n\thidePayPalButon,\n\tdisplayContinueButton,\n\thideContinueButon,\n\tisBuyerAuthenticated,\n\tselectPayPalCheckoutTab,\n\tsetBraintreePayPalEmailInput,\n\thandleStoredAccountsShowing,\n} = require('../helpers/payPalListHelper');\n\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\n\nlet $payPalAccountList;\nlet $continueButton;\nlet $savePaypalAccountCountainer;\nlet $braintreePayPalNonce;\nlet $paypalButton;\nlet $payPalTab;\nlet $braintreePaypalEmail;\n\nconst constantList = {\n\tSESSION_ACCOUNT: 'session_account',\n\tNEW_ACCOUNT: 'new_account',\n\tSTORED_ACCOUNT: 'stored_account',\n};\n\n/**\n * The function which manages what should be done when session/stored/new account was selected from the account dropdown\n * @param {Promise} fraudDataPromise A promise received as a result of generating fraud data\n */\nasync function accountsListChange(fraudDataPromise) {\n\tconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\n\n\tconst accountType = getAccountType($payPalAccountList, constantList);\n\tconst buyerAuthentificated = isBuyerAuthenticated($payPalAccountList);\n\tconst vaultModeEnabled = isVaultModeEnabled($paypalButton);\n\tconst $selectedPayPalAccountOption =\n\t\t$payPalAccountList.options[$payPalAccountList.selectedIndex];\n\n\t$continueButton.removeEventListener(\n\t\t'click',\n\t\tpayPalSessionAccountComponent.removeSessionNonce\n\t);\n\n\t// eslint-disable-next-line default-case\n\tswitch (accountType) {\n\t\t// Buyer selected new PayPal account\n\t\tcase constantList.NEW_ACCOUNT:\n\t\t\tdisplayPayPalButton($paypalButton);\n\t\t\thideContinueButon($continueButton);\n\n\t\t\tif (vaultModeEnabled && buyerAuthentificated) {\n\t\t\t\tdisplaySavePayPalAccountBlock($savePaypalAccountCountainer);\n\t\t\t}\n\n\t\t\tpayPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress(\n\t\t\t\t$selectedPayPalAccountOption\n\t\t\t);\n\n\t\t\tbreak;\n\n\t\t// Buyer selected session account\n\t\tcase constantList.SESSION_ACCOUNT:\n\t\t\tconst storedAccountWithSessionAccountEmail =\n\t\t\t\tbillingFormHelper.getStoredAccountBySesionAccountEmail();\n\t\t\tconst $selectedOption = $payPalAccountList.selectedOptions[0];\n\t\t\tconst selectedOptionNonceValue =\n\t\t\t\t$selectedOption.getAttribute('data-nonce');\n\n\t\t\tsetNonceInputValue($braintreePayPalNonce, selectedOptionNonceValue);\n\t\t\tdisplayContinueButton($continueButton);\n\t\t\thidePayPalButon($paypalButton);\n\n\t\t\t// A case when a buyer re-added a PayPal account that he already had saved (session account\n\t\t\t// has the same email as stored accoutnt)\n\t\t\tif (vaultModeEnabled && buyerAuthentificated) {\n\t\t\t\tif (storedAccountWithSessionAccountEmail) {\n\t\t\t\t\thideSavePayPalAccountBlock($savePaypalAccountCountainer);\n\t\t\t\t} else {\n\t\t\t\t\tdisplaySavePayPalAccountBlock($savePaypalAccountCountainer);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tselectPayPalCheckoutTab($payPalTab);\n\n\t\t\tbreak;\n\n\t\t// Buyer selected stored account\n\t\tcase constantList.STORED_ACCOUNT:\n\t\t\tconst selectedAccountEmail = $selectedPayPalAccountOption.text;\n\n\t\t\tif (vaultModeEnabled) {\n\t\t\t\thideSavePayPalAccountBlock($savePaypalAccountCountainer);\n\t\t\t}\n\n\t\t\tsetNonceInputValue($braintreePayPalNonce, '');\n\t\t\tdisplayContinueButton($continueButton);\n\t\t\thidePayPalButon($paypalButton);\n\n\t\t\tselectPayPalCheckoutTab($payPalTab);\n\t\t\tsetBraintreePayPalEmailInput($braintreePaypalEmail, selectedAccountEmail);\n\n\t\t\t// Display billing address of selected PayPal account\n\t\t\tpayPalStoredBillingAddressComponent.displaySelectedStoredBillingAddress(\n\t\t\t\t$selectedPayPalAccountOption\n\t\t\t);\n\n\t\t\t// Set Device data\n\t\t\tconst fraudData = await fraudDataPromise;\n\n\t\t\tif (!fraudData.fraudDataCollectionDisabled) {\n\t\t\t\tbillingFormHelper.fillFraudDataInput(fraudData);\n\t\t\t}\n\n\t\t\t$continueButton.addEventListener(\n\t\t\t\t'click',\n\t\t\t\tpayPalSessionAccountComponent.removeSessionNonce\n\t\t\t);\n\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Init PayPal Account list functionality\n * @param {Promise} fraudDataPromise A promise received as a result of generating fraud data\n */\nfunction init(fraudDataPromise) {\n\t$payPalAccountList = document.getElementById('braintreePaypalAccountsList');\n\t$savePaypalAccountCountainer = document.getElementById(\n\t\t'braintreeSavePaypalAccountContainer'\n\t);\n\t$braintreePayPalNonce = document.getElementById('braintreePayPalNonce');\n\t$paypalButton = document.querySelector('.js-braintree-paypal-billing-button');\n\t$continueButton = document.querySelector('button.submit-payment');\n\t$payPalTab = document.querySelector('.js-paypal-tab');\n\t$braintreePaypalEmail = document.getElementById('braintreePaypalEmail');\n\n\tconst buyerAuthenticated = isBuyerAuthenticated($payPalAccountList);\n\tconst isSessionPaymentsEnabled =\n\t\twindow.braintreePreferences.isSessionPaymentsEnabled;\n\n\t// Add on change \"account list\" event\n\t$payPalAccountList.addEventListener('change', () =>\n\t\taccountsListChange(fraudDataPromise)\n\t);\n\t// Saves selected billing address from CREDIT_CARD tab\n\tpaymentMethodGeneral.saveSelectedBillingAddressFromPreviousTab();\n\t// Execute \"account list\" change function to setup init values\n\taccountsListChange(fraudDataPromise);\n\t// Check whether buyer has proceeded with the same email which is already stored\n\t// if yes we hide stored account with the same email in dropdown\n\t// if no we show all existent PP accounts in dropdown (stored + new session account)\n\thandleStoredAccountsShowing(buyerAuthenticated, isSessionPaymentsEnabled);\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst PayPalExpressModel = require('../models/payPalExpressModel');\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\nconst paypalMinicartButtonBehavior = require('./payPalButtonDisplayBehavior');\nconst helper = require('../../helper');\n\nconst PAYPAL_BUTTON_SELECTOR =\n\t'.js-paypal-minicart-button .js-braintree-paypal-cart-button';\n\nlet $payPalButton;\n\n/**\n * Init PayPal on the MiniCart Page\n * @returns {void} stop function execution in case if PayPal button wasn't rendered\n */\nfunction initPayPalOnMiniCart() {\n\tconst $paypalMinicartButton = document.querySelector(\n\t\t'.js-paypal-minicart-button'\n\t);\n\n\t// Case when buyer remove product from the Cart\n\t$('body').on('cart:update', function () {\n\t\tpaypalMinicartButtonBehavior.paypalMinicartButtonBehavior(\n\t\t\t$paypalMinicartButton\n\t\t);\n\t});\n\n\tpaypalMinicartButtonBehavior.paypalMinicartButtonBehavior(\n\t\t$paypalMinicartButton\n\t);\n\n\tconst payPalConfigurations = helper.tryParseJSON(\n\t\t$payPalButton.getAttribute('data-braintree-config')\n\t);\n\tconst isPayPalButtonWasInited = helper.tryParseJSON(\n\t\t$payPalButton.getAttribute('data-is-inited')\n\t);\n\n\t// Do not init PayPal button if it was already inited or PayPal configs are empty\n\tif (\n\t\tisPayPalButtonWasInited ||\n\t\ttypeof payPalConfigurations !== 'object' ||\n\t\tpayPalConfigurations === null\n\t) {\n\t\treturn;\n\t}\n\n\tconst $csrfToken = document.querySelector(\n\t\t'.js-braintree-cart-paypal-buttons-wrap #csrf_token'\n\t);\n\tconst $loaderContainer = document.querySelector(\n\t\t'.js-braintree-paypal-loader'\n\t);\n\n\tconst clientInstancePromise =\n\t\tpaymentMethodGeneral.createGeneralClientInstancePromise();\n\n\tconst alertHandler = new PaypalAlertHandlerModel(\n\t\tpayPalConfigurations.messages\n\t);\n\tconst PayPalExpress = new PayPalExpressModel(\n\t\talertHandler,\n\t\tclientInstancePromise,\n\t\tPAYPAL_BUTTON_SELECTOR,\n\t\tpayPalConfigurations,\n\t\t$csrfToken,\n\t\t$loaderContainer\n\t);\n\n\t// Generate Fraud Data if enabled\n\tPayPalExpress.generateFraudData();\n\n\t// Init PayPal button\n\tPayPalExpress.initPayment();\n\n\t// Indicate that PayPal button was already inited.\n\t$payPalButton.setAttribute('data-is-inited', true);\n}\n\n/**\n * Init PayPal button on the MiniCart Page\n */\nfunction init() {\n\tconst $minicartPopover = document.querySelector(\n\t\t'.minicart .js-minicart-product-module'\n\t);\n\n\t// To avoid execution of this code on checkout page\n\tif ($minicartPopover) {\n\t\t// const observer = new MutationObserver(function (mutations) {\n\t\t// \tmutations.forEach(function (mutation) {\n\t\t// \t\tif (mutation.addedNodes.length < 2) {\n\t\t// \t\t\treturn;\n\t\t// \t\t}\n\n\t\t// \t\t$payPalButton = document.querySelector(PAYPAL_BUTTON_SELECTOR);\n\n\t\t// \t\tif ($payPalButton) {\n\t\t// \t\t\tinitPayPalOnMiniCart();\n\t\t// \t\t}\n\t\t// \t});\n\t\t// });\n\n\t\t$payPalButton = document.querySelector(PAYPAL_BUTTON_SELECTOR);\n\t\tif ($payPalButton) {\n\t\t\tinitPayPalOnMiniCart();\n\t\t}\n\t\t// observer.observe($minicartPopover, { childList: true });\n\t}\n\n\t$('body').on('minicart:loadpaypal', function () {\n\t\tconst $minicartPopover = document.querySelector(\n\t\t\t'.minicart .js-minicart-product-module'\n\t\t);\n\t\tif ($minicartPopover) {\n\t\t\t$payPalButton = document.querySelector(PAYPAL_BUTTON_SELECTOR);\n\t\t\tif ($payPalButton) {\n\t\t\t\tinitPayPalOnMiniCart();\n\t\t\t}\n\t\t}\n\t});\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst PayPalProductPageModel = require('../models/payPalProductModel');\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\n\nconst payPalButtonDisplayBehavior = require('./payPalButtonDisplayBehavior');\nconst braintreePayPalSDK = require('../braintreesdk/braintreePayPalSDK');\nconst helper = require('../../helper');\n\n/**\n * Init PayPal button on the Product Page\n * @param {Promise} clientInstancePromise Client Instance Promise\n */\nfunction init(clientInstancePromise) {\n\tconst pvpModels = [];\n\tconst PP_BTN_SELECTOR = '.js-braintree-paypal-cart-button';\n\tconst paypalButtonContainers = document.querySelectorAll(\n\t\t'.js-braintree-pdp-button, .js-braintree-pdp-button-global'\n\t);\n\n\tlet isVaultMode;\n\tlet payPalConfigurations;\n\n\tif (paypalButtonContainers) {\n\t\tpaypalButtonContainers.forEach((container, index) => {\n\t\t\tconst $payPalButton = container.querySelector(PP_BTN_SELECTOR);\n\t\t\tconst $loaderContainer = container.querySelector(\n\t\t\t\t'.js-braintree-paypal-loader'\n\t\t\t);\n\t\t\tconst $csrfToken = container.querySelector(\n\t\t\t\t'.js-braintree-cart-paypal-buttons-wrap #csrf_token'\n\t\t\t);\n\n\t\t\tif ($payPalButton) {\n\t\t\t\t$payPalButton.classList.add(`${PP_BTN_SELECTOR.slice(1)}-${index}-pdp`);\n\n\t\t\t\tconst selector = `.${Array.from($payPalButton.classList).join('.')}`;\n\n\t\t\t\tpayPalConfigurations = helper.tryParseJSON(\n\t\t\t\t\t$payPalButton.getAttribute('data-braintree-config')\n\t\t\t\t);\n\t\t\t\tisVaultMode = payPalConfigurations.options.flow !== 'checkout';\n\n\t\t\t\tconst alertHandler = new PaypalAlertHandlerModel(\n\t\t\t\t\tpayPalConfigurations.messages\n\t\t\t\t);\n\n\t\t\t\tconst PayPalProductPage = new PayPalProductPageModel(\n\t\t\t\t\talertHandler,\n\t\t\t\t\tclientInstancePromise,\n\t\t\t\t\tselector,\n\t\t\t\t\tpayPalConfigurations,\n\t\t\t\t\t$csrfToken,\n\t\t\t\t\t$loaderContainer\n\t\t\t\t);\n\n\t\t\t\t// Generate Fraud Data if enabled\n\t\t\t\tPayPalProductPage.generateFraudData();\n\n\t\t\t\tpvpModels.push(PayPalProductPage);\n\t\t\t}\n\t\t});\n\n\t\t// Init PayPal buttons\n\t\tbraintreePayPalSDK.payPalButtonRendering(\n\t\t\tclientInstancePromise,\n\t\t\tisVaultMode,\n\t\t\tpayPalConfigurations,\n\t\t\tpvpModels\n\t\t);\n\n\t\t// Init behavior for hide/show PayPal button\n\t\tpayPalButtonDisplayBehavior.initProductPage();\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst PayPalProductViewPageModel = require('../models/payPalProductModel');\nconst PaypalAlertHandlerModel = require('../alerthandler/paypalAlertHandlerModel');\n\nconst payPalButtonDisplayBehavior = require('./payPalButtonDisplayBehavior');\nconst braintreePayPalSDK = require('../braintreesdk/braintreePayPalSDK');\nconst helper = require('../../helper');\n\n/**\n * Init PayPal button on the Product View Page\n * @param {Promise} clientInstancePromise Client Instance Promise\n */\nfunction init(clientInstancePromise) {\n\tconst PP_BTN_SELECTOR = '.js-braintree-paypal-cart-button';\n\n\tconst pvpModels = [];\n\n\tlet isVaultMode;\n\tlet payPalConfigurations;\n\n\tconst paypalButtonContainers = document.querySelectorAll(\n\t\t'.quick-view-dialog .js-braintree-pvp-button, .quick-view-dialog .js-braintree-pvp-button-global'\n\t);\n\n\tif (paypalButtonContainers) {\n\t\tpaypalButtonContainers.forEach((container, index) => {\n\t\t\tconst $payPalButton = container.querySelector(PP_BTN_SELECTOR);\n\t\t\tconst $loaderContainer = container.querySelector(\n\t\t\t\t'.js-braintree-paypal-loader'\n\t\t\t);\n\t\t\tconst $csrfToken = container.querySelector(\n\t\t\t\t'.js-braintree-cart-paypal-buttons-wrap #csrf_token'\n\t\t\t);\n\n\t\t\tif ($payPalButton) {\n\t\t\t\t$payPalButton.classList.add(`${PP_BTN_SELECTOR.slice(1)}-${index}-pvp`);\n\n\t\t\t\tconst selector = `.${Array.from($payPalButton.classList).join('.')}`;\n\n\t\t\t\tpayPalConfigurations = helper.tryParseJSON(\n\t\t\t\t\t$payPalButton.getAttribute('data-braintree-config')\n\t\t\t\t);\n\t\t\t\tisVaultMode = payPalConfigurations.options.flow !== 'checkout';\n\n\t\t\t\tconst alertHandler = new PaypalAlertHandlerModel(\n\t\t\t\t\tpayPalConfigurations.messages\n\t\t\t\t);\n\n\t\t\t\tconst PayPalProductViewPage = new PayPalProductViewPageModel(\n\t\t\t\t\talertHandler,\n\t\t\t\t\tclientInstancePromise,\n\t\t\t\t\tselector,\n\t\t\t\t\tpayPalConfigurations,\n\t\t\t\t\t$csrfToken,\n\t\t\t\t\t$loaderContainer\n\t\t\t\t);\n\n\t\t\t\t// Generate Fraud Data if enabled\n\t\t\t\tPayPalProductViewPage.generateFraudData();\n\n\t\t\t\tpvpModels.push(PayPalProductViewPage);\n\t\t\t}\n\t\t});\n\n\t\t// Init PayPal buttons\n\t\tbraintreePayPalSDK.payPalButtonRendering(\n\t\t\tclientInstancePromise,\n\t\t\tisVaultMode,\n\t\t\tpayPalConfigurations,\n\t\t\tpvpModels\n\t\t);\n\n\t\t// Init behavior for hide/show PayPal button\n\t\tpayPalButtonDisplayBehavior.initProductViewPage();\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst payPalSessionAccountHelper = require('../helpers/payPalSessionAccountHelper');\n\n/**\n * Function which remove session nonce and related to the session account data\n */\nfunction removeSessionNonce() {\n\tconst $braintreePayPalNonce = document.getElementById('braintreePayPalNonce');\n\tconst $braintreePaypalAccount = document.getElementById(\n\t\t'braintreePaypalAccount'\n\t);\n\n\tconst sessionOption = helper.getSessionAccountOption({\n\t\tquerySelector: '#braintreePaypalAccountsList',\n\t\tid: 'braintreePaypalAccount',\n\t});\n\n\tif (sessionOption) {\n\t\t$braintreePayPalNonce.value = '';\n\t\t$braintreePaypalAccount.selected = false;\n\n\t\tsessionOption.classList.add('used-paypal-account-hide');\n\t\tsessionOption.classList.remove('used-paypal-account');\n\t\tsessionOption.value = '';\n\t\tsessionOption.text = '';\n\t\tsessionOption.setAttribute('data-session-account', false);\n\t\tsessionOption.setAttribute('data-save', false);\n\n\t\t// Handles a behavior inside PayPal tab, when session PayPal account was deleted\n\t\tpayPalSessionAccountHelper.handlePaypalTabBehavior();\n\t}\n}\n\nmodule.exports = {\n\tremoveSessionNonce,\n};\n","'use strict';\n\n/**\n * Display billing address of passed paypal payment option (of selected paypal payment option)\n * @param {Object} selectedPayPalPayment Selected PayPal payment option\n */\nfunction displaySelectedStoredBillingAddress(selectedPayPalPayment) {\n\tconst paymentMethodGeneralHelper = require('../../../braintree/paymentMethodGeneralHelper');\n\n\tif (selectedPayPalPayment) {\n\t\tconst selectedOptionClassList = selectedPayPalPayment.classList;\n\t\tconst storedPayPalAddressOption = document.querySelector(\n\t\t\t'.stored-billing-address'\n\t\t);\n\n\t\tlet billingAddressAsString;\n\n\t\tif (selectedOptionClassList.contains('js-new-paypal-account')) {\n\t\t\tbillingAddressAsString = selectedPayPalPayment.getAttribute(\n\t\t\t\t'data-billing-address'\n\t\t\t);\n\t\t} else {\n\t\t\tbillingAddressAsString =\n\t\t\t\tpaymentMethodGeneralHelper.getBillingAddressAsString(\n\t\t\t\t\tselectedPayPalPayment\n\t\t\t\t);\n\t\t}\n\n\t\tif (billingAddressAsString) {\n\t\t\tif (storedPayPalAddressOption) {\n\t\t\t\tstoredPayPalAddressOption.text = billingAddressAsString;\n\t\t\t\tstoredPayPalAddressOption.selected = true;\n\t\t\t} else {\n\t\t\t\tpaymentMethodGeneralHelper.createBillingAddressOption(\n\t\t\t\t\t'stored-billing-address',\n\t\t\t\t\tbillingAddressAsString\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\nmodule.exports = {\n\tdisplaySelectedStoredBillingAddress,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * Save PayPal account to DW\n * @param {string} addPayPalAccountUrl add PayPal account url\n * @param {FormData} paymentFormData payment FormData\n * @returns {Promise} response from server\n */\nfunction savePayPalAccount(addPayPalAccountUrl, paymentFormData) {\n\treturn fetch(helper.getUrlWithCsrfToken(addPayPalAccountUrl), {\n\t\tmethod: 'POST',\n\t\tbody: btoa(JSON.stringify(Object.fromEntries(paymentFormData))),\n\t\theaders: { 'Content-Type': 'application/json' },\n\t});\n}\n\n/**\n * Render PayPal account\n * @param {string} renderAccountsUrl render PayPal accounts URL\n * @returns {Promise} promise with html of PayPal account list\n */\nfunction renderPayPalAccounts(renderAccountsUrl) {\n\treturn fetch(renderAccountsUrl);\n}\n\n/**\n * Hide PayPal account button\n */\nfunction hidePaypalAccountBtn() {\n\tconst $addNewPaypalAccountBtn = document.querySelector(\n\t\t'.js-add-paypal-account'\n\t);\n\tconst $paypalAccountButtonWrapper = document.querySelector(\n\t\t'.js-braintree-account-paypal-button-wrapper'\n\t);\n\n\t// Display add new paypal account button\n\t$addNewPaypalAccountBtn.classList.remove('d-none');\n\t// Hide PayPal Account button\n\t$paypalAccountButtonWrapper.classList.add('d-none');\n}\n\n/**\n * Add PayPal accounts html template to the DOM\n * @param {string} accountListTemplate html template with PayPal account list\n */\nfunction addPayPalAccountsToTheTemplate(accountListTemplate) {\n\tconst $payPalAccountsContainer = document.querySelector(\n\t\t'.js-paypal-accounts'\n\t);\n\n\t$payPalAccountsContainer.innerHTML = accountListTemplate;\n}\n\n/**\n * Trigger cart:updates event\n */\nfunction throwCartUpdate() {\n\t$('body').trigger('cart:update');\n}\n\nmodule.exports = {\n\tsavePayPalAccount,\n\trenderPayPalAccounts,\n\thidePaypalAccountBtn,\n\taddPayPalAccountsToTheTemplate,\n\tthrowCartUpdate,\n};\n","'use strict';\n\n/**\n * Show PayPal Account button\n */\nfunction showPayPalAccountBtn() {\n\tconst $addPaypalAccountBtn = document.querySelector('.js-add-paypal-account');\n\tconst $paypalAccountWrapper = document.querySelector(\n\t\t'.js-braintree-account-paypal-button-wrapper'\n\t);\n\n\t$addPaypalAccountBtn.classList.add('d-none');\n\t$paypalAccountWrapper.classList.remove('d-none');\n}\n\nmodule.exports = {\n\tshowPayPalAccountBtn,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\nconst btPaypalAccontSelectorID = 'braintreePaypalAccount';\n\n/**\n * Store payment as session payment\n * @param {string} nonce Nonce\n * @param {string} sessionAccountEmail Session account email\n */\nfunction storePaymentAsSessionPayment(nonce, sessionAccountEmail) {\n\tconst $accountListBlock = document.querySelector(\n\t\t'.js-braintree-used-paypal-account'\n\t);\n\tconst $braintreePaypalNonceInput = document.querySelector(\n\t\t'input[name=braintreePaypalNonce]'\n\t);\n\tconst $sessionPyapalAccount = document.getElementById(\n\t\tbtPaypalAccontSelectorID\n\t);\n\n\tif ($braintreePaypalNonceInput) {\n\t\t$braintreePaypalNonceInput.value = nonce;\n\t}\n\n\t$sessionPyapalAccount.setAttribute('data-session-account', 'true');\n\t$sessionPyapalAccount.setAttribute('data-nonce', nonce);\n\t$sessionPyapalAccount.innerText = sessionAccountEmail;\n\t$sessionPyapalAccount.classList.remove('used-paypal-account-hide');\n\n\t// Show account list block\n\t$accountListBlock.classList.remove('used-paypal-account-hide');\n}\n\n/**\n * Select session paypal accounts.\n * Every time when buyer adds new account, the New Account option is selected (doesn't matter logged in buyer or not)\n */\nfunction setSessionAccountOptionDefault() {\n\tconst $savedPayPalAccountList = document.getElementById(\n\t\t'braintreePaypalAccountsList'\n\t);\n\tconst $sessionPyapalAccount = document.getElementById(\n\t\tbtPaypalAccontSelectorID\n\t);\n\n\tArray.prototype.forEach.call($savedPayPalAccountList, function (element) {\n\t\telement.removeAttribute('selected');\n\t});\n\n\t$sessionPyapalAccount.selected = true;\n}\n\n/**\n * Get stored account by session account email\n * @returns {Object} js container with stored account\n */\nfunction getStoredAccountBySesionAccountEmail() {\n\tconst sessionPaypalAccount = document.getElementById(\n\t\t'braintreePaypalAccount'\n\t);\n\tconst paypalAccountsList = document.getElementById(\n\t\t'braintreePaypalAccountsList'\n\t);\n\tconst sessionEmail = sessionPaypalAccount.value || null;\n\n\treturn Array.apply(null, paypalAccountsList.options).find(function (el) {\n\t\treturn (\n\t\t\tel.getAttribute('data-id') &&\n\t\t\tsessionEmail &&\n\t\t\tsessionEmail === el.innerText.trim()\n\t\t);\n\t});\n}\n\n/**\n * Fill DW billing form with billing address from Bt\n * @param {Object} braintreeAddress Billing address from BT\n * @param {Object} btDetails Details from BT\n * @returns {Object} Object with billing form fields and it's values\n */\nfunction mapBraintreeWithDwBillingAddress(braintreeAddress, btDetails) {\n\tconst $btPaymentMethodWrapper = document.querySelector(\n\t\t'.js-braintree-billing-payment-wrap'\n\t);\n\tconst dwBillingFormFieldNames = helper.tryParseJSON(\n\t\t$btPaymentMethodWrapper.getAttribute('data-billing-form-fields-names')\n\t);\n\n\tdwBillingFormFieldNames.dwfrm_billing_addressFields_firstName =\n\t\tbtDetails.firstName;\n\tdwBillingFormFieldNames.dwfrm_billing_addressFields_lastName =\n\t\tbtDetails.lastName;\n\tdwBillingFormFieldNames.dwfrm_billing_addressFields_address1 =\n\t\tbraintreeAddress.line1;\n\tdwBillingFormFieldNames.dwfrm_billing_addressFields_address2 =\n\t\tbraintreeAddress.line2;\n\tdwBillingFormFieldNames.dwfrm_billing_addressFields_city =\n\t\tbraintreeAddress.city;\n\tdwBillingFormFieldNames.dwfrm_billing_addressFields_postalCode =\n\t\tdecodeURIComponent(braintreeAddress.postalCode);\n\tdwBillingFormFieldNames.dwfrm_billing_addressFields_states_stateCode =\n\t\tbraintreeAddress.state;\n\tdwBillingFormFieldNames.dwfrm_billing_addressFields_country =\n\t\tbraintreeAddress.countryCode;\n\tdwBillingFormFieldNames.dwfrm_billing_contactInfoFields_phone =\n\t\tbtDetails.phone;\n\n\treturn dwBillingFormFieldNames;\n}\n\n/**\n * Create billing address data\n * @param {Object} payloadDetails BT paymload details\n * @returns {Object} Mapped billing data\n */\nfunction createBillingAddressData(payloadDetails) {\n\tconst billingAddress = payloadDetails.billingAddress;\n\n\tbillingAddress.firstName = payloadDetails.firstName;\n\tbillingAddress.lastName = payloadDetails.lastName;\n\tbillingAddress.email = payloadDetails.email;\n\tbillingAddress.phone = payloadDetails.phone;\n\tbillingAddress.countryCodeAlpha2 = billingAddress.countryCode;\n\tbillingAddress.streetAddress = billingAddress.line1;\n\tbillingAddress.extendedAddress = billingAddress.line2;\n\tbillingAddress.locality = billingAddress.city;\n\tbillingAddress.region = billingAddress.state;\n\n\treturn billingAddress;\n}\n\n/**\n * Copy PayPal billing address to DW billing form\n * @param {Object} braintreeBillingAddress Billing address from BT\n * @param {Object} btDetails Details from bt\n */\nfunction copyPayPalBillingAddressToDw(braintreeBillingAddress, btDetails) {\n\tconst $braintreePaypalBillingAddressInput = document.querySelector(\n\t\t'input[name=braintreePaypalBillingAddress]'\n\t);\n\tconst paypalBillingData = mapBraintreeWithDwBillingAddress(\n\t\tbraintreeBillingAddress,\n\t\tbtDetails\n\t);\n\n\t// Store billing address inside hidden input in order to send it to the server and\n\t// proccess with billing address server logic (the logic - billing address can't be overrided by\n\t// buyer. Only PayPal billing address should be used)\n\t$braintreePaypalBillingAddressInput.value = JSON.stringify(paypalBillingData);\n\thelper.updateBillingFormValues(paypalBillingData);\n}\n\n/**\n * Create billig address FormData\n * @param {Object} paypalBillingFormFields PayPal billing form fields\n * @param {Object} billingAddressData Billing address data\n * @returns {FormData} Billing FormData\n */\nfunction createBillingAddressFormData(\n\tpaypalBillingFormFields,\n\tbillingAddressData\n) {\n\treturn helper.createPaymentFormData(paypalBillingFormFields, {\n\t\tfirstName: billingAddressData.firstName,\n\t\tlastName: billingAddressData.lastName,\n\t\taddress1: billingAddressData.streetAddress,\n\t\taddress2: billingAddressData.extendedAddress || '',\n\t\tcity: billingAddressData.locality,\n\t\tpostalCode: decodeURIComponent(billingAddressData.postalCode),\n\t\tstateCode: billingAddressData.state,\n\t\tcountry: billingAddressData.countryCodeAlpha2,\n\t\temail: billingAddressData.email,\n\t\tphone: billingAddressData.phone,\n\t\tpaymentMethod: 'PayPal',\n\t});\n}\n\n/**\n * Fill PayPal payment fields with payment data\n * @param {Object} btDetails Details from BT\n * @param {boolean} isSessionPaymentsEnabled Whether session card or not, depending on Session Payments Enabled pref\n */\nfunction fillPayPalPaymentFields(btDetails, isSessionPaymentsEnabled) {\n\tconst $braintreePaypalEmailInput = document.getElementById(\n\t\t'braintreePaypalEmail'\n\t);\n\tconst $paypalAccountOption = document.getElementById(\n\t\t`${isSessionPaymentsEnabled ? btPaypalAccontSelectorID : 'newPPAccount'}`\n\t);\n\tconst btEmail = btDetails.email;\n\n\t$braintreePaypalEmailInput.value = btEmail;\n\t$paypalAccountOption.value = btEmail;\n\t$paypalAccountOption.innerText = btEmail;\n\n\t// Hide Continue button\n\tif (window.braintreePreferences.isSessionPaymentsEnabled) {\n\t\thelper.continueButtonToggle(false);\n\t}\n}\n\n/**\n * Fill fraud data input with fraud data\n * @param {Object} data Fraud data\n */\nfunction fillFraudDataInput(data) {\n\tconst $braintreePaypalRiskDataInput = document.querySelector(\n\t\t'input[name=braintreePaypalRiskData]'\n\t);\n\n\t$braintreePaypalRiskDataInput.value = data.deviceData;\n}\n\n/**\n * Append CSRF token to the billing FormData\n * @param {FormData} formData Billing form data\n * @param {Object} $csrfToken CSRF token js container\n */\nfunction appendCsrfTokenToFormData(formData, $csrfToken) {\n\tformData.append($csrfToken.name, $csrfToken.value);\n}\n\n/**\n * Append funding source to the billing FormData\n * @param {FormData} formData Billing form data\n * @param {string} fundingSource funding source\n */\nfunction appendBraintreePaypalFundingSourceToFormData(formData, fundingSource) {\n\tformData.append('braintreePaypalFundingSource', fundingSource);\n}\n\n/**\n * Append email to the billing FormData\n * @param {FormData} formData billing form data\n * @param {string} email user email\n */\nfunction appendEmailAsStringToFormData(formData, email) {\n\tformData.append('braintreePaypalEmail', email);\n}\n\n/**\n * Append fraud data to the FormData\n * @param {FormData} billingFromData billing FormData\n * @param {Object} fraudData fraud data\n */\nfunction appendFraudDataToFormData(billingFromData, fraudData) {\n\tbillingFromData.append('braintreePaypalRiskData', fraudData);\n}\n\n/**\n * Append billing address data as a string to the FromData\n * @param {FormData} billingFromData Billing FormData\n * @param {Object} billingData Billing data\n */\nfunction appendBillingAddressAsStringToFormData(billingFromData, billingData) {\n\tbillingFromData.append(\n\t\t'braintreePaypalBillingAddress',\n\t\tJSON.stringify(billingData)\n\t);\n}\n\n/**\n * Append BT payment fields to the FromData\n * @param {FormData} billingFromData Billing FormData\n * @param {Object} payload payload from BT\n */\nfunction appendBtPaymentFieldsToFormData(billingFromData, payload) {\n\tbillingFromData.append('braintreePaypalNonce', payload.nonce);\n\tbillingFromData.append('braintreeSavePaypalAccount', false);\n}\n\n/**\n * Append params to the URL\n * @param {string} url To which append params\n * @param {Object} param Which should be appended to the URL\n * @returns {string} Final URL with passed params\n */\nfunction appendToUrl(url, param) {\n\tlet newUrl = url;\n\n\tnewUrl +=\n\t\t(newUrl.indexOf('?') !== -1 ? '&' : '?') +\n\t\tObject.keys(param)\n\t\t\t.map(function (key) {\n\t\t\t\treturn `${key}=${encodeURIComponent(param[key])}`;\n\t\t\t})\n\t\t\t.join('&');\n\n\treturn newUrl;\n}\n\nmodule.exports = {\n\tstorePaymentAsSessionPayment,\n\tsetSessionAccountOptionDefault,\n\tgetStoredAccountBySesionAccountEmail,\n\tcopyPayPalBillingAddressToDw,\n\tcreateBillingAddressFormData,\n\tcreateBillingAddressData,\n\tfillPayPalPaymentFields,\n\tfillFraudDataInput,\n\tappendCsrfTokenToFormData,\n\tappendFraudDataToFormData,\n\tappendBillingAddressAsStringToFormData,\n\tappendBtPaymentFieldsToFormData,\n\tappendEmailAsStringToFormData,\n\tappendBraintreePaypalFundingSourceToFormData,\n\t// Utils\n\tappendToUrl,\n};\n","'use strict';\n\n/**\n * Hide PayPal button\n */\nfunction hidePayPalButtons() {\n\tconst payPalButtonsContainer = document.querySelector(\n\t\t'.js-braintree-paypal-billing-button'\n\t);\n\n\tpayPalButtonsContainer.classList.add('d-none');\n}\n\n/* -------------------------------------------- Account\\Options Manipulations -------------------------------------------- */\n\n/**\n * Hide account option from account dropdown\n * @param {Object} $accountOption vanilla js account option container\n */\nfunction hideAccount($accountOption) {\n\t$accountOption.style.display = 'none';\n}\n\n/**\n * Hide Save New Account checkbox with corresponding block\n */\nfunction hideSaveNewAccountContainer() {\n\tconst savePaypalAccountCheckbox = document.getElementById(\n\t\t'braintreeSavePaypalAccount'\n\t);\n\tconst savePaypalAccountContainer = document.getElementById(\n\t\t'braintreeSavePaypalAccountContainer'\n\t);\n\n\tsavePaypalAccountCheckbox.value = false;\n\tsavePaypalAccountContainer.style.display = 'none';\n}\n\n/**\n * Make all hidden stored paypal accounts visible for buyer\n */\nfunction displayAllStoredAccounts() {\n\tconst braintreePaypalAccountsList = document.getElementById(\n\t\t'braintreePaypalAccountsList'\n\t);\n\n\tArray.prototype.forEach.call(braintreePaypalAccountsList, function (el) {\n\t\tif (el.style.display === 'none') {\n\t\t\tel.style.display = 'block';\n\t\t}\n\t});\n}\n\n/**\n * Hides 'Save PayPal Account' checkbox on the Billing Page\n */\nfunction hideSavePayPalAccountBlock() {\n\tconst $savePaypalAccountCountainer = document.getElementById(\n\t\t'braintreeSavePaypalAccountContainer'\n\t);\n\n\t$savePaypalAccountCountainer.style.display = 'none';\n}\n\n/**\n * Function which store billing data on session payment option level\n * @param {Object} btPayloadDetails braintree payload details\n */\nfunction addBillingAddressOnPaymentOptionLevel(btPayloadDetails) {\n\tconst $sessionPyapalAccount = document.getElementById(\n\t\t'braintreePaypalAccount'\n\t);\n\tconst btBillingAddress = btPayloadDetails.billingAddress;\n\n\t$sessionPyapalAccount.setAttribute(\n\t\t'data-billing-address',\n\t\tJSON.stringify({\n\t\t\tfirstName: btPayloadDetails.firstName,\n\t\t\tlastName: btPayloadDetails.lastName,\n\t\t\tline1: btBillingAddress.line1,\n\t\t\tcity: btBillingAddress.city,\n\t\t\tstate: btBillingAddress.state,\n\t\t\tpostalCode: decodeURIComponent(btBillingAddress.postalCode),\n\t\t})\n\t);\n}\n\nmodule.exports = {\n\thidePayPalButtons,\n\t// Account\\Options Manipulations\n\thideAccount,\n\thideSaveNewAccountContainer,\n\tdisplayAllStoredAccounts,\n\thideSavePayPalAccountBlock,\n\taddBillingAddressOnPaymentOptionLevel,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * Create shipping address data\n * @param {Object} payloadDetails BT payload details\n * @returns {Object} Shipping address\n */\nfunction createShippingAddressData(payloadDetails) {\n\tconst shippingAddressPayPalData = payloadDetails.shippingAddress;\n\tconst shippingAddressData = {\n\t\tline1: shippingAddressPayPalData.line1,\n\t\tstreetAddress: shippingAddressPayPalData.line1,\n\t\tcity: shippingAddressPayPalData.city,\n\t\tlocality: shippingAddressPayPalData.city,\n\t\tstate: shippingAddressPayPalData.state,\n\t\tregion: shippingAddressPayPalData.state,\n\t\tcountryCode: shippingAddressPayPalData.countryCode,\n\t\tcountryCodeAlpha2: shippingAddressPayPalData.countryCode,\n\t\tpostalCode: decodeURIComponent(shippingAddressPayPalData.postalCode),\n\t\temail: payloadDetails.email,\n\t\tphone: payloadDetails.phone,\n\t};\n\n\tif (!shippingAddressPayPalData.recipientName) {\n\t\tshippingAddressData.firstName = payloadDetails.firstName;\n\t\tshippingAddressData.lastName = payloadDetails.lastName;\n\t\tshippingAddressData.recipientName = `${payloadDetails.firstName} ${payloadDetails.lastName}`;\n\t} else {\n\t\tshippingAddressData.recipientName = shippingAddressPayPalData.recipientName;\n\t}\n\n\treturn shippingAddressData;\n}\n\n/**\n * Append Shipping data as a String to the FormData\n * @param {FormData} billingFromData Billing FormData\n * @param {Object} shippingData Shipping data\n */\nfunction appendShippingDataAsStringToFormData(billingFromData, shippingData) {\n\tbillingFromData.append(\n\t\t'braintreePaypalShippingAddress',\n\t\tJSON.stringify(shippingData)\n\t);\n\tbillingFromData.append('expressCheckoutFlow', true);\n}\n\n/**\n * Creates customer form with email to submit it to CheckoutServices-SubmitCustomer endpoint\n * @param {string} email Email from payment method's response\n * @returns {Object} Customer form data\n */\nfunction createCustomerFormData(email) {\n\tconst data = {\n\t\temail: email,\n\t};\n\n\tconst csrfToken = document.querySelector(\n\t\t'.js-braintree-cart-paypal-buttons-wrap #csrf_token'\n\t);\n\tconst checkoutCustomerFormFields = document\n\t\t.querySelector('.js-braintree-cart-paypal-buttons-wrap')\n\t\t.getAttribute('data-checkout-customer-form-fields');\n\n\tconst customerFormData = helper.createPaymentFormData(\n\t\tcheckoutCustomerFormFields,\n\t\tdata\n\t);\n\n\tcustomerFormData.append(csrfToken.name, csrfToken.value);\n\n\treturn customerFormData;\n}\n\n/**\n * Submits customer form with email to CheckoutServices-SubmitCustomer endpoint\n * Call is triggered only in case if email in basket is empty (guest first checkout from cart)\n * @param {string} email Email from payment method's response\n * @returns {Ajax} Ajax call to CheckoutServices-SubmitCustomer endpoint\n */\nfunction submitCustomerForm(email) {\n\tconst paypalButtonsWrapper = document.querySelector(\n\t\t'.js-braintree-cart-paypal-buttons-wrap'\n\t);\n\tconst isCustomerEmailEmpty = helper.tryParseJSON(\n\t\tpaypalButtonsWrapper.getAttribute('data-is-customer-email-empty')\n\t);\n\t// Could be true only in case if email in basket is empty (first guest checkout from cart)\n\n\tif (isCustomerEmailEmpty) {\n\t\tconst submitCustomerUrl = window.braintreeUrls.submitCustomerUrl;\n\t\tconst customerFormData = createCustomerFormData(email);\n\n\t\treturn fetch(submitCustomerUrl, {\n\t\t\tmethod: 'POST',\n\t\t\tbody: customerFormData,\n\t\t});\n\t}\n\n\treturn false;\n}\n\n/**\n * Returns customer shipping address for 'createPayment' method of braintree SDK\n * @param {string} buttonSelector Class name of selector\n * @returns {Object} Shipping address object\n */\nfunction getSavedPaypalAddress(buttonSelector) {\n\tlet payPalAccountData = {};\n\tconst $paypalButton = document.querySelector(buttonSelector);\n\n\tpayPalAccountData = helper.tryParseJSON(\n\t\t$paypalButton.getAttribute('data-dafault-paypal-address')\n\t);\n\n\treturn payPalAccountData;\n}\n\nmodule.exports = {\n\tcreateShippingAddressData,\n\tappendShippingDataAsStringToFormData,\n\tsubmitCustomerForm,\n\tgetSavedPaypalAddress,\n};\n","'use strict';\n\nconst billingFormHelper = require('./payPalBillingFormHelperGlobal');\nconst paypalCheckoutModelHelper = require('./payPalCheckoutModelHelper');\nconst helper = require('../../helper');\n\n/**\n * Is vault mode enabled\n * @param {Object} $paypalButton PayPal button js container\n * @returns {boolean} 'true' in case if vault mode is enabled\n */\nfunction isVaultModeEnabled($paypalButton) {\n\tconst payPalConfigurations = helper.tryParseJSON(\n\t\t$paypalButton.getAttribute('data-braintree-config')\n\t);\n\n\treturn payPalConfigurations.vaultModeEnabled;\n}\n\n/**\n * Function which return account type.\n * Possible values are: new account, session account, stored account\n * @param {Object} $payPalAccountList PayPal account list js container\n * @param {Object} constantList Object with paypal account constants\n * @returns {string} Account type\n */\nfunction getAccountType($payPalAccountList, constantList) {\n\tlet accountType;\n\n\tif ($payPalAccountList.value === 'newaccount') {\n\t\taccountType = constantList.NEW_ACCOUNT;\n\t} else if (\n\t\t$payPalAccountList.selectedOptions[0].id === 'braintreePaypalAccount'\n\t) {\n\t\taccountType = constantList.SESSION_ACCOUNT;\n\t} else {\n\t\taccountType = constantList.STORED_ACCOUNT;\n\t}\n\n\treturn accountType;\n}\n\n/**\n * Set nonce in to corresponding hidden input\n * @param {Object} $braintreePayPalNonce BT input nonce js container\n * @param {string} nonceValue Nonce\n */\nfunction setNonceInputValue($braintreePayPalNonce, nonceValue) {\n\t$braintreePayPalNonce.value = nonceValue;\n}\n\n/**\n * Hide save PayPal account block\n * @param {Object} $savePaypalAccountCountainer Save PayPal account js container\n */\nfunction hideSavePayPalAccountBlock($savePaypalAccountCountainer) {\n\t$savePaypalAccountCountainer.style.display = 'none';\n}\n\n/**\n * Display save PayPal account block\n * @param {Object} $savePaypalAccountCountainer Save PayPal account js container\n */\nfunction displaySavePayPalAccountBlock($savePaypalAccountCountainer) {\n\t$savePaypalAccountCountainer.style.display = 'block';\n}\n\n/* --------------- PayPal button manipulations --------------- */\n/**\n * Show PayPal button\n * @param {Object} $paypalButton PayPal button js container\n */\nfunction displayPayPalButton($paypalButton) {\n\t$paypalButton.classList.remove('d-none');\n}\n\n/**\n * Hide PayPal button\n * @param {Object} $paypalButton PayPal button js container\n */\nfunction hidePayPalButon($paypalButton) {\n\t$paypalButton.classList.add('d-none');\n}\n\n/* --------------- Continue button manipulations --------------- */\n/**\n * Display Continue button\n * @param {Object} $continueButton Continue button js container\n */\nfunction displayContinueButton($continueButton) {\n\t$continueButton.style.display = '';\n}\n\n/**\n * Hide Continue button\n * @param {Object} $continueButton Continue button js container\n */\nfunction hideContinueButon($continueButton) {\n\t$continueButton.style.display = 'none';\n}\n\n/**\n * Return \"true\" if buyer is authenticated\n * Needed on the Checkout Page only\n * @param {Object} $payPalAccountList PayPal account list js container\n * @returns {boolean} \"true\" in case if buyer is authenticated\n */\nfunction isBuyerAuthenticated($payPalAccountList) {\n\treturn helper.tryParseJSON($payPalAccountList.dataset.customerAuthenticated);\n}\n\n/**\n * Select PayPal account tab\n * @param {Object} $payPalTab PayPal payment tab js container\n */\nfunction selectPayPalCheckoutTab($payPalTab) {\n\t$payPalTab.click();\n}\n\n/**\n * Set email in to corresponding input\n * @param {Object} $braintreePaypalEmail BT PayPal email input js container\n * @param {string} email Email\n */\nfunction setBraintreePayPalEmailInput($braintreePaypalEmail, email) {\n\t$braintreePaypalEmail.value = email;\n}\n\n/**\n * Returns whether the new PayPal account option is selected\n * @returns {boolean} Whether the new PayPal account option is selected\n */\nfunction isNewPayPalAccountOptionSelected() {\n\tconst $payPalAccountList = document.getElementById(\n\t\t'braintreePaypalAccountsList'\n\t);\n\n\tif ($payPalAccountList) {\n\t\treturn $payPalAccountList.value === 'newaccount';\n\t}\n\n\treturn false;\n}\n\n/**\n * Handles showing stored PP account in dropdown\n * Checks whether buyer has proceeded with the same email which is already stored\n * Triggered while tokenization callback and page reload\n * @param {boolean} buyerAuthenticated Whether customer is authenticated\n * @param {boolean} isSessionPaymentsEnabled Whether session card or not, depending on Session Payments Enabled pref\n */\nfunction handleStoredAccountsShowing(\n\tbuyerAuthenticated,\n\tisSessionPaymentsEnabled\n) {\n\tif (!buyerAuthenticated) {\n\t\treturn;\n\t}\n\n\t// Get stored account by session account email\n\tlet $storedAccountOptionWithSameEmail;\n\n\tif (isSessionPaymentsEnabled) {\n\t\t$storedAccountOptionWithSameEmail =\n\t\t\tbillingFormHelper.getStoredAccountBySesionAccountEmail();\n\t}\n\n\t// The buyer added an account with the same email address already in the buyer's wallet\n\tif ($storedAccountOptionWithSameEmail) {\n\t\t// Hide stored account with same email\n\t\tpaypalCheckoutModelHelper.hideAccount($storedAccountOptionWithSameEmail);\n\t} else {\n\t\t// We need this to undo what was done by \"if\" statement\n\t\tpaypalCheckoutModelHelper.displayAllStoredAccounts();\n\t}\n}\n\nmodule.exports = {\n\tisVaultModeEnabled,\n\tgetAccountType,\n\tsetNonceInputValue,\n\thideSavePayPalAccountBlock,\n\tdisplaySavePayPalAccountBlock,\n\tdisplayPayPalButton,\n\thidePayPalButon,\n\tdisplayContinueButton,\n\thideContinueButon,\n\tisBuyerAuthenticated,\n\tselectPayPalCheckoutTab,\n\tsetBraintreePayPalEmailInput,\n\tisNewPayPalAccountOptionSelected,\n\thandleStoredAccountsShowing,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * Remove product from Cart\n */\nfunction removeProductFromCart() {\n\tfetch(\n\t\thelper.getUrlWithCsrfToken(window.braintreeUrls.removeAllProductsFromCart)\n\t);\n}\n\nmodule.exports = {\n\tremoveProductFromCart,\n};\n","'use strict';\n\nconst base = require('base/product/base');\nconst helper = require('../../helper');\n\nconst PRODUCT_DETAIL_SELECTOR = '.product-detail';\n\n/**\n * Add product to the Cart on PVP\n * @param {string} ppBtnSelector - payPal button selector\n * @param {string} flow - payPal button flow (pdp/pvp)\n * @returns {void}\n */\nfunction addProductToCart(ppBtnSelector, flow) {\n\t/**\n\t * Gets options\n\t * @param {Object} productContainer - product container\n\t * @returns {string} options\n\t */\n\tfunction getOptions(productContainer) {\n\t\treturn JSON.stringify(\n\t\t\tArray.from(productContainer.querySelectorAll('.product-option')).map(\n\t\t\t\t(elOption) => {\n\t\t\t\t\tconst selectedValue = elOption.querySelector('.options-select').value;\n\t\t\t\t\tconst selectedOption = elOption.querySelector(\n\t\t\t\t\t\t`.options-select option[value=\"${selectedValue}\"]`\n\t\t\t\t\t);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\toptionId: elOption.getAttribute('data-option-id'),\n\t\t\t\t\t\tselectedValueId: selectedOption.getAttribute('data-value-id'),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t}\n\n\tconst bundleItems = document.querySelectorAll('.bundle-item');\n\tconst setItems = document.querySelectorAll('.set-item');\n\n\tconst ppBtnContainer = document\n\t\t.querySelector(ppBtnSelector)\n\t\t.closest(\n\t\t\t`.js-braintree-${flow}-button, .js-braintree-${flow}-button-global`\n\t\t);\n\tconst isGlobalButton = ppBtnContainer.classList.contains(\n\t\t`js-braintree-${flow}-button-global`\n\t);\n\n\tconst pid = base.getPidValue(ppBtnContainer);\n\tconst form = new FormData();\n\n\tlet productContainer;\n\tlet data = {};\n\n\tif (isGlobalButton || !setItems.length) {\n\t\tproductContainer =\n\t\t\tdocument.querySelector(ppBtnSelector).closest(PRODUCT_DETAIL_SELECTOR) ||\n\t\t\tdocument.querySelector(PRODUCT_DETAIL_SELECTOR);\n\t} else {\n\t\tproductContainer = document\n\t\t\t.querySelector(ppBtnSelector)\n\t\t\t.closest('.set-item');\n\t}\n\n\tif (bundleItems.length) {\n\t\tconst quantity = document\n\t\t\t.querySelector('.modal-footer, .bundle-footer')\n\t\t\t.querySelector('.quantity-select').value;\n\n\t\tdata = {\n\t\t\tpid: pid,\n\t\t\tquantity: quantity,\n\t\t};\n\n\t\tconst items = Array.from(bundleItems).map(function (item) {\n\t\t\treturn {\n\t\t\t\tpid: item.querySelector('.product-id').innerText,\n\t\t\t\tquantity: parseInt(\n\t\t\t\t\titem.querySelector('.quantity').getAttribute('data-quantity'),\n\t\t\t\t\t10\n\t\t\t\t),\n\t\t\t};\n\t\t});\n\n\t\tdata.childProducts = JSON.stringify(items);\n\t} else if (setItems.length && isGlobalButton) {\n\t\tconst items = Array.from(setItems).map(function (item) {\n\t\t\treturn {\n\t\t\t\tpid: base.getPidValue(item),\n\t\t\t\tqty: parseInt(base.getQuantitySelected(item), 10),\n\t\t\t\toptions: getOptions(item),\n\t\t\t};\n\t\t});\n\n\t\tdata.pidsObj = JSON.stringify(items);\n\t} else {\n\t\tdata = {\n\t\t\tpid: pid,\n\t\t\tquantity: base.getQuantitySelected(ppBtnContainer),\n\t\t\toptions: getOptions(productContainer),\n\t\t};\n\t}\n\n\tObject.keys(data).forEach((key) => {\n\t\tform.append(key, data[key]);\n\t});\n\n\treturn fetch(document.querySelector('.js-add-to-cart-url').value, {\n\t\tmethod: 'POST',\n\t\tbody: form,\n\t});\n}\n\n/**\n * Get basket data\n * @param {string} url Braintree-GetOrderInfo URL\n * @returns {Object} Object with basket data from DW\n */\nfunction getBasketData(url) {\n\treturn fetch(helper.getUrlWithCsrfToken(url)).then((response) =>\n\t\tresponse.json()\n\t);\n}\n\n/**\n * @param {string} url Validate address url\n * @param {Object} payload Payload form data\n * @returns {Promise} Promise with response result\n */\nfunction validateAddresses(url, payload) {\n\treturn fetch(helper.getUrlWithCsrfToken(url), {\n\t\tmethod: 'POST',\n\t\tbody: JSON.stringify(payload),\n\t\theaders: { 'Content-Type': 'application/json' },\n\t}).then((response) => response.json());\n}\n\n/**\n * Submit payment (billing) data to the server\n * @param {string} submitPaymentUrl Submit payment URL\n * @param {FormData} billingFormData Billing Form Data\n * @param {string} redirectUrl Redirect URL after succesfull payment data submit\n * @param {Object} loader Loader\n * @param {Object} alertHandler Alert Handler Model instance\n * @returns {Promise} Promise with response result\n */\nfunction submitPaymentDataToServerPromise(\n\tsubmitPaymentUrl,\n\tbillingFormData,\n\tredirectUrl,\n\tloader,\n\talertHandler\n) {\n\treturn fetch(helper.getUrlWithCsrfToken(submitPaymentUrl), {\n\t\tmethod: 'POST',\n\t\tbody: billingFormData,\n\t})\n\t\t.then(function (data) {\n\t\t\tif (!helper.handleSubmitPaymentErrors(data, alertHandler)) {\n\t\t\t\tsessionStorage.setItem('pageState', 'cart');\n\t\t\t\twindow.location.href = redirectUrl;\n\t\t\t}\n\n\t\t\t// loader.hide();\n\t\t})\n\t\t.catch(function (error) {\n\t\t\tloader.hide();\n\n\t\t\tif (error && error.redirectUrl) {\n\t\t\t\twindow.location.href = error.redirectUrl;\n\t\t\t}\n\t\t});\n}\n\nmodule.exports = {\n\taddProductToCart,\n\tgetBasketData,\n\tvalidateAddresses,\n\tsubmitPaymentDataToServerPromise,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\nconst $btSavePaypalAccountContainer = document.getElementById(\n\t'braintreeSavePaypalAccountContainer'\n);\nconst $paypalContent = document.querySelector('.js-braintree-paypal-content');\nconst $btPayPalBillingButton = document.querySelector(\n\t'.js-braintree-paypal-billing-button'\n);\n\n/**\n * Hides PayPal Smart Button functionality inside PayPal tab\n */\nfunction hidePaypalSmartButtonFunctionality() {\n\t$btSavePaypalAccountContainer.style.display = 'none';\n\t$btPayPalBillingButton.classList.add('d-none');\n\t$paypalContent.setAttribute('data-paypal-is-hide-continue-button', false);\n}\n\n/**\n * Shows PayPal Smart Button functionality inside PayPal tab\n */\nfunction showPaypalSmartButtonFunctionality() {\n\t$btPayPalBillingButton.classList.remove('d-none');\n\t$paypalContent.setAttribute('data-paypal-is-hide-continue-button', true);\n}\n\n/**\n * Handles a behavior inside PayPal tab, when session PayPal account was deleted\n */\nfunction handlePaypalTabBehavior() {\n\tconst $payPalAccountList = document.getElementById(\n\t\t'braintreePaypalAccountsList'\n\t);\n\tconst $defaultOption = helper.getOptionByDataDefault(\n\t\t'#braintreePaypalAccountsList'\n\t);\n\tconst $selectedOption = helper.getSelectedOption($payPalAccountList);\n\tconst isSelectedPaypalAccount = $selectedOption.value !== 'newaccount';\n\tconst paypalButtonConfigs = helper.tryParseJSON(\n\t\t$btPayPalBillingButton.getAttribute('data-braintree-config')\n\t);\n\tconst isChangePmButton = paypalButtonConfigs.changePMButtonEnabled;\n\n\t// Case when buyer selected another PM (CC,GP..)\n\tif ($defaultOption && !isSelectedPaypalAccount) {\n\t\t// Shows ChangePM button if buyer has already saved PP account and ChangePM button is enabled\n\t\tif (isChangePmButton) {\n\t\t\t$btSavePaypalAccountContainer.style.display = 'block';\n\n\t\t\tshowPaypalSmartButtonFunctionality();\n\t\t\t// Shows default PayPal account\n\t\t} else {\n\t\t\t$defaultOption.selected = true;\n\n\t\t\thidePaypalSmartButtonFunctionality();\n\t\t}\n\t\t// Case when buyer selected PayPal account from paypalAccountList\n\t} else if (isSelectedPaypalAccount) {\n\t\thidePaypalSmartButtonFunctionality();\n\t\t// Case when buyer does not have saved PayPal account\n\t} else {\n\t\tconst $btUsedPayPalAccount = document.querySelector(\n\t\t\t'.js-braintree-used-paypal-account'\n\t\t);\n\n\t\t$btUsedPayPalAccount.classList.remove('used-paypal-account');\n\t\t$btUsedPayPalAccount.classList.add('used-paypal-account-hide');\n\n\t\tshowPaypalSmartButtonFunctionality();\n\t}\n\n\t[].forEach.call($payPalAccountList, function (el) {\n\t\tif (el.style.display === 'none') {\n\t\t\tel.style.display = 'block';\n\t\t}\n\t});\n}\n\nmodule.exports = {\n\thandlePaypalTabBehavior,\n\thidePaypalSmartButtonFunctionality,\n\tshowPaypalSmartButtonFunctionality,\n};\n","'use strict';\n\nconst PayPalBaseModel = require('./payPalBaseModel');\nconst helper = require('../../helper');\nconst payPalAccountModelHelper = require('../helpers/payPalAccountModel');\nconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\n\nconst $loaderContainer = document.querySelector('.braintree-loader-container');\n\n/**\n * @param {Object} apmaModelInstance apma model instance\n * Save address details to address book from PP side\n * @returns {Promise} apmaModelInstance\n */\nfunction saveAddressDetails(apmaModelInstance) {\n\treturn apmaModelInstance.savePaypalDefaultAddress().then(() => {\n\t\twindow.location.href = apmaModelInstance.redirectUrl;\n\t});\n}\n\n/**\n * PayPal APMA model constructor\n * @param {Object} alertHandlerModel alert handler model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations Configs from server (taken from data attr)\n * @param {Object} additional - Additional data\n * @param {string} additional.addPayPalAccountUrl Add PayPal account URL\n * @param {Object} additional.addressObject Address object we get from CWPP\n * @param {boolean} additional.isAccountPage Account flow identifier\n * @param {string} additional.redirectUrl Account show URL\n */\nfunction PayPalAPMAModel(\n\talertHandlerModel,\n\tbtClientInstancePromise,\n\tpayPalButtonSelector,\n\tpayPalConfigurations,\n\t{ addPayPalAccountUrl, addressObject, isAccountPage, redirectUrl }\n) {\n\tPayPalBaseModel.call(\n\t\tthis,\n\t\talertHandlerModel,\n\t\tbtClientInstancePromise,\n\t\tpayPalButtonSelector,\n\t\tpayPalConfigurations,\n\t\t$loaderContainer\n\t);\n\n\tthis.addPayPalAccountUrl =\n\t\taddPayPalAccountUrl + window.braintreeConstants.APMA_QUERY_PARAMETER_TRUE;\n\tthis.addressObject = addressObject;\n\tthis.isAccountPage = isAccountPage;\n\tthis.redirectUrl = redirectUrl;\n}\n\n// ES5 inheritance\nPayPalAPMAModel.prototype = Object.create(PayPalBaseModel.prototype);\n\n/**\n * Makes call on saving a PayPal default address to the storefront customer.\n * @returns {Object} Whether a success or failed JSON response body.\n */\nPayPalAPMAModel.prototype.savePaypalDefaultAddress = function () {\n\tconst addressObject = this.addressObject;\n\tconst isAccountPage = this.isAccountPage;\n\n\treturn fetch(window.braintreeUrls.savePaypalDefaultAddressUrl, {\n\t\tmethod: 'POST',\n\t\tcontentType: 'application/json',\n\t\tbody: JSON.stringify({ addressObject, isAccountPage }),\n\t});\n};\n\nPayPalAPMAModel.prototype.initAddButtonEvent = function () {\n\tconst $apmaButtonPayPal = document.querySelector(this.payPalButtonSelector);\n\tconst addingStage = $apmaButtonPayPal.getAttribute('data-adding-stage');\n\n\tif (addingStage === window.braintreeConstants.APMA_STAGE_ADDRESS) {\n\t\t$apmaButtonPayPal.classList.add('hide-block');\n\n\t\tdocument\n\t\t\t.getElementById('js-apma-button-yes')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tsaveAddressDetails(this);\n\t\t\t});\n\t}\n};\n\n/**\n * For whole description open \"payPalBaseModel\".\n * We don't generate and send fraud data from Account. That's why \"generateFraudData\" isn't used\n * @param {Object} payload Buyer data from PayPal (like address, nonce, etc.)\n */\nPayPalAPMAModel.prototype.onApprovePaymentCallback = function (payload) {\n\t// Calling parrent method to proceed with PayPal payload validation\n\tPayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\n\n\t// Error will be handled on BaseModel level\n\tif (this.error) {\n\t\treturn;\n\t}\n\n\tthis.loader.show();\n\n\tconst apmaModelInstance = this;\n\tconst btDetails = payload.details;\n\tconst nonce = payload.nonce;\n\tconst email = payload.details.email;\n\tconst $payPalButton = document.querySelector(this.payPalButtonSelector);\n\tconst paypalAccountFormFields = $payPalButton.getAttribute(\n\t\t'data-paypal-account-form-fields'\n\t);\n\t// Append Shippig/Billing data to FormData\n\tconst payPalBraintreeAddressData =\n\t\tbillingFormHelper.createBillingAddressData(btDetails);\n\tconst paypalAccountFormData = helper.createPaymentFormData(\n\t\tpaypalAccountFormFields,\n\t\t{\n\t\t\tnonce: nonce,\n\t\t\temail: email,\n\t\t\taddresses: JSON.stringify(payPalBraintreeAddressData),\n\t\t\tshippingAddress: JSON.stringify(payload.details.shippingAddress),\n\t\t}\n\t);\n\n\t// Apped CSRF token\n\tconst $csrfToken = document.getElementById('csrf_token');\n\n\tbillingFormHelper.appendCsrfTokenToFormData(\n\t\tpaypalAccountFormData,\n\t\t$csrfToken\n\t);\n\t// Save payment instrument from PP side\n\tpayPalAccountModelHelper\n\t\t.savePayPalAccount(this.addPayPalAccountUrl, paypalAccountFormData)\n\t\t.then(() => {\n\t\t\tsaveAddressDetails(apmaModelInstance);\n\t\t})\n\t\t.catch(function (errorPayload) {\n\t\t\tconst error = errorPayload.responseJSON.error;\n\n\t\t\tapmaModelInstance.alertHandlerModel.showError(error);\n\t\t\tapmaModelInstance.loader.hide();\n\t\t});\n};\n\n/**\n * Triggers when buyer clicked on the PayPal button and PayPal modal started loading\n * @returns {Object} Object which will be passed directly into Braintree PayPal SDK as an order data\n */\nPayPalAPMAModel.prototype.onOrderCreateCallback = async function () {\n\tconst payPalButtonConfigs = this.payPalConfigurations;\n\tconst orderCreateParams = payPalButtonConfigs.options;\n\n\t// Hide custom error on buyer PayPal button click.\n\tthis.alertHandlerModel.hideAlerts();\n\n\treturn {\n\t\tflow: orderCreateParams.flow,\n\t\tenableShippingAddress: orderCreateParams.enableShippingAddress,\n\t\tdisplayName: orderCreateParams.displayName,\n\t\tbillingAgreementDescription: orderCreateParams.billingAgreementDescription,\n\t};\n};\n\nmodule.exports = PayPalAPMAModel;\n","'use strict';\n\nconst PayPalBaseModel = require('./payPalBaseModel');\nconst helper = require('../../helper');\n\nfunction PayPalAccountModel(\n\talertHandlerModel,\n\tbtClientInstancePromise,\n\tpayPalButtonSelector,\n\tpayPalConfigurations,\n\t$csrfToken,\n\taddPayPalAccountUrl,\n\t$loaderContainer\n) {\n\tPayPalBaseModel.call(\n\t\tthis,\n\t\talertHandlerModel,\n\t\tbtClientInstancePromise,\n\t\tpayPalButtonSelector,\n\t\tpayPalConfigurations,\n\t\t$loaderContainer\n\t);\n\n\tthis.$csrfToken = $csrfToken;\n\tthis.addPayPalAccountUrl = addPayPalAccountUrl;\n}\n\n// ES5 inheritance\nPayPalAccountModel.prototype = Object.create(PayPalBaseModel.prototype);\n\n/**\n * For whole description open \"payPalBaseModel\".\n * We don't generate and send fraud data from Account. That's why \"generateFraudData\" isn't used\n * @param {Object} payload Buyer data from PayPal (like address, nonce, etc.)\n */\nPayPalAccountModel.prototype.onApprovePaymentCallback = function (payload) {\n\t// Calling parrent method to proceed with PayPal payload validation\n\tPayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\n\n\t// Error will be handled on BaseModel level\n\tif (this.error) {\n\t\treturn;\n\t}\n\n\tthis.loader.show();\n\n\tconst payPalAccountModelHelper = require('../helpers/payPalAccountModel');\n\tconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\n\n\tconst $payPalButton = document.querySelector(this.payPalButtonSelector);\n\tconst paypalAccountFormFields = $payPalButton.getAttribute(\n\t\t'data-paypal-account-form-fields'\n\t);\n\n\tconst payPalAccountModelInstance = this;\n\tconst btDetails = payload.details;\n\tconst payPalBraintreeAddressData =\n\t\tbillingFormHelper.createBillingAddressData(btDetails);\n\tconst paypalAccountFormData = helper.createPaymentFormData(\n\t\tpaypalAccountFormFields,\n\t\t{\n\t\t\tnonce: payload.nonce,\n\t\t\temail: payload.details.email,\n\t\t\taddresses: JSON.stringify(payPalBraintreeAddressData),\n\t\t\tshippingAddress: JSON.stringify(payload.details.shippingAddress),\n\t\t}\n\t);\n\t// Apped CSRF token\n\n\tbillingFormHelper.appendCsrfTokenToFormData(\n\t\tpaypalAccountFormData,\n\t\tthis.$csrfToken\n\t);\n\n\tpayPalAccountModelHelper\n\t\t.savePayPalAccount(this.addPayPalAccountUrl, paypalAccountFormData)\n\t\t.then((response) => response.json())\n\t\t.then((data) => {\n\t\t\tif (data.error) {\n\t\t\t\tconst error = data.error;\n\n\t\t\t\tpayPalAccountModelInstance.alertHandlerModel.showError(error);\n\t\t\t\tpayPalAccountModelInstance.loader.hide();\n\t\t\t} else {\n\t\t\t\tconst renderAccountsUrl = data.renderAccountsUrl;\n\n\t\t\t\tpayPalAccountModelHelper.hidePaypalAccountBtn();\n\t\t\t\tpayPalAccountModelHelper\n\t\t\t\t\t.renderPayPalAccounts(renderAccountsUrl)\n\t\t\t\t\t.then((accountListTemplate) => accountListTemplate.text())\n\t\t\t\t\t.then((accountListTemplateHTML) => {\n\t\t\t\t\t\tpayPalAccountModelHelper.addPayPalAccountsToTheTemplate(\n\t\t\t\t\t\t\taccountListTemplateHTML\n\t\t\t\t\t\t);\n\t\t\t\t\t\tpayPalAccountModelHelper.throwCartUpdate();\n\t\t\t\t\t\tpayPalAccountModelInstance.initRemovePayPalAccountEvent();\n\t\t\t\t\t\tpayPalAccountModelInstance.initMakeDefaultPayPalAccountEvent();\n\n\t\t\t\t\t\tpayPalAccountModelInstance.loader.hide();\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n};\n\n/**\n * Triggers when buyer clicked on the PayPal button and PayPal modal started loading\n * @returns {Object} Object which will be passed directly into Braintree PayPal SDK as an order data\n */\nPayPalAccountModel.prototype.onOrderCreateCallback = async function () {\n\tconst orderCreateParams = this.payPalConfigurations.options;\n\n\t// Hide custom error on buyer PayPal button click.\n\tthis.alertHandlerModel.hideAlerts();\n\n\treturn {\n\t\tflow: orderCreateParams.flow,\n\t\tenableShippingAddress: orderCreateParams.enableShippingAddress,\n\t\tdisplayName: orderCreateParams.displayName,\n\t\tbillingAgreementDescription: orderCreateParams.billingAgreementDescription,\n\t};\n};\n\n/**\n * Init Remove PayPal Account button listner\n */\nPayPalAccountModel.prototype.initRemovePayPalAccountEvent = function () {\n\tconst $allRemovePayPalAccountButtons = document.querySelectorAll(\n\t\t'.js-paypal-accounts .js-remove-bt-payment'\n\t);\n\n\t$allRemovePayPalAccountButtons.forEach((btn) =>\n\t\tbtn.addEventListener('click', helper.removeBtPayment)\n\t);\n};\n\n/**\n * Init Make Default PayPal account button\n */\nPayPalAccountModel.prototype.initMakeDefaultPayPalAccountEvent = function () {\n\tconst loaderInstance = require('../../loaderHelper');\n\tconst $makeDefaultBtns = document.querySelectorAll(\n\t\t'.js-paypal-accounts .js-braintree-make-default-card'\n\t);\n\n\t$makeDefaultBtns.forEach((btn) =>\n\t\tbtn.addEventListener('click', function () {\n\t\t\tconst makeDefaultUrl = window.braintreeUrls.makePaymentMethodDefaultUrl;\n\t\t\tconst paymentMehtodId = this.dataset.id;\n\t\t\tconst paymentProcessorId =\n\t\t\t\twindow.braintreePreferences.paymentMethods.BRAINTREE_PAYPAL\n\t\t\t\t\t.paymentMethodId;\n\t\t\tconst loaderContainer = document.getElementById('paypalAccountBtLoader');\n\t\t\tconst loader = loaderInstance(loaderContainer);\n\n\t\t\tloader.show();\n\n\t\t\thelper.setDefaultProperty({\n\t\t\t\turl: makeDefaultUrl,\n\t\t\t\tid: paymentMehtodId,\n\t\t\t\tpaymentMethodID: paymentProcessorId,\n\t\t\t\tloader,\n\t\t\t});\n\t\t})\n\t);\n};\n\nmodule.exports = PayPalAccountModel;\n","'use strict';\n\n/* global Promise $ */\n\nconst braintreePayPalSDK = require('../braintreesdk/braintreePayPalSDK');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst requestsHelper = require('../helpers/payPalRequestsHelperGlobal');\n\nconst loaderInstance = require('../../loaderHelper');\n\n/**\n * PayPal base model constructor\n * @param {Object} alertHandlerModel alert handler model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalBaseModel(\n\talertHandlerModel,\n\tbtClientInstancePromise,\n\tpayPalButtonSelector,\n\tpayPalConfigurations,\n\t$loaderContainer\n) {\n\tthis.isVaultMode = payPalConfigurations.options.flow !== 'checkout';\n\tthis.requestBillingAgreement =\n\t\tBoolean(payPalConfigurations.options.requestBillingAgreement) &&\n\t\tthis.isVaultMode;\n\tthis.btClientInstancePromise = btClientInstancePromise;\n\tthis.payPalButtonSelector = payPalButtonSelector;\n\tthis.payPalConfigurations = payPalConfigurations;\n\t// Fraud data related\n\tthis.isFraudToolsEnabled = payPalConfigurations.isFraudToolsEnabled;\n\t// Setup init fraudData value for default case (default case: fraud data disabled)\n\tthis.fraudDataPromise = Promise.resolve({\n\t\tfraudDataCollectionDisabled: true,\n\t});\n\n\t// URLs\n\tthis.basketDataUrl = payPalConfigurations.getOrderInfoUrl;\n\tthis.submitPaymentUrl = payPalConfigurations.paypalHandle;\n\tthis.placeOrderStageUrl = payPalConfigurations.redirectUrl;\n\tthis.validateAddressesUrl = payPalConfigurations.validateAddressesUrl;\n\tthis.updateShippingMethodsListUrl =\n\t\tpayPalConfigurations.updateShippingMethodsListUrl;\n\n\tthis.braintreePayPalSDK = braintreePayPalSDK.payPalButtonRendering;\n\n\tthis.alertHandlerModel = alertHandlerModel;\n\tthis.loader = loaderInstance($loaderContainer);\n\n\tthis.basketData = null;\n\tthis.error = null;\n}\n\n/* -------------------- Payment Callbacks -------------------- */\n\n/**\n * Method triggers when buyer approved payment in PayPal modal and they passed succesfully\n * THIS METHOD NEEDS TO BE OVERRIDDEN in children class\n * @param {Object} payload buyer's data from PayPal\n * @param {boolean} isExpressCheckout true or false/undefined depending on whether it's EC or not\n * @returns {void} either updates paypalBaseModel error/placeOrderStageUrl properties or payload billing address\n */\nPayPalBaseModel.prototype.onApprovePaymentCallback = function (\n\tpayload,\n\tisExpressCheckout\n) {\n\t// basic payload validation\n\tconst ppDetails = payload.details;\n\tconst ppShippingAddress = ppDetails.shippingAddress;\n\tconst city = ppShippingAddress.city;\n\tconst state = ppShippingAddress.state;\n\tconst country = ppShippingAddress.countryCode;\n\tconst postalCode = ppShippingAddress.postalCode;\n\n\tif (!ppDetails.billingAddress) {\n\t\ttry {\n\t\t\tppDetails.billingAddress = {\n\t\t\t\tcity: city,\n\t\t\t\tcountryCode: country,\n\t\t\t\tline1: ppShippingAddress.line1,\n\t\t\t\tline2: ppShippingAddress.line2 || '',\n\t\t\t\tpostalCode: postalCode,\n\t\t\t\tstate: state,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.alertHandlerModel.showBillingAddressIsNotSupportedError();\n\t\t\tthis.error = error;\n\t\t}\n\t}\n\n\tif (isExpressCheckout) {\n\t\tconst helper = require('../../helper');\n\n\t\tconst paymentMethodId = window.braintreeConstants.PAYMENT_METHOD_ID_PAYPAL;\n\t\tconst addressQueryString = `city=${city.replaceAll(\n\t\t\t' ',\n\t\t\t'%20'\n\t\t)}&stateCode=${state}&countryCode=${country}&postalCode=${postalCode}`;\n\t\tconst url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\n\n\t\thelper.getApplicableShippingOptions(url).then((data) => {\n\t\t\tlet shippingOptions = data.shippingOptions;\n\t\t\tif (\n\t\t\t\t!shippingOptions.some(\n\t\t\t\t\t(shippingOption) => shippingOption.selected === true\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthis.placeOrderStageUrl = `${window.braintreeUrls.chooseShippingUrl}&errorId=error.shippingoption.invalid`;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/**\n * Method triggers when buyer canceled payment in PayPal modal\n * THIS METHOD CAN BE OVERRIDDEN in children class\n */\nPayPalBaseModel.prototype.onCancelPaymentCallback = function () {};\n\n/**\n * Method triggers when buyer clicked on PayPal button and PayPal modal is opening\n * THIS METHOD CAN BE OVERRIDDEN in children class\n * @returns {Object} Amount and Shipping address from basket\n */\nPayPalBaseModel.prototype.onOrderCreateCallback = async function () {\n\t// Hide custom error on buyer PayPal button click.\n\tthis.alertHandlerModel.hideAlerts();\n\n\t// Get basket again in case if \"onPayPalButtonClickCallback\" wasn't triggered (Change Payment Method Button case)\n\tconst basketData =\n\t\tthis.basketData || (await requestsHelper.getBasketData(this.basketDataUrl));\n\tconst shippingAddress = basketData.shippingAddress || this.savedPaypalAddress;\n\n\tconst payPalConfigurations = this.payPalConfigurations;\n\tconst mainPayPalConfigurations = payPalConfigurations.options;\n\tconst requestBillingAgreement =\n\t\tmainPayPalConfigurations.requestBillingAgreement;\n\n\tconst paymentObjectData = {\n\t\tamount: basketData.amount,\n\t\tcurrency: mainPayPalConfigurations.currency,\n\t\tflow: mainPayPalConfigurations.flow,\n\t\tintent: mainPayPalConfigurations.intent,\n\t\tlocale: mainPayPalConfigurations.locale,\n\t\tenableShippingAddress: mainPayPalConfigurations.enableShippingAddress,\n\t\tbillingAgreementDescription:\n\t\t\tmainPayPalConfigurations.billingAgreementDescription,\n\t\tdisplayName: mainPayPalConfigurations.displayName,\n\t};\n\n\t// \"requestBillingAgreement\" will be enabled or when Checkout with Vault is enabled\n\t// Vault mode should be also enabled\n\tif (requestBillingAgreement) {\n\t\tpaymentObjectData.requestBillingAgreement = requestBillingAgreement;\n\n\t\tif (mainPayPalConfigurations.billingAgreementDetails) {\n\t\t\tpaymentObjectData.billingAgreementDetails = {\n\t\t\t\tdescription:\n\t\t\t\t\tmainPayPalConfigurations.billingAgreementDetails.description,\n\t\t\t};\n\t\t}\n\t}\n\n\t// Case when process from PDP & Cart & Mini Cart & Checkout and basket isn't empty or we on Account page\n\tif (shippingAddress) {\n\t\t// shippingAddressEditable should be always false for ChangePaymentMehtod button, and true for smart PayPal button\n\t\tpaymentObjectData.shippingAddressEditable =\n\t\t\t!payPalConfigurations.changePMButtonEnabled;\n\t\tpaymentObjectData.shippingAddressOverride = {\n\t\t\tline1: shippingAddress.line1,\n\t\t\tline2: shippingAddress.line2,\n\t\t\tcity: shippingAddress.city,\n\t\t\tstate: shippingAddress.state,\n\t\t\tpostalCode: shippingAddress.postalCode,\n\t\t\tcountryCode: shippingAddress.countryCode,\n\t\t\tphone: shippingAddress.phone,\n\t\t\trecipientName: shippingAddress.recipientName,\n\t\t};\n\t}\n\n\treturn paymentObjectData;\n};\n\n/**\n * Callback triggers when buyer clicked on PayPal button\n * @param {Object} _ first not used param\n * @param {Object} actions BT actions object\n */\n// eslint-disable-next-line no-unused-vars\nPayPalBaseModel.prototype.onPayPalButtonClickCallback = async function (\n\tfundingSourceResponse\n) {\n\t// Hide custom error on buyer PayPal button click.\n\tthis.alertHandlerModel.hideAlerts();\n\tthis.basketData = this.basketDataUrl\n\t\t? await requestsHelper.getBasketData(this.basketDataUrl)\n\t\t: null;\n\n\tif (document.getElementById('braintreePaypalFundingSource')) {\n\t\tdocument.getElementById('braintreePaypalFundingSource').value =\n\t\t\tfundingSourceResponse.fundingSource;\n\t}\n};\n\n/**\n * Method triggers when error happens during PayPal modal payment processing\n * THIS METHOD CAN BE OVERRIDDEN in children class\n * @param {Object} error error object with \"message\" and \"code\" inside\n */\nPayPalBaseModel.prototype.onErrorPaymentCallback = function (error) {\n\tthis.alertHandlerModel.showBraintreeError(error);\n};\n\n/**\n * This method is executed when creating paypalCheckoutInstance. Should contain configs for \"braintree.paypalCheckout.create\" method.\n * Should only be used inside \"braintreePayPalSDK\" file\n * @param {Object} btClientInstance Braintree client instance\n * @returns {Object} object with additional configurations\n */\nPayPalBaseModel.prototype.payPalCheckoutInstanceConfigs = function (\n\tbtClientInstance\n) {\n\treturn {\n\t\tclient: btClientInstance,\n\t};\n};\n\n/**\n * This method is executed when loading PayPal SDK\n * @returns {Object} object with Checkout mode PayPal SDK configs\n */\nPayPalBaseModel.prototype.payPalCheckoutSdkConfigs = function () {\n\tconst isChangePaymentButtonActive =\n\t\tthis.payPalConfigurations.changePMButtonEnabled;\n\tconst intent = this.payPalConfigurations.options.intent;\n\tconst currency = this.payPalConfigurations.options.currency;\n\tconst enableFundingList = this.payPalConfigurations.options.enableFundingList;\n\tlet disableFundingList = this.payPalConfigurations.options.disableFundingList;\n\tconst payPalSDKConfigObject = {\n\t\tintent: intent,\n\t\tcurrency: currency,\n\t\tcomponents: 'buttons,messages',\n\t\tcommit: false,\n\t};\n\n\t// Functionality for disabling Debit/Credit Card Button when Change Payment Method Button is enabled\n\tif (isChangePaymentButtonActive && disableFundingList !== undefined) {\n\t\tdisableFundingList += ',card';\n\t} else if (isChangePaymentButtonActive && disableFundingList === undefined) {\n\t\tdisableFundingList = 'card';\n\t}\n\n\tif (enableFundingList !== undefined) {\n\t\tpayPalSDKConfigObject['enable-funding'] = enableFundingList;\n\t}\n\n\tif (disableFundingList !== undefined) {\n\t\tpayPalSDKConfigObject['disable-funding'] = disableFundingList;\n\t}\n\n\treturn payPalSDKConfigObject;\n};\n\n/**\n * This method is executed when loading PayPal SDK\n * @returns {Object} object with Vault mode PayPal SDK configs\n */\nPayPalBaseModel.prototype.payPalVaultSdkConfigs = function () {\n\tconst isChangePaymentButtonActive =\n\t\tthis.payPalConfigurations.changePMButtonEnabled;\n\tconst enableFundingList = this.payPalConfigurations.options.enableFundingList;\n\tlet disableFundingList = this.payPalConfigurations.options.disableFundingList;\n\n\t// Functionality for disabling Debit/Credit Card Button when Change Payment Method Button is enabled\n\tif (isChangePaymentButtonActive && disableFundingList !== undefined) {\n\t\tdisableFundingList += ',card';\n\t} else if (isChangePaymentButtonActive && disableFundingList === undefined) {\n\t\tdisableFundingList = 'card';\n\t}\n\n\tconst payPalVaultSdkConfigsObject = {\n\t\tvault: true,\n\t\tcomponents: 'buttons,messages',\n\t};\n\n\tif (enableFundingList !== undefined) {\n\t\tpayPalVaultSdkConfigsObject['enable-funding'] = enableFundingList;\n\t}\n\n\tif (disableFundingList !== undefined) {\n\t\tpayPalVaultSdkConfigsObject['disable-funding'] = disableFundingList;\n\t}\n\n\treturn payPalVaultSdkConfigsObject;\n};\n\n/* -------------------- Payment logic -------------------- */\n\n/**\n * Function which should be called when we need to init PayPal payment button\n * @returns {Promise} PayPal button\n */\nPayPalBaseModel.prototype.initPayment = function () {\n\tconst CurrentPayPalPaymenProcessorModelInstance = this;\n\n\treturn this.braintreePayPalSDK(\n\t\tthis.btClientInstancePromise,\n\t\tthis.isVaultMode,\n\t\tthis.payPalConfigurations,\n\t\t[CurrentPayPalPaymenProcessorModelInstance]\n\t);\n};\n\n/**\n * Generate fraud data if enabled\n */\nPayPalBaseModel.prototype.generateFraudData = function () {\n\tif (this.isFraudToolsEnabled) {\n\t\tthis.fraudDataPromise = braintreeGeneral.collectFraudData(\n\t\t\tthis.btClientInstancePromise\n\t\t);\n\t}\n\t// Don't need \"else\" case, since default value was inited in constructor\n};\n\nmodule.exports = PayPalBaseModel;\n","'use strict';\n\nconst PayPalExpressModel = require('./payPalExpressModel');\n\n/**\n * PayPal cart model constructor\n * @param {Object} alertHandlerModel alert handler model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {Object} $csrfToken CSRF token js container\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalCartModel(\n\talertHandlerModel,\n\tbtClientInstancePromise,\n\tpayPalButtonSelector,\n\tpayPalConfigurations,\n\t$csrfToken,\n\t$loaderContainer\n) {\n\t// Init PayPalExpressModel constructor\n\tPayPalExpressModel.call(\n\t\tthis,\n\t\talertHandlerModel,\n\t\tbtClientInstancePromise,\n\t\tpayPalButtonSelector,\n\t\tpayPalConfigurations,\n\t\t$csrfToken,\n\t\t$loaderContainer\n\t);\n\n\tthis.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\n}\n\n// ES5 inheritance\nPayPalCartModel.prototype = Object.create(PayPalExpressModel.prototype);\n\n// Show error in case if current basket has zero total price\nPayPalCartModel.prototype.onPayPalButtonClickCallback = async function (\n\t_,\n\tactions\n) {\n\tawait PayPalExpressModel.prototype.onPayPalButtonClickCallback.call(\n\t\tthis,\n\t\t_,\n\t\tactions\n\t);\n\tlet action;\n\n\tif (this.basketData.amount === 0) {\n\t\tthis.alertHandlerModel.showZeroAmountError();\n\n\t\taction = actions.reject();\n\t}\n\n\treturn action;\n};\n\nmodule.exports = PayPalCartModel;\n","'use strict';\n\nconst PayPalBaseModel = require('./payPalBaseModel');\nconst helper = require('../../helper');\nconst payPalCheckoutModelHelper = require('../helpers/payPalCheckoutModelHelper');\nconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\nconst paypalListHelper = require('../helpers/payPalListHelper');\n\n/**\n * PayPal checkout model constructor\n * @param {Object} alertHandlerModel alert handler model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {Object} $continueButton continue button js container\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalCheckoutPaymentModel(\n\talertHandlerModel,\n\tbtClientInstancePromise,\n\tpayPalButtonSelector,\n\tpayPalConfigurations,\n\t$continueButton,\n\t$loaderContainer\n) {\n\tPayPalBaseModel.call(\n\t\tthis,\n\t\talertHandlerModel,\n\t\tbtClientInstancePromise,\n\t\tpayPalButtonSelector,\n\t\tpayPalConfigurations,\n\t\t$loaderContainer\n\t);\n\n\tthis.$continueButton = $continueButton;\n\tthis.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\n}\n\n// ES5 inheritance\nPayPalCheckoutPaymentModel.prototype = Object.create(PayPalBaseModel.prototype);\n\n// For more details see same method from \"PayPalBaseModel\"\n// Add additional configs which are needed for \"Change Payment Method Button\" feature\nPayPalCheckoutPaymentModel.prototype.payPalCheckoutInstanceConfigs = function (\n\tbtClientInstance\n) {\n\tconst checkoutInstanceConfigs =\n\t\tPayPalBaseModel.prototype.payPalCheckoutInstanceConfigs.call(\n\t\t\tthis,\n\t\t\tbtClientInstance\n\t\t);\n\n\tif (this.changePMButtonEnabled) {\n\t\tcheckoutInstanceConfigs.autoSetDataUserIdToken = true;\n\t}\n\n\treturn checkoutInstanceConfigs;\n};\n\n// For more details see same method from \"PayPalBaseModel\"\n// Show error in case if current basket has zero total price\nPayPalCheckoutPaymentModel.prototype.onPayPalButtonClickCallback =\n\tasync function (_, actions) {\n\t\tawait PayPalBaseModel.prototype.onPayPalButtonClickCallback.call(\n\t\t\tthis,\n\t\t\t_,\n\t\t\tactions\n\t\t);\n\t\tlet action;\n\n\t\tif (this.basketData.amount === 0) {\n\t\t\tthis.alertHandlerModel.showZeroAmountError();\n\n\t\t\taction = actions.reject();\n\t\t}\n\n\t\treturn action;\n\t};\n\n// For more details see same method from \"PayPalBaseModel\"\n// Mark new account as the session one, fill billing form with data from paypal\nPayPalCheckoutPaymentModel.prototype.onApprovePaymentCallback = function (\n\tpayload\n) {\n\t// Calling parrent method to proceed with PayPal payload validation\n\tPayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload);\n\n\t// Error will be handled on BaseModel level\n\tif (this.error) {\n\t\treturn;\n\t}\n\n\tthis.loader.show();\n\tconst PayPalCheckoutPaymentModelInstance = this;\n\tconst isBuyerAuthenificated =\n\t\tPayPalCheckoutPaymentModelInstance.payPalConfigurations\n\t\t\t.isBuyerAuthenticated;\n\tconst btDetails = payload.details;\n\tconst nonce = payload.nonce;\n\tconst email = payload.details.email;\n\tconst btBillingAddress = btDetails ? btDetails.billingAddress : null;\n\tconst isSessionPaymentsEnabled =\n\t\twindow.braintreePreferences.isSessionPaymentsEnabled;\n\n\t// Remove all other Payments session payments\n\thelper.removeActiveSessionPayment();\n\n\t// Fill just PayPal related form fields\n\tbillingFormHelper.fillPayPalPaymentFields(\n\t\tbtDetails,\n\t\tisSessionPaymentsEnabled\n\t);\n\n\t// Copy billing address from PayPal to DW billing address form fields\n\tif (btBillingAddress && btDetails) {\n\t\tbillingFormHelper.copyPayPalBillingAddressToDw(btBillingAddress, btDetails);\n\t}\n\n\tif (isSessionPaymentsEnabled) {\n\t\t// Hide PayPal buttons block\n\t\tpayPalCheckoutModelHelper.hidePayPalButtons();\n\n\t\t// Make current PayPal account as a session account\n\t\tbillingFormHelper.storePaymentAsSessionPayment(nonce, email);\n\n\t\tbillingFormHelper.setSessionAccountOptionDefault();\n\n\t\t// Add billing address on session payment option level\n\t\tpayPalCheckoutModelHelper.addBillingAddressOnPaymentOptionLevel(btDetails);\n\t}\n\n\t// Check whether buyer has proceeded with the same email which is already stored\n\t// if \"yes\" we hide stored account with the same email in dropdown\n\t// if \"no\" we show all existent PP accounts in dropdown (stored + new session account)\n\tpaypalListHelper.handleStoredAccountsShowing(\n\t\tisBuyerAuthenificated,\n\t\tisSessionPaymentsEnabled\n\t);\n\n\tconst $formNonce = document.getElementById('braintreePayPalNonce');\n\n\tif ($formNonce && $formNonce.value === '' && nonce) {\n\t\t$formNonce.value = nonce;\n\t}\n\n\t// Gennerate and add fraud data in to the billing form\n\tPayPalCheckoutPaymentModelInstance.fraudDataPromise\n\t\t.then(function (data) {\n\t\t\t// We have \"fraudDataCollectionDisabled\" flag only in case if we have fraud data collection disabled\n\t\t\tif (!data.fraudDataCollectionDisabled) {\n\t\t\t\tbillingFormHelper.fillFraudDataInput(data);\n\t\t\t}\n\t\t})\n\t\t.then(function () {\n\t\t\t// Submit payment to server\n\t\t\tPayPalCheckoutPaymentModelInstance.$continueButton.click();\n\n\t\t\tPayPalCheckoutPaymentModelInstance.loader.hide();\n\t\t});\n};\n\nmodule.exports = PayPalCheckoutPaymentModel;\n","'use strict';\n\nconst PayPalBaseModel = require('./payPalBaseModel');\nconst payPalExpressModelHelper = require('../helpers/payPalExpressModelHelper');\nconst billingFormHelper = require('../helpers/payPalBillingFormHelperGlobal');\nconst requestHelper = require('../helpers/payPalRequestsHelperGlobal');\nconst productHelper = require('../helpers/payPalProductPageModelHelper');\nconst helper = require('../../helper');\n\n/**\n * PayPal express model constructor\n * @param {Object} alertHandlerModel alert handler model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {Object} $csrfToken CSRF token js container\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalExpressModel(\n\talertHandlerModel,\n\tbtClientInstancePromise,\n\tpayPalButtonSelector,\n\tpayPalConfigurations,\n\t$csrfToken,\n\t$loaderContainer\n) {\n\t// Init PayPalBaseModel constructor\n\tPayPalBaseModel.call(\n\t\tthis,\n\t\talertHandlerModel,\n\t\tbtClientInstancePromise,\n\t\tpayPalButtonSelector,\n\t\tpayPalConfigurations,\n\t\t$loaderContainer\n\t);\n\n\tthis.$csrfToken = $csrfToken;\n\tthis.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\n}\n\n// ES5 inheritance\nPayPalExpressModel.prototype = Object.create(PayPalBaseModel.prototype);\n\n// For more details see same method from \"PayPalBaseModel\"\n// Add additional configs which are needed for \"Change payment method button\" feature\nPayPalExpressModel.prototype.payPalCheckoutInstanceConfigs = function (\n\tbtClientInstance\n) {\n\tconst checkoutInstanceConfigs =\n\t\tPayPalBaseModel.prototype.payPalCheckoutInstanceConfigs.call(\n\t\t\tthis,\n\t\t\tbtClientInstance\n\t\t);\n\n\tif (this.changePMButtonEnabled) {\n\t\tcheckoutInstanceConfigs.autoSetDataUserIdToken = true;\n\t}\n\n\treturn checkoutInstanceConfigs;\n};\n\n/**\n * Method triggers when buyer clicked on PayPal button and PayPal modal is opening\n * @returns {Object} Amount and Shipping address from basket\n */\nPayPalExpressModel.prototype.onOrderCreateCallback = async function () {\n\tconst basketDataUrl = this.basketDataUrl;\n\n\tthis.basketData = await requestHelper.getBasketData(basketDataUrl);\n\n\tconst isUseSavedPaypalAddress =\n\t\tthis.changePMButtonEnabled && !this.basketData.shippingAddress;\n\n\tif (isUseSavedPaypalAddress) {\n\t\tthis.savedPaypalAddress = payPalExpressModelHelper.getSavedPaypalAddress(\n\t\t\tthis.payPalButtonSelector\n\t\t);\n\t}\n\n\treturn PayPalBaseModel.prototype.onOrderCreateCallback.call(this);\n};\n\n// For more details see same method from \"PayPalBaseModel\"\n// Create and submit billing data to the server. Redirect on order reivew checkout step\nPayPalExpressModel.prototype.onApprovePaymentCallback = function (payload) {\n\t// Calling parrent method to proceed with PayPal payload validation\n\tPayPalBaseModel.prototype.onApprovePaymentCallback.call(this, payload, true);\n\n\t// Error will be handled on BaseModel level\n\tif (this.error) {\n\t\treturn;\n\t}\n\n\tthis.loader.show();\n\n\tconst PayPalExpressInstance = this;\n\tconst payloadDetails = payload.details;\n\tconst $payPalButtonWrapper = document.querySelector(\n\t\t'.js-braintree-cart-paypal-buttons-wrap'\n\t);\n\tconst $braintreePayPalFundingSource = document.getElementById(\n\t\t'braintreePaypalFundingSource'\n\t);\n\tconst braintreePayPalFundingSource = $braintreePayPalFundingSource.value;\n\n\tconst paypalCheckoutFormFields = helper.tryParseJSON(\n\t\t$payPalButtonWrapper.getAttribute('data-paypal-checkout-form-fields')\n\t);\n\tconst billingAddressData =\n\t\tbillingFormHelper.createBillingAddressData(payloadDetails);\n\n\t// Create form data only with billing address\n\tconst billingFormData = billingFormHelper.createBillingAddressFormData(\n\t\tpaypalCheckoutFormFields,\n\t\tbillingAddressData\n\t);\n\n\tbillingFormHelper.appendCsrfTokenToFormData(\n\t\tbillingFormData,\n\t\tPayPalExpressInstance.$csrfToken\n\t);\n\tbillingFormHelper.appendBraintreePaypalFundingSourceToFormData(\n\t\tbillingFormData,\n\t\tbraintreePayPalFundingSource\n\t);\n\n\t// REGEX for js-braintree-(pdp|pvp)-button, js-braintree-(pdp|pvp)-button-global\n\tconst BRAINTREE_BUTTON_REGEX =\n\t\t/(^|\\s)js-braintree-p[dv]p-button(-global)?(\\s|$)/;\n\n\t// It will generate FFraud data only if it Fraud Data collection was enabled\n\tPayPalExpressInstance.fraudDataPromise\n\t\t.then(function (data) {\n\t\t\tif (!data.fraudDataCollectionDisabled) {\n\t\t\t\tbillingFormHelper.appendFraudDataToFormData(\n\t\t\t\t\tbillingFormData,\n\t\t\t\t\tdata.deviceData\n\t\t\t\t);\n\t\t\t}\n\t\t})\n\t\t.then(function () {\n\t\t\treturn requestHelper.validateAddresses(\n\t\t\t\tPayPalExpressInstance.validateAddressesUrl,\n\t\t\t\tpayloadDetails\n\t\t\t);\n\t\t})\n\t\t.then(function (validationResult) {\n\t\t\tif (validationResult.error) {\n\t\t\t\tconst parentWrapper = $payPalButtonWrapper.parentElement.parentElement;\n\n\t\t\t\tif (BRAINTREE_BUTTON_REGEX.test(parentWrapper.className)) {\n\t\t\t\t\tproductHelper.removeProductFromCart();\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(validationResult.message);\n\t\t\t}\n\n\t\t\tlet shippingAddressData;\n\n\t\t\t// If shipping address was presented in PayPal payload, create a shipping address object,\n\t\t\t// stringify it and store in FormData as an input\n\t\t\tif (payloadDetails.shippingAddress) {\n\t\t\t\tshippingAddressData =\n\t\t\t\t\tpayPalExpressModelHelper.createShippingAddressData(payloadDetails);\n\n\t\t\t\tpayPalExpressModelHelper.appendShippingDataAsStringToFormData(\n\t\t\t\t\tbillingFormData,\n\t\t\t\t\tshippingAddressData\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Create a shipping address object, stringify it and store in FormData as an input\n\t\t\tbillingFormHelper.appendBillingAddressAsStringToFormData(\n\t\t\t\tbillingFormData,\n\t\t\t\tbillingAddressData\n\t\t\t);\n\n\t\t\tbillingFormHelper.appendEmailAsStringToFormData(\n\t\t\t\tbillingFormData,\n\t\t\t\tpayloadDetails.email\n\t\t\t);\n\n\t\t\tbillingFormHelper.appendBtPaymentFieldsToFormData(\n\t\t\t\tbillingFormData,\n\t\t\t\tpayload\n\t\t\t);\n\t\t})\n\t\t.then(function () {\n\t\t\t// Submit customer form with email (CheckoutServices-SubmitCustomer)\n\t\t\t// as we skip step \"login via guest/registered user\" while express checkout\n\t\t\t// email is set only in case of guest checkout and if email is not already set\n\t\t\tpayPalExpressModelHelper.submitCustomerForm(payloadDetails.email);\n\t\t})\n\t\t.then(function () {\n\t\t\trequestHelper.submitPaymentDataToServerPromise(\n\t\t\t\tPayPalExpressInstance.submitPaymentUrl,\n\t\t\t\tbillingFormData,\n\t\t\t\tPayPalExpressInstance.placeOrderStageUrl,\n\t\t\t\tPayPalExpressInstance.loader,\n\t\t\t\tPayPalExpressInstance.alertHandlerModel\n\t\t\t);\n\n\t\t\t// PayPalExpressInstance.loader.hide();\n\t\t})\n\t\t.catch(function (error) {\n\t\t\tPayPalExpressInstance.alertHandlerModel.showError(error);\n\n\t\t\tPayPalExpressInstance.loader.hide();\n\t\t});\n};\n\nmodule.exports = PayPalExpressModel;\n","'use strict';\n\nconst PayPalBaseModel = require('./payPalBaseModel');\nconst PayPalExpressModel = require('./payPalExpressModel');\nconst PayPalProductModelHelper = require('../helpers/payPalProductPageModelHelper');\nconst payPalExpressModelHelper = require('../helpers/payPalExpressModelHelper');\nconst requestsHelper = require('../helpers/payPalRequestsHelperGlobal');\n\n/**\n * PayPal product model constructor\n * @param {Object} alertHandlerModel alert handler model\n * @param {Promise} btClientInstancePromise BT client instance promise\n * @param {string} payPalButtonSelector PayPal button selector\n * @param {Object} payPalConfigurations configs from server (taken from data attr)\n * @param {Object} $csrfToken CSRF token js container\n * @param {Object} $loaderContainer loader js container\n */\nfunction PayPalProductModel(\n\talertHandlerModel,\n\tbtClientInstancePromise,\n\tpayPalButtonSelector,\n\tpayPalConfigurations,\n\t$csrfToken,\n\t$loaderContainer\n) {\n\t// Init PayPalExpressModel constructor\n\tPayPalExpressModel.call(\n\t\tthis,\n\t\talertHandlerModel,\n\t\tbtClientInstancePromise,\n\t\tpayPalButtonSelector,\n\t\tpayPalConfigurations,\n\t\t$csrfToken,\n\t\t$loaderContainer\n\t);\n\n\tthis.changePMButtonEnabled = payPalConfigurations.changePMButtonEnabled;\n}\n\n// ES5 inheritance\nPayPalProductModel.prototype = Object.create(PayPalExpressModel.prototype);\n\n// Dummy function to override default behavior and do not execute \"GetOrderInfo\" call.\n// Instead, we will get basket data inside \"onOrderCreateCallback\"\nPayPalProductModel.prototype.onPayPalButtonClickCallback = function (e) {\n\tPayPalBaseModel.prototype.onPayPalButtonClickCallback.call(this, e);\n};\n\n// Add product to the Cart\nPayPalProductModel.prototype.onOrderCreateCallback = async function () {\n\tconst regex = /pdp|pvp/g;\n\tconst flow = this.payPalButtonSelector.match(regex).join();\n\n\tawait requestsHelper.addProductToCart(this.payPalButtonSelector, flow);\n\n\tthis.basketData = await requestsHelper.getBasketData(this.basketDataUrl);\n\n\tconst isUseSavedPaypalAddress =\n\t\tthis.changePMButtonEnabled && !this.basketData.shippingAddress;\n\n\tif (isUseSavedPaypalAddress) {\n\t\tthis.savedPaypalAddress = payPalExpressModelHelper.getSavedPaypalAddress(\n\t\t\tthis.payPalButtonSelector\n\t\t);\n\t}\n\n\treturn PayPalBaseModel.prototype.onOrderCreateCallback.call(this);\n};\n\n// On error remove added product from Cart\nPayPalProductModel.prototype.onErrorPaymentCallback = function (error) {\n\tPayPalExpressModel.prototype.onErrorPaymentCallback.call(this, error);\n\n\tPayPalProductModelHelper.removeProductFromCart();\n};\n\n// On cancel remove added product from Cart\nPayPalProductModel.prototype.onCancelPaymentCallback = function () {\n\tPayPalProductModelHelper.removeProductFromCart();\n};\n\nmodule.exports = PayPalProductModel;\n","'use strict';\n\nconst helper = require('../../helper');\nconst PayPalScriptLoading = class {\n\tconstructor() {\n\t\tthis.clientToken = this.getClientToken();\n\t\tthis.configurations = this.getConfigurations();\n\t}\n\n\tgetValueByAttributeName(attributeName) {\n\t\tconst $element = document.querySelector(`[${attributeName}]`);\n\n\t\treturn $element ? $element.getAttribute(attributeName) : null;\n\t}\n\n\tgetClientToken() {\n\t\treturn this.getValueByAttributeName('data-bt-client-token');\n\t}\n\n\tgetConfigurations() {\n\t\tconst attributeName = 'data-braintree-config';\n\t\tconst $element = document.querySelector(\n\t\t\t`[${attributeName}*=\"paypalConfig\"]`\n\t\t);\n\n\t\treturn $element\n\t\t\t? helper.tryParseJSON($element.getAttribute(attributeName))\n\t\t\t: null;\n\t}\n\n\tcreateClientInstance() {\n\t\treturn braintree.client.create({\n\t\t\tauthorization: this.clientToken,\n\t\t});\n\t}\n\n\tcreatePayPalCheckoutInstance() {\n\t\treturn this.createClientInstance().then((clientInstance) => {\n\t\t\treturn braintree.paypalCheckout.create({\n\t\t\t\tclient: clientInstance,\n\t\t\t});\n\t\t});\n\t}\n\n\tgetPayPalSdkUrlCongifuration() {\n\t\tconst config = { components: 'buttons,messages' };\n\n\t\tconst {\n\t\t\toptions: configOptions,\n\t\t\tchangePMButtonEnabled: isChangePaymentButtonActive,\n\t\t} = this.configurations;\n\n\t\tconst isVaultMode = configOptions.flow !== 'checkout';\n\t\tconst enableFundingList = configOptions.enableFundingList;\n\t\tlet disableFundingList = configOptions.disableFundingList;\n\n\t\tif (isVaultMode) {\n\t\t\tconfig.vault = true;\n\t\t} else {\n\t\t\tconfig.commit = false;\n\t\t\tconfig.intent = configOptions.intent;\n\t\t\tconfig.currency = configOptions.currency;\n\t\t}\n\n\t\t// Functionality for disabling Debit/Credit Card Button when Change Payment Method Button is enabled\n\t\tif (isChangePaymentButtonActive && disableFundingList !== undefined) {\n\t\t\tdisableFundingList += ',card';\n\t\t} else if (\n\t\t\tisChangePaymentButtonActive &&\n\t\t\tdisableFundingList === undefined\n\t\t) {\n\t\t\tdisableFundingList = 'card';\n\t\t}\n\n\t\tif (enableFundingList !== undefined) {\n\t\t\tconfig['enable-funding'] = enableFundingList;\n\t\t}\n\n\t\tif (disableFundingList !== undefined) {\n\t\t\tconfig['disable-funding'] = disableFundingList;\n\t\t}\n\n\t\treturn config;\n\t}\n\n\tloadPayPalSDK() {\n\t\t// eslint-disable-next-line no-undef\n\t\tconst promise = new Promise((resolve) => resolve(this));\n\n\t\tif (window.isPayPalSDKLoaded) {\n\t\t\treturn promise;\n\t\t}\n\n\t\t// In case if paypal SDK is loaded only for credit messages, we need to delete it\n\t\t// and load again to avoid getting unhandled errors in console\n\t\tif (window.isPayPalCreditMessageLoaded) {\n\t\t\tdelete window.paypal;\n\t\t}\n\n\t\tif (!this.clientToken || !this.configurations) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t'An error has occurred. Failed to find client token or configuration.'\n\t\t\t);\n\n\t\t\treturn promise;\n\t\t}\n\n\t\tconst options = this.getPayPalSdkUrlCongifuration();\n\n\t\treturn this.createPayPalCheckoutInstance().then(\n\t\t\t(payPalCheckoutInstance) => {\n\t\t\t\treturn payPalCheckoutInstance.loadPayPalSDK(options).then(() => {\n\t\t\t\t\twindow.isPayPalSDKLoaded = true;\n\n\t\t\t\t\treturn this;\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * This callback runs after the script is loaded\n\t * @callback onLoadCallback\n\t */\n\n\t/**\n\t * @param {onLoadCallback} [onLoadCallback] - A callback runs after the script is loaded\n\t * @returns {ScriptLoading} - A ScriptLoading object\n\t */\n\tloadConnectWithPayPal(onLoadCallback) {\n\t\tconst value = this.getValueByAttributeName('data-cwpp-sdk');\n\n\t\tif (!value) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst script = document.createElement('script');\n\n\t\tscript.src = value;\n\t\tscript.async = true;\n\n\t\tif (onLoadCallback && typeof onLoadCallback === 'function') {\n\t\t\tscript.onload = onLoadCallback;\n\t\t}\n\n\t\tscript.onerror = () => {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t`An upload error occurred and the file ${value} could not be uploaded.`\n\t\t\t);\n\t\t};\n\n\t\tdocument.body.appendChild(script);\n\n\t\treturn this;\n\t}\n\n\tloadPayPalCreditMessages() {\n\t\tconst promise = new Promise((resolve) => resolve(this));\n\n\t\tif (window.isPayPalCreditMessageLoaded || window.isPayPalSDKLoaded) {\n\t\t\treturn promise;\n\t\t}\n\n\t\tif (!this.clientToken) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('An error has occurred. Failed to find client token.');\n\n\t\t\treturn promise;\n\t\t}\n\n\t\tconst options = {\n\t\t\tcomponents: 'messages',\n\t\t\tdataAttributes: { namespace: 'paypalSDK' },\n\t\t};\n\n\t\treturn this.createPayPalCheckoutInstance().then(\n\t\t\t(payPalCheckoutInstance) => {\n\t\t\t\treturn payPalCheckoutInstance.loadPayPalSDK(options).then(() => {\n\t\t\t\t\twindow.isPayPalCreditMessageLoaded = true;\n\n\t\t\t\t\treturn this;\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n};\n\nmodule.exports = PayPalScriptLoading;\n","'use strict';\n\nconst payPalProductPage = require('./components/payPalProductPage');\nconst payPalProductViewPage = require('./components/payPalProductViewPage');\nconst payPalMiniCartPage = require('./components/payPalMiniCartPage');\nconst payPalCartPage = require('./components/payPalCartPage');\nconst payPalAccountPage = require('./components/payPalAccountPage');\nconst apmaPage = require('./components/apmaPage');\nconst payPalCheckoutPage = require('./components/payPalCheckoutPage');\n\nlet btClientInstancePromise;\n\n/**\n * Init PayPal functionality on PDP\n */\nfunction initProduct() {\n\tpayPalProductPage.init(btClientInstancePromise);\n}\n\n/**\n * Init PayPal functionality on PVP\n */\nfunction initQuickView() {\n\tpayPalProductViewPage.init(btClientInstancePromise);\n}\n\n/**\n * Init PayPal functionality on MiniCart\n */\nfunction initMiniCart() {\n\t// For MiniCart we generate client instance inside component.\n\t// This is, since general code which generate client instance executes before client token appear\n\t// This is only applicable for MiniCart\n\tpayPalMiniCartPage.init();\n}\n\n/**\n * Init PayPal functionality on Cart\n */\nfunction initCart() {\n\tpayPalCartPage.init(btClientInstancePromise);\n}\n\n/**\n * Init PayPal functionality on Checkout\n */\nfunction initCheckout() {\n\tpayPalCheckoutPage.init(btClientInstancePromise);\n}\n\n/**\n * Init PayPal functionality on Account\n */\nfunction initAccount() {\n\tpayPalAccountPage.init(btClientInstancePromise);\n}\n\n/**\n * Init PayPal functionality on APMA page\n */\nfunction initAPMA() {\n\tapmaPage.init(btClientInstancePromise);\n}\n\n/**\n * Init general variables which are used on all pages\n * @param {Object} clientInstancePromise client instance promise\n */\nfunction init(clientInstancePromise) {\n\tbtClientInstancePromise = clientInstancePromise;\n}\n\nmodule.exports = {\n\tinit,\n\tinitCheckout,\n\tinitProduct,\n\tinitQuickView,\n\tinitMiniCart,\n\tinitCart,\n\tinitAccount,\n\tinitAPMA,\n};\n","'use strict';\n\nconst AlertHandlerModel = require('../../alertHandler');\n\n/**\n * SRC error handler model\n */\nclass SrcAlertHandlerModel extends AlertHandlerModel {\n\tconstructor(alertMessages) {\n\t\tsuper();\n\t\tthis.alertMessages = alertMessages;\n\t}\n\n\t/**\n\t * Shows 'Zero amount' error\n\t */\n\tshowZeroAmountError() {\n\t\tthis.showError(this.alertMessages.CUSTOM_SRC_ZERO_AMOUNT_ERROR);\n\t}\n\n\t/**\n\t * Handles SRC error by types\n\t * @param {Object} error Error object or error message\n\t */\n\thandleSrcError(error) {\n\t\tif (error.name === 'BraintreeError') {\n\t\t\tthis.showBraintreeError(error);\n\t\t} else {\n\t\t\tthis.showError(error.message || error);\n\t\t}\n\t}\n\n\t/**\n\t * Handles error on checkout from cart\n\t * @param {Object} data error data\n\t */\n\thandleCheckoutFromCartError(data) {\n\t\tlet errorMessage = '';\n\n\t\tif (data.fieldErrors.length) {\n\t\t\tdata.fieldErrors.forEach((error, index) => {\n\t\t\t\tconst keys = Object.keys(error);\n\n\t\t\t\tif (keys.length) {\n\t\t\t\t\terrorMessage += `${keys[index]\n\t\t\t\t\t\t.replace('dwfrm_billing_', '')\n\t\t\t\t\t\t.replace('_', ' ')} ${data.fieldErrors[index][keys[index]]}. `;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.showError(errorMessage);\n\t\t}\n\n\t\tif (data.serverErrors.length) {\n\t\t\tdata.serverErrors.forEach((error) => {\n\t\t\t\terrorMessage += `${error}. `;\n\t\t\t});\n\n\t\t\tthis.showError(errorMessage);\n\t\t}\n\n\t\tif (data.cartError) {\n\t\t\twindow.location.href = data.redirectUrl;\n\t\t}\n\t}\n}\n\nmodule.exports = SrcAlertHandlerModel;\n","'use strict';\n\n/* eslint-disable no-undef */\n/* global braintreeUtils braintree $ */\n\n/**\n * Creates visa checkout instance\n * @param {Promise} btClientInstancePromise BT Client Instance Promise\n * @returns {Promise} visaCheckoutInstance SRC instance\n */\nfunction createVisaCheckout(btClientInstancePromise) {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\treturn braintree.visaCheckout.create({\n\t\t\tclient: btClientInstance,\n\t\t});\n\t});\n}\n\n/**\n * Initialized SRC with options and pass payload data after tokenize\n * @param {Object} SrcBaseModelInstance Instance of SrcBaseModel or it's child classes\n * @returns {Promise} SRC button\n */\nfunction visaCheckoutInitialized(SrcBaseModelInstance) {\n\tconst visaCheckoutInstancePromise = createVisaCheckout(\n\t\tSrcBaseModelInstance.clientInstancePromise\n\t);\n\n\treturn visaCheckoutInstancePromise.then(function (visaCheckoutInstance) {\n\t\tconst srcInitOptions = visaCheckoutInstance.createInitOptions(\n\t\t\tSrcBaseModelInstance.getInitOptionsObject()\n\t\t);\n\n\t\tV.init(srcInitOptions);\n\n\t\t// Event which is triggered when payment successfully completed on SRC end\n\t\tV.on('payment.success', function (payment) {\n\t\t\tvisaCheckoutInstance.tokenize(payment).then(function (payload) {\n\t\t\t\tSrcBaseModelInstance.onTokenizeCallback(payload);\n\t\t\t});\n\t\t});\n\t\tV.on('payment.error', function (_, error) {\n\t\t\tSrcBaseModelInstance.alertHandler.handleSrcError(error);\n\t\t});\n\t\tV.on('payment.cancel', function (payment) {\n\t\t\tif (payment.error) {\n\t\t\t\tSrcBaseModelInstance.alertHandler.showError(\n\t\t\t\t\tSrcBaseModelInstance.alertHandler.alertMessages.CLIENT_GATEWAY_NETWORK\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t});\n}\n\nmodule.exports = {\n\tvisaCheckoutInitialized,\n};\n","'use strict';\n\n/**\n * Inits SRC account functionality on the Account Page\n * @param {Promise} clientInstancePromise client instance promise\n */\nfunction init(clientInstancePromise) {\n\tconst loaderInstance = require('../../loaderHelper');\n\tconst srcHelper = require('../helpers/srcHelper');\n\n\tconst SrcAlertHandlerModel = require('../alerthandler/srcAlertHandlerModel');\n\tconst SrcAccountModel = require('../models/srcAccount');\n\n\tconst $braintreeSrcLoader = document.querySelector(\n\t\t'.js-braintree-src-loader'\n\t);\n\tconst $braintreeSrcButton = document.querySelector(\n\t\t'.js-braintree-src-account-button'\n\t);\n\n\tconst srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\n\tconst $braintreeSrcDeviceDataInput = null;\n\tconst srcLoader = loaderInstance($braintreeSrcLoader);\n\n\tconst alertHandler = new SrcAlertHandlerModel(\n\t\tsrcButtonConfigurations.messages\n\t);\n\tconst SrcAccountModelInstance = new SrcAccountModel(\n\t\tclientInstancePromise,\n\t\tsrcButtonConfigurations,\n\t\t$braintreeSrcDeviceDataInput,\n\t\tsrcLoader,\n\t\talertHandler\n\t);\n\n\t// Hides errors on the Account Page\n\t$braintreeSrcButton.addEventListener('click', alertHandler.hideAlerts);\n\n\tSrcAccountModelInstance.initSrcButton();\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst srcHelper = require('../helpers/srcHelper');\nconst loaderInstance = require('../../loaderHelper');\n\n// Models\nconst SrcCartModel = require('../models/srcCartModel');\nconst SrcAlertHandlerModel = require('../alerthandler/srcAlertHandlerModel');\n\nconst $braintreeCartSrcButton = document.querySelector(\n\t'.js-braintree-cart-src-button'\n);\n\n/**\n * Inits SRC account functionality on the Cart Page\n * @param {Promise} clientInstancePromise client instance promise\n */\nfunction init(clientInstancePromise) {\n\tconst $braintreeSrcLoader = document.querySelector(\n\t\t'.js-braintree-src-loader'\n\t);\n\tconst $totalAmount = document.querySelector('.grand-total');\n\tconst srcLoader = loaderInstance($braintreeSrcLoader);\n\tconst srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\n\tconst $braintreeSrcDeviceDataInput = document.querySelector(\n\t\t'input[name=braintreeSrcDeviceDataInput]'\n\t);\n\tconst alertHandler = new SrcAlertHandlerModel(\n\t\tsrcButtonConfigurations.messages\n\t);\n\n\tconst SrcCheckoutModelInstance = new SrcCartModel(\n\t\tclientInstancePromise,\n\t\tsrcButtonConfigurations,\n\t\t$braintreeSrcDeviceDataInput,\n\t\tsrcLoader,\n\t\talertHandler\n\t);\n\n\t// Hides errors on the Cart Page\n\t$braintreeCartSrcButton.addEventListener('click', alertHandler.hideAlerts);\n\n\tSrcCheckoutModelInstance.initSrcButton();\n\n\t// Tracks cases when total amount equal zero and throw an error\n\tsrcHelper.zeroAmountSrcButtonBehavior($totalAmount, alertHandler);\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst srcHelper = require('../helpers/srcHelper');\nconst loaderInstance = require('../../loaderHelper');\n\n// Models\nconst SrcCheckoutModel = require('../models/srcCheckoutModel');\nconst SrcAlertHandlerModel = require('../alerthandler/srcAlertHandlerModel');\n\nconst $braintreeBillingPageSrcButton = document.querySelector(\n\t'.js-braintree-billing-src-button'\n);\n\n/**\n * Inits SRC account functionality on the Checkout Page\n * @param {Promise} clientInstancePromise client instance promise\n */\nfunction init(clientInstancePromise) {\n\tconst $braintreeSrcLoader = document.querySelector(\n\t\t'.js-braintree-src-loader'\n\t);\n\tconst $totalAmount = document.querySelector('.grand-total-sum');\n\tconst srcLoader = loaderInstance($braintreeSrcLoader);\n\tconst srcButtonConfigurations = srcHelper.getBraintreeSRCButtonConfigs();\n\tconst $braintreeSrcDeviceDataInput = document.querySelector(\n\t\t'input[name=braintreeSrcDeviceDataInput]'\n\t);\n\tconst alertHandler = new SrcAlertHandlerModel(\n\t\tsrcButtonConfigurations.messages\n\t);\n\n\tconst SrcCheckoutModelInstance = new SrcCheckoutModel(\n\t\tclientInstancePromise,\n\t\tsrcButtonConfigurations,\n\t\t$braintreeSrcDeviceDataInput,\n\t\tsrcLoader,\n\t\talertHandler\n\t);\n\n\t// Hides errors on the Checkout/Billing Page\n\t$braintreeBillingPageSrcButton.addEventListener(\n\t\t'click',\n\t\talertHandler.hideAlerts\n\t);\n\n\tSrcCheckoutModelInstance.initSrcButton();\n\n\t// Tracks cases when total amount equal zero and throw an error\n\tsrcHelper.zeroAmountSrcButtonBehavior($totalAmount, alertHandler);\n\n\t// Click SRC tab if session payment ID is SRC and session account value is filled\n\t// in case of checkout through saved SRC card session payment id will be SRC\n\t// but session account value will be empty\n\tconst sessionPaymentMethodId = srcButtonConfigurations.sessionPaymentMethodId;\n\tconst isSrcSessionAccountExist =\n\t\tdocument.getElementById('sessionSrcAccount')?.value !== '';\n\n\tif (sessionPaymentMethodId === 'SRC' && isSrcSessionAccountExist) {\n\t\tdocument.querySelector('.src-tab').click();\n\t}\n\n\t// Close alert saying to chose a diffrent shipping option on submit shipping button click\n\t// in case of express checkout with address to which default shipping option doesn't deliver\n\t// when a customer is redirected to checkout stage shipping\n\tconst $submitShippingBtn = document.querySelector('.submit-shipping');\n\n\t$submitShippingBtn.addEventListener(\n\t\t'click',\n\t\talertHandler.hideControllerCreatedAlerts\n\t);\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst srcHelper = require('../helpers/srcHelper');\nconst srcListHelper = require('../helpers/srcListHelper');\n\n/**\n * Inits SRC list functionality\n */\nfunction init() {\n\tconst $srcAccountList = document.getElementById('braintreeSrcAccountsList');\n\tconst srcListExist = Boolean($srcAccountList);\n\n\tif (srcListExist) {\n\t\tsrcListHelper.srsListStateHandler();\n\n\t\t$srcAccountList.addEventListener('change', function () {\n\t\t\tsrcHelper.srcContentTabHandler(true);\n\t\t});\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\n// Helpers\nconst helper = require('../../helper');\nconst srcListHelper = require('../helpers/srcListHelper');\nconst srcHelper = require('../helpers/srcHelper');\n\nconst $srcSessionAccount = document.getElementById('sessionSrcAccount');\nconst $srcCardDescription = document.getElementById(\n\t'braintreeSrcCardDescription'\n);\nconst $braintreeSrcCardType = document.getElementById('braintreeSrcCardType');\nconst $braintreeSrcLastFourDigits = document.getElementById(\n\t'braintreeSrcLastFourDigits'\n);\nconst $braintreeSrcCreditCardNumber = document.getElementById(\n\t'braintreeSrcCreditCardNumber'\n);\nconst $srcButton = document.querySelector('.js-braintree-src-button');\nconst $accountListBlock = document.querySelector(\n\t'.js-braintree-used-src-account'\n);\n/**\n * Shows used session account(card) in dropdown and handles checkout view\n * @param {Object} srcPayload payload with card data from tokenization\n */\n\nfunction showSrcSessionAccount(srcPayload) {\n\t// description of used card(ex. Visa ending in 1111)\n\tconst cardDescription = `${srcPayload.details.cardType} ${srcPayload.description}`;\n\n\t$srcSessionAccount.value = cardDescription;\n\t$srcSessionAccount.text = cardDescription;\n\t$srcCardDescription.value = cardDescription;\n\t$srcSessionAccount.selected = true;\n\t$accountListBlock.style.display = 'block';\n\t$srcButton.classList.remove('d-flex');\n\t$srcButton.classList.add('d-none');\n\n\t// Inputs required for identifying already saved cards\n\t$braintreeSrcCardType.value = srcPayload.details.cardType;\n\t$braintreeSrcLastFourDigits.value = srcPayload.details.lastFour;\n\t$braintreeSrcCreditCardNumber.value =\n\t\t'************' + srcPayload.details.lastFour;\n\n\tsrcListHelper.handleSaveSrcAccountCheckbox($srcSessionAccount, true);\n\tsrcListHelper.setIsHideContinueButtonAttr(false);\n\thelper.continueButtonToggle(false);\n}\n\n/*\n * Removes method was used and changes appearance of SRC tab\n * */\nfunction removeSessionNonce() {\n\tif ($srcSessionAccount) {\n\t\t$srcSessionAccount.value = '';\n\t\t$srcSessionAccount.text = '';\n\t\t$srcSessionAccount.setAttribute('data-save', false);\n\t}\n\n\t$accountListBlock.style.display = 'none';\n\n\tdocument.getElementById('braintreeSRCNonce').value = '';\n\tdocument.getElementById('braintreeSrcBillingAddress').value = '';\n\tdocument.getElementById('braintreeSrcCardDescription').value = '';\n\tdocument.getElementById('newSrcAccount').selected = true;\n\n\tsrcHelper.srcContentTabHandler(false);\n}\n\nmodule.exports = {\n\tshowSrcSessionAccount,\n\tremoveSessionNonce,\n};\n","'use strict';\n\nmodule.exports = {\n\tFLOW_NAME_ACCOUNT: 'account',\n\tFLOW_NAME_CART_CHECKOUT: 'cart',\n\tFLOW_NAME_BILLING_CHECKOUT: 'billing',\n};\n","'use strict';\n\nconst DISPLAY_NONE_CLASS = 'd-none';\n\n/**\n * Shows a zero amount SRC button and hides a normal SRC button\n */\nfunction showZeroAmountSrcButton() {\n\tdocument\n\t\t.querySelector('.js-v-button-zero-amount')\n\t\t.classList.remove(DISPLAY_NONE_CLASS);\n\tdocument.querySelector('.js-v-button').classList.add(DISPLAY_NONE_CLASS);\n}\n\n/**\n * Hides a zero amount SRC button and show a normal SRC button\n */\nfunction hideZeroAmountSrcButton() {\n\tdocument\n\t\t.querySelector('.js-v-button-zero-amount')\n\t\t.classList.add(DISPLAY_NONE_CLASS);\n\tdocument.querySelector('.js-v-button').classList.remove(DISPLAY_NONE_CLASS);\n}\n\n/**\n * Handles whether show or hide zero amount SRC button\n * @param {number} totalAmount Total amount of order\n */\nfunction handleZeroAmountButtonVisibility(totalAmount) {\n\tif (totalAmount === 0) {\n\t\tshowZeroAmountSrcButton();\n\t} else {\n\t\thideZeroAmountSrcButton();\n\t}\n}\n\n/**\n * Adds event listener to the zero amount button on the Cart/Checkout Page\n * @param {DOMElement} $zeroAmountButton DOM element of zero amount SRC button\n * @param {Object} alertHandler Alert handling model\n */\nfunction addZeroAmountButtonEventListener($zeroAmountButton, alertHandler) {\n\t$zeroAmountButton.addEventListener('click', () => {\n\t\talertHandler.hideAlerts();\n\t\talertHandler.showZeroAmountError();\n\t});\n}\n\n/**\n * Creates a mutation obserber for total amount element\n * @param {DOMElement} totalAmountElement DOM Element that includes the total cost\n */\nfunction initTotalAmountElementObserver(totalAmountElement) {\n\tconst config = { attributes: true, childList: true, subtree: true };\n\n\tconst observer = new MutationObserver((element) => {\n\t\tconst totalAmount = Number.parseFloat(\n\t\t\telement[0].target.textContent.slice(1)\n\t\t);\n\n\t\t// Handles whether show or hide zero amount SRC button\n\t\thandleZeroAmountButtonVisibility(totalAmount);\n\t});\n\n\tobserver.observe(totalAmountElement, config);\n}\n\nmodule.exports = {\n\tinitTotalAmountElementObserver: initTotalAmountElementObserver,\n\taddZeroAmountButtonEventListener: addZeroAmountButtonEventListener,\n\thideZeroAmountSrcButton: hideZeroAmountSrcButton,\n\tshowZeroAmountSrcButton: showZeroAmountSrcButton,\n\thandleZeroAmountButtonVisibility: handleZeroAmountButtonVisibility,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst srcListHelper = require('./srcListHelper');\nconst srcButtonHelper = require('./srcButtonHelper');\n\n/**\n * Returns Braintree SRC configs\n * @returns {Object} Braintree SRC configs\n */\nfunction getBraintreeSRCButtonConfigs() {\n\tconst $srcButton = document.querySelector(\n\t\t'.js-braintree-src-button, .js-braintree-src-account-button'\n\t);\n\tlet braintreeSrcButtonConfigs = null;\n\n\ttry {\n\t\tbraintreeSrcButtonConfigs = helper.tryParseJSON(\n\t\t\t$srcButton.getAttribute('data-braintree-config')\n\t\t);\n\t} catch (error) {\n\t\treturn braintreeSrcButtonConfigs;\n\t}\n\n\treturn braintreeSrcButtonConfigs;\n}\n\n/**\n * Returns stringified SRC shipping address\n * @param {Object} shippingData SRC shipping\n * @returns {string} stringified shipping address\n */\nfunction createSrcShippingAddressData(shippingData) {\n\tconst shippingAddress = {\n\t\trecipientName: `${shippingData.firstName} ${shippingData.lastName}`,\n\t\tphone: shippingData.phoneNumber,\n\t\tcountryCodeAlpha2: shippingData.countryCode,\n\t\tstreetAddress: shippingData.streetAddress,\n\t\textendedAddress: shippingData.extendedAddress,\n\t\tlocality: shippingData.locality,\n\t\tregion: shippingData.region,\n\t\tpostalCode: decodeURIComponent(shippingData.postalCode),\n\t};\n\n\treturn JSON.stringify(shippingAddress);\n}\n\n/**\n * Returns stringified SRC billing address\n * @param {Object} billingData SRC billing\n * @param {Object} userData user data with email\n * @returns {string} stringified billing address\n */\nfunction createSrcBillingAddress(billingData, userData) {\n\tconst srcBillingAddress = {\n\t\trecipientName: `${billingData.firstName} ${billingData.lastName}`,\n\t\tphone: billingData.phoneNumber,\n\t\tcountryCodeAlpha2: billingData.countryCode,\n\t\tstreetAddress: billingData.streetAddress,\n\t\textendedAddress: billingData.streetAddress,\n\t\tlocality: billingData.locality,\n\t\tregion: billingData.region,\n\t\tpostalCode: decodeURIComponent(billingData.postalCode),\n\t\temail: userData.userEmail,\n\t};\n\n\treturn JSON.stringify(srcBillingAddress);\n}\n\n/**\n * Creates SRC checkout form data\n * @param {Object} srcCheckoutFormData SRC form data\n * @param {Object} srcResponseData payload from SRC\n * @param {string} pageFlow page flow\n * @returns {Object} SRC Checkout Form with appended SRC data\n */\nfunction createSrcCheckoutFormData(\n\tsrcCheckoutFormData,\n\tsrcResponseData,\n\tpageFlow\n) {\n\tconst $csrfToken = document.querySelector(\n\t\t'.js-braintree-cart-buttons-wrap #csrf_token'\n\t);\n\n\tconst cardDescription = `${srcResponseData.details.cardType} ${srcResponseData.description}`;\n\tconst deviceData = document.querySelector(\n\t\t'input[name=braintreeSrcDeviceDataInput]'\n\t).value;\n\tconst shippingAddressData = createSrcShippingAddressData(\n\t\tsrcResponseData.shippingAddress\n\t);\n\n\tsrcCheckoutFormData.append($csrfToken.name, $csrfToken.value);\n\tsrcCheckoutFormData.append('braintreeSrcNonce', srcResponseData.nonce);\n\tsrcCheckoutFormData.append('braintreeSrcDeviceDataInput', deviceData);\n\tsrcCheckoutFormData.append(\n\t\t'braintreeSrcShippingAddress',\n\t\tshippingAddressData || '{}'\n\t);\n\tsrcCheckoutFormData.append(\n\t\t'braintreeSrcBillingAddress',\n\t\tJSON.stringify(srcResponseData.billingAddress)\n\t);\n\tsrcCheckoutFormData.append('braintreeSrcCardDescription', cardDescription);\n\tsrcCheckoutFormData.append(\n\t\t'braintreeSrcCardType',\n\t\tsrcResponseData.details.cardType\n\t);\n\tsrcCheckoutFormData.append(\n\t\t'braintreeSrcCreditCardNumber',\n\t\t'************' + srcResponseData.details.lastFour\n\t);\n\n\tif (pageFlow && pageFlow === window.braintreeConstants.PAGE_FLOW_CART) {\n\t\tsrcCheckoutFormData.append('pageFlowCart', true);\n\t}\n\n\treturn srcCheckoutFormData;\n}\n\n/**\n * Creates SRC form data\n * @param {Object} responseData data received after SRC tokenize\n * @param {string} paymentMethodName SRC payment method name\n * @returns {Object} SRC payment form data\n */\nfunction createSrcFormData(responseData, paymentMethodName) {\n\tconst srcData = {};\n\tconst checkoutFormFields = document\n\t\t.querySelector('.js-braintree-cart-buttons-wrap')\n\t\t.getAttribute('data-checkout-form-fields');\n\n\tsrcData.firstName = responseData.userData.userFirstName;\n\tsrcData.lastName = responseData.userData.userLastName;\n\tsrcData.address1 = responseData.billingAddress.streetAddress;\n\tsrcData.address2 = responseData.billingAddress.extendedAddress || '';\n\tsrcData.city = responseData.billingAddress.locality;\n\tsrcData.postalCode = decodeURIComponent(\n\t\tresponseData.billingAddress.postalCode\n\t);\n\tsrcData.stateCode = responseData.billingAddress.region;\n\tsrcData.country = responseData.billingAddress.countryCode;\n\tsrcData.email = responseData.userData.userEmail;\n\tsrcData.phone = responseData.billingAddress.phoneNumber;\n\tsrcData.paymentMethod = paymentMethodName;\n\n\treturn helper.createPaymentFormData(checkoutFormFields, srcData);\n}\n\n/**\n * Updates Storefront billing data form with SRC data\n * @param {Object} srcBillingData SRC billing address data/phone/email\n */\nfunction updateStorefrontBillingData(srcBillingData) {\n\tconst storefrontBillingData = helper.tryParseJSON(\n\t\tdocument\n\t\t\t.querySelector('.js-braintree-billing-payment-wrap')\n\t\t\t.getAttribute('data-billing-form-fields-names')\n\t);\n\n\tstorefrontBillingData.dwfrm_billing_addressFields_firstName =\n\t\tsrcBillingData.firstName;\n\tstorefrontBillingData.dwfrm_billing_addressFields_lastName =\n\t\tsrcBillingData.lastName;\n\tstorefrontBillingData.dwfrm_billing_addressFields_address1 =\n\t\tsrcBillingData.streetAddress;\n\tstorefrontBillingData.dwfrm_billing_addressFields_address2 =\n\t\tsrcBillingData.extendedAddress || '';\n\tstorefrontBillingData.dwfrm_billing_addressFields_city =\n\t\tsrcBillingData.locality;\n\tstorefrontBillingData.dwfrm_billing_addressFields_postalCode =\n\t\tdecodeURIComponent(srcBillingData.postalCode);\n\tstorefrontBillingData.dwfrm_billing_addressFields_states_stateCode =\n\t\tsrcBillingData.region;\n\tstorefrontBillingData.dwfrm_billing_addressFields_country =\n\t\tsrcBillingData.countryCode;\n\tstorefrontBillingData.dwfrm_billing_contactInfoFields_email =\n\t\tsrcBillingData.email;\n\tstorefrontBillingData.dwfrm_billing_contactInfoFields_phone =\n\t\tsrcBillingData.phoneNumber;\n\n\thelper.updateBillingFormValues(storefrontBillingData);\n}\n\n/**\n * Handles all behavior related to the src content tab\n * SRC list (dropdown) change - actions for new/session account showing\n * @param {boolean} isSrcTabActive Whether Src tab is active\n */\nfunction srcContentTabHandler(isSrcTabActive) {\n\tconst $srcAccountList = document.getElementById('braintreeSrcAccountsList');\n\tconst $srcSessionAccount = document.getElementById('sessionSrcAccount');\n\tconst $srcButton = document.querySelector('.js-braintree-src-button');\n\tconst $srcZeroAmountButton = document.querySelector(\n\t\t'.js-braintree-billing-src-button-zero-amount'\n\t);\n\tconst $alertInfo = document.querySelector('.js-billing-address-info-alert');\n\n\tconst srcOptionId = $srcAccountList.value;\n\n\tif (srcOptionId === 'newaccount') {\n\t\t$srcButton.classList.remove('d-none');\n\t\t$srcButton.classList.add('d-flex');\n\t\t$srcZeroAmountButton.style.display = 'block';\n\t\t$alertInfo.style.display = 'block';\n\n\t\tif (isSrcTabActive) {\n\t\t\thelper.continueButtonToggle(true);\n\t\t}\n\n\t\tsrcListHelper.setIsHideContinueButtonAttr(true);\n\t\t// Case when registered user and vaulting is enabled\n\t\tsrcListHelper.handleSaveSrcAccountCheckbox($srcSessionAccount, true);\n\t} else {\n\t\t$srcButton.classList.add('d-none');\n\t\t$srcButton.classList.remove('d-flex');\n\t\t$srcZeroAmountButton.style.display = 'none';\n\t\t$alertInfo.style.display = 'none';\n\n\t\thelper.continueButtonToggle(false);\n\t\tsrcListHelper.setIsHideContinueButtonAttr(false);\n\t\t// Case when registered user and vaulting is enabled\n\t\tsrcListHelper.handleSaveSrcAccountCheckbox(\n\t\t\t$srcSessionAccount,\n\t\t\thelper.tryParseJSON($srcSessionAccount.getAttribute('data-save'))\n\t\t);\n\t}\n}\n\n/**\n * Treats the behavior of the SRC button in the SRC tab based on the total cost\n * Shows/hides the required SRC button if the total value is/isn't 0\n * @param {DOMElement} totalAmountElement DOM Element that includes the total cost\n * @param {Object} alertHandler alertHandler model\n */\nfunction zeroAmountSrcButtonBehavior(totalAmountElement, alertHandler) {\n\tconst $braintreeZeroAmountSrcButton = document.querySelector(\n\t\t'.js-braintree-cart-src-button-zero-amount, .js-braintree-billing-src-button-zero-amount'\n\t);\n\n\tconst totalAmount = Number.parseFloat(\n\t\ttotalAmountElement.textContent.slice(1)\n\t);\n\n\t// Add event listener for cart zero amount button\n\tif ($braintreeZeroAmountSrcButton) {\n\t\tsrcButtonHelper.addZeroAmountButtonEventListener(\n\t\t\t$braintreeZeroAmountSrcButton,\n\t\t\talertHandler\n\t\t);\n\t}\n\n\t// Handles whether show or hide zero amount button\n\tsrcButtonHelper.handleZeroAmountButtonVisibility(totalAmount);\n\n\t// Creates a mutation obserber for total amount element\n\tsrcButtonHelper.initTotalAmountElementObserver(totalAmountElement);\n}\n\nmodule.exports = {\n\tgetBraintreeSRCButtonConfigs,\n\tcreateSrcShippingAddressData,\n\tcreateSrcBillingAddress,\n\tcreateSrcFormData,\n\tupdateStorefrontBillingData,\n\tsrcContentTabHandler,\n\tcreateSrcCheckoutFormData,\n\tzeroAmountSrcButtonBehavior,\n};\n","const helper = require('../../helper');\n\nconst $srcAccountList = document.getElementById('braintreeSrcAccountsList');\nconst $saveSRCAccountCheckbox = document.getElementById(\n\t'braintreeSaveSRCAccount'\n);\nconst $saveSRCAccountCheckboxContainter = document.getElementById(\n\t'braintreeSaveSRCContainer'\n);\nconst $srcButton = document.querySelector('.js-braintree-src-button');\nconst $accoutnListBlock = document.querySelector(\n\t'.js-braintree-used-src-account'\n);\nconst $alertInfo = document.querySelector('.js-billing-address-info-alert');\n\n/**\n * Sets value to data-paypal-is-hide-continue-button attribute\n * @param {boolean} value true/false\n */\nfunction setIsHideContinueButtonAttr(value) {\n\tconst $srcContent = document.querySelector('.js-braintree-src-content');\n\n\t$srcContent.setAttribute('data-paypal-is-hide-continue-button', value);\n}\n\n/**\n * Handles actions based on selected value in SRC dropdown for checkout view\n */\nfunction srsListStateHandler() {\n\tconst srcOptionId = $srcAccountList.value;\n\n\tif (srcOptionId === 'newaccount') {\n\t\tif ($alertInfo) {\n\t\t\t$alertInfo.style.display = 'block';\n\t\t}\n\n\t\t$accoutnListBlock.style.display = 'none';\n\t} else {\n\t\t$srcButton.style.display = 'none';\n\n\t\tif ($alertInfo) {\n\t\t\t$alertInfo.style.display = 'none';\n\t\t}\n\n\t\thelper.continueButtonToggle(false);\n\t\tsetIsHideContinueButtonAttr(false);\n\t}\n}\n\n/**\n * Get stored card by card type and last four digits\n * @param {string} cardType card type\n * @param {string} lastFour last four card digits\n * @returns {Object} jquery object of found stored card\n */\nfunction getStoredCardByData(cardType, lastFour) {\n\treturn Array.from(document.querySelectorAll('.js-stored-card')).find(\n\t\tfunction ($card) {\n\t\t\tconst storedCardType = $card.dataset.type\n\t\t\t\t.replace(/\\s/g, '')\n\t\t\t\t.toLowerCase();\n\t\t\tconst storedCardLastFour = $card.dataset.lastFour.toString();\n\n\t\t\treturn storedCardType === cardType && storedCardLastFour === lastFour;\n\t\t}\n\t);\n}\n\n/**\n * Checks whether SRC session card is already stored\n * @param {string} cardType card type\n * @param {string} lastFour last four card digits\n * @returns {boolean} \"true/false\" value whether session card is already stored\n */\nfunction isSessionCardAlreadyStored(cardType, lastFour) {\n\tconst $storedCard = getStoredCardByData(cardType, lastFour);\n\tlet flag = false;\n\n\tif ($storedCard) {\n\t\tflag = true;\n\t}\n\n\treturn flag;\n}\n\n/**\n * Sets value to \"Save SRC account\" checkbox\n * @param {Element} srcSessionAccount element from which we recognize session account existence\n * @param {boolean} value true/false\n */\nfunction handleSaveSrcAccountCheckbox(srcSessionAccount, value) {\n\tconst isSrcSessionCardExist = srcSessionAccount?.value !== '';\n\tconst isAddNewOptionSelected = $srcAccountList.value === 'newaccount';\n\n\tif ($saveSRCAccountCheckbox) {\n\t\t// In case if session account exists and is chosen in dropdown\n\t\t// we check whether used SRC card is already stored\n\t\t// if card is already stored \"save\" checkbox is hidden and unchecked\n\t\tif (isSrcSessionCardExist && !isAddNewOptionSelected) {\n\t\t\tconst $braintreeSrcCardType = document.getElementById(\n\t\t\t\t'braintreeSrcCardType'\n\t\t\t);\n\t\t\tconst $braintreeSrcLastFourDigits = document.getElementById(\n\t\t\t\t'braintreeSrcLastFourDigits'\n\t\t\t);\n\n\t\t\tconst sessionCardLastFour = $braintreeSrcLastFourDigits.value;\n\t\t\tlet sessionCardType = $braintreeSrcCardType.value;\n\n\t\t\tsessionCardType = sessionCardType.replace(/\\s/g, '').toLowerCase();\n\n\t\t\tconst isSrcSessionCardAlreadyStored = isSessionCardAlreadyStored(\n\t\t\t\tsessionCardType,\n\t\t\t\tsessionCardLastFour\n\t\t\t);\n\n\t\t\tif (isSrcSessionCardAlreadyStored) {\n\t\t\t\t$saveSRCAccountCheckbox.checked = false;\n\t\t\t\t$saveSRCAccountCheckboxContainter.style.display = 'none';\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// In case if session card does not exist/user chooses option \"Add New\"\n\t\t// or session card is not stored yet\n\t\t// checkbox is checked and shown\n\t\t$saveSRCAccountCheckboxContainter.style.display = 'block';\n\t\t$saveSRCAccountCheckbox.checked = value;\n\t}\n}\n\nmodule.exports = {\n\tsetIsHideContinueButtonAttr,\n\tsrsListStateHandler,\n\thandleSaveSrcAccountCheckbox,\n};\n","'use strict';\n\nconst srcConstants = require('../constants/srcConstants');\nconst paymentMethodGeneral = require('../../paymentMethodGeneral');\n\n/**\n * Gets SRC flow name(corresponding page)\n * @returns {string} Flow id(page) account/cart/billing\n */\nfunction getSrcFlowName() {\n\tconst isSrcEnabledOnAccountPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-account-add-src')\n\t);\n\tconst isSrcEnabledOnCartPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-cart-src-button')\n\t);\n\tconst isSrcEnabledOnBillingPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-src-content')\n\t);\n\n\tlet srcFlowName;\n\n\tif (isSrcEnabledOnAccountPage) {\n\t\tsrcFlowName = srcConstants.FLOW_NAME_ACCOUNT;\n\t} else if (isSrcEnabledOnCartPage) {\n\t\tsrcFlowName = srcConstants.FLOW_NAME_CART_CHECKOUT;\n\t} else if (isSrcEnabledOnBillingPage) {\n\t\tsrcFlowName = srcConstants.FLOW_NAME_BILLING_CHECKOUT;\n\t}\n\n\treturn srcFlowName;\n}\n\n/**\n * Makes call to checkoutFrom Cart endpoint\n * @param {Object} srcCheckoutFormData SRC form data passed to server side\n * @param {string} email SRC email from response\n * @param {Object} alertHandler Alert handling model\n * @param {string} chooseShippingUrl Link to checkout stage shipping\n * @returns {Promise} call to checkoutFrom Cart endpoint\n */\nfunction checkoutFromCartCall(\n\tsrcCheckoutFormData,\n\temail,\n\talertHandler,\n\tchooseShippingUrl\n) {\n\tconst checkoutSubmitPayment = window.braintreeUrls.checkoutSubmitPayment;\n\tconst redirectUrl = chooseShippingUrl || window.braintreeUrls.placeOrderUrl;\n\t// Submit customer form with email (CheckoutServices-SubmitCustomer)\n\t// as we skip step \"login via guest/registered user\" while express checkout\n\t// email is set only in case of guest checkout and if email is not already set\n\n\tpaymentMethodGeneral.submitCustomerForm(email);\n\n\treturn fetch(checkoutSubmitPayment, {\n\t\tmethod: 'POST',\n\t\tbody: srcCheckoutFormData,\n\t})\n\t\t.then(function (data) {\n\t\t\tif (data.error) {\n\t\t\t\talertHandler.handleCheckoutFromCartError(data);\n\t\t\t}\n\n\t\t\tsessionStorage.setItem('pageState', 'cart');\n\t\t\twindow.location.href = redirectUrl;\n\t\t})\n\t\t.catch(function (error) {\n\t\t\tif (error && error.redirectUrl) {\n\t\t\t\twindow.location.href = error.redirectUrl;\n\t\t\t}\n\t\t});\n}\n\nmodule.exports = {\n\tgetSrcFlowName,\n\tcheckoutFromCartCall,\n};\n","'use strict';\n\nconst SrcBaseModel = require('./srcBaseModel');\nconst helper = require('../../helper');\n\n// See description of \"srcBaseModel\" for more info\n\n/**\n * Creates a new SrcAccountModel instance\n * @param {Promise} clientInstancePromise client instance promise.\n * @param {Object} srcButtonConfigurations - Braintree SRC configs.\n * @param {Object} $braintreeSrcDeviceDataInput - input data.\n * @param {Instance} loader - instance of loaderInstance\n * @param {Instance} alertHandler - instance of SrcAlertHandlerModel\n */\nfunction SrcAccountModel(\n\tclientInstancePromise,\n\tsrcButtonConfigurations,\n\t$braintreeSrcDeviceDataInput,\n\tloader,\n\talertHandler\n) {\n\tSrcBaseModel.call(\n\t\tthis,\n\t\tclientInstancePromise,\n\t\tsrcButtonConfigurations,\n\t\t$braintreeSrcDeviceDataInput,\n\t\tloader,\n\t\talertHandler\n\t);\n}\n\nSrcAccountModel.prototype = Object.create(SrcBaseModel.prototype);\n\n// See description of \"srcBaseModel\" for more info\n// Method set nonce data in to hidden input and submit the form to the server\nSrcAccountModel.prototype.onTokenizeCallback = function (srcPayload) {\n\tSrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\n\tconst srcLoader = this.loader;\n\tconst alertHandler = this.alertHandler;\n\tconst $addSrcAccountForm = document.querySelector(\n\t\t'.js-braintree-account-add-src'\n\t);\n\tconst addSrcFormUrl = $addSrcAccountForm.getAttribute('action');\n\tconst $srcNonce = document.getElementById('braintreeSrcNonce');\n\n\tsrcLoader.show();\n\n\t$srcNonce.value = srcPayload.nonce;\n\n\treturn helper\n\t\t.checkForDuplicatedCC(srcPayload)\n\t\t.then(function (result) {\n\t\t\tif (result.error) {\n\t\t\t\tthrow result.message;\n\t\t\t}\n\t\t})\n\t\t.then(function () {\n\t\t\tconst creditCardAccount = require('../../creditcard/components/creditCardAccount');\n\t\t\tconst braintreeAccount = require('../../braintreeAccount');\n\n\t\t\tconst formData = new FormData($addSrcAccountForm);\n\t\t\tconst encodedCCData = window.btoa(\n\t\t\t\tJSON.stringify(Object.fromEntries(formData))\n\t\t\t);\n\n\t\t\treturn fetch(helper.getUrlWithCsrfToken(addSrcFormUrl), {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: encodedCCData,\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t})\n\t\t\t\t.then((response) => response.json())\n\t\t\t\t.then((data) => {\n\t\t\t\t\tif (data.error) {\n\t\t\t\t\t\talertHandler.showError(data.error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfetch(data.renderAccountsUrl)\n\t\t\t\t\t\t\t.then((template) => template.text())\n\t\t\t\t\t\t\t.then((templateHtml) => {\n\t\t\t\t\t\t\t\tcreditCardAccount.closeAddNewCardBlock();\n\t\t\t\t\t\t\t\tdocument.querySelector('.js-credit-card-accounts').innerHTML =\n\t\t\t\t\t\t\t\t\ttemplateHtml;\n\t\t\t\t\t\t\t\t// \"Make default\" link functionality reinitiation\n\t\t\t\t\t\t\t\tbraintreeAccount.initMakeDefaultCardEvent();\n\t\t\t\t\t\t\t\t// \"Remove Card\" link functionality reinitiation\n\t\t\t\t\t\t\t\tbraintreeAccount.initRemoveCardEvent();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t})\n\t\t.catch(function (error) {\n\t\t\tsrcLoader.hide();\n\t\t\talertHandler.showError(error);\n\t\t})\n\t\t.finally(function () {\n\t\t\tsrcLoader.hide();\n\t\t});\n};\n\n// See description of \"srcBaseModel\" for more info\nSrcAccountModel.prototype.initSrcButton = function () {\n\tconst SrcAccountModelInstance = this;\n\n\tSrcAccountModelInstance.braintreeSrcSdkButtonInit(\n\t\tSrcAccountModelInstance\n\t).catch(function (error) {\n\t\tSrcAccountModelInstance.alertHandler.handleSrcError(error);\n\t});\n};\n\nmodule.exports = SrcAccountModel;\n","'use strict';\n\nconst braintreeSrcSDK = require('../braintreesdk/braintreeSrcSDK');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst helper = require('../../helper');\n\n/**\n * SRC Base Model constructor\n * @param {Promise} clientInstancePromise client instance promise\n * @param {Object} srcButtonConfigurations SRC button configs\n * @param {Object} $braintreeSrcDeviceDataInput BT SRC device data input\n * @param {Object} loader loader instance\n * @param {Object} alertHandler Alert handler model instance\n */\nfunction SrcBaseModel(\n\tclientInstancePromise,\n\tsrcButtonConfigurations,\n\t$braintreeSrcDeviceDataInput,\n\tloader,\n\talertHandler\n) {\n\tthis.clientInstancePromise = clientInstancePromise;\n\tthis.srcButtonConfigurations = srcButtonConfigurations;\n\tthis.$braintreeSrcDeviceDataInput = $braintreeSrcDeviceDataInput;\n\tthis.loader = loader;\n\tthis.alertHandler = alertHandler;\n\n\tthis.braintreeSrcSdkButtonInit = braintreeSrcSDK.visaCheckoutInitialized;\n\n\t// Prop which will be settled after calling of \"getBasketData\" method\n\tthis.basketData = {\n\t\tamount: 0,\n\t};\n}\n\n/**\n * Method is triggers when \"initSrcButton\" is called. Update total basket amount\n * @returns {Promise} Promise of get order data response\n */\nSrcBaseModel.prototype.updateBasketData = function () {\n\tconst SrcBaseModelInstance = this;\n\n\treturn fetch(\n\t\thelper.getUrlWithCsrfToken(this.srcButtonConfigurations.getOrderInfoUrl)\n\t)\n\t\t.then((response) => response.json())\n\t\t.then((data) => {\n\t\t\tSrcBaseModelInstance.basketData.amount = data.amount;\n\t\t})\n\t\t.catch(() => window.location.reload());\n};\n\n/**\n * Retrun Init options which are used in SRC initialization\n * @returns {Object} object with Init options\n */\nSrcBaseModel.prototype.getInitOptionsObject = function () {\n\treturn {\n\t\tpaymentRequest: {\n\t\t\tcurrencyCode: this.srcButtonConfigurations.options.currency || 'USD',\n\t\t\tsubtotal: this.basketData.amount,\n\t\t},\n\t\tsettings: {\n\t\t\tlocale: this.srcButtonConfigurations.settings.locale,\n\t\t\tpayment: {\n\t\t\t\tcardBrands: this.srcButtonConfigurations.settings.cardBrands,\n\t\t\t\tacceptCanadianVisaDebit:\n\t\t\t\t\tthis.srcButtonConfigurations.settings.acceptCanadianVisaDebit,\n\t\t\t},\n\t\t\tshipping: {\n\t\t\t\tcollectShipping:\n\t\t\t\t\tthis.srcButtonConfigurations.options.isShippingAddressRequired,\n\t\t\t},\n\t\t},\n\t};\n};\n\n/**\n * Callback which is triggered when SRC approved payment on its side\n * This method will be overridden in scope of each child model\n * @param {Object} srcPayload payload from SRC\n */\n// eslint-disable-next-line no-unused-vars\nSrcBaseModel.prototype.onTokenizeCallback = function (srcPayload) {};\n\n/**\n * Method add fraud data in to hidden input (if enabled)\n * @returns {Promise} with the result of operation\n */\nSrcBaseModel.prototype.setFraudData = function () {\n\t// eslint-disable-next-line no-undef\n\tconst SrcBaseModelInstance = this;\n\tconst $braintreeSrcDeviceDataInput =\n\t\tSrcBaseModelInstance.$braintreeSrcDeviceDataInput;\n\n\tlet result = Promise.resolve({});\n\n\tif (\n\t\tthis.srcButtonConfigurations.isFraudToolsEnabled &&\n\t\t$braintreeSrcDeviceDataInput\n\t) {\n\t\tresult = braintreeGeneral\n\t\t\t.collectFraudData(this.clientInstancePromise)\n\t\t\t.then(function (dataCollectorInstance) {\n\t\t\t\tSrcBaseModelInstance.$braintreeSrcDeviceDataInput.value =\n\t\t\t\t\tdataCollectorInstance.deviceData;\n\t\t\t});\n\t}\n\n\treturn result;\n};\n\n/**\n * Method is called when we want to init SRC button\n * @returns {Promise} Promise with the result of the operation\n */\nSrcBaseModel.prototype.initSrcButton = function () {\n\tconst SrcBaseModelInstance = this;\n\n\treturn SrcBaseModelInstance.updateBasketData()\n\t\t.then(function () {\n\t\t\treturn SrcBaseModelInstance.setFraudData().then(function () {\n\t\t\t\treturn SrcBaseModelInstance.braintreeSrcSdkButtonInit(\n\t\t\t\t\tSrcBaseModelInstance\n\t\t\t\t);\n\t\t\t});\n\t\t})\n\t\t.catch(function (error) {\n\t\t\tSrcBaseModelInstance.alertHandler.handleSrcError(error);\n\t\t});\n};\n\nmodule.exports = SrcBaseModel;\n","'use strict';\n\nconst SrcBaseModel = require('./srcBaseModel');\nconst srcHelper = require('../helpers/srcHelper');\nconst srcPaymentProcessingHelper = require('../helpers/srcPaymentProcessingHelper');\nconst helper = require('../../helper');\n\n// See description of \"srcBaseModel\" for more info\nfunction SrcCartModel(\n\tclientInstancePromise,\n\tsrcButtonConfigurations,\n\t$braintreeSrcDeviceDataInput,\n\tloader,\n\talertHandler\n) {\n\tSrcBaseModel.call(\n\t\tthis,\n\t\tclientInstancePromise,\n\t\tsrcButtonConfigurations,\n\t\t$braintreeSrcDeviceDataInput,\n\t\tloader,\n\t\talertHandler\n\t);\n}\n\nSrcCartModel.prototype = Object.create(SrcBaseModel.prototype);\n\n// See description of \"srcBaseModel\" for more info\n// Add nonce and billing data to the from and submit to the \"CheckoutService-SubmitPayment\" endpoint\nSrcCartModel.prototype.onTokenizeCallback = async function (srcPayload) {\n\tSrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\n\n\tthis.loader.show();\n\t// Checking if preselected shipping option delivers to the chosen shipping address\n\n\tconst billingAddress = srcPayload.billingAddress;\n\tconst city = billingAddress.locality;\n\tconst state = billingAddress.region;\n\tconst country = billingAddress.countryCode;\n\tconst postalCode = billingAddress.postalCode;\n\tconst addressQueryString = `city=${city.replace(\n\t\t/\\s/g,\n\t\t'%20'\n\t)}&stateCode=${state}&countryCode=${country}&postalCode=${postalCode}`;\n\tconst paymentMethodId =\n\t\twindow.braintreeConstants.PAYMENT_METHOD_NOT_SUPPORTING_SHIPPING_OPTIONS;\n\tconst url = `${window.braintreeUrls.getApplicableShippingOptions}?paymentMethodId=${paymentMethodId}&${addressQueryString}`;\n\n\tconst shippingOptions = await helper.getApplicableShippingOptions(url);\n\n\tlet chooseShippingUrl;\n\n\tif (\n\t\t!shippingOptions.find((shippingOption) => shippingOption.selected === true)\n\t) {\n\t\tchooseShippingUrl = `${window.braintreeUrls.chooseShippingUrl}&errorId=error.shippingoption.invalid`;\n\t}\n\n\t// Proceeding with checkout\n\tconst $srcButton = document.querySelector('.js-braintree-src-button');\n\n\tsrcPayload.billingAddressString = srcHelper.createSrcBillingAddress(\n\t\tsrcPayload.billingAddress,\n\t\tsrcPayload.userData\n\t);\n\n\tconst paymentMethodName = helper.tryParseJSON(\n\t\t$srcButton.getAttribute('data-braintree-config')\n\t).paymentMethodName;\n\tconst srcFormData = srcHelper.createSrcFormData(\n\t\tsrcPayload,\n\t\tpaymentMethodName\n\t);\n\tconst srcCheckoutFormData = srcHelper.createSrcCheckoutFormData(\n\t\tsrcFormData,\n\t\tsrcPayload,\n\t\twindow.braintreeConstants.PAGE_FLOW_CART\n\t);\n\n\tsrcPaymentProcessingHelper\n\t\t.checkoutFromCartCall(\n\t\t\tsrcCheckoutFormData,\n\t\t\tsrcPayload.userData.userEmail,\n\t\t\tthis.alertHandler,\n\t\t\tchooseShippingUrl\n\t\t)\n\t\t.always(function () {\n\t\t\tthis.loader.hide();\n\t\t});\n};\n\nmodule.exports = SrcCartModel;\n","'use strict';\n\nconst SrcBaseModel = require('./srcBaseModel');\n\n// Helpers\nconst srcHelper = require('../helpers/srcHelper');\nconst helper = require('../../helper');\n\n// See description of \"srcBaseModel\" for more info\nfunction SrcCheckoutModel(\n\tclientInstancePromise,\n\tsrcButtonConfigurations,\n\t$braintreeSrcDeviceDataInput,\n\tloader,\n\talertHandler\n) {\n\tSrcBaseModel.call(\n\t\tthis,\n\t\tclientInstancePromise,\n\t\tsrcButtonConfigurations,\n\t\t$braintreeSrcDeviceDataInput,\n\t\tloader,\n\t\talertHandler\n\t);\n}\n\nSrcCheckoutModel.prototype = Object.create(SrcBaseModel.prototype);\n\n// See description of \"srcBaseModel\" for more info\n// Add nonce and billing data to the from and trigger click on \"SubmitPayment\" button\nSrcCheckoutModel.prototype.onTokenizeCallback = function (srcPayload) {\n\tSrcBaseModel.prototype.onTokenizeCallback.call(this, srcPayload);\n\n\tthis.loader.show();\n\n\tconst that = this;\n\n\tconst $saveCardCheckbox = document.getElementById('braintreeSaveSRCAccount');\n\tlet checkForDuplicatedCCPromise;\n\n\tif ($saveCardCheckbox && $saveCardCheckbox.checked) {\n\t\tcheckForDuplicatedCCPromise = helper.checkForDuplicatedCC(srcPayload);\n\t} else {\n\t\tcheckForDuplicatedCCPromise = Promise.resolve(); // eslint-disable-line no-undef\n\t}\n\n\tcheckForDuplicatedCCPromise\n\t\t.then((response) => {\n\t\t\tif (response && response.error) {\n\t\t\t\treturn Promise.reject(response); // eslint-disable-line no-undef\n\t\t\t}\n\n\t\t\treturn Promise.resolve(); // eslint-disable-line no-undef\n\t\t})\n\t\t.then(() => {\n\t\t\thelper.removeActiveSessionPayment();\n\n\t\t\tconst isSessionPaymentsEnabled =\n\t\t\t\twindow.braintreePreferences.isSessionPaymentsEnabled;\n\t\t\tconst $srcNonce = document.getElementById('braintreeSRCNonce');\n\t\t\tconst $srcBillingAddress = document.getElementById(\n\t\t\t\t'braintreeSrcBillingAddress'\n\t\t\t);\n\t\t\tconst $continueButton = document.querySelector('button.submit-payment');\n\t\t\tconst srcBillingData = srcPayload.billingAddress;\n\n\t\t\tsrcPayload.billingAddressString = srcHelper.createSrcBillingAddress(\n\t\t\t\tsrcPayload.billingAddress,\n\t\t\t\tsrcPayload.userData\n\t\t\t);\n\n\t\t\t$srcNonce.value = srcPayload.nonce;\n\t\t\tsrcBillingData.email = srcPayload.userData.userEmail;\n\t\t\t$srcBillingAddress.value = JSON.stringify(srcBillingData);\n\n\t\t\tif (isSessionPaymentsEnabled) {\n\t\t\t\tconst srcSessionAccountComponent = require('../components/srcSessionAccount');\n\n\t\t\t\tsrcSessionAccountComponent.showSrcSessionAccount(srcPayload);\n\t\t\t}\n\n\t\t\tsrcHelper.updateStorefrontBillingData(srcBillingData);\n\n\t\t\t$continueButton.click();\n\t\t})\n\t\t.catch((error) => {\n\t\t\tthat.alertHandler.handleSrcError(error);\n\t\t})\n\t\t.finally(() => {\n\t\t\tthat.loader.hide();\n\t\t});\n};\n\nmodule.exports = SrcCheckoutModel;\n","'use strict';\n\nconst braintreeGeneral = require('../braintreeGeneral');\nconst srcHelper = require('./helpers/srcHelper');\n\n// Components\nconst srcAccount = require('./components/srcAccount');\nconst srcCardList = require('./components/srcList');\nconst checkoutComponent = require('./components/srcCheckout');\nconst cartComponent = require('./components/srcCart');\n\nlet btClientInstancePromise;\n\n/**\n * Inits SRC functionality on the Account Page\n */\nfunction initAccount() {\n\tsrcAccount.init(btClientInstancePromise);\n}\n\n/**\n * Inits SRC functionality on the Cart Page\n */\nfunction initCartCheckout() {\n\tcartComponent.init(btClientInstancePromise);\n}\n\n/**\n * Inits SRC functionality on the Billing Page\n */\nfunction initBillingCheckout() {\n\tcheckoutComponent.init(btClientInstancePromise);\n\tsrcCardList.init();\n}\n\n/**\n * Inits braintreeSrcModelBuilder on SRC level\n */\nfunction init() {\n\tconst braintreeSrcConfigs = srcHelper.getBraintreeSRCButtonConfigs();\n\tlet clientToken;\n\n\tif (braintreeSrcConfigs) {\n\t\tclientToken = braintreeSrcConfigs.clientToken;\n\t\tbtClientInstancePromise =\n\t\t\tbraintreeGeneral.createClientInstance(clientToken);\n\t}\n}\n\nmodule.exports = {\n\tinitAccount,\n\tinitCartCheckout,\n\tinitBillingCheckout,\n\tinit,\n};\n","'use strict';\n\nconst AlertHandlerModel = require('../../alertHandler');\n\n/**\n * Venmo error handler model\n */\nclass VenmoAlertHandlerModel extends AlertHandlerModel {\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Handles error flows in case when browser is not supported for Billing/Account Pages\n\t * @param {Object} braintreeVenmoConfig Braintree Venmo config\n\t */\n\thandleNoBrowserSupportError(braintreeVenmoConfig) {\n\t\tconst $venmoAccountWrapper = document.querySelector(\n\t\t\t'.js-braintree-account-venmo-button-wrapper'\n\t\t);\n\n\t\tif ($venmoAccountWrapper) {\n\t\t\tthis.showError(braintreeVenmoConfig.messages.VENMO_BROWSER_NOT_SUPPORTED);\n\t\t} else {\n\t\t\tdocument\n\t\t\t\t.querySelector('.js-braintree-venmo-button')\n\t\t\t\t.parentElement.firstElementChild.classList.add('d-none');\n\t\t\tdocument\n\t\t\t\t.querySelector(\n\t\t\t\t\t'.payment-options[role=tablist] .nav-item[data-method-id=\"Venmo\"]'\n\t\t\t\t)\n\t\t\t\t.classList.add('d-none');\n\t\t}\n\t}\n}\n\nmodule.exports = VenmoAlertHandlerModel;\n","'use strict';\n\nconst braintreeVenmoSDK = require('./braintreeVenmoSDK');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst venmoProcessing = require('../components/venmoProcessing');\nconst venmoHelper = require('../helpers/venmoHelper');\n\n/* global Promise braintree $ */\n\n// global variables\nlet btClientInstancePromise;\n\n/**\n * Init Braintree Venmo model\n * @param {Promise} braintreeClientInstancePromise Braintree client instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n\tbraintreeVenmoSDK.init(braintreeClientInstancePromise);\n\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n}\n\n/**\n * Returns fraud data from dataCollector payload\n * @returns {Object} Payload with fraud data\n */\nfunction collectFraudData() {\n\tlet response;\n\n\ttry {\n\t\tresponse = braintreeGeneral.collectFraudData(btClientInstancePromise);\n\t} catch (error) {\n\t\tresponse = Promise.resolve({\n\t\t\tcustomMessage:\n\t\t\t\t'Fraud Data collection isn`t enabled via Custom Site Preference',\n\t\t});\n\t}\n\n\treturn response;\n}\n\n/**\n * Checks whether browser supports Venmo\n * @returns {Promise} with isBrowserSupported value\n */\nfunction isBrowserSupported() {\n\treturn braintreeVenmoSDK.isBrowserSupported();\n}\n\n/**\n * Inits Venmo button\n * @param {Element} $venmoButton Venmo button element\n * @param {Booleean} isBillingPage \"true/false\" value to identify flow page\n * @returns {Promise} Promise resolved with a tokenized payload\n */\nfunction initVenmo($venmoButton, isBillingPage) {\n\treturn braintreeVenmoSDK.createVenmo().then(function (venmoInstance) {\n\t\t$venmoButton.addEventListener('click', function () {\n\t\t\t// Check billing form to close Venmo pop-up and prevent tokenize action if any error (empty email input)\n\t\t\t// Check if amount is not zero to close Venmo pop-up and show appropriate error\n\t\t\tif (\n\t\t\t\tisBillingPage &&\n\t\t\t\t(!venmoHelper.checkBillingForm() || venmoHelper.checkZeroAmount())\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn braintreeVenmoSDK\n\t\t\t\t.tokenize(venmoInstance)\n\t\t\t\t.then(function (payload) {\n\t\t\t\t\treturn venmoProcessing.processVenmo(payload);\n\t\t\t\t})\n\t\t\t\t.catch(function (error) {\n\t\t\t\t\tconst VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\n\t\t\t\t\tconst alertHandler = new VenmoAlertHandlerModel();\n\n\t\t\t\t\talertHandler.showError(error.message);\n\t\t\t\t});\n\t\t});\n\t});\n}\n\nmodule.exports = {\n\tinit,\n\tcollectFraudData,\n\tisBrowserSupported,\n\tinitVenmo,\n};\n","'use strict';\n\nconst braintreeVenmoModel = require('./braintreeVenmoModel');\nconst braintreeGeneral = require('../../braintreeGeneral');\nconst venmoHelper = require('../helpers/venmoHelper');\n\n/**\n * Initialize Braintree Venmo Model. Pattern Builder is used\n * @returns {Object} object with boolean \"error\" flag and \"message\" attribute with error message\n */\nfunction init() {\n\tconst braintreeVenmoButtonConfigs =\n\t\tvenmoHelper.getBraintreeVenmoButtonConfigs();\n\tconst response = {\n\t\terror: false,\n\t\tmessage: '',\n\t\tbtVenmoModel: null,\n\t};\n\n\tlet clientToken;\n\tlet btClientInstancePromise;\n\n\tif (braintreeVenmoButtonConfigs) {\n\t\tclientToken = braintreeVenmoButtonConfigs.clientToken;\n\t\tbtClientInstancePromise =\n\t\t\tbraintreeGeneral.createClientInstance(clientToken);\n\n\t\tbraintreeVenmoModel.init(btClientInstancePromise);\n\n\t\tresponse.btVenmoModel = braintreeVenmoModel;\n\t} else {\n\t\tresponse.error = true;\n\t\tresponse.message = 'No Braintree Venmo Configurations';\n\t}\n\n\treturn response;\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\n/* global braintreeUtils braintree $ */\n\nlet btClientInstancePromise;\nlet venmoClientInstance;\n\n/**\n * Checks whether browser supports Venmo\n * @returns {Promise} with isBrowserSupported value\n */\nfunction isBrowserSupported() {\n\treturn btClientInstancePromise.then(function (btClientInstance) {\n\t\tvenmoClientInstance = btClientInstance;\n\n\t\treturn braintree.venmo.isBrowserSupported({\n\t\t\tallowNewBrowserTab: false,\n\t\t\tallowDesktop: true,\n\t\t});\n\t});\n}\n\n/**\n * Creates Venmo instance\n * @returns {Promise} Promise resolved with Venmo instance\n */\nfunction createVenmo() {\n\treturn braintree.venmo.create({\n\t\tclient: venmoClientInstance,\n\t\tallowNewBrowserTab: false,\n\t\tignoreHistoryChanges: true,\n\t\tallowDesktop: true,\n\t});\n}\n\n/**\n * Tokenizes Venmo payment\n * @param {Object} venmoInstance Venmo instance\n * @returns {Promise} Promise resolved with tokenized payload\n */\nfunction tokenize(venmoInstance) {\n\treturn venmoInstance.tokenize({ processResultsDelay: 10 });\n}\n\n/**\n * Inits braintreeVenmoSDK with client instance promise\n * @param {Promise} braintreeClientInstancePromise Braintree Venmo client instance promise\n */\nfunction init(braintreeClientInstancePromise) {\n\tbtClientInstancePromise = braintreeClientInstancePromise;\n}\n\nmodule.exports = {\n\tinit,\n\tisBrowserSupported,\n\tcreateVenmo,\n\ttokenize,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst loaderInstance = require('../../loaderHelper');\nconst venmoHelper = require('../helpers/venmoHelper');\nconst VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\nconst alertHandler = new VenmoAlertHandlerModel();\n\nconst $venmoButton = document.querySelector(\n\t'.js-braintree-account-venmo-button'\n);\n\nlet venmoLoader;\n\n/**\n * Makes Venmo account as default one\n * @param {Event} e event to identify target element\n */\nfunction makeDefaultVenmo(e) {\n\tconst target = e.target;\n\tconst url = window.braintreeUrls.makePaymentMethodDefaultUrl;\n\tconst id = target.getAttribute('data-id');\n\tconst paymentMethodID =\n\t\twindow.braintreePreferences.paymentMethods.BRAINTREE_VENMO.paymentMethodId;\n\tconst $loaderContainter = document.querySelector(\n\t\t`#${target.getAttribute('data-loader')}`\n\t);\n\tconst loader = loaderInstance($loaderContainter);\n\n\talertHandler.hideAlerts();\n\tloader.show();\n\n\thelper.setDefaultProperty({\n\t\turl: url,\n\t\tid: id,\n\t\tpaymentMethodID: paymentMethodID,\n\t\tloader: loader,\n\t});\n}\n\n/**\n * Remove Venmo account\n * @param {Event} e event to identify target element\n */\nfunction removeVenmoPayment(e) {\n\tconst target = e.target;\n\tconst $loaderContainter = document.getElementById(\n\t\ttarget.getAttribute('data-loader')\n\t);\n\n\tvenmoLoader = loaderInstance($loaderContainter);\n\tvenmoLoader.show();\n\n\tfetch(\n\t\thelper.getUrlWithCsrfToken(\n\t\t\t`${window.braintreeUrls.deletePaymentUrl}?UUID=${target.getAttribute(\n\t\t\t\t'data-id'\n\t\t\t)}`\n\t\t),\n\t\t{ method: 'GET' }\n\t)\n\t\t.then((response) => {\n\t\t\treturn response.json();\n\t\t})\n\t\t.then((data) => {\n\t\t\tif (data.error && data.error.message) {\n\t\t\t\t// Show error message in a case of current PI removal is not allowed\n\t\t\t\talertHandler.showError(data.error.message);\n\t\t\t} else {\n\t\t\t\tdocument.getElementById(`uuid-${data.UUID}`).remove();\n\n\t\t\t\tif (data.newDefaultAccount) {\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.getElementById(`uuid-${data.newDefaultAccount}`)\n\t\t\t\t\t\t.classList.add('font-weight-bold');\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.getElementById(`uuid-${data.newDefaultAccount}`)\n\t\t\t\t\t\t.classList.add('d-none');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvenmoLoader.hide();\n\t\t})\n\t\t.catch(() => {\n\t\t\tlocation.reload();\n\t\t\tvenmoLoader.hide();\n\t\t});\n}\n\n/**\n * Creates Venmo form data on account page\n * @param {string} nonce Braintree Venmo nonce\n * @param {string} userId Braintree Venmo userID\n * @returns {Object} object with Venmo form data\n */\nfunction createVenmoAccountFormData(nonce, userId) {\n\tconst venmoAccountFormFields = $venmoButton.getAttribute(\n\t\t'data-venmo-account-form-fields'\n\t);\n\tconst csrfToken = document.querySelector(\n\t\t'.js-braintree-account-venmo-button-wrapper #csrf_token'\n\t);\n\n\tconst venmoAccountFormData = helper.createPaymentFormData(\n\t\tvenmoAccountFormFields,\n\t\t{\n\t\t\tnonce: nonce,\n\t\t\tuserId: userId,\n\t\t}\n\t);\n\n\tvenmoAccountFormData.append(csrfToken.name, csrfToken.value);\n\n\treturn venmoAccountFormData;\n}\n\n/**\n * Stores new Venmo account\n * @param {Object} data tokenized payload data with Venmo nonce\n * @returns {Promise} call to Braintree-AccountAddVenmoHandle endpoint\n */\nfunction storeNewVenmoAccount(data) {\n\tconst venmoAddAccountHandlerUrl = $venmoButton.getAttribute(\n\t\t'data-venmo-add-account-handler'\n\t);\n\tconst venmoAccountFormData = createVenmoAccountFormData(\n\t\tdata.nonce,\n\t\tdata.details.username\n\t);\n\tconst encodedFormData = btoa(\n\t\tJSON.stringify(Object.fromEntries(venmoAccountFormData))\n\t);\n\n\tvenmoLoader.show();\n\n\treturn fetch(helper.getUrlWithCsrfToken(venmoAddAccountHandlerUrl), {\n\t\tmethod: 'POST',\n\t\tbody: encodedFormData,\n\t\theaders: { 'Content-Type': 'application/json' },\n\t})\n\t\t.then((response) => response.json())\n\t\t.then((paymentData) => {\n\t\t\tvenmoLoader.hide();\n\t\t\tif (paymentData.error) {\n\t\t\t\talertHandler.showError(paymentData.error);\n\t\t\t} else {\n\t\t\t\tvenmoHelper.hideVenmoAccountBtn();\n\t\t\t\tfetch(paymentData.renderAccountsUrl)\n\t\t\t\t\t.then((template) => template.text())\n\t\t\t\t\t.then((templateHTML) => {\n\t\t\t\t\t\tdocument.querySelector('.js-venmo-accounts').innerHTML =\n\t\t\t\t\t\t\ttemplateHTML;\n\t\t\t\t\t\tdocument\n\t\t\t\t\t\t\t.querySelectorAll('.js-venmo-accounts .js-remove-bt-payment')\n\t\t\t\t\t\t\t.forEach((el) => {\n\t\t\t\t\t\t\t\tel.addEventListener('click', removeVenmoPayment);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n}\n\n/**\n * Inits Venmo functionality\n * @param {Object} btVenmoModel Braintree Venmo model\n */\nfunction init(btVenmoModel) {\n\tconst isVenmoButtonEnabledOnAccountPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-account-venmo-button')\n\t);\n\tconst isVenmoAccountBlockExists = Boolean(\n\t\tdocument.querySelector('.js-venmo-accounts')\n\t);\n\tconst $braintreeVenmoLoader = document.getElementById(\n\t\t'braintreeVenmoAccLoader'\n\t);\n\n\tvenmoLoader = loaderInstance($braintreeVenmoLoader);\n\n\tif (isVenmoButtonEnabledOnAccountPage || isVenmoAccountBlockExists) {\n\t\t// \"Make default\" button functionality initiation\n\t\tdocument\n\t\t\t.querySelectorAll('.js-venmo-accounts .js-braintree-make-default-card')\n\t\t\t.forEach((el) => el.addEventListener('click', makeDefaultVenmo));\n\t\t// \"Remove\" button functionality initiation\n\t\tdocument\n\t\t\t.querySelectorAll('.js-venmo-accounts .js-remove-bt-payment')\n\t\t\t.forEach((el) => el.addEventListener('click', removeVenmoPayment));\n\t}\n\n\tif (isVenmoButtonEnabledOnAccountPage) {\n\t\tconst $addVenmoAccountButton = document.querySelector(\n\t\t\t'.js-add-venmo-account'\n\t\t);\n\n\t\t$addVenmoAccountButton.addEventListener('click', function () {\n\t\t\tconst venmoButton = require('../components/venmoButton');\n\t\t\t// Hide venmo account error container\n\n\t\t\talertHandler.hideAlerts();\n\t\t\tvenmoHelper.showVenmoAccountBtn();\n\n\t\t\tif (!window.venmoAccountButtonInited) {\n\t\t\t\twindow.venmoAccountButtonInited = true;\n\n\t\t\t\tvenmoButton.init(btVenmoModel, $venmoButton);\n\t\t\t}\n\t\t});\n\t}\n}\n\nmodule.exports = {\n\tinit,\n\tstoreNewVenmoAccount,\n};\n","'use strict';\n\n/**\n * Display shipping address as selected billing address option\n */\nfunction displayShippingAddressAsSelected() {\n\tconst billingAddressSelector = document.getElementById(\n\t\t'billingAddressSelector'\n\t);\n\n\tif (billingAddressSelector) {\n\t\tconst shipmentIndex = 2;\n\t\tconst shippingAddressToSelect =\n\t\t\tbillingAddressSelector.children[shipmentIndex];\n\n\t\tif (shippingAddressToSelect) {\n\t\t\tshippingAddressToSelect.selected = true;\n\t\t}\n\t}\n}\n\nmodule.exports = {\n\tdisplayShippingAddressAsSelected,\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\n/**\n * General validation of params needed for initialization of Venmo button\n * @param {Object} braintreeVenmoConfig Braintree Venmo button configurations (they came from server via data attr)\n * @returns {Object} object with \"error\" boolean flag and array of error messages from \"messages\" attr\n */\nfunction generalVenmoValidation(braintreeVenmoConfig) {\n\tconst response = {\n\t\terror: false,\n\t\tmessages: '',\n\t};\n\n\ttry {\n\t\tconst isBraintreeVenmoConfigValid =\n\t\t\ttypeof braintreeVenmoConfig !== 'object' || braintreeVenmoConfig !== null;\n\n\t\tif (!isBraintreeVenmoConfigValid) {\n\t\t\tresponse.error = true;\n\t\t\tresponse.messages = 'Venmo button has not valid data-braintree-config';\n\t\t}\n\t} catch (error) {\n\t\tresponse.error = true;\n\t\tresponse.messages = error;\n\t}\n\n\treturn response;\n}\n\n/**\n * Init Venmo button functionality\n * @param {Object} btVenmoModel Braintree Venmo model\n * @param {Object} $venmoButton Venmo button element\n * @param {boolean} isBillingPage value to identify flow page\n */\nfunction init(btVenmoModel, $venmoButton, isBillingPage) {\n\tconst braintreeVenmoConfig = helper.tryParseJSON(\n\t\t$venmoButton.getAttribute('data-braintree-config')\n\t);\n\tconst VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\n\tconst alertHandler = new VenmoAlertHandlerModel();\n\n\ttry {\n\t\tconst generalValidation = generalVenmoValidation(braintreeVenmoConfig);\n\n\t\tif (generalValidation.error && generalValidation.messages.length) {\n\t\t\tthrow generalValidation.messages;\n\t\t}\n\n\t\t// Fraud Data collecting\n\t\t// For more details go inside \"btVenmoModel.collectFraudData\" function logic\n\t\tbtVenmoModel.collectFraudData().then(function (fraudDataPayload) {\n\t\t\tconst venmoHelper = require('../helpers/venmoHelper');\n\n\t\t\tvenmoHelper.setVenmoDeviceData(fraudDataPayload.deviceData);\n\n\t\t\treturn btVenmoModel\n\t\t\t\t.isBrowserSupported()\n\t\t\t\t.then(function (isBrowserSupported) {\n\t\t\t\t\tif (!isBrowserSupported) {\n\t\t\t\t\t\talertHandler.handleNoBrowserSupportError(braintreeVenmoConfig);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn btVenmoModel.initVenmo($venmoButton, isBillingPage);\n\t\t\t\t});\n\t\t});\n\n\t\t// To prevent repeatable Venmo button initialization\n\t\twindow.venmoCheckoutButtonInited = true;\n\t} catch (error) {\n\t\talertHandler.showError(error);\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst loaderInstance = require('../../loaderHelper');\nconst venmoButton = require('./venmoButton');\nconst venmoList = require('./venmoList');\nconst venmoHelper = require('../helpers/venmoHelper');\nconst venmoSessionAccount = require('./venmoSessionAccount');\nconst helper = require('../../helper');\n\nconst $braintreeVenmoNonce = document.getElementById('braintreeVenmoNonce');\nconst $braintreeVenmoUserId = document.getElementById('braintreeVenmoUserId');\nconst $sessionVenmoAccount = document.getElementById('sessionVenmoAccount');\nconst $newVenmoAccount = document.getElementById('newVenmoAccount');\nconst $venmoBillingInput = document.getElementById('braintreeVenmoBilling');\nconst $venmoContent = document.querySelector('.js-braintree-venmo-content');\nconst $venmoButton = document.querySelector('.js-braintree-venmo-button');\nconst $venmoAccountContainer = document.querySelector(\n\t'.js-braintree-used-venmo-account'\n);\nconst $continueButton = document.querySelector('button.submit-payment');\nconst $submitShippingBtn = document.querySelector('.button, .submit-shipping');\n\nconst dataAttrIsValidStage = 'data-is-valid-stage';\n\nlet hashChange;\n\n/**\n * Process Venmo on the Billing/Checkout Page\n * @param {Object} data tokenized Venmo payload data\n */\nfunction processCheckoutFlow(data) {\n\tconst $loaderContainer = venmoHelper.createLoaderContainter(\n\t\tdocument.querySelector('.page')\n\t);\n\n\tloaderInstance($loaderContainer).show();\n\n\t$braintreeVenmoNonce.value = data.nonce;\n\t$braintreeVenmoUserId.value = data.details.username;\n\t// In case when stage is correct we proceed with usual flow\n\tif (window.history.state !== 'shipping') {\n\t\t$continueButton.click();\n\t\tdocument.querySelector('.js-braintree-venmo-loader').remove();\n\n\t\treturn;\n\t}\n\n\t// In case when Venmo has returned from Venmo app to NOT correct stage (for example, to shipping stage)\n\t// we redirect user to correct stage and set required data\n\tvenmoHelper.updateBillingAddressFormValues(\n\t\thelper.tryParseJSON($venmoBillingInput.value)\n\t);\n\t// Move to stage payment\n\t$submitShippingBtn.click();\n\t$venmoButton.setAttribute(dataAttrIsValidStage, true);\n\tdocument.querySelector('.js-braintree-venmo-loader').remove();\n}\n\n/**\n * Inits Venmo checkout components\n * @param {Object} btVenmoModel Braintree Venmo model\n */\nfunction init(btVenmoModel) {\n\t// MutationObserver is triggered on each URL change to avoid conflict between URL passed to Venmo application\n\t// and URL with already changed stage on storefront (checkout stage)\n\t// case when user is redirected from Venmo application\n\thashChange = new MutationObserver(function (mutations) {\n\t\tlet result = false;\n\n\t\tconst isSessionPaymentsEnabled =\n\t\t\twindow.braintreePreferences.isSessionPaymentsEnabled;\n\t\tconst mutation = mutations.find(function (element) {\n\t\t\treturn (\n\t\t\t\telement.attributeName === 'data-checkout-stage' &&\n\t\t\t\telement.target.dataset.checkoutStage === 'payment'\n\t\t\t);\n\t\t});\n\n\t\tif (!mutation) {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (\n\t\t\t$braintreeVenmoNonce.value &&\n\t\t\thelper.tryParseJSON($venmoButton.getAttribute(dataAttrIsValidStage))\n\t\t) {\n\t\t\t$venmoButton.setAttribute(dataAttrIsValidStage, false);\n\t\t\t$continueButton.click();\n\n\t\t\tresult = true;\n\n\t\t\treturn result;\n\t\t}\n\n\t\t// Case when user has proceeded with Venmo session account and clicked on \"edit\" button\n\t\tif (\n\t\t\tisSessionPaymentsEnabled &&\n\t\t\t$venmoContent.classList.contains('active') &&\n\t\t\tmutation.oldValue === 'placeOrder'\n\t\t) {\n\t\t\t// Show dropdown with used Venmo session account\n\t\t\tvenmoSessionAccount.showVenmoAccount();\n\n\t\t\tif ($braintreeVenmoUserId && $braintreeVenmoUserId.value !== 'Venmo') {\n\t\t\t\t$venmoAccountContainer.classList.remove('used-venmo-account-hide');\n\t\t\t\t$venmoAccountContainer.classList.add('js-used-venmo-account');\n\t\t\t\t$sessionVenmoAccount.classList.remove('used-venmo-account-hide');\n\t\t\t\t$sessionVenmoAccount.classList.add('js-used-venmo-account');\n\t\t\t\t$sessionVenmoAccount.textContent = $braintreeVenmoUserId.value;\n\t\t\t\t$sessionVenmoAccount.selected = true;\n\t\t\t\t$newVenmoAccount.selected = false;\n\t\t\t}\n\n\t\t\t// Set attribute to show \"place order\" button\n\t\t\t$venmoContent.setAttribute('data-paypal-is-hide-continue-button', false);\n\t\t\t// Hide Venmo button\n\t\t\t$venmoButton.setAttribute('data-is-hide-venmo-button', true);\n\t\t}\n\n\t\treturn result;\n\t});\n\n\thashChange.observe(document.getElementById('checkout-main'), {\n\t\tattributeOldValue: true,\n\t});\n\n\t// Venmo button functionality is initiated once in case if it was not inited yet\n\t// based on existence of window.venmoCheckoutButtonInited (set while Venmo button initiation)\n\tif (!window.venmoCheckoutButtonInited) {\n\t\tvenmoButton.init(btVenmoModel, $venmoButton, true);\n\t\tvenmoList.init();\n\t}\n\n\tconst sessionPaymentMethodId = helper.tryParseJSON(\n\t\t$venmoContent.getAttribute('data-braintree-config')\n\t).sessionPaymentMethodId;\n\t// if exists Venmo session account - we make Venmo tab active on page reload\n\n\tif (sessionPaymentMethodId === 'Venmo') {\n\t\tdocument.querySelector('.venmo-tab').click();\n\t}\n}\n\nmodule.exports = {\n\tinit,\n\tprocessCheckoutFlow,\n};\n","'use strict';\n\nconst venmoHelper = require('../helpers/venmoHelper');\nconst helper = require('../../helper');\n\nconst $btVenmoAccountsList = document.getElementById(\n\t'braintreeVenmoAccountsList'\n);\nconst $venmoButton = document.querySelector('.js-braintree-venmo-button');\n\n/**\n * Inits Venmo list functionality\n */\nfunction init() {\n\t// Attribute is set as \"true\" when user has saved Venmo account in wallet\n\t// or when user has proceeded with Venmo session account\n\tconst isHideVenmoButtonAttribute = helper.tryParseJSON(\n\t\t$venmoButton.getAttribute('data-is-hide-venmo-button')\n\t);\n\t// Case when we already have session account in disabled dropdown\n\t// and user returns to the Billing Page from Cart or other page (from not billing page/stages)\n\t// only in this case we need to hide Venmo button\n\t// in other cases button and dropdown behavior is handled by venmoContentTabHandler function\n\t// because disabled dropdown with session Venmo account and with saved Venmo and \"new account\" option are separated\n\n\tif (\n\t\tisHideVenmoButtonAttribute &&\n\t\t$btVenmoAccountsList.value !== 'newaccount'\n\t) {\n\t\t$venmoButton.style.display = 'none';\n\t}\n\n\tif ($btVenmoAccountsList) {\n\t\t$btVenmoAccountsList.addEventListener('change', function () {\n\t\t\tvenmoHelper.venmoContentTabHandler();\n\t\t});\n\t}\n}\n\nmodule.exports = {\n\tinit,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst venmoAccount = require('./venmoAccount');\nconst venmoCheckout = require('./venmoCheckout');\nconst venmoConstants = require('../constants/venmoConstants');\nconst venmoProcessingHelper = require('../helpers/venmoProcessingHelper');\n\n/**\n * Process Venmo flow for Account/Billing Page flows\n * @param {Object} venmoData Venmo data received from tokenize\n */\nfunction processVenmo(venmoData) {\n\tconst $venmoButton = document.querySelector(\n\t\t'.js-braintree-account-venmo-button, .js-braintree-venmo-button'\n\t);\n\n\tif (\n\t\t$venmoButton &&\n\t\thelper.tryParseJSON($venmoButton.getAttribute('data-braintree-config'))\n\t) {\n\t\tconst VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\n\t\tconst alertHandler = new VenmoAlertHandlerModel();\n\n\t\talertHandler.hideAlerts();\n\t}\n\n\tconst venmoFlowName = venmoProcessingHelper.getVenmoFlowName();\n\n\tswitch (venmoFlowName) {\n\t\tcase venmoConstants.FLOW_NAME_ACCOUNT:\n\t\t\tvenmoAccount.storeNewVenmoAccount(venmoData);\n\n\t\t\tbreak;\n\n\t\tcase venmoConstants.FLOW_NAME_BILLING_CHECKOUT:\n\t\t\thelper.removeActiveSessionPayment();\n\t\t\tvenmoCheckout.processCheckoutFlow(venmoData);\n\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbreak;\n\t}\n}\n\nmodule.exports = {\n\tprocessVenmo,\n};\n","'use strict';\n\nconst helper = require('../../helper');\nconst venmoHelper = require('../helpers/venmoHelper');\n\nconst $braintreeVenmoSessionAccount = document.getElementById(\n\t'braintreeVenmoAccount'\n);\nconst $braintreeVenmoUserId = document.getElementById('braintreeVenmoUserId');\nconst $venmoAccountBlock = document.querySelector(\n\t'.js-braintree-used-venmo-account'\n);\nconst $venmoButton = document.querySelector('.js-braintree-venmo-button');\n\n/**\n * Handles showing Venmo session account\n */\nfunction showVenmoAccount() {\n\tconst btVenmoAccountsList = document.getElementById(\n\t\t'braintreeVenmoAccountsList'\n\t);\n\n\tif (!btVenmoAccountsList) {\n\t\t$venmoAccountBlock.classList.remove('used-venmo-account-hide');\n\t\t$braintreeVenmoSessionAccount.options[0].text = $braintreeVenmoUserId.value;\n\t}\n\n\t$venmoButton.style.display = 'none';\n\n\thelper.continueButtonToggle(false);\n}\n\n/**\n * Removes method was used and change appearance of Venmo tab\n */\nfunction removeSessionNonce() {\n\tconst defaultOption = helper.getOptionByDataDefault(\n\t\t'#braintreeVenmoAccountsList'\n\t);\n\tconst braintreeVenmoNonce = document.getElementById('braintreeVenmoNonce');\n\tconst braintreeVenmoBilling = document.getElementById(\n\t\t'braintreeVenmoBilling'\n\t);\n\n\tif (defaultOption) {\n\t\tdefaultOption.selected = true;\n\n\t\tvenmoHelper.venmoContentTabHandler();\n\t} else {\n\t\t$venmoAccountBlock.classList.remove('js-used-venmo-account');\n\t\t$venmoAccountBlock.classList.add('used-venmo-account-hide');\n\t\t$venmoButton.style.display = 'block';\n\t}\n\n\tbraintreeVenmoNonce.value = '';\n\tbraintreeVenmoBilling.value = '';\n}\n\nmodule.exports = {\n\tshowVenmoAccount,\n\tremoveSessionNonce,\n};\n","'use strict';\n\nmodule.exports = {\n\tFLOW_NAME_ACCOUNT: 'account',\n\tFLOW_NAME_BILLING_CHECKOUT: 'billing',\n};\n","'use strict';\n\nconst helper = require('../../helper');\n\nconst $addVenmoAccountBtn = document.querySelector('.js-add-venmo-account');\nconst $venmoAccountWrapper = document.querySelector(\n\t'.js-braintree-account-venmo-button-wrapper'\n);\n\nconst btVenmoButtonClassName = '.js-braintree-venmo-button';\n\n/**\n * Returns Braintree Venmo configs\n * @returns {Object} Braintree Venmo configs\n */\nfunction getBraintreeVenmoButtonConfigs() {\n\tconst $venmoButton = document.querySelector(\n\t\t`${btVenmoButtonClassName}, .js-braintree-account-venmo-button`\n\t);\n\n\treturn helper.tryParseJSON(\n\t\t$venmoButton.getAttribute('data-braintree-config')\n\t);\n}\n\n/**\n * Creates loader container on the Billing page\n * @param {Element} $target Venmo button target for which loader container is created\n * @returns {Element} created loader container element\n */\nfunction createLoaderContainter($target) {\n\tconst $loaderContainter = document.createElement('div');\n\n\t$loaderContainter.classList.add(\n\t\t'braintree-venmo-loader',\n\t\t'js-braintree-venmo-loader'\n\t);\n\n\thelper.continueButtonToggle(true);\n\n\treturn $target.parentNode.insertBefore($loaderContainter, $target);\n}\n\n/**\n * Updates the billing address form values within saved billing\n * @param {Object} billingAddress billing address\n */\nfunction updateBillingAddressFormValues(billingAddress) {\n\tconst form = document.querySelector('form[name=dwfrm_billing]');\n\tconst inputNames = [\n\t\t'firstName',\n\t\t'lastName',\n\t\t'address1',\n\t\t'address2',\n\t\t'city',\n\t\t'postalCode',\n\t];\n\n\tif (!form) {\n\t\treturn;\n\t}\n\n\tinputNames.forEach((value) => {\n\t\tform.querySelector(`input[name$=_${value}]`).value = decodeURIComponent(\n\t\t\tbillingAddress[value]\n\t\t);\n\t});\n\n\t// Process the billing address select elements (Country, State)\n\t[\n\t\t'select[name$=_stateCode]',\n\t\t'input[name$=_stateCode]',\n\t\t'select[name$=_country]',\n\t\t'input[name$=_country]',\n\t].forEach((elemSelector) => {\n\t\tconst $elem = form.querySelector(elemSelector);\n\n\t\tif ($elem) {\n\t\t\t$elem.value = elemSelector.includes('stateCode')\n\t\t\t\t? billingAddress.stateCode\n\t\t\t\t: billingAddress.country;\n\t\t}\n\t});\n}\n\n/**\n * Shows Venmo button on the Account Page and hides \"add new\" button\n */\nfunction showVenmoAccountBtn() {\n\t$addVenmoAccountBtn.classList.add('d-none');\n\t$venmoAccountWrapper.classList.remove('d-none');\n}\n\n/**\n * Hides Venmo button on the Account Page and shows \"add new\" button\n */\nfunction hideVenmoAccountBtn() {\n\t$addVenmoAccountBtn.classList.remove('d-none');\n\t$venmoAccountWrapper.classList.add('d-none');\n}\n\n/**\n * Saves Venmo device (risk) data to hidden input\n * @param {string} deviceData Venmo device (risk) data\n */\nfunction setVenmoDeviceData(deviceData) {\n\tconst $braintreeVenmoDeviceData = document.getElementById(\n\t\t'braintreeVenmoDeviceData'\n\t);\n\n\tif ($braintreeVenmoDeviceData) {\n\t\t$braintreeVenmoDeviceData.value = deviceData;\n\t}\n}\n\n/**\n * Checks billing form on the Billing Page\n * If billing form is valid, saves/updates billing address to input\n * If not valid (possible case: empty email) - add error class to email input\n * @returns {boolean} billing form check result value\n */\nfunction checkBillingForm() {\n\tconst $billingForm = document.querySelector('.card-body [id=dwfrm_billing]');\n\tconst $venmoBillingInput = document.getElementById('braintreeVenmoBilling');\n\n\tif ($billingForm.checkValidity()) {\n\t\t/**\n\t\t * Setting current customer Billing address to form\n\t\t * For the case when SFCC redirects customer from payment stage to shipping stage\n\t\t * after successful Venmo app response\n\t\t */\n\t\t$venmoBillingInput.value = JSON.stringify(\n\t\t\thelper.getBillingAddressFormValues()\n\t\t);\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks zero amount on the Billing Page\n * If amount is zero Venmo pop-up is closed and appropriate error is shown\n * If amount is acceptable by Venmo user could proceed through pop-up\n * @returns {boolean} zero amount check result value\n */\nfunction checkZeroAmount() {\n\tconst $venmoButton = document.querySelector(btVenmoButtonClassName);\n\tconst braintreeVenmoConfig = helper.tryParseJSON(\n\t\t$venmoButton.getAttribute('data-braintree-config')\n\t);\n\tconst amount = braintreeVenmoConfig.options.amount;\n\n\tif (amount === 0) {\n\t\tconst VenmoAlertHandlerModel = require('../alerthandler/venmoAlertHandlerModel');\n\t\tconst alertHandler = new VenmoAlertHandlerModel();\n\n\t\talertHandler.showError(\n\t\t\tbraintreeVenmoConfig.messages.VENMO_ZERO_AMOUNT_ERROR\n\t\t);\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Handles all behavior related to the Venmo content tab\n */\nfunction venmoContentTabHandler() {\n\tconst $btVenmoAccountsList = document.getElementById(\n\t\t'braintreeVenmoAccountsList'\n\t);\n\tconst $saveVenmoAccountCheckboxContainer = document.getElementById(\n\t\t'braintreeSaveVenmoAccountContainer'\n\t);\n\tconst $saveVenmoAccountCheckbox = document.getElementById(\n\t\t'braintreeSaveVenmoAccount'\n\t);\n\tconst $venmoButton = document.querySelector(btVenmoButtonClassName);\n\tconst $venmoContent = document.querySelector('.js-braintree-venmo-content');\n\n\tconst venmoOptionId = $btVenmoAccountsList.value;\n\n\tif (venmoOptionId === 'newaccount') {\n\t\t// Case when option \"new account\" is selected in dropdown\n\t\t$venmoButton.style.display = 'block';\n\n\t\thelper.continueButtonToggle(true);\n\t\t$venmoContent.setAttribute('data-paypal-is-hide-continue-button', true);\n\t\t// Case when registered user and vaulting is enabled\n\t\tif ($saveVenmoAccountCheckboxContainer) {\n\t\t\t$saveVenmoAccountCheckbox.checked = true;\n\t\t\t$saveVenmoAccountCheckboxContainer.style.display = 'block';\n\t\t}\n\t} else {\n\t\t// Case when saved account is selected in dropdown\n\t\t$venmoButton.style.display = 'none';\n\n\t\thelper.continueButtonToggle(false);\n\t\t$venmoContent.setAttribute('data-paypal-is-hide-continue-button', false);\n\t\t// Case when registered user and vaulting is enabled\n\t\tif ($saveVenmoAccountCheckboxContainer) {\n\t\t\t$saveVenmoAccountCheckbox.checked = false;\n\t\t\t$saveVenmoAccountCheckboxContainer.style.display = 'none';\n\t\t}\n\t}\n}\n\nmodule.exports = {\n\tgetBraintreeVenmoButtonConfigs,\n\tcreateLoaderContainter,\n\tupdateBillingAddressFormValues,\n\tshowVenmoAccountBtn,\n\thideVenmoAccountBtn,\n\tsetVenmoDeviceData,\n\tcheckBillingForm,\n\tcheckZeroAmount,\n\tvenmoContentTabHandler,\n};\n","'use strict';\n\nconst venmoConstants = require('../constants/venmoConstants');\n\n/**\n * Gets Venmo flow name (corresponding page)\n * @returns {string} Flow ID (page) Account/Billing\n */\nfunction getVenmoFlowName() {\n\tconst isVenmoEnabledOnAccountPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-account-venmo-button')\n\t);\n\tconst isVenmoEnabledOnBillingPage = Boolean(\n\t\tdocument.querySelector('.js-braintree-venmo-content')\n\t);\n\n\tlet venmoFlowName;\n\n\tif (isVenmoEnabledOnAccountPage) {\n\t\tvenmoFlowName = venmoConstants.FLOW_NAME_ACCOUNT;\n\t} else if (isVenmoEnabledOnBillingPage) {\n\t\tvenmoFlowName = venmoConstants.FLOW_NAME_BILLING_CHECKOUT;\n\t}\n\n\treturn venmoFlowName;\n}\n\nmodule.exports = {\n\tgetVenmoFlowName,\n};\n","'use strict';\n\n// Braintree SDK model builder, we need to init Braintree Venmo model on this level, since we are using it on step of \"venmoAccount.init()\"\n// and on step of \"venmoCheckout.init()\".\nconst braintreeVenmoModelBuilder = require('./braintreesdk/braintreeVenmoModelBuilder');\n\n// components\nconst venmoAccount = require('./components/venmoAccount');\nconst venmoCheckout = require('./components/venmoCheckout');\n\nlet btVenmoModelResponse;\n\n/**\n * Inits Venmo functionality on the Account Page\n */\nfunction initAccount() {\n\tvenmoAccount.init(btVenmoModelResponse.btVenmoModel);\n}\n\n/**\n * Inits Venmo functionality on the Billing Page\n */\nfunction initBillingCheckout() {\n\tvenmoCheckout.init(btVenmoModelResponse.btVenmoModel);\n}\n\n/**\n * Inits braintreeVenmoModelBuilder on Venmo level\n */\nfunction init() {\n\tbtVenmoModelResponse = braintreeVenmoModelBuilder.init();\n}\n\nmodule.exports = {\n\tinitAccount,\n\tinitBillingCheckout,\n\tinit,\n};\n","/*!\n * jQuery JavaScript Library v3.6.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-08-26T17:52Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
      \" ],\n\tcol: [ 2, \"\", \"
      \" ],\n\ttr: [ 2, \"\", \"
      \" ],\n\ttd: [ 3, \"\", \"
      \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"