{"version":3,"sources":["scripts/jquery-1.12.4.min.js","app/angular.min.js","node_modules/angular-ui-bootstrap/dist/ui-bootstrap-tpls.js","node_modules/angular-sanitize/angular-sanitize.min.js","node_modules/angular-socialshare/dist/angular-socialshare.min.js","node_modules/ng-toast/dist/ngToast.min.js","node_modules/angular-animate/angular-animate.js","App/app.js","scripts/slick.min.js","scripts/chosen-init.js","scripts/checkout-address-auto-complete.js","scripts/image-to-background.js","scripts/initialize-scripts.js","scripts/owl.carousel.min.js","scripts/form-email-validation.js","scripts/quagga.min.js","App/config.js","App/Services/productFiltersService.js","App/Services/confirmationService.js","App/Services/domService.js","App/Services/windowService.js","App/Services/searchService.js","App/Services/thumbnailService.js","App/Services/cookieConsentService.js","App/Directives/attachDropdownEvents.js","App/Directives/focusInput.js","App/Directives/fancybox.js","App/Directives/focusSelect.js","App/Directives/labeledDropdown.js","App/Directives/labeledImage.js","App/Directives/loadingSpinner.js","App/Directives/ngPatternRestrict.min.js","App/Directives/pageLoadingSpinner.js","App/Directives/productFilters.js","App/Directives/searchFilters.js","App/Directives/slickSlider.js","App/Directives/match.js","App/Directives/textEllipsis.js","App/Directives/googleAutocomplete.js","App/Directives/ngToastProvider.js","App/Controllers/searchFiltersController.js","App/Controllers/slideNavigation.js","App/Controllers/productFiltersController.js","Mvc/Views/ZipsCheckout/Service.js","Mvc/Views/ProductConfigurator/productConfiguratorController.js","Mvc/Views/RecommendedProducts/recommendedProductsController.js","Mvc/Views/CustomSearchResults/customSearchResultsController.js","Mvc/Views/AccountProfile/accountProfileController.js","Mvc/Views/SearchBox/searchBoxController.js","Mvc/Views/SearchCart/searchCartController.js","Mvc/Views/UserRegistration/userRegistrationController.js","Mvc/Views/ZipsCheckout/CheckoutController.js","Mvc/Views/CustomerServiceTool/customerServiceToolController.js","Mvc/Views/CookieConsentWidget/cookieConsentController.js","Mvc/Views/OperationInstructions/operationInstructionsController.js","WebForms/Templates/cartController.js","WebForms/Templates/productDetailsController.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACt1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/lPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpjIA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjBA;AACA;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtFA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;ACDA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5uBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACz0CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"bundle.min.js","sourcesContent":["/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */\r\n!function(a,b){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m=\"1.12.4\",n=function(a,b){return new n.fn.init(a,b)},o=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,p=/^-ms-/,q=/-([\\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:\"\",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g&&(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:\"jQuery\"+(m+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===n.type(a)},isArray:Array.isArray||function(a){return\"array\"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||\"object\"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,\"constructor\")&&!k.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?i[j.call(a)]||\"object\":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,\"ms-\").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?\"\":(a+\"\").replace(o,\"\")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,\"string\"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return\"string\"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),\"function\"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(a,b){i[\"[object \"+b+\"]\"]=b.toLowerCase()});function s(a){var b=!!a&&\"length\"in a&&a.length,c=n.type(a);return\"function\"===c||n.isWindow(a)?!1:\"array\"===c||0===b||\"number\"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=\"sizzle\"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",L=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",M=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",N=\"\\\\[\"+L+\"*(\"+M+\")(?:\"+L+\"*([*^$|!~]?=)\"+L+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+M+\"))|)\"+L+\"*\\\\]\",O=\":(\"+M+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+N+\")*)|.*)\\\\)|)\",P=new RegExp(L+\"+\",\"g\"),Q=new RegExp(\"^\"+L+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+L+\"+$\",\"g\"),R=new RegExp(\"^\"+L+\"*,\"+L+\"*\"),S=new RegExp(\"^\"+L+\"*([>+~]|\"+L+\")\"+L+\"*\"),T=new RegExp(\"=\"+L+\"*([^\\\\]'\\\"]*?)\"+L+\"*\\\\]\",\"g\"),U=new RegExp(O),V=new RegExp(\"^\"+M+\"$\"),W={ID:new RegExp(\"^#(\"+M+\")\"),CLASS:new RegExp(\"^\\\\.(\"+M+\")\"),TAG:new RegExp(\"^(\"+M+\"|[*])\"),ATTR:new RegExp(\"^\"+N),PSEUDO:new RegExp(\"^\"+O),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+L+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+L+\"*(?:([+-]|)\"+L+\"*(\\\\d+)|))\"+L+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+K+\")$\",\"i\"),needsContext:new RegExp(\"^\"+L+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+L+\"*((?:-\\\\d)?\\\\d*)\"+L+\"*\\\\)|)(?=[^-]|$)\",\"i\")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\\d$/i,Z=/^[^{]+\\{\\s*\\[native \\w/,$=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,_=/[+~]/,aa=/'|\\\\/g,ba=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+L+\"?|(\"+L+\")|.)\",\"ig\"),ca=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],\"string\"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+\" \"]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if(\"object\"!==b.nodeName.toLowerCase()){(k=b.getAttribute(\"id\"))?k=k.replace(aa,\"\\\\$&\"):b.setAttribute(\"id\",k=u),r=g(a),h=r.length,l=V.test(k)?\"#\"+k:\"[id='\"+k+\"']\";while(h--)r[h]=l+\" \"+qa(r[h]);s=r.join(\",\"),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute(\"id\")}}}return i(a.replace(Q,\"$1\"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+\" \")>d.cacheLength&&delete b[a.shift()],b[c+\" \"]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement(\"div\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split(\"|\"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&\"undefined\"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?\"HTML\"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener(\"unload\",da,!1):e.attachEvent&&e.attachEvent(\"onunload\",da)),c.attributes=ia(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute(\"id\")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c=\"undefined\"!=typeof a.getAttributeNode&&a.getAttributeNode(\"id\");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return\"undefined\"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return\"undefined\"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML=\"\",a.querySelectorAll(\"[msallowcapture^='']\").length&&q.push(\"[*^$]=\"+L+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||q.push(\"\\\\[\"+L+\"*(?:value|\"+K+\")\"),a.querySelectorAll(\"[id~=\"+u+\"-]\").length||q.push(\"~=\"),a.querySelectorAll(\":checked\").length||q.push(\":checked\"),a.querySelectorAll(\"a#\"+u+\"+*\").length||q.push(\".#.+[+~]\")}),ia(function(a){var b=n.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length&&q.push(\"name\"+L+\"*[*^$|!~]?=\"),a.querySelectorAll(\":enabled\").length||q.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),q.push(\",.*:\")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,\"div\"),s.call(a,\"[s!='']:x\"),r.push(\"!=\",O)}),q=q.length&&new RegExp(q.join(\"|\")),r=r.length&&new RegExp(r.join(\"|\")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,\"='$1']\"),c.matchesSelector&&p&&!A[b+\" \"]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||\"\").replace(ba,ca),\"~=\"===a[2]&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||\"\":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(\")\",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+\" \"];return b||(b=new RegExp(\"(^|\"+L+\")\"+a+\"(\"+L+\"|$)\"))&&y(a,function(a){return b.test(\"string\"==typeof a.className&&a.className||\"undefined\"!=typeof a.getAttribute&&a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?\"!=\"===b:b?(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c&&0===e.indexOf(c):\"*=\"===b?c&&e.indexOf(c)>-1:\"$=\"===b?c&&e.slice(-c.length)===c:\"~=\"===b?(\" \"+e.replace(P,\" \")+\" \").indexOf(c)>-1:\"|=\"===b?e===c||e.slice(0,c.length+1)===c+\"-\":!1):!0}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p=\"only\"===a&&!o&&\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error(\"unsupported pseudo: \"+a);return e[u]?e(b):e.length>1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,\"$1\"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||\"\")||fa.error(\"unsupported lang: \"+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&!!a.checked||\"option\"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()&&\"text\"===a.type&&(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&\"parentNode\"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[\" \"],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:\" \"===a[i-2].type?\"*\":\"\"})).replace(Q,\"$1\"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s=\"0\",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG(\"*\",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+\" \"];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n=\"function\"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&\"ID\"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split(\"\").sort(B).join(\"\")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement(\"div\"))}),ia(function(a){return a.innerHTML=\"\",\"#\"===a.firstChild.getAttribute(\"href\")})||ja(\"type|href|height|width\",function(a,b,c){return c?void 0:a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML=\"\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||ja(\"value\",function(a,b,c){return c||\"input\"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute(\"disabled\")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[\":\"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/,y=/^.[^:#\\[\\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if(\"string\"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=\":not(\"+a+\")\"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if(\"string\"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+\" \"+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,\"string\"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,\"string\"==typeof a){if(e=\"<\"===a.charAt(0)&&\">\"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?\"undefined\"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||\"string\"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?\"string\"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,\"parentNode\")},parentsUntil:function(a,b,c){return u(a,\"parentNode\",c)},next:function(a){return F(a,\"nextSibling\")},prev:function(a){return F(a,\"previousSibling\")},nextAll:function(a){return u(a,\"nextSibling\")},prevAll:function(a){return u(a,\"previousSibling\")},nextUntil:function(a,b,c){return u(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return u(a,\"previousSibling\",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return\"Until\"!==a.slice(-5)&&(d=c),d&&\"string\"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a=\"string\"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c=\"\",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[[\"resolve\",\"done\",n.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",n.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",n.Callbacks(\"memory\")]],c=\"pending\",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+\"With\"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+\"With\"](this===e?d:this,arguments),this},e[f[0]+\"With\"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler(\"ready\"),n(d).off(\"ready\"))))}});function J(){d.addEventListener?(d.removeEventListener(\"DOMContentLoaded\",K),a.removeEventListener(\"load\",K)):(d.detachEvent(\"onreadystatechange\",K),a.detachEvent(\"onload\",K))}function K(){(d.addEventListener||\"load\"===a.event.type||\"complete\"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),\"complete\"===d.readyState||\"loading\"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener(\"DOMContentLoaded\",K),a.addEventListener(\"load\",K);else{d.attachEvent(\"onreadystatechange\",K),a.attachEvent(\"onload\",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll(\"left\")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst=\"0\"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName(\"body\")[0],c&&c.style&&(b=d.createElement(\"div\"),e=d.createElement(\"div\"),e.style.cssText=\"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\",c.appendChild(e).appendChild(b),\"undefined\"!=typeof b.style.zoom&&(b.style.cssText=\"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement(\"div\");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+\" \").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute(\"classid\")===b},N=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d=\"data-\"+b.replace(O,\"-$1\").toLowerCase();if(c=a.getAttribute(d),\"string\"==typeof c){try{c=\"true\"===c?!0:\"false\"===c?!1:\"null\"===c?null:+c+\"\"===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;\r\n}return c}function Q(a){var b;for(b in a)if((\"data\"!==b||!n.isEmptyObject(a[b]))&&\"toJSON\"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||\"string\"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),\"object\"!=typeof b&&\"function\"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),\"string\"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(\" \")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{\"applet \":!0,\"embed \":!0,\"object \":\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,\"parsedAttrs\"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf(\"data-\")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,\"parsedAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||\"fx\")+\"queue\",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||\"fx\";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};\"inprogress\"===e&&(e=c.shift(),d--),e&&(\"fx\"===b&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks(\"once memory\").add(function(){n._removeData(a,b+\"queue\"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a&&(b=a,a=\"fx\",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\\w:-]+)/,_=/^$|\\/(?:java|ecma)script/i,aa=/^\\s+/,ba=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video\";function ca(a){var b=ba.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement(\"div\"),b=d.createDocumentFragment(),c=d.createElement(\"input\");a.innerHTML=\"
a\",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName(\"tbody\").length,l.htmlSerialize=!!a.getElementsByTagName(\"link\").length,l.html5Clone=\"<:nav>\"!==d.createElement(\"nav\").cloneNode(!0).outerHTML,c.type=\"checkbox\",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML=\"\",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement(\"input\"),c.setAttribute(\"type\",\"radio\"),c.setAttribute(\"checked\",\"checked\"),c.setAttribute(\"name\",\"t\"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,\"\"],legend:[1,\"
\",\"
\"],area:[1,\"\",\"\"],param:[1,\"\",\"\"],thead:[1,\"\",\"
\"],tr:[2,\"\",\"
\"],col:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:l.htmlSerialize?[0,\"\",\"\"]:[1,\"X
\",\"
\"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f=\"undefined\"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||\"*\"):\"undefined\"!=typeof a.querySelectorAll?a.querySelectorAll(b||\"*\"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,\"globalEval\",!b||n._data(b[d],\"globalEval\"))}var ga=/<|&#?\\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if(\"object\"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement(\"div\")),j=($.exec(g)||[\"\",\"\"])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g=\"table\"!==j||ha.test(g)?\"\"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],\"tbody\")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent=\"\";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,\"input\"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),\"script\"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||\"\")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement(\"div\");for(b in{submit:!0,change:!0,focusin:!0})c=\"on\"+b,(l[b]=c in a)||(e.setAttribute(c,\"t\"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if(\"object\"==typeof b){\"string\"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&(\"string\"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return\"undefined\"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||\"\").match(G)||[\"\"],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||\"\").split(\".\").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(\".\")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent(\"on\"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||\"\").match(G)||[\"\"],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||\"\").split(\".\").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp(\"(^|\\\\.)\"+p.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&(\"**\"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,\"events\"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,\"type\")?b.type:b,r=k.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(\".\")>-1&&(r=q.split(\".\"),q=r.shift(),r.sort()),h=q.indexOf(\":\")<0&&\"on\"+q,b=b[n.expando]?b:new n.Event(q,\"object\"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join(\".\"),b.rnamespace=b.namespace?new RegExp(\"(^|\\\\.)\"+r.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,\"events\")||{})[b.type]&&n._data(i,\"handle\"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,\"events\")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(\"click\"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||\"click\"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+\" \",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]\",\"i\"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,wa=/\\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement(\"div\"));function Ca(a,b){return n.nodeName(a,\"table\")&&n.nodeName(11!==b.nodeType?b:b.firstChild,\"tr\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function Da(a){return a.type=(null!==n.find.attr(a,\"type\"))+\"/\"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}\"script\"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):\"object\"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):\"input\"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):\"option\"===c?b.defaultSelected=b.selected=a.defaultSelected:\"input\"!==c&&\"textarea\"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&\"string\"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,\"script\"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,\"script\"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||\"\")&&!n._data(g,\"globalEval\")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||\"\").replace(za,\"\")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,\"script\")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,\"<$1>\")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test(\"<\"+a.nodeName+\">\")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,\"script\"),d.length>0&&fa(d,!i&&ea(a,\"script\")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||\"undefined\"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,\"select\")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,\"\"):void 0;if(\"string\"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:\"block\",BODY:\"block\"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],\"display\");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),\"none\"!==c&&c||(Ja=(Ja||n(\"':\"vimeo\"===f.type?c='':\"vzaar\"===f.type&&(c=''),a('
'+c+\"
\").insertAfter(e.find(\".owl-video\")),this._playing=e.addClass(\"owl-video-playing\"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass(\"owl-video-frame\")},e.prototype.destroy=function(){var a,b;this._core.$element.off(\"click.owl.video\");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={\"change.owl.carousel\":a.proxy(function(a){a.namespace&&\"position\"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),\"drag.owl.carousel dragged.owl.carousel translated.owl.carousel\":a.proxy(function(a){a.namespace&&(this.swapping=\"translated\"==a.type)},this),\"translate.owl.carousel\":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+\"px\"}).addClass(\"animated owl-animated-out\").addClass(g)),f&&e.one(a.support.animation.end,c).addClass(\"animated owl-animated-in\").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:\"\"}).removeClass(\"animated owl-animated-out owl-animated-in\").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},\r\na.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._timeout=null,this._paused=!1,this._handlers={\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&\"settings\"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&\"position\"===a.property.name&&this._core.settings.autoplay&&this._setAutoPlayInterval()},this),\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),\"play.owl.autoplay\":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),\"stop.owl.autoplay\":a.proxy(function(a){a.namespace&&this.stop()},this),\"mouseover.owl.autoplay\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.pause()},this),\"mouseleave.owl.autoplay\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.play()},this),\"touchstart.owl.core\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.pause()},this),\"touchend.owl.core\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype.play=function(a,b){this._paused=!1,this._core.is(\"rotating\")||(this._core.enter(\"rotating\"),this._setAutoPlayInterval())},e.prototype._getNextTimeout=function(d,e){return this._timeout&&b.clearTimeout(this._timeout),b.setTimeout(a.proxy(function(){this._paused||this._core.is(\"busy\")||this._core.is(\"interacting\")||c.hidden||this._core.next(e||this._core.settings.autoplaySpeed)},this),d||this._core.settings.autoplayTimeout)},e.prototype._setAutoPlayInterval=function(){this._timeout=this._getNextTimeout()},e.prototype.stop=function(){this._core.is(\"rotating\")&&(b.clearTimeout(this._timeout),this._core.leave(\"rotating\"))},e.prototype.pause=function(){this._core.is(\"rotating\")&&(this._paused=!0)},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){\"use strict\";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={\"prepared.owl.carousel\":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('
'+a(b.content).find(\"[data-dot]\").addBack(\"[data-dot]\").attr(\"data-dot\")+\"
\")},this),\"added.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),\"remove.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&\"position\"==a.property.name&&this.draw()},this),\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger(\"initialize\",null,\"navigation\"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger(\"initialized\",null,\"navigation\"))},this),\"refreshed.owl.carousel\":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger(\"refresh\",null,\"navigation\"),this.update(),this.draw(),this._core.trigger(\"refreshed\",null,\"navigation\"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:[\"prev\",\"next\"],navSpeed:!1,navElement:\"div\",navContainer:!1,navContainerClass:\"owl-nav\",navClass:[\"owl-prev\",\"owl-next\"],slideBy:1,dotClass:\"owl-dot\",dotsClass:\"owl-dots\",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a(\"
\").addClass(c.navContainerClass).appendTo(this.$element)).addClass(\"disabled\"),this._controls.$previous=a(\"<\"+c.navElement+\">\").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on(\"click\",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a(\"<\"+c.navElement+\">\").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on(\"click\",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a(\"
\").addClass(c.dotClass).append(a(\"\")).prop(\"outerHTML\")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a(\"
\").addClass(c.dotsClass).appendTo(this.$element)).addClass(\"disabled\"),this._controls.$absolute.on(\"click\",\"div\",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))\"function\"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if(\"page\"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||\"page\"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;a=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass(\"disabled\",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass(\"disabled\",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass(\"disabled\",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass(\"disabled\",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join(\"\")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):b<0&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(\".active\").removeClass(\"active\"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass(\"active\"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return\"page\"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){\"use strict\";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={\"initialized.owl.carousel\":a.proxy(function(c){c.namespace&&\"URLHash\"===this._core.settings.startPosition&&a(b).trigger(\"hashchange.owl.navigation\")},this),\"prepared.owl.carousel\":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(\"[data-hash]\").addBack(\"[data-hash]\").attr(\"data-hash\");if(!c)return;this._hashes[c]=b.content}},this),\"changed.owl.carousel\":a.proxy(function(c){if(c.namespace&&\"position\"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on(\"hashchange.owl.navigation\",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off(\"hashchange.owl.navigation\");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))\"function\"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+\" \"+h.join(f+\" \")+f).split(\" \"),function(a,b){if(g[b]!==d)return e=!c||b,!1}),e}function f(a){return e(a,!0)}var g=a(\"\").get(0).style,h=\"Webkit Moz O ms\".split(\" \"),i={transition:{end:{WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd\",transition:\"transitionend\"}},animation:{end:{WebkitAnimation:\"webkitAnimationEnd\",MozAnimation:\"animationend\",OAnimation:\"oAnimationEnd\",animation:\"animationend\"}}},j={csstransforms:function(){return!!e(\"transform\")},csstransforms3d:function(){return!!e(\"perspective\")},csstransitions:function(){return!!e(\"transition\")},cssanimations:function(){return!!e(\"animation\")}};j.csstransitions()&&(a.support.transition=new String(f(\"transition\")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f(\"animation\")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f(\"transform\")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document);","$(function () {\r\n var regex = /^[a-zA-Z0-9.!#$%&\\'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\n var submitButton = $('.email-signup .btn-submit.form-group > button');\r\n var emailInput = $('.email-signup .email.form-group input');\r\n\r\n if (submitButton !== null)\r\n submitButton.prop('disabled', true);\r\n if (emailInput !== null)\r\n emailInput.on('input propertychange paste', registerEmailChange);\r\n\r\n function registerEmailChange() {\r\n if (regex.test($(this).val())) {\r\n $('.email-signup .btn-submit.form-group > button').prop('disabled', false);\r\n } else {\r\n $('.email-signup .btn-submit.form-group > button').prop('disabled', true);\r\n }\r\n }\r\n});","!function (t, e) { \"object\" == typeof exports && \"object\" == typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define([], e) : \"object\" == typeof exports ? exports.Quagga = e() : t.Quagga = e() }(window, (function () {\r\n return function (t) { var e = {}; function n(r) { if (e[r]) return e[r].exports; var o = e[r] = { i: r, l: !1, exports: {} }; return t[r].call(o.exports, o, o.exports, n), o.l = !0, o.exports } return n.m = t, n.c = e, n.d = function (t, e, r) { n.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: r }) }, n.r = function (t) { \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(t, \"__esModule\", { value: !0 }) }, n.t = function (t, e) { if (1 & e && (t = n(t)), 8 & e) return t; if (4 & e && \"object\" == typeof t && t && t.__esModule) return t; var r = Object.create(null); if (n.r(r), Object.defineProperty(r, \"default\", { enumerable: !0, value: t }), 2 & e && \"string\" != typeof t) for (var o in t) n.d(r, o, function (e) { return t[e] }.bind(null, o)); return r }, n.n = function (t) { var e = t && t.__esModule ? function () { return t.default } : function () { return t }; return n.d(e, \"a\", e), e }, n.o = function (t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, n.p = \"/\", n(n.s = 89) }([function (t, e) { t.exports = function (t, e, n) { return e in t ? Object.defineProperty(t, e, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : t[e] = n, t }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function (t) { if (void 0 === t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return t }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { function n(e) { return t.exports = n = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) { return t.__proto__ || Object.getPrototypeOf(t) }, t.exports.__esModule = !0, t.exports.default = t.exports, n(e) } t.exports = n, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function (t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { function n(t, e) { for (var n = 0; n < e.length; n++) { var r = e[n]; r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(t, r.key, r) } } t.exports = function (t, e, r) { return e && n(t.prototype, e), r && n(t, r), Object.defineProperty(t, \"prototype\", { writable: !1 }), t }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { var r = n(20).default, o = n(1); t.exports = function (t, e) { if (e && (\"object\" === r(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return o(t) }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { var r = n(41); t.exports = function (t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && r(t, e) }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { t.exports = { EPSILON: n(62), create: n(63), clone: n(156), fromValues: n(157), copy: n(158), set: n(159), equals: n(160), exactEquals: n(161), add: n(162), subtract: n(64), sub: n(163), multiply: n(65), mul: n(164), divide: n(66), div: n(165), inverse: n(166), min: n(167), max: n(168), rotate: n(169), floor: n(170), ceil: n(171), round: n(172), scale: n(173), scaleAndAdd: n(174), distance: n(67), dist: n(175), squaredDistance: n(68), sqrDist: n(176), length: n(69), len: n(177), squaredLength: n(70), sqrLen: n(178), negate: n(179), normalize: n(180), dot: n(181), cross: n(182), lerp: n(183), random: n(184), transformMat2: n(185), transformMat2d: n(186), transformMat3: n(187), transformMat4: n(188), forEach: n(189), limit: n(190) } }, function (t, e, n) { t.exports = n(224) }, function (t, e, n) { \"use strict\"; e.a = { init: function (t, e) { for (var n = t.length; n--;)t[n] = e }, shuffle: function (t) { for (var e = t.length - 1; e >= 0; e--) { var n = Math.floor(Math.random() * e), r = t[e]; t[e] = t[n], t[n] = r } return t }, toPointList: function (t) { var e = t.reduce((function (t, e) { var n = \"[\".concat(e.join(\",\"), \"]\"); return t.push(n), t }), []); return \"[\".concat(e.join(\",\\r\\n\"), \"]\") }, threshold: function (t, e, n) { return t.reduce((function (r, o) { return n.apply(t, [o]) >= e && r.push(o), r }), []) }, maxIndex: function (t) { for (var e = 0, n = 0; n < t.length; n++)t[n] > t[e] && (e = n); return e }, max: function (t) { for (var e = 0, n = 0; n < t.length; n++)t[n] > e && (e = t[n]); return e }, sum: function (t) { for (var e = t.length, n = 0; e--;)n += t[e]; return n } } }, function (t, e, n) { \"use strict\"; n.d(e, \"h\", (function () { return l })), n.d(e, \"i\", (function () { return d })), n.d(e, \"b\", (function () { return p })), n.d(e, \"j\", (function () { return v })), n.d(e, \"e\", (function () { return y })), n.d(e, \"c\", (function () { return g })), n.d(e, \"f\", (function () { return x })), n.d(e, \"g\", (function () { return _ })), n.d(e, \"a\", (function () { return b })), n.d(e, \"d\", (function () { return O })); var r = n(7), o = n(84), i = { clone: r.clone, dot: r.dot }, a = function (t, e) { var n = [], r = { rad: 0, vec: i.clone([0, 0]) }, o = {}; function a(t) { o[t.id] = t, n.push(t) } function u() { var t, e = 0; for (t = 0; t < n.length; t++)e += n[t].rad; r.rad = e / n.length, r.vec = i.clone([Math.cos(r.rad), Math.sin(r.rad)]) } return a(t), u(), { add: function (t) { o[t.id] || (a(t), u()) }, fits: function (t) { return Math.abs(i.dot(t.point.vec, r.vec)) > e }, getPoints: function () { return n }, getCenter: function () { return r } } }, u = function (t, e, n) { return { rad: t[n], point: t, id: e } }, c = n(9), s = { clone: r.clone }, f = { clone: o.clone }; function l(t, e) { return { x: t, y: e, toVec2: function () { return s.clone([this.x, this.y]) }, toVec3: function () { return f.clone([this.x, this.y, 1]) }, round: function () { return this.x = this.x > 0 ? Math.floor(this.x + .5) : Math.floor(this.x - .5), this.y = this.y > 0 ? Math.floor(this.y + .5) : Math.floor(this.y - .5), this } } } function h(t, e) { e || (e = 8); for (var n = t.data, r = n.length, o = 8 - e, i = new Int32Array(1 << e); r--;)i[n[r] >> o]++; return i } function d(t, e) { var n = function (t) { var e, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 8, r = 8 - n; function o(t, n) { for (var r = 0, o = t; o <= n; o++)r += e[o]; return r } function i(t, n) { for (var r = 0, o = t; o <= n; o++)r += o * e[o]; return r } function a() { var r, a, u, s, f = [0], l = (1 << n) - 1; e = h(t, n); for (var d = 1; d < l; d++)0 === (u = (r = o(0, d)) * (a = o(d + 1, l))) && (u = 1), s = i(0, d) * a - i(d + 1, l) * r, f[d] = s * s / u; return c.a.maxIndex(f) } var u = a(); return u << r }(t); return function (t, e, n) { n || (n = t); for (var r = t.data, o = r.length, i = n.data; o--;)i[o] = r[o] < e ? 1 : 0 }(t, n, e), n } function p(t, e, n) { var r, o, i, c, s = []; function f(t) { var e = !1; for (o = 0; o < s.length; o++)(i = s[o]).fits(t) && (i.add(t), e = !0); return e } for (n || (n = \"rad\"), r = 0; r < t.length; r++)f(c = u(t[r], r, n)) || s.push(a(c, e)); return s } function v(t, e, n) { var r, o, i, a, u = 0, c = 0, s = []; for (r = 0; r < e; r++)s[r] = { score: 0, item: null }; for (r = 0; r < t.length; r++)if ((o = n.apply(this, [t[r]])) > c) for ((i = s[u]).score = o, i.item = t[r], c = Number.MAX_VALUE, a = 0; a < e; a++)s[a].score < c && (c = s[a].score, u = a); return s } function y(t, e, n) { for (var r, o = 0, i = e.x, a = Math.floor(t.length / 4), u = e.x / 2, c = 0, s = e.x; i < a;) { for (r = 0; r < u; r++)n[c] = (.299 * t[4 * o + 0] + .587 * t[4 * o + 1] + .114 * t[4 * o + 2] + (.299 * t[4 * (o + 1) + 0] + .587 * t[4 * (o + 1) + 1] + .114 * t[4 * (o + 1) + 2]) + (.299 * t[4 * i + 0] + .587 * t[4 * i + 1] + .114 * t[4 * i + 2]) + (.299 * t[4 * (i + 1) + 0] + .587 * t[4 * (i + 1) + 1] + .114 * t[4 * (i + 1) + 2])) / 4, c++, o += 2, i += 2; o += s, i += s } } function g(t, e, n) { var r = t.length / 4 | 0; if (n && !0 === n.singleChannel) for (var o = 0; o < r; o++)e[o] = t[4 * o + 0]; else for (var i = 0; i < r; i++)e[i] = .299 * t[4 * i + 0] + .587 * t[4 * i + 1] + .114 * t[4 * i + 2] } function x(t, e) { for (var n = t.data, r = t.size.x, o = e.data, i = 0, a = r, u = n.length, c = r / 2, s = 0; a < u;) { for (var f = 0; f < c; f++)o[s] = Math.floor((n[i] + n[i + 1] + n[a] + n[a + 1]) / 4), s++, i += 2, a += 2; i += r, a += r } } function _(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [0, 0, 0], n = t[0], r = t[1], o = t[2], i = o * r, a = i * (1 - Math.abs(n / 60 % 2 - 1)), u = o - i, c = 0, s = 0, f = 0; return n < 60 ? (c = i, s = a) : n < 120 ? (c = a, s = i) : n < 180 ? (s = i, f = a) : n < 240 ? (s = a, f = i) : n < 300 ? (c = a, f = i) : n < 360 && (c = i, f = a), e[0] = 255 * (c + u) | 0, e[1] = 255 * (s + u) | 0, e[2] = 255 * (f + u) | 0, e } function m(t) { for (var e = [], n = [], r = 1; r < Math.sqrt(t) + 1; r++)t % r == 0 && (n.push(r), r !== t / r && e.unshift(Math.floor(t / r))); return n.concat(e) } function b(t, e) { var n, r = m(e.x), o = m(e.y), i = Math.max(e.x, e.y), a = function (t, e) { for (var n = 0, r = 0, o = []; n < t.length && r < e.length;)t[n] === e[r] ? (o.push(t[n]), n++, r++) : t[n] > e[r] ? r++ : n++; return o }(r, o), u = [8, 10, 15, 20, 32, 60, 80], c = { \"x-small\": 5, small: 4, medium: 3, large: 2, \"x-large\": 1 }, s = c[t] || c.medium, f = u[s], l = Math.floor(i / f); function h(t) { for (var e = 0, n = t[Math.floor(t.length / 2)]; e < t.length - 1 && t[e] < l;)e++; return e > 0 && (n = Math.abs(t[e] - l) > Math.abs(t[e - 1] - l) ? t[e - 1] : t[e]), l / n < u[s + 1] / u[s] && l / n > u[s - 1] / u[s] ? { x: n, y: n } : null } return (n = h(a)) || (n = h(m(i))) || (n = h(m(l * f))), n } var w = { top: function (t, e) { return \"%\" === t.unit ? Math.floor(e.height * (t.value / 100)) : null }, right: function (t, e) { return \"%\" === t.unit ? Math.floor(e.width - e.width * (t.value / 100)) : null }, bottom: function (t, e) { return \"%\" === t.unit ? Math.floor(e.height - e.height * (t.value / 100)) : null }, left: function (t, e) { return \"%\" === t.unit ? Math.floor(e.width * (t.value / 100)) : null } }; function O(t, e, n) { var r = { width: t, height: e }, o = Object.keys(n).reduce((function (t, e) { var o = function (t) { return { value: parseFloat(t), unit: (t.indexOf(\"%\"), t.length, \"%\") } }(n[e]), i = w[e](o, r); return t[e] = i, t }), {}); return { sx: o.left, sy: o.top, sw: o.right - o.left, sh: o.bottom - o.top } } }, function (t, e, n) { \"use strict\"; var r = n(83), o = n.n(r), i = n(3), a = n.n(i), u = n(4), c = n.n(u), s = n(0), f = n.n(s), l = n(7), h = n(10), d = n(9), p = { clone: l.clone }; function v(t) { if (t < 0) throw new Error(\"expected positive number, received \".concat(t)) } var y = function () { function t(e, n) { var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : Uint8Array, o = arguments.length > 3 ? arguments[3] : void 0; a()(this, t), f()(this, \"data\", void 0), f()(this, \"size\", void 0), f()(this, \"indexMapping\", void 0), n ? this.data = n : (this.data = new r(e.x * e.y), o && d.a.init(this.data, 0)), this.size = e } return c()(t, [{ key: \"inImageWithBorder\", value: function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; return v(e), t.x >= 0 && t.y >= 0 && t.x < this.size.x + 2 * e && t.y < this.size.y + 2 * e } }, { key: \"subImageAsCopy\", value: function (t, e) { v(e.x), v(e.y); for (var n = t.size, r = n.x, o = n.y, i = 0; i < r; i++)for (var a = 0; a < o; a++)t.data[a * r + i] = this.data[(e.y + a) * this.size.x + e.x + i]; return t } }, { key: \"get\", value: function (t, e) { return this.data[e * this.size.x + t] } }, { key: \"getSafe\", value: function (t, e) { if (!this.indexMapping) { this.indexMapping = { x: [], y: [] }; for (var n = 0; n < this.size.x; n++)this.indexMapping.x[n] = n, this.indexMapping.x[n + this.size.x] = n; for (var r = 0; r < this.size.y; r++)this.indexMapping.y[r] = r, this.indexMapping.y[r + this.size.y] = r } return this.data[this.indexMapping.y[e + this.size.y] * this.size.x + this.indexMapping.x[t + this.size.x]] } }, { key: \"set\", value: function (t, e, n) { return this.data[e * this.size.x + t] = n, delete this.indexMapping, this } }, { key: \"zeroBorder\", value: function () { for (var t = this.size, e = t.x, n = t.y, r = 0; r < e; r++)this.data[r] = this.data[(n - 1) * e + r] = 0; for (var o = 1; o < n - 1; o++)this.data[o * e] = this.data[o * e + (e - 1)] = 0; return delete this.indexMapping, this } }, { key: \"moments\", value: function (t) { var e, n, r, o, i, a, u, c, s, f, l = this.data, h = this.size.y, d = this.size.x, v = [], y = [], g = Math.PI, x = g / 4; if (t <= 0) return y; for (i = 0; i < t; i++)v[i] = { m00: 0, m01: 0, m10: 0, m11: 0, m02: 0, m20: 0, theta: 0, rad: 0 }; for (n = 0; n < h; n++)for (o = n * n, e = 0; e < d; e++)(r = l[n * d + e]) > 0 && ((a = v[r - 1]).m00 += 1, a.m01 += n, a.m10 += e, a.m11 += e * n, a.m02 += o, a.m20 += e * e); for (i = 0; i < t; i++)a = v[i], isNaN(a.m00) || 0 === a.m00 || (c = a.m10 / a.m00, s = a.m01 / a.m00, u = a.m11 / a.m00 - c * s, f = (a.m02 / a.m00 - s * s - (a.m20 / a.m00 - c * c)) / (2 * u), f = .5 * Math.atan(f) + (u >= 0 ? x : -x) + g, a.theta = (180 * f / g + 90) % 180 - 90, a.theta < 0 && (a.theta += 180), a.rad = f > g ? f - g : f, a.vec = p.clone([Math.cos(f), Math.sin(f)]), y.push(a)); return y } }, { key: \"getAsRGBA\", value: function () { for (var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, e = new Uint8ClampedArray(4 * this.size.x * this.size.y), n = 0; n < this.size.y; n++)for (var r = 0; r < this.size.x; r++) { var o = n * this.size.x + r, i = this.get(r, n) * t; e[4 * o + 0] = i, e[4 * o + 1] = i, e[4 * o + 2] = i, e[4 * o + 3] = 255 } return e } }, { key: \"show\", value: function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, n = t.getContext(\"2d\"); if (!n) throw new Error(\"Unable to get canvas context\"); var r = n.getImageData(0, 0, t.width, t.height), o = this.getAsRGBA(e); t.width = this.size.x, t.height = this.size.y; var i = new ImageData(o, r.width, r.height); n.putImageData(i, 0, 0) } }, { key: \"overlay\", value: function (t, e, n) { var r = e < 0 || e > 360 ? 360 : e, i = [0, 1, 1], a = [0, 0, 0], u = [255, 255, 255], c = [0, 0, 0], s = t.getContext(\"2d\"); if (!s) throw new Error(\"Unable to get canvas context\"); for (var f = s.getImageData(n.x, n.y, this.size.x, this.size.y), l = f.data, d = this.data.length; d--;) { i[0] = this.data[d] * r; var p = 4 * d, v = i[0] <= 0 ? u : i[0] >= 360 ? c : Object(h.g)(i, a), y = o()(v, 3); l[p] = y[0], l[p + 1] = y[1], l[p + 2] = y[2], l[p + 3] = 255 } s.putImageData(f, n.x, n.y) } }]), t }(); e.a = y }, function (t, e) { function n(t, e, n, r, o, i, a) { try { var u = t[i](a), c = u.value } catch (t) { return void n(t) } u.done ? e(c) : Promise.resolve(c).then(r, o) } t.exports = function (t) { return function () { var e = this, r = arguments; return new Promise((function (o, i) { var a = t.apply(e, r); function u(t) { n(a, o, i, u, c, \"next\", t) } function c(t) { n(a, o, i, u, c, \"throw\", t) } u(void 0) })) } }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { var r = n(225); function o() { return \"undefined\" != typeof Reflect && Reflect.get ? (t.exports = o = Reflect.get, t.exports.__esModule = !0, t.exports.default = t.exports) : (t.exports = o = function (t, e, n) { var o = r(t, e); if (o) { var i = Object.getOwnPropertyDescriptor(o, e); return i.get ? i.get.call(arguments.length < 3 ? t : n) : i.value } }, t.exports.__esModule = !0, t.exports.default = t.exports), o.apply(this, arguments) } t.exports = o, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function (t) { var e = typeof t; return null != t && (\"object\" == e || \"function\" == e) } }, function (t, e) { var n = Array.isArray; t.exports = n }, function (t, e, n) { \"use strict\"; e.a = { drawRect: function (t, e, n, r) { n.strokeStyle = r.color, n.fillStyle = r.color, n.lineWidth = r.lineWidth || 1, n.beginPath(), n.strokeRect(t.x, t.y, e.x, e.y) }, drawPath: function (t, e, n, r) { n.strokeStyle = r.color, n.fillStyle = r.color, n.lineWidth = r.lineWidth, n.beginPath(), n.moveTo(t[0][e.x], t[0][e.y]); for (var o = 1; o < t.length; o++)n.lineTo(t[o][e.x], t[o][e.y]); n.closePath(), n.stroke() }, drawImage: function (t, e, n) { var r = n.getImageData(0, 0, e.x, e.y), o = r.data, i = o.length, a = t.length; if (i / a != 4) return !1; for (; a--;) { var u = t[a]; o[--i] = 255, o[--i] = u, o[--i] = u, o[--i] = u } return n.putImageData(r, 0, 0), !0 } } }, function (t, e, n) { var r = n(90), o = n(145)((function (t, e, n) { r(t, e, n) })); t.exports = o }, function (t, e, n) { var r = n(45), o = \"object\" == typeof self && self && self.Object === Object && self, i = r || o || Function(\"return this\")(); t.exports = i }, function (t, e) { t.exports = function (t) { return null != t && \"object\" == typeof t } }, function (t, e) { function n(e) { return t.exports = n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) { return typeof t } : function (t) { return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t }, t.exports.__esModule = !0, t.exports.default = t.exports, n(e) } t.exports = n, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { \"use strict\"; e.a = { searchDirections: [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]], create: function (t, e) { var n, r = t.data, o = e.data, i = this.searchDirections, a = t.size.x; function u(t, e, u, c) { var s, f, l; for (s = 0; s < 7; s++) { if (f = t.cy + i[t.dir][0], l = t.cx + i[t.dir][1], r[n = f * a + l] === e && (0 === o[n] || o[n] === u)) return o[n] = u, t.cy = f, t.cx = l, !0; 0 === o[n] && (o[n] = c), t.dir = (t.dir + 1) % 8 } return !1 } function c(t, e, n) { return { dir: n, x: t, y: e, next: null, prev: null } } return { trace: function (t, e, n, r) { return u(t, e, n, r) }, contourTracing: function (t, e, n, r, o) { return function (t, e, n, r, o) { var i, a, s, f = null, l = { cx: e, cy: t, dir: 0 }; if (u(l, r, n, o)) { i = f = c(e, t, l.dir), s = l.dir, (a = c(l.cx, l.cy, 0)).prev = i, i.next = a, a.next = null, i = a; do { l.dir = (l.dir + 6) % 8, u(l, r, n, o), s !== l.dir ? (i.dir = l.dir, (a = c(l.cx, l.cy, 0)).prev = i, i.next = a, a.next = null, i = a) : (i.dir = s, i.x = l.cx, i.y = l.cy), s = l.dir } while (l.cx !== e || l.cy !== t); f.prev = i.prev, i.prev.next = f } return f }(t, e, n, r, o) } } } } }, function (t, e, n) { var r = n(27), o = n(103), i = n(104), a = r ? r.toStringTag : void 0; t.exports = function (t) { return null == t ? void 0 === t ? \"[object Undefined]\" : \"[object Null]\" : a && a in Object(t) ? o(t) : i(t) } }, function (t, e, n) { \"use strict\"; (function (t) { var r, o, i, a, u, c, s, f, l, h, d, p, v = n(7), y = n(34), g = n(11), x = n(10), _ = n(9), m = (n(16), n(87)), b = n(21), w = n(88), O = { ctx: { binary: null }, dom: { binary: null } }, R = { x: 0, y: 0 }; function C(t) { var e, n, o, i, a, u, c, s = l.size.x, f = l.size.y, h = -l.size.x, d = -l.size.y; for (e = 0, n = 0; n < t.length; n++)e += (i = t[n]).rad; for ((e = (180 * (e /= t.length) / Math.PI + 90) % 180 - 90) < 0 && (e += 180), e = (180 - e) * Math.PI / 180, a = y.copy(y.create(), [Math.cos(e), Math.sin(e), -Math.sin(e), Math.cos(e)]), n = 0; n < t.length; n++) { for (i = t[n], o = 0; o < 4; o++)v.transformMat2(i.box[o], i.box[o], a); 0 } for (n = 0; n < t.length; n++)for (i = t[n], o = 0; o < 4; o++)i.box[o][0] < s && (s = i.box[o][0]), i.box[o][0] > h && (h = i.box[o][0]), i.box[o][1] < f && (f = i.box[o][1]), i.box[o][1] > d && (d = i.box[o][1]); for (u = [[s, f], [h, f], [h, d], [s, d]], c = r.halfSample ? 2 : 1, a = y.invert(a, a), o = 0; o < 4; o++)v.transformMat2(u[o], u[o], a); for (o = 0; o < 4; o++)v.scale(u[o], u[o], c); return u } function E(t, e) { l.subImageAsCopy(a, Object(x.h)(t, e)), p.skeletonize() } function M(t, e, n, r) { var o, i, u, c, s = [], f = [], l = Math.ceil(h.x / 3); if (t.length >= 2) { for (o = 0; o < t.length; o++)t[o].m00 > l && s.push(t[o]); if (s.length >= 2) { for (u = function (t) { var e = Object(x.b)(t, .9), n = Object(x.j)(e, 1, (function (t) { return t.getPoints().length })), r = [], o = []; if (1 === n.length) { r = n[0].item.getPoints(); for (var i = 0; i < r.length; i++)o.push(r[i].point) } return o }(s), i = 0, o = 0; o < u.length; o++)i += u[o].rad; u.length > 1 && u.length >= s.length / 4 * 3 && u.length > t.length / 4 && (i /= u.length, c = { index: e[1] * R.x + e[0], pos: { x: n, y: r }, box: [v.clone([n, r]), v.clone([n + a.size.x, r]), v.clone([n + a.size.x, r + a.size.y]), v.clone([n, r + a.size.y])], moments: u, rad: i, vec: v.clone([Math.cos(i), Math.sin(i)]) }, f.push(c)) } } return f } e.a = { init: function (e, n) { r = n, d = e, function () { o = r.halfSample ? new g.a({ x: d.size.x / 2 | 0, y: d.size.y / 2 | 0 }) : d, h = Object(x.a)(r.patchSize, o.size), R.x = o.size.x / h.x | 0, R.y = o.size.y / h.y | 0, l = new g.a(o.size, void 0, Uint8Array, !1), u = new g.a(h, void 0, Array, !0); var e = new ArrayBuffer(65536); a = new g.a(h, new Uint8Array(e, 0, h.x * h.y)), i = new g.a(h, new Uint8Array(e, h.x * h.y * 3, h.x * h.y), void 0, !0), p = Object(w.a)(\"undefined\" != typeof window ? window : \"undefined\" != typeof self ? self : t, { size: h.x }, e), f = new g.a({ x: o.size.x / a.size.x | 0, y: o.size.y / a.size.y | 0 }, void 0, Array, !0), c = new g.a(f.size, void 0, void 0, !0), s = new g.a(f.size, void 0, Int32Array, !0) }(), r.useWorker || \"undefined\" == typeof document || (O.dom.binary = document.createElement(\"canvas\"), O.dom.binary.className = \"binaryBuffer\", O.ctx.binary = O.dom.binary.getContext(\"2d\"), O.dom.binary.width = l.size.x, O.dom.binary.height = l.size.y) }, locate: function () { r.halfSample && Object(x.f)(d, o), Object(x.i)(o, l), l.zeroBorder(); var t = function () { var t, e, n, r, o, c, s = []; for (t = 0; t < R.x; t++)for (e = 0; e < R.y; e++)E(n = a.size.x * t, r = a.size.y * e), i.zeroBorder(), _.a.init(u.data, 0), c = m.a.create(i, u).rasterize(0), o = u.moments(c.count), s = s.concat(M(o, [t, e], n, r)); return s }(); if (t.length < R.x * R.y * .05) return null; var e = function (t) { var e, n, r = 0, o = 0; function i() { var t; for (t = 0; t < s.data.length; t++)if (0 === s.data[t] && 1 === c.data[t]) return t; return s.length } function a(t) { var e, n, o, i, u, l = t % s.size.x, h = t / s.size.x | 0; if (t < s.data.length) for (o = f.data[t], s.data[t] = r, u = 0; u < b.a.searchDirections.length; u++)n = h + b.a.searchDirections[u][0], e = l + b.a.searchDirections[u][1], i = n * s.size.x + e, 0 !== c.data[i] ? 0 === s.data[i] && Math.abs(v.dot(f.data[i].vec, o.vec)) > .95 && a(i) : s.data[i] = Number.MAX_VALUE } for (_.a.init(c.data, 0), _.a.init(s.data, 0), _.a.init(f.data, null), e = 0; e < t.length; e++)n = t[e], f.data[n.index] = n, c.data[n.index] = 1; for (c.zeroBorder(); (o = i()) < s.data.length;)r++, a(o); return r }(t); if (e < 1) return null; var n = function (t) { var e, n, r = []; for (e = 0; e < t; e++)r.push(0); for (n = s.data.length; n--;)s.data[n] > 0 && r[s.data[n] - 1]++; return (r = r.map((function (t, e) { return { val: t, label: e + 1 } }))).sort((function (t, e) { return e.val - t.val })), r.filter((function (t) { return t.val >= 5 })) }(e); return 0 === n.length ? null : function (t, e) { var n, r, o, i, a = [], u = []; for (n = 0; n < t.length; n++) { for (r = s.data.length, a.length = 0; r--;)s.data[r] === t[n].label && (o = f.data[r], a.push(o)); (i = C(a)) && u.push(i) } return u }(n) }, checkImageConstraints: function (t, e) { var n, r, o = t.getWidth(), i = t.getHeight(), a = e.halfSample ? .5 : 1; t.getConfig().area && (r = Object(x.d)(o, i, t.getConfig().area), t.setTopRight({ x: r.sx, y: r.sy }), t.setCanvasSize({ x: o, y: i }), o = r.sw, i = r.sh); var u = { x: Math.floor(o * a), y: Math.floor(i * a) }; if (n = Object(x.a)(e.patchSize, u), t.setWidth(Math.floor(Math.floor(u.x / n.x) * (1 / a) * n.x)), t.setHeight(Math.floor(Math.floor(u.y / n.y) * (1 / a) * n.y)), t.getWidth() % n.x == 0 && t.getHeight() % n.y == 0) return !0; throw new Error(\"Image dimensions do not comply with the current settings: Width (\".concat(o, \" )and height (\").concat(i, \") must a multiple of \").concat(n.x)) } } }).call(this, n(46)) }, function (t, e, n) { var r = n(92), o = n(93), i = n(94), a = n(95), u = n(96); function c(t) { var e = -1, n = null == t ? 0 : t.length; for (this.clear(); ++e < n;) { var r = t[e]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype.delete = o, c.prototype.get = i, c.prototype.has = a, c.prototype.set = u, t.exports = c }, function (t, e, n) { var r = n(26); t.exports = function (t, e) { for (var n = t.length; n--;)if (r(t[n][0], e)) return n; return -1 } }, function (t, e) { t.exports = function (t, e) { return t === e || t != t && e != e } }, function (t, e, n) { var r = n(18).Symbol; t.exports = r }, function (t, e, n) { var r = n(35)(Object, \"create\"); t.exports = r }, function (t, e, n) { var r = n(117); t.exports = function (t, e) { var n = t.__data__; return r(e) ? n[\"string\" == typeof e ? \"string\" : \"hash\"] : n.map } }, function (t, e, n) { var r = n(132), o = n(19), i = Object.prototype, a = i.hasOwnProperty, u = i.propertyIsEnumerable, c = r(function () { return arguments }()) ? r : function (t) { return o(t) && a.call(t, \"callee\") && !u.call(t, \"callee\") }; t.exports = c }, function (t, e) { var n = /^(?:0|[1-9]\\d*)$/; t.exports = function (t, e) { var r = typeof t; return !!(e = null == e ? 9007199254740991 : e) && (\"number\" == r || \"symbol\" != r && n.test(t)) && t > -1 && t % 1 == 0 && t < e } }, function (t, e, n) { var r = n(15), o = n(232), i = n(233), a = n(236); t.exports = function (t, e) { return r(t) ? t : o(t, e) ? [t] : i(a(t)) } }, function (t, e, n) { var r = n(226), o = n(227), i = n(60), a = n(228); t.exports = function (t) { return r(t) || o(t) || i(t) || a() }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { t.exports = { determinant: n(251), transpose: n(252), multiply: n(253), identity: n(254), adjoint: n(255), rotate: n(256), invert: n(257), create: n(258), scale: n(259), copy: n(260), frob: n(261), ldu: n(262) } }, function (t, e, n) { var r = n(102), o = n(108); t.exports = function (t, e) { var n = o(t, e); return r(n) ? n : void 0 } }, function (t, e, n) { var r = n(22), o = n(14); t.exports = function (t) { if (!o(t)) return !1; var e = r(t); return \"[object Function]\" == e || \"[object GeneratorFunction]\" == e || \"[object AsyncFunction]\" == e || \"[object Proxy]\" == e } }, function (t, e, n) { var r = n(49); t.exports = function (t, e, n) { \"__proto__\" == e && r ? r(t, e, { configurable: !0, enumerable: !0, value: n, writable: !0 }) : t[e] = n } }, function (t, e) { t.exports = function (t) { return t.webpackPolyfill || (t.deprecate = function () { }, t.paths = [], t.children || (t.children = []), Object.defineProperty(t, \"loaded\", { enumerable: !0, get: function () { return t.l } }), Object.defineProperty(t, \"id\", { enumerable: !0, get: function () { return t.i } }), t.webpackPolyfill = 1), t } }, function (t, e, n) { var r = n(36), o = n(40); t.exports = function (t) { return null != t && o(t.length) && !r(t) } }, function (t, e) { t.exports = function (t) { return \"number\" == typeof t && t > -1 && t % 1 == 0 && t <= 9007199254740991 } }, function (t, e) { function n(e, r) { return t.exports = n = Object.setPrototypeOf || function (t, e) { return t.__proto__ = e, t }, t.exports.__esModule = !0, t.exports.default = t.exports, n(e, r) } t.exports = n, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { var r = n(22), o = n(19); t.exports = function (t) { return \"symbol\" == typeof t || o(t) && \"[object Symbol]\" == r(t) } }, function (t, e, n) { var r = n(42); t.exports = function (t) { if (\"string\" == typeof t || r(t)) return t; var e = t + \"\"; return \"0\" == e && 1 / t == -1 / 0 ? \"-0\" : e } }, function (t, e, n) { var r = n(35)(n(18), \"Map\"); t.exports = r }, function (t, e, n) { (function (e) { var n = \"object\" == typeof e && e && e.Object === Object && e; t.exports = n }).call(this, n(46)) }, function (t, e) { var n; n = function () { return this }(); try { n = n || new Function(\"return this\")() } catch (t) { \"object\" == typeof window && (n = window) } t.exports = n }, function (t, e, n) { var r = n(109), o = n(116), i = n(118), a = n(119), u = n(120); function c(t) { var e = -1, n = null == t ? 0 : t.length; for (this.clear(); ++e < n;) { var r = t[e]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype.delete = o, c.prototype.get = i, c.prototype.has = a, c.prototype.set = u, t.exports = c }, function (t, e, n) { var r = n(37), o = n(26); t.exports = function (t, e, n) { (void 0 !== n && !o(t[e], n) || void 0 === n && !(e in t)) && r(t, e, n) } }, function (t, e, n) { var r = n(35), o = function () { try { var t = r(Object, \"defineProperty\"); return t({}, \"\", {}), t } catch (t) { } }(); t.exports = o }, function (t, e, n) { var r = n(131)(Object.getPrototypeOf, Object); t.exports = r }, function (t, e) { var n = Object.prototype; t.exports = function (t) { var e = t && t.constructor; return t === (\"function\" == typeof e && e.prototype || n) } }, function (t, e, n) { (function (t) { var r = n(18), o = n(134), i = e && !e.nodeType && e, a = i && \"object\" == typeof t && t && !t.nodeType && t, u = a && a.exports === i ? r.Buffer : void 0, c = (u ? u.isBuffer : void 0) || o; t.exports = c }).call(this, n(38)(t)) }, function (t, e, n) { var r = n(136), o = n(137), i = n(138), a = i && i.isTypedArray, u = a ? o(a) : r; t.exports = u }, function (t, e) { t.exports = function (t, e) { if ((\"constructor\" !== e || \"function\" != typeof t[e]) && \"__proto__\" != e) return t[e] } }, function (t, e, n) { var r = n(37), o = n(26), i = Object.prototype.hasOwnProperty; t.exports = function (t, e, n) { var a = t[e]; i.call(t, e) && o(a, n) && (void 0 !== n || e in t) || r(t, e, n) } }, function (t, e, n) { var r = n(141), o = n(143), i = n(39); t.exports = function (t) { return i(t) ? r(t, !0) : o(t) } }, function (t, e) { t.exports = function (t) { return t } }, function (t, e, n) { var r = n(147), o = Math.max; t.exports = function (t, e, n) { return e = o(void 0 === e ? t.length - 1 : e, 0), function () { for (var i = arguments, a = -1, u = o(i.length - e, 0), c = Array(u); ++a < u;)c[a] = i[e + a]; a = -1; for (var s = Array(e + 1); ++a < e;)s[a] = i[a]; return s[e] = n(c), r(t, this, s) } } }, function (t, e, n) { var r = n(148), o = n(150)(r); t.exports = o }, function (t, e, n) { var r = n(61); t.exports = function (t, e) { if (t) { if (\"string\" == typeof t) return r(t, e); var n = Object.prototype.toString.call(t).slice(8, -1); return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? r(t, e) : void 0 } }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function (t, e) { (null == e || e > t.length) && (e = t.length); for (var n = 0, r = new Array(e); n < e; n++)r[n] = t[n]; return r }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = 1e-6 }, function (t, e) { t.exports = function () { var t = new Float32Array(2); return t[0] = 0, t[1] = 0, t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] - n[0], t[1] = e[1] - n[1], t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] * n[0], t[1] = e[1] * n[1], t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] / n[0], t[1] = e[1] / n[1], t } }, function (t, e) { t.exports = function (t, e) { var n = e[0] - t[0], r = e[1] - t[1]; return Math.sqrt(n * n + r * r) } }, function (t, e) { t.exports = function (t, e) { var n = e[0] - t[0], r = e[1] - t[1]; return n * n + r * r } }, function (t, e) { t.exports = function (t) { var e = t[0], n = t[1]; return Math.sqrt(e * e + n * n) } }, function (t, e) { t.exports = function (t) { var e = t[0], n = t[1]; return e * e + n * n } }, function (t, e) { t.exports = 1e-6 }, function (t, e) { t.exports = function () { var t = new Float32Array(3); return t[0] = 0, t[1] = 0, t[2] = 0, t } }, function (t, e) { t.exports = function (t, e, n) { var r = new Float32Array(3); return r[0] = t, r[1] = e, r[2] = n, r } }, function (t, e) { t.exports = function (t, e) { var n = e[0], r = e[1], o = e[2], i = n * n + r * r + o * o; i > 0 && (i = 1 / Math.sqrt(i), t[0] = e[0] * i, t[1] = e[1] * i, t[2] = e[2] * i); return t } }, function (t, e) { t.exports = function (t, e) { return t[0] * e[0] + t[1] * e[1] + t[2] * e[2] } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] - n[0], t[1] = e[1] - n[1], t[2] = e[2] - n[2], t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] * n[0], t[1] = e[1] * n[1], t[2] = e[2] * n[2], t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] / n[0], t[1] = e[1] / n[1], t[2] = e[2] / n[2], t } }, function (t, e) { t.exports = function (t, e) { var n = e[0] - t[0], r = e[1] - t[1], o = e[2] - t[2]; return Math.sqrt(n * n + r * r + o * o) } }, function (t, e) { t.exports = function (t, e) { var n = e[0] - t[0], r = e[1] - t[1], o = e[2] - t[2]; return n * n + r * r + o * o } }, function (t, e) { t.exports = function (t) { var e = t[0], n = t[1], r = t[2]; return Math.sqrt(e * e + n * n + r * r) } }, function (t, e) { t.exports = function (t) { var e = t[0], n = t[1], r = t[2]; return e * e + n * n + r * r } }, function (t, e, n) { var r = n(153), o = n(154), i = n(60), a = n(155); t.exports = function (t, e) { return r(t) || o(t, e) || i(t, e) || a() }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { t.exports = { EPSILON: n(71), create: n(72), clone: n(191), angle: n(192), fromValues: n(73), copy: n(193), set: n(194), equals: n(195), exactEquals: n(196), add: n(197), subtract: n(76), sub: n(198), multiply: n(77), mul: n(199), divide: n(78), div: n(200), min: n(201), max: n(202), floor: n(203), ceil: n(204), round: n(205), scale: n(206), scaleAndAdd: n(207), distance: n(79), dist: n(208), squaredDistance: n(80), sqrDist: n(209), length: n(81), len: n(210), squaredLength: n(82), sqrLen: n(211), negate: n(212), inverse: n(213), normalize: n(74), dot: n(75), cross: n(214), lerp: n(215), random: n(216), transformMat4: n(217), transformMat3: n(218), transformQuat: n(219), rotateX: n(220), rotateY: n(221), rotateZ: n(222), forEach: n(223) } }, function (t, e, n) { var r = n(229), o = n(243)((function (t, e) { return null == t ? {} : r(t, e) })); t.exports = o }, function (t, e, n) { var r = n(2), o = n(41), i = n(248), a = n(249); function u(e) { var n = \"function\" == typeof Map ? new Map : void 0; return t.exports = u = function (t) { if (null === t || !i(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== n) { if (n.has(t)) return n.get(t); n.set(t, e) } function e() { return a(t, arguments, r(this).constructor) } return e.prototype = Object.create(t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), o(e, t) }, t.exports.__esModule = !0, t.exports.default = t.exports, u(e) } t.exports = u, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { \"use strict\"; var r = n(21), o = { createContour2D: function () { return { dir: null, index: null, firstVertex: null, insideContours: null, nextpeer: null, prevpeer: null } }, CONTOUR_DIR: { CW_DIR: 0, CCW_DIR: 1, UNKNOWN_DIR: 2 }, DIR: { OUTSIDE_EDGE: -32767, INSIDE_EDGE: -32766 }, create: function (t, e) { var n = t.data, i = e.data, a = t.size.x, u = t.size.y, c = r.a.create(t, e); return { rasterize: function (t) { var e, r, s, f, l, h, d, p, v, y, g, x, _ = [], m = 0; for (x = 0; x < 400; x++)_[x] = 0; for (_[0] = n[0], v = null, h = 1; h < u - 1; h++)for (f = 0, r = _[0], l = 1; l < a - 1; l++)if (0 === i[g = h * a + l]) if ((e = n[g]) !== r) { if (0 === f) _[s = m + 1] = e, r = e, null !== (d = c.contourTracing(h, l, s, e, o.DIR.OUTSIDE_EDGE)) && (m++, f = s, (p = o.createContour2D()).dir = o.CONTOUR_DIR.CW_DIR, p.index = f, p.firstVertex = d, p.nextpeer = v, p.insideContours = null, null !== v && (v.prevpeer = p), v = p); else if (null !== (d = c.contourTracing(h, l, o.DIR.INSIDE_EDGE, e, f))) { for ((p = o.createContour2D()).firstVertex = d, p.insideContours = null, p.dir = 0 === t ? o.CONTOUR_DIR.CCW_DIR : o.CONTOUR_DIR.CW_DIR, p.index = t, y = v; null !== y && y.index !== f;)y = y.nextpeer; null !== y && (p.nextpeer = y.insideContours, null !== y.insideContours && (y.insideContours.prevpeer = p), y.insideContours = p) } } else i[g] = f; else i[g] === o.DIR.OUTSIDE_EDGE || i[g] === o.DIR.INSIDE_EDGE ? (f = 0, r = i[g] === o.DIR.INSIDE_EDGE ? n[g] : _[0]) : r = _[f = i[g]]; for (y = v; null !== y;)y.index = t, y = y.nextpeer; return { cc: v, count: m } }, debug: { drawContour: function (t, e) { var n, r, i, a = t.getContext(\"2d\"), u = e; for (a.strokeStyle = \"red\", a.fillStyle = \"red\", a.lineWidth = 1, n = null !== u ? u.insideContours : null; null !== u;) { switch (null !== n ? (r = n, n = n.nextpeer) : (r = u, n = null !== (u = u.nextpeer) ? u.insideContours : null), r.dir) { case o.CONTOUR_DIR.CW_DIR: a.strokeStyle = \"red\"; break; case o.CONTOUR_DIR.CCW_DIR: a.strokeStyle = \"blue\"; break; case o.CONTOUR_DIR.UNKNOWN_DIR: a.strokeStyle = \"green\" }i = r.firstVertex, a.beginPath(), a.moveTo(i.x, i.y); do { i = i.next, a.lineTo(i.x, i.y) } while (i !== r.firstVertex); a.stroke() } } } } } }; e.a = o }, function (t, e, n) {\r\n \"use strict\";\r\n/* @preserve ASM BEGIN */\r\n/* @preserve ASM END */e.a = function (t, e, n) { \"use asm\"; var r = new t.Uint8Array(n), o = e.size | 0, i = t.Math.imul; function a(t, e) { t |= 0; e |= 0; var n = 0; var i = 0; var a = 0; var u = 0; var c = 0; var s = 0; var f = 0; var l = 0; for (n = 1; (n | 0) < (o - 1 | 0); n = n + 1 | 0) { l = l + o | 0; for (i = 1; (i | 0) < (o - 1 | 0); i = i + 1 | 0) { u = l - o | 0; c = l + o | 0; s = i - 1 | 0; f = i + 1 | 0; a = (r[t + u + s | 0] | 0) + (r[t + u + f | 0] | 0) + (r[t + l + i | 0] | 0) + (r[t + c + s | 0] | 0) + (r[t + c + f | 0] | 0) | 0; if ((a | 0) == (5 | 0)) { r[e + l + i | 0] = 1 } else { r[e + l + i | 0] = 0 } } } } function u(t, e, n) { t |= 0; e |= 0; n |= 0; var a = 0; a = i(o, o) | 0; while ((a | 0) > 0) { a = a - 1 | 0; r[n + a | 0] = (r[t + a | 0] | 0) - (r[e + a | 0] | 0) | 0 } } function c(t, e, n) { t |= 0; e |= 0; n |= 0; var a = 0; a = i(o, o) | 0; while ((a | 0) > 0) { a = a - 1 | 0; r[n + a | 0] = r[t + a | 0] | 0 | (r[e + a | 0] | 0) | 0 } } function s(t) { t |= 0; var e = 0; var n = 0; n = i(o, o) | 0; while ((n | 0) > 0) { n = n - 1 | 0; e = (e | 0) + (r[t + n | 0] | 0) | 0 } return e | 0 } function f(t, e) { t |= 0; e |= 0; var n = 0; n = i(o, o) | 0; while ((n | 0) > 0) { n = n - 1 | 0; r[t + n | 0] = e } } function l(t, e) { t |= 0; e |= 0; var n = 0; var i = 0; var a = 0; var u = 0; var c = 0; var s = 0; var f = 0; var l = 0; for (n = 1; (n | 0) < (o - 1 | 0); n = n + 1 | 0) { l = l + o | 0; for (i = 1; (i | 0) < (o - 1 | 0); i = i + 1 | 0) { u = l - o | 0; c = l + o | 0; s = i - 1 | 0; f = i + 1 | 0; a = (r[t + u + s | 0] | 0) + (r[t + u + f | 0] | 0) + (r[t + l + i | 0] | 0) + (r[t + c + s | 0] | 0) + (r[t + c + f | 0] | 0) | 0; if ((a | 0) > (0 | 0)) { r[e + l + i | 0] = 1 } else { r[e + l + i | 0] = 0 } } } } function h(t, e) { t |= 0; e |= 0; var n = 0; n = i(o, o) | 0; while ((n | 0) > 0) { n = n - 1 | 0; r[e + n | 0] = r[t + n | 0] | 0 } } function d(t) { t |= 0; var e = 0; var n = 0; for (e = 0; (e | 0) < (o - 1 | 0); e = e + 1 | 0) { r[t + e | 0] = 0; r[t + n | 0] = 0; n = n + o - 1 | 0; r[t + n | 0] = 0; n = n + 1 | 0 } for (e = 0; (e | 0) < (o | 0); e = e + 1 | 0) { r[t + n | 0] = 0; n = n + 1 | 0 } } function p() { var t = 0; var e = 0; var n = 0; var r = 0; var p = 0; var v = 0; e = i(o, o) | 0; n = e + e | 0; r = n + e | 0; f(r, 0); d(t); do { a(t, e); l(e, n); u(t, n, n); c(r, n, r); h(e, t); p = s(t) | 0; v = (p | 0) == 0 | 0 } while (!v) } return { skeletonize: p } }\r\n }, function (t, e, n) { t.exports = n(263) }, function (t, e, n) { var r = n(91), o = n(48), i = n(121), a = n(123), u = n(14), c = n(56), s = n(54); t.exports = function t(e, n, f, l, h) { e !== n && i(n, (function (i, c) { if (h || (h = new r), u(i)) a(e, n, c, f, t, l, h); else { var d = l ? l(s(e, c), i, c + \"\", e, n, h) : void 0; void 0 === d && (d = i), o(e, c, d) } }), c) } }, function (t, e, n) { var r = n(24), o = n(97), i = n(98), a = n(99), u = n(100), c = n(101); function s(t) { var e = this.__data__ = new r(t); this.size = e.size } s.prototype.clear = o, s.prototype.delete = i, s.prototype.get = a, s.prototype.has = u, s.prototype.set = c, t.exports = s }, function (t, e) { t.exports = function () { this.__data__ = [], this.size = 0 } }, function (t, e, n) { var r = n(25), o = Array.prototype.splice; t.exports = function (t) { var e = this.__data__, n = r(e, t); return !(n < 0) && (n == e.length - 1 ? e.pop() : o.call(e, n, 1), --this.size, !0) } }, function (t, e, n) { var r = n(25); t.exports = function (t) { var e = this.__data__, n = r(e, t); return n < 0 ? void 0 : e[n][1] } }, function (t, e, n) { var r = n(25); t.exports = function (t) { return r(this.__data__, t) > -1 } }, function (t, e, n) { var r = n(25); t.exports = function (t, e) { var n = this.__data__, o = r(n, t); return o < 0 ? (++this.size, n.push([t, e])) : n[o][1] = e, this } }, function (t, e, n) { var r = n(24); t.exports = function () { this.__data__ = new r, this.size = 0 } }, function (t, e) { t.exports = function (t) { var e = this.__data__, n = e.delete(t); return this.size = e.size, n } }, function (t, e) { t.exports = function (t) { return this.__data__.get(t) } }, function (t, e) { t.exports = function (t) { return this.__data__.has(t) } }, function (t, e, n) { var r = n(24), o = n(44), i = n(47); t.exports = function (t, e) { var n = this.__data__; if (n instanceof r) { var a = n.__data__; if (!o || a.length < 199) return a.push([t, e]), this.size = ++n.size, this; n = this.__data__ = new i(a) } return n.set(t, e), this.size = n.size, this } }, function (t, e, n) { var r = n(36), o = n(105), i = n(14), a = n(107), u = /^\\[object .+?Constructor\\]$/, c = Function.prototype, s = Object.prototype, f = c.toString, l = s.hasOwnProperty, h = RegExp(\"^\" + f.call(l).replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"); t.exports = function (t) { return !(!i(t) || o(t)) && (r(t) ? h : u).test(a(t)) } }, function (t, e, n) { var r = n(27), o = Object.prototype, i = o.hasOwnProperty, a = o.toString, u = r ? r.toStringTag : void 0; t.exports = function (t) { var e = i.call(t, u), n = t[u]; try { t[u] = void 0; var r = !0 } catch (t) { } var o = a.call(t); return r && (e ? t[u] = n : delete t[u]), o } }, function (t, e) { var n = Object.prototype.toString; t.exports = function (t) { return n.call(t) } }, function (t, e, n) { var r, o = n(106), i = (r = /[^.]+$/.exec(o && o.keys && o.keys.IE_PROTO || \"\")) ? \"Symbol(src)_1.\" + r : \"\"; t.exports = function (t) { return !!i && i in t } }, function (t, e, n) { var r = n(18)[\"__core-js_shared__\"]; t.exports = r }, function (t, e) { var n = Function.prototype.toString; t.exports = function (t) { if (null != t) { try { return n.call(t) } catch (t) { } try { return t + \"\" } catch (t) { } } return \"\" } }, function (t, e) { t.exports = function (t, e) { return null == t ? void 0 : t[e] } }, function (t, e, n) { var r = n(110), o = n(24), i = n(44); t.exports = function () { this.size = 0, this.__data__ = { hash: new r, map: new (i || o), string: new r } } }, function (t, e, n) { var r = n(111), o = n(112), i = n(113), a = n(114), u = n(115); function c(t) { var e = -1, n = null == t ? 0 : t.length; for (this.clear(); ++e < n;) { var r = t[e]; this.set(r[0], r[1]) } } c.prototype.clear = r, c.prototype.delete = o, c.prototype.get = i, c.prototype.has = a, c.prototype.set = u, t.exports = c }, function (t, e, n) { var r = n(28); t.exports = function () { this.__data__ = r ? r(null) : {}, this.size = 0 } }, function (t, e) { t.exports = function (t) { var e = this.has(t) && delete this.__data__[t]; return this.size -= e ? 1 : 0, e } }, function (t, e, n) { var r = n(28), o = Object.prototype.hasOwnProperty; t.exports = function (t) { var e = this.__data__; if (r) { var n = e[t]; return \"__lodash_hash_undefined__\" === n ? void 0 : n } return o.call(e, t) ? e[t] : void 0 } }, function (t, e, n) { var r = n(28), o = Object.prototype.hasOwnProperty; t.exports = function (t) { var e = this.__data__; return r ? void 0 !== e[t] : o.call(e, t) } }, function (t, e, n) { var r = n(28); t.exports = function (t, e) { var n = this.__data__; return this.size += this.has(t) ? 0 : 1, n[t] = r && void 0 === e ? \"__lodash_hash_undefined__\" : e, this } }, function (t, e, n) { var r = n(29); t.exports = function (t) { var e = r(this, t).delete(t); return this.size -= e ? 1 : 0, e } }, function (t, e) { t.exports = function (t) { var e = typeof t; return \"string\" == e || \"number\" == e || \"symbol\" == e || \"boolean\" == e ? \"__proto__\" !== t : null === t } }, function (t, e, n) { var r = n(29); t.exports = function (t) { return r(this, t).get(t) } }, function (t, e, n) { var r = n(29); t.exports = function (t) { return r(this, t).has(t) } }, function (t, e, n) { var r = n(29); t.exports = function (t, e) { var n = r(this, t), o = n.size; return n.set(t, e), this.size += n.size == o ? 0 : 1, this } }, function (t, e, n) { var r = n(122)(); t.exports = r }, function (t, e) { t.exports = function (t) { return function (e, n, r) { for (var o = -1, i = Object(e), a = r(e), u = a.length; u--;) { var c = a[t ? u : ++o]; if (!1 === n(i[c], c, i)) break } return e } } }, function (t, e, n) { var r = n(48), o = n(124), i = n(125), a = n(128), u = n(129), c = n(30), s = n(15), f = n(133), l = n(52), h = n(36), d = n(14), p = n(135), v = n(53), y = n(54), g = n(139); t.exports = function (t, e, n, x, _, m, b) { var w = y(t, n), O = y(e, n), R = b.get(O); if (R) r(t, n, R); else { var C = m ? m(w, O, n + \"\", t, e, b) : void 0, E = void 0 === C; if (E) { var M = s(O), S = !M && l(O), A = !M && !S && v(O); C = O, M || S || A ? s(w) ? C = w : f(w) ? C = a(w) : S ? (E = !1, C = o(O, !0)) : A ? (E = !1, C = i(O, !0)) : C = [] : p(O) || c(O) ? (C = w, c(w) ? C = g(w) : d(w) && !h(w) || (C = u(O))) : E = !1 } E && (b.set(O, C), _(C, O, x, m, b), b.delete(O)), r(t, n, C) } } }, function (t, e, n) { (function (t) { var r = n(18), o = e && !e.nodeType && e, i = o && \"object\" == typeof t && t && !t.nodeType && t, a = i && i.exports === o ? r.Buffer : void 0, u = a ? a.allocUnsafe : void 0; t.exports = function (t, e) { if (e) return t.slice(); var n = t.length, r = u ? u(n) : new t.constructor(n); return t.copy(r), r } }).call(this, n(38)(t)) }, function (t, e, n) { var r = n(126); t.exports = function (t, e) { var n = e ? r(t.buffer) : t.buffer; return new t.constructor(n, t.byteOffset, t.length) } }, function (t, e, n) { var r = n(127); t.exports = function (t) { var e = new t.constructor(t.byteLength); return new r(e).set(new r(t)), e } }, function (t, e, n) { var r = n(18).Uint8Array; t.exports = r }, function (t, e) { t.exports = function (t, e) { var n = -1, r = t.length; for (e || (e = Array(r)); ++n < r;)e[n] = t[n]; return e } }, function (t, e, n) { var r = n(130), o = n(50), i = n(51); t.exports = function (t) { return \"function\" != typeof t.constructor || i(t) ? {} : r(o(t)) } }, function (t, e, n) { var r = n(14), o = Object.create, i = function () { function t() { } return function (e) { if (!r(e)) return {}; if (o) return o(e); t.prototype = e; var n = new t; return t.prototype = void 0, n } }(); t.exports = i }, function (t, e) { t.exports = function (t, e) { return function (n) { return t(e(n)) } } }, function (t, e, n) { var r = n(22), o = n(19); t.exports = function (t) { return o(t) && \"[object Arguments]\" == r(t) } }, function (t, e, n) { var r = n(39), o = n(19); t.exports = function (t) { return o(t) && r(t) } }, function (t, e) { t.exports = function () { return !1 } }, function (t, e, n) { var r = n(22), o = n(50), i = n(19), a = Function.prototype, u = Object.prototype, c = a.toString, s = u.hasOwnProperty, f = c.call(Object); t.exports = function (t) { if (!i(t) || \"[object Object]\" != r(t)) return !1; var e = o(t); if (null === e) return !0; var n = s.call(e, \"constructor\") && e.constructor; return \"function\" == typeof n && n instanceof n && c.call(n) == f } }, function (t, e, n) { var r = n(22), o = n(40), i = n(19), a = {}; a[\"[object Float32Array]\"] = a[\"[object Float64Array]\"] = a[\"[object Int8Array]\"] = a[\"[object Int16Array]\"] = a[\"[object Int32Array]\"] = a[\"[object Uint8Array]\"] = a[\"[object Uint8ClampedArray]\"] = a[\"[object Uint16Array]\"] = a[\"[object Uint32Array]\"] = !0, a[\"[object Arguments]\"] = a[\"[object Array]\"] = a[\"[object ArrayBuffer]\"] = a[\"[object Boolean]\"] = a[\"[object DataView]\"] = a[\"[object Date]\"] = a[\"[object Error]\"] = a[\"[object Function]\"] = a[\"[object Map]\"] = a[\"[object Number]\"] = a[\"[object Object]\"] = a[\"[object RegExp]\"] = a[\"[object Set]\"] = a[\"[object String]\"] = a[\"[object WeakMap]\"] = !1, t.exports = function (t) { return i(t) && o(t.length) && !!a[r(t)] } }, function (t, e) { t.exports = function (t) { return function (e) { return t(e) } } }, function (t, e, n) { (function (t) { var r = n(45), o = e && !e.nodeType && e, i = o && \"object\" == typeof t && t && !t.nodeType && t, a = i && i.exports === o && r.process, u = function () { try { var t = i && i.require && i.require(\"util\").types; return t || a && a.binding && a.binding(\"util\") } catch (t) { } }(); t.exports = u }).call(this, n(38)(t)) }, function (t, e, n) { var r = n(140), o = n(56); t.exports = function (t) { return r(t, o(t)) } }, function (t, e, n) { var r = n(55), o = n(37); t.exports = function (t, e, n, i) { var a = !n; n || (n = {}); for (var u = -1, c = e.length; ++u < c;) { var s = e[u], f = i ? i(n[s], t[s], s, n, t) : void 0; void 0 === f && (f = t[s]), a ? o(n, s, f) : r(n, s, f) } return n } }, function (t, e, n) { var r = n(142), o = n(30), i = n(15), a = n(52), u = n(31), c = n(53), s = Object.prototype.hasOwnProperty; t.exports = function (t, e) { var n = i(t), f = !n && o(t), l = !n && !f && a(t), h = !n && !f && !l && c(t), d = n || f || l || h, p = d ? r(t.length, String) : [], v = p.length; for (var y in t) !e && !s.call(t, y) || d && (\"length\" == y || l && (\"offset\" == y || \"parent\" == y) || h && (\"buffer\" == y || \"byteLength\" == y || \"byteOffset\" == y) || u(y, v)) || p.push(y); return p } }, function (t, e) { t.exports = function (t, e) { for (var n = -1, r = Array(t); ++n < t;)r[n] = e(n); return r } }, function (t, e, n) { var r = n(14), o = n(51), i = n(144), a = Object.prototype.hasOwnProperty; t.exports = function (t) { if (!r(t)) return i(t); var e = o(t), n = []; for (var u in t) (\"constructor\" != u || !e && a.call(t, u)) && n.push(u); return n } }, function (t, e) { t.exports = function (t) { var e = []; if (null != t) for (var n in Object(t)) e.push(n); return e } }, function (t, e, n) { var r = n(146), o = n(151); t.exports = function (t) { return r((function (e, n) { var r = -1, i = n.length, a = i > 1 ? n[i - 1] : void 0, u = i > 2 ? n[2] : void 0; for (a = t.length > 3 && \"function\" == typeof a ? (i--, a) : void 0, u && o(n[0], n[1], u) && (a = i < 3 ? void 0 : a, i = 1), e = Object(e); ++r < i;) { var c = n[r]; c && t(e, c, r, a) } return e })) } }, function (t, e, n) { var r = n(57), o = n(58), i = n(59); t.exports = function (t, e) { return i(o(t, e, r), t + \"\") } }, function (t, e) { t.exports = function (t, e, n) { switch (n.length) { case 0: return t.call(e); case 1: return t.call(e, n[0]); case 2: return t.call(e, n[0], n[1]); case 3: return t.call(e, n[0], n[1], n[2]) }return t.apply(e, n) } }, function (t, e, n) { var r = n(149), o = n(49), i = n(57), a = o ? function (t, e) { return o(t, \"toString\", { configurable: !0, enumerable: !1, value: r(e), writable: !0 }) } : i; t.exports = a }, function (t, e) { t.exports = function (t) { return function () { return t } } }, function (t, e) { var n = Date.now; t.exports = function (t) { var e = 0, r = 0; return function () { var o = n(), i = 16 - (o - r); if (r = o, i > 0) { if (++e >= 800) return arguments[0] } else e = 0; return t.apply(void 0, arguments) } } }, function (t, e, n) { var r = n(26), o = n(39), i = n(31), a = n(14); t.exports = function (t, e, n) { if (!a(n)) return !1; var u = typeof e; return !!(\"number\" == u ? o(n) && i(e, n.length) : \"string\" == u && e in n) && r(n[e], t) } }, function (t, e) { \"undefined\" != typeof window && (window.requestAnimationFrame || (window.requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t) { window.setTimeout(t, 1e3 / 60) })), \"function\" != typeof Math.imul && (Math.imul = function (t, e) { var n = 65535 & t, r = 65535 & e; return n * r + ((t >>> 16 & 65535) * r + n * (e >>> 16 & 65535) << 16 >>> 0) | 0 }), \"function\" != typeof Object.assign && (Object.assign = function (t) { \"use strict\"; if (null === t) throw new TypeError(\"Cannot convert undefined or null to object\"); for (var e = Object(t), n = 1; n < arguments.length; n++) { var r = arguments[n]; if (null !== r) for (var o in r) Object.prototype.hasOwnProperty.call(r, o) && (e[o] = r[o]) } return e }) }, function (t, e) { t.exports = function (t) { if (Array.isArray(t)) return t }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function (t, e) { var n = null == t ? null : \"undefined\" != typeof Symbol && t[Symbol.iterator] || t[\"@@iterator\"]; if (null != n) { var r, o, i = [], a = !0, u = !1; try { for (n = n.call(t); !(a = (r = n.next()).done) && (i.push(r.value), !e || i.length !== e); a = !0); } catch (t) { u = !0, o = t } finally { try { a || null == n.return || n.return() } finally { if (u) throw o } } return i } }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function () { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\") }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function (t) { var e = new Float32Array(2); return e[0] = t[0], e[1] = t[1], e } }, function (t, e) { t.exports = function (t, e) { var n = new Float32Array(2); return n[0] = t, n[1] = e, n } }, function (t, e) { t.exports = function (t, e) { return t[0] = e[0], t[1] = e[1], t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e, t[1] = n, t } }, function (t, e, n) { t.exports = function (t, e) { var n = t[0], o = t[1], i = e[0], a = e[1]; return Math.abs(n - i) <= r * Math.max(1, Math.abs(n), Math.abs(i)) && Math.abs(o - a) <= r * Math.max(1, Math.abs(o), Math.abs(a)) }; var r = n(62) }, function (t, e) { t.exports = function (t, e) { return t[0] === e[0] && t[1] === e[1] } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t } }, function (t, e, n) { t.exports = n(64) }, function (t, e, n) { t.exports = n(65) }, function (t, e, n) { t.exports = n(66) }, function (t, e) { t.exports = function (t, e) { return t[0] = 1 / e[0], t[1] = 1 / e[1], t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = Math.min(e[0], n[0]), t[1] = Math.min(e[1], n[1]), t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = Math.max(e[0], n[0]), t[1] = Math.max(e[1], n[1]), t } }, function (t, e) { t.exports = function (t, e, n) { var r = Math.cos(n), o = Math.sin(n), i = e[0], a = e[1]; return t[0] = i * r - a * o, t[1] = i * o + a * r, t } }, function (t, e) { t.exports = function (t, e) { return t[0] = Math.floor(e[0]), t[1] = Math.floor(e[1]), t } }, function (t, e) { t.exports = function (t, e) { return t[0] = Math.ceil(e[0]), t[1] = Math.ceil(e[1]), t } }, function (t, e) { t.exports = function (t, e) { return t[0] = Math.round(e[0]), t[1] = Math.round(e[1]), t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] * n, t[1] = e[1] * n, t } }, function (t, e) { t.exports = function (t, e, n, r) { return t[0] = e[0] + n[0] * r, t[1] = e[1] + n[1] * r, t } }, function (t, e, n) { t.exports = n(67) }, function (t, e, n) { t.exports = n(68) }, function (t, e, n) { t.exports = n(69) }, function (t, e, n) { t.exports = n(70) }, function (t, e) { t.exports = function (t, e) { return t[0] = -e[0], t[1] = -e[1], t } }, function (t, e) { t.exports = function (t, e) { var n = e[0], r = e[1], o = n * n + r * r; o > 0 && (o = 1 / Math.sqrt(o), t[0] = e[0] * o, t[1] = e[1] * o); return t } }, function (t, e) { t.exports = function (t, e) { return t[0] * e[0] + t[1] * e[1] } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0] * n[1] - e[1] * n[0]; return t[0] = t[1] = 0, t[2] = r, t } }, function (t, e) { t.exports = function (t, e, n, r) { var o = e[0], i = e[1]; return t[0] = o + r * (n[0] - o), t[1] = i + r * (n[1] - i), t } }, function (t, e) { t.exports = function (t, e) { e = e || 1; var n = 2 * Math.random() * Math.PI; return t[0] = Math.cos(n) * e, t[1] = Math.sin(n) * e, t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1]; return t[0] = n[0] * r + n[2] * o, t[1] = n[1] * r + n[3] * o, t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1]; return t[0] = n[0] * r + n[2] * o + n[4], t[1] = n[1] * r + n[3] * o + n[5], t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1]; return t[0] = n[0] * r + n[3] * o + n[6], t[1] = n[1] * r + n[4] * o + n[7], t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1]; return t[0] = n[0] * r + n[4] * o + n[12], t[1] = n[1] * r + n[5] * o + n[13], t } }, function (t, e, n) { t.exports = function (t, e, n, o, i, a) { var u, c; e || (e = 2); n || (n = 0); c = o ? Math.min(o * e + n, t.length) : t.length; for (u = n; u < c; u += e)r[0] = t[u], r[1] = t[u + 1], i(r, r, a), t[u] = r[0], t[u + 1] = r[1]; return t }; var r = n(63)() }, function (t, e) { t.exports = function (t, e, n) { var r = e[0] * e[0] + e[1] * e[1]; if (r > n * n) { var o = Math.sqrt(r); t[0] = e[0] / o * n, t[1] = e[1] / o * n } else t[0] = e[0], t[1] = e[1]; return t } }, function (t, e) { t.exports = function (t) { var e = new Float32Array(3); return e[0] = t[0], e[1] = t[1], e[2] = t[2], e } }, function (t, e, n) { t.exports = function (t, e) { var n = r(t[0], t[1], t[2]), a = r(e[0], e[1], e[2]); o(n, n), o(a, a); var u = i(n, a); return u > 1 ? 0 : Math.acos(u) }; var r = n(73), o = n(74), i = n(75) }, function (t, e) { t.exports = function (t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t } }, function (t, e) { t.exports = function (t, e, n, r) { return t[0] = e, t[1] = n, t[2] = r, t } }, function (t, e, n) { t.exports = function (t, e) { var n = t[0], o = t[1], i = t[2], a = e[0], u = e[1], c = e[2]; return Math.abs(n - a) <= r * Math.max(1, Math.abs(n), Math.abs(a)) && Math.abs(o - u) <= r * Math.max(1, Math.abs(o), Math.abs(u)) && Math.abs(i - c) <= r * Math.max(1, Math.abs(i), Math.abs(c)) }; var r = n(71) }, function (t, e) { t.exports = function (t, e) { return t[0] === e[0] && t[1] === e[1] && t[2] === e[2] } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t[2] = e[2] + n[2], t } }, function (t, e, n) { t.exports = n(76) }, function (t, e, n) { t.exports = n(77) }, function (t, e, n) { t.exports = n(78) }, function (t, e) { t.exports = function (t, e, n) { return t[0] = Math.min(e[0], n[0]), t[1] = Math.min(e[1], n[1]), t[2] = Math.min(e[2], n[2]), t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = Math.max(e[0], n[0]), t[1] = Math.max(e[1], n[1]), t[2] = Math.max(e[2], n[2]), t } }, function (t, e) { t.exports = function (t, e) { return t[0] = Math.floor(e[0]), t[1] = Math.floor(e[1]), t[2] = Math.floor(e[2]), t } }, function (t, e) { t.exports = function (t, e) { return t[0] = Math.ceil(e[0]), t[1] = Math.ceil(e[1]), t[2] = Math.ceil(e[2]), t } }, function (t, e) { t.exports = function (t, e) { return t[0] = Math.round(e[0]), t[1] = Math.round(e[1]), t[2] = Math.round(e[2]), t } }, function (t, e) { t.exports = function (t, e, n) { return t[0] = e[0] * n, t[1] = e[1] * n, t[2] = e[2] * n, t } }, function (t, e) { t.exports = function (t, e, n, r) { return t[0] = e[0] + n[0] * r, t[1] = e[1] + n[1] * r, t[2] = e[2] + n[2] * r, t } }, function (t, e, n) { t.exports = n(79) }, function (t, e, n) { t.exports = n(80) }, function (t, e, n) { t.exports = n(81) }, function (t, e, n) { t.exports = n(82) }, function (t, e) { t.exports = function (t, e) { return t[0] = -e[0], t[1] = -e[1], t[2] = -e[2], t } }, function (t, e) { t.exports = function (t, e) { return t[0] = 1 / e[0], t[1] = 1 / e[1], t[2] = 1 / e[2], t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1], i = e[2], a = n[0], u = n[1], c = n[2]; return t[0] = o * c - i * u, t[1] = i * a - r * c, t[2] = r * u - o * a, t } }, function (t, e) { t.exports = function (t, e, n, r) { var o = e[0], i = e[1], a = e[2]; return t[0] = o + r * (n[0] - o), t[1] = i + r * (n[1] - i), t[2] = a + r * (n[2] - a), t } }, function (t, e) { t.exports = function (t, e) { e = e || 1; var n = 2 * Math.random() * Math.PI, r = 2 * Math.random() - 1, o = Math.sqrt(1 - r * r) * e; return t[0] = Math.cos(n) * o, t[1] = Math.sin(n) * o, t[2] = r * e, t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1], i = e[2], a = n[3] * r + n[7] * o + n[11] * i + n[15]; return a = a || 1, t[0] = (n[0] * r + n[4] * o + n[8] * i + n[12]) / a, t[1] = (n[1] * r + n[5] * o + n[9] * i + n[13]) / a, t[2] = (n[2] * r + n[6] * o + n[10] * i + n[14]) / a, t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1], i = e[2]; return t[0] = r * n[0] + o * n[3] + i * n[6], t[1] = r * n[1] + o * n[4] + i * n[7], t[2] = r * n[2] + o * n[5] + i * n[8], t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1], i = e[2], a = n[0], u = n[1], c = n[2], s = n[3], f = s * r + u * i - c * o, l = s * o + c * r - a * i, h = s * i + a * o - u * r, d = -a * r - u * o - c * i; return t[0] = f * s + d * -a + l * -c - h * -u, t[1] = l * s + d * -u + h * -a - f * -c, t[2] = h * s + d * -c + f * -u - l * -a, t } }, function (t, e) { t.exports = function (t, e, n, r) { var o = n[1], i = n[2], a = e[1] - o, u = e[2] - i, c = Math.sin(r), s = Math.cos(r); return t[0] = e[0], t[1] = o + a * s - u * c, t[2] = i + a * c + u * s, t } }, function (t, e) { t.exports = function (t, e, n, r) { var o = n[0], i = n[2], a = e[0] - o, u = e[2] - i, c = Math.sin(r), s = Math.cos(r); return t[0] = o + u * c + a * s, t[1] = e[1], t[2] = i + u * s - a * c, t } }, function (t, e) { t.exports = function (t, e, n, r) { var o = n[0], i = n[1], a = e[0] - o, u = e[1] - i, c = Math.sin(r), s = Math.cos(r); return t[0] = o + a * s - u * c, t[1] = i + a * c + u * s, t[2] = e[2], t } }, function (t, e, n) { t.exports = function (t, e, n, o, i, a) { var u, c; e || (e = 3); n || (n = 0); c = o ? Math.min(o * e + n, t.length) : t.length; for (u = n; u < c; u += e)r[0] = t[u], r[1] = t[u + 1], r[2] = t[u + 2], i(r, r, a), t[u] = r[0], t[u + 1] = r[1], t[u + 2] = r[2]; return t }; var r = n(72)() }, function (t, e, n) { var r = function (t) { \"use strict\"; var e = Object.prototype, n = e.hasOwnProperty, r = \"function\" == typeof Symbol ? Symbol : {}, o = r.iterator || \"@@iterator\", i = r.asyncIterator || \"@@asyncIterator\", a = r.toStringTag || \"@@toStringTag\"; function u(t, e, n, r) { var o = e && e.prototype instanceof f ? e : f, i = Object.create(o.prototype), a = new w(r || []); return i._invoke = function (t, e, n) { var r = \"suspendedStart\"; return function (o, i) { if (\"executing\" === r) throw new Error(\"Generator is already running\"); if (\"completed\" === r) { if (\"throw\" === o) throw i; return R() } for (n.method = o, n.arg = i; ;) { var a = n.delegate; if (a) { var u = _(a, n); if (u) { if (u === s) continue; return u } } if (\"next\" === n.method) n.sent = n._sent = n.arg; else if (\"throw\" === n.method) { if (\"suspendedStart\" === r) throw r = \"completed\", n.arg; n.dispatchException(n.arg) } else \"return\" === n.method && n.abrupt(\"return\", n.arg); r = \"executing\"; var f = c(t, e, n); if (\"normal\" === f.type) { if (r = n.done ? \"completed\" : \"suspendedYield\", f.arg === s) continue; return { value: f.arg, done: n.done } } \"throw\" === f.type && (r = \"completed\", n.method = \"throw\", n.arg = f.arg) } } }(t, n, a), i } function c(t, e, n) { try { return { type: \"normal\", arg: t.call(e, n) } } catch (t) { return { type: \"throw\", arg: t } } } t.wrap = u; var s = {}; function f() { } function l() { } function h() { } var d = {}; d[o] = function () { return this }; var p = Object.getPrototypeOf, v = p && p(p(O([]))); v && v !== e && n.call(v, o) && (d = v); var y = h.prototype = f.prototype = Object.create(d); function g(t) { [\"next\", \"throw\", \"return\"].forEach((function (e) { t[e] = function (t) { return this._invoke(e, t) } })) } function x(t, e) { var r; this._invoke = function (o, i) { function a() { return new e((function (r, a) { !function r(o, i, a, u) { var s = c(t[o], t, i); if (\"throw\" !== s.type) { var f = s.arg, l = f.value; return l && \"object\" == typeof l && n.call(l, \"__await\") ? e.resolve(l.__await).then((function (t) { r(\"next\", t, a, u) }), (function (t) { r(\"throw\", t, a, u) })) : e.resolve(l).then((function (t) { f.value = t, a(f) }), (function (t) { return r(\"throw\", t, a, u) })) } u(s.arg) }(o, i, r, a) })) } return r = r ? r.then(a, a) : a() } } function _(t, e) { var n = t.iterator[e.method]; if (void 0 === n) { if (e.delegate = null, \"throw\" === e.method) { if (t.iterator.return && (e.method = \"return\", e.arg = void 0, _(t, e), \"throw\" === e.method)) return s; e.method = \"throw\", e.arg = new TypeError(\"The iterator does not provide a 'throw' method\") } return s } var r = c(n, t.iterator, e.arg); if (\"throw\" === r.type) return e.method = \"throw\", e.arg = r.arg, e.delegate = null, s; var o = r.arg; return o ? o.done ? (e[t.resultName] = o.value, e.next = t.nextLoc, \"return\" !== e.method && (e.method = \"next\", e.arg = void 0), e.delegate = null, s) : o : (e.method = \"throw\", e.arg = new TypeError(\"iterator result is not an object\"), e.delegate = null, s) } function m(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e) } function b(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e } function w(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(m, this), this.reset(!0) } function O(t) { if (t) { var e = t[o]; if (e) return e.call(t); if (\"function\" == typeof t.next) return t; if (!isNaN(t.length)) { var r = -1, i = function e() { for (; ++r < t.length;)if (n.call(t, r)) return e.value = t[r], e.done = !1, e; return e.value = void 0, e.done = !0, e }; return i.next = i } } return { next: R } } function R() { return { value: void 0, done: !0 } } return l.prototype = y.constructor = h, h.constructor = l, h[a] = l.displayName = \"GeneratorFunction\", t.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === l || \"GeneratorFunction\" === (e.displayName || e.name)) }, t.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, h) : (t.__proto__ = h, a in t || (t[a] = \"GeneratorFunction\")), t.prototype = Object.create(y), t }, t.awrap = function (t) { return { __await: t } }, g(x.prototype), x.prototype[i] = function () { return this }, t.AsyncIterator = x, t.async = function (e, n, r, o, i) { void 0 === i && (i = Promise); var a = new x(u(e, n, r, o), i); return t.isGeneratorFunction(n) ? a : a.next().then((function (t) { return t.done ? t.value : a.next() })) }, g(y), y[a] = \"Generator\", y[o] = function () { return this }, y.toString = function () { return \"[object Generator]\" }, t.keys = function (t) { var e = []; for (var n in t) e.push(n); return e.reverse(), function n() { for (; e.length;) { var r = e.pop(); if (r in t) return n.value = r, n.done = !1, n } return n.done = !0, n } }, t.values = O, w.prototype = { constructor: w, reset: function (t) { if (this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = void 0, this.tryEntries.forEach(b), !t) for (var e in this) \"t\" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = void 0) }, stop: function () { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval }, dispatchException: function (t) { if (this.done) throw t; var e = this; function r(n, r) { return a.type = \"throw\", a.arg = t, e.next = n, r && (e.method = \"next\", e.arg = void 0), !!r } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return r(\"end\"); if (i.tryLoc <= this.prev) { var u = n.call(i, \"catchLoc\"), c = n.call(i, \"finallyLoc\"); if (u && c) { if (this.prev < i.catchLoc) return r(i.catchLoc, !0); if (this.prev < i.finallyLoc) return r(i.finallyLoc) } else if (u) { if (this.prev < i.catchLoc) return r(i.catchLoc, !0) } else { if (!c) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return r(i.finallyLoc) } } } }, abrupt: function (t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, s) : this.complete(a) }, complete: function (t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), s }, finish: function (t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n.finallyLoc === t) return this.complete(n.completion, n.afterLoc), b(n), s } }, catch: function (t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n.tryLoc === t) { var r = n.completion; if (\"throw\" === r.type) { var o = r.arg; b(n) } return o } } throw new Error(\"illegal catch attempt\") }, delegateYield: function (t, e, n) { return this.delegate = { iterator: O(t), resultName: e, nextLoc: n }, \"next\" === this.method && (this.arg = void 0), s } }, t }(t.exports); try { regeneratorRuntime = r } catch (t) { Function(\"r\", \"regeneratorRuntime = r\")(r) } }, function (t, e, n) { var r = n(2); t.exports = function (t, e) { for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = r(t));); return t }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { var r = n(61); t.exports = function (t) { if (Array.isArray(t)) return r(t) }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function (t) { if (\"undefined\" != typeof Symbol && null != t[Symbol.iterator] || null != t[\"@@iterator\"]) return Array.from(t) }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function () { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\") }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { var r = n(230), o = n(240); t.exports = function (t, e) { return r(t, e, (function (e, n) { return o(t, n) })) } }, function (t, e, n) { var r = n(231), o = n(239), i = n(32); t.exports = function (t, e, n) { for (var a = -1, u = e.length, c = {}; ++a < u;) { var s = e[a], f = r(t, s); n(f, s) && o(c, i(s, t), f) } return c } }, function (t, e, n) { var r = n(32), o = n(43); t.exports = function (t, e) { for (var n = 0, i = (e = r(e, t)).length; null != t && n < i;)t = t[o(e[n++])]; return n && n == i ? t : void 0 } }, function (t, e, n) { var r = n(15), o = n(42), i = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/, a = /^\\w*$/; t.exports = function (t, e) { if (r(t)) return !1; var n = typeof t; return !(\"number\" != n && \"symbol\" != n && \"boolean\" != n && null != t && !o(t)) || (a.test(t) || !i.test(t) || null != e && t in Object(e)) } }, function (t, e, n) { var r = n(234), o = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g, i = /\\\\(\\\\)?/g, a = r((function (t) { var e = []; return 46 === t.charCodeAt(0) && e.push(\"\"), t.replace(o, (function (t, n, r, o) { e.push(r ? o.replace(i, \"$1\") : n || t) })), e })); t.exports = a }, function (t, e, n) { var r = n(235); t.exports = function (t) { var e = r(t, (function (t) { return 500 === n.size && n.clear(), t })), n = e.cache; return e } }, function (t, e, n) { var r = n(47); function o(t, e) { if (\"function\" != typeof t || null != e && \"function\" != typeof e) throw new TypeError(\"Expected a function\"); var n = function () { var r = arguments, o = e ? e.apply(this, r) : r[0], i = n.cache; if (i.has(o)) return i.get(o); var a = t.apply(this, r); return n.cache = i.set(o, a) || i, a }; return n.cache = new (o.Cache || r), n } o.Cache = r, t.exports = o }, function (t, e, n) { var r = n(237); t.exports = function (t) { return null == t ? \"\" : r(t) } }, function (t, e, n) { var r = n(27), o = n(238), i = n(15), a = n(42), u = r ? r.prototype : void 0, c = u ? u.toString : void 0; t.exports = function t(e) { if (\"string\" == typeof e) return e; if (i(e)) return o(e, t) + \"\"; if (a(e)) return c ? c.call(e) : \"\"; var n = e + \"\"; return \"0\" == n && 1 / e == -1 / 0 ? \"-0\" : n } }, function (t, e) { t.exports = function (t, e) { for (var n = -1, r = null == t ? 0 : t.length, o = Array(r); ++n < r;)o[n] = e(t[n], n, t); return o } }, function (t, e, n) { var r = n(55), o = n(32), i = n(31), a = n(14), u = n(43); t.exports = function (t, e, n, c) { if (!a(t)) return t; for (var s = -1, f = (e = o(e, t)).length, l = f - 1, h = t; null != h && ++s < f;) { var d = u(e[s]), p = n; if (\"__proto__\" === d || \"constructor\" === d || \"prototype\" === d) return t; if (s != l) { var v = h[d]; void 0 === (p = c ? c(v, d, h) : void 0) && (p = a(v) ? v : i(e[s + 1]) ? [] : {}) } r(h, d, p), h = h[d] } return t } }, function (t, e, n) { var r = n(241), o = n(242); t.exports = function (t, e) { return null != t && o(t, e, r) } }, function (t, e) { t.exports = function (t, e) { return null != t && e in Object(t) } }, function (t, e, n) { var r = n(32), o = n(30), i = n(15), a = n(31), u = n(40), c = n(43); t.exports = function (t, e, n) { for (var s = -1, f = (e = r(e, t)).length, l = !1; ++s < f;) { var h = c(e[s]); if (!(l = null != t && n(t, h))) break; t = t[h] } return l || ++s != f ? l : !!(f = null == t ? 0 : t.length) && u(f) && a(h, f) && (i(t) || o(t)) } }, function (t, e, n) { var r = n(244), o = n(58), i = n(59); t.exports = function (t) { return i(o(t, void 0, r), t + \"\") } }, function (t, e, n) { var r = n(245); t.exports = function (t) { return (null == t ? 0 : t.length) ? r(t, 1) : [] } }, function (t, e, n) { var r = n(246), o = n(247); t.exports = function t(e, n, i, a, u) { var c = -1, s = e.length; for (i || (i = o), u || (u = []); ++c < s;) { var f = e[c]; n > 0 && i(f) ? n > 1 ? t(f, n - 1, i, a, u) : r(u, f) : a || (u[u.length] = f) } return u } }, function (t, e) { t.exports = function (t, e) { for (var n = -1, r = e.length, o = t.length; ++n < r;)t[o + n] = e[n]; return t } }, function (t, e, n) { var r = n(27), o = n(30), i = n(15), a = r ? r.isConcatSpreadable : void 0; t.exports = function (t) { return i(t) || o(t) || !!(a && t && t[a]) } }, function (t, e) { t.exports = function (t) { return -1 !== Function.toString.call(t).indexOf(\"[native code]\") }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e, n) { var r = n(41), o = n(250); function i(e, n, a) { return o() ? (t.exports = i = Reflect.construct, t.exports.__esModule = !0, t.exports.default = t.exports) : (t.exports = i = function (t, e, n) { var o = [null]; o.push.apply(o, e); var i = new (Function.bind.apply(t, o)); return n && r(i, n.prototype), i }, t.exports.__esModule = !0, t.exports.default = t.exports), i.apply(null, arguments) } t.exports = i, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }, t.exports.__esModule = !0, t.exports.default = t.exports }, function (t, e) { t.exports = function (t) { return t[0] * t[3] - t[2] * t[1] } }, function (t, e) { t.exports = function (t, e) { if (t === e) { var n = e[1]; t[1] = e[2], t[2] = n } else t[0] = e[0], t[1] = e[2], t[2] = e[1], t[3] = e[3]; return t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1], i = e[2], a = e[3], u = n[0], c = n[1], s = n[2], f = n[3]; return t[0] = r * u + i * c, t[1] = o * u + a * c, t[2] = r * s + i * f, t[3] = o * s + a * f, t } }, function (t, e) { t.exports = function (t) { return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t } }, function (t, e) { t.exports = function (t, e) { var n = e[0]; return t[0] = e[3], t[1] = -e[1], t[2] = -e[2], t[3] = n, t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1], i = e[2], a = e[3], u = Math.sin(n), c = Math.cos(n); return t[0] = r * c + i * u, t[1] = o * c + a * u, t[2] = r * -u + i * c, t[3] = o * -u + a * c, t } }, function (t, e) { t.exports = function (t, e) { var n = e[0], r = e[1], o = e[2], i = e[3], a = n * i - o * r; return a ? (a = 1 / a, t[0] = i * a, t[1] = -r * a, t[2] = -o * a, t[3] = n * a, t) : null } }, function (t, e) { t.exports = function () { var t = new Float32Array(4); return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t } }, function (t, e) { t.exports = function (t, e, n) { var r = e[0], o = e[1], i = e[2], a = e[3], u = n[0], c = n[1]; return t[0] = r * u, t[1] = o * u, t[2] = i * c, t[3] = a * c, t } }, function (t, e) { t.exports = function (t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t } }, function (t, e) { t.exports = function (t) { return Math.sqrt(Math.pow(t[0], 2) + Math.pow(t[1], 2) + Math.pow(t[2], 2) + Math.pow(t[3], 2)) } }, function (t, e) { t.exports = function (t, e, n, r) { return t[2] = r[2] / r[0], n[0] = r[0], n[1] = r[1], n[3] = r[3] - t[2] * n[1], [t, e, n] } }, function (t, e, n) { \"use strict\"; n.r(e), n.d(e, \"BarcodeDecoder\", (function () { return Lt })), n.d(e, \"Readers\", (function () { return r })), n.d(e, \"CameraAccess\", (function () { return re })), n.d(e, \"ImageDebug\", (function () { return p.a })), n.d(e, \"ImageWrapper\", (function () { return s.a })), n.d(e, \"ResultCollector\", (function () { return oe })); var r = {}; n.r(r), n.d(r, \"BarcodeReader\", (function () { return k })), n.d(r, \"TwoOfFiveReader\", (function () { return z })), n.d(r, \"NewCodabarReader\", (function () { return W })), n.d(r, \"Code128Reader\", (function () { return V })), n.d(r, \"Code32Reader\", (function () { return tt })), n.d(r, \"Code39Reader\", (function () { return Z })), n.d(r, \"Code39VINReader\", (function () { return ot })), n.d(r, \"Code93Reader\", (function () { return ct })), n.d(r, \"EAN2Reader\", (function () { return _t })), n.d(r, \"EAN5Reader\", (function () { return wt })), n.d(r, \"EAN8Reader\", (function () { return Rt })), n.d(r, \"EANReader\", (function () { return gt })), n.d(r, \"I2of5Reader\", (function () { return Et })), n.d(r, \"UPCEReader\", (function () { return At })), n.d(r, \"UPCReader\", (function () { return Pt })); var o, i = n(20), a = n.n(i), u = n(17), c = n.n(u), s = (n(152), n(11)), f = n(12), l = n.n(f), h = n(8), d = n.n(h), p = n(16), v = n(3), y = n.n(v), g = n(4), x = n.n(g), _ = n(1), m = n.n(_), b = n(6), w = n.n(b), O = n(5), R = n.n(O), C = n(2), E = n.n(C), M = n(0), S = n.n(M), A = n(9); !function (t) { t[t.Forward = 1] = \"Forward\", t[t.Reverse = -1] = \"Reverse\" }(o || (o = {})); var k = function () { function t(e, n) { y()(this, t), S()(this, \"_row\", []), S()(this, \"config\", {}), S()(this, \"supplements\", []), S()(this, \"SINGLE_CODE_ERROR\", 0), S()(this, \"FORMAT\", \"unknown\"), S()(this, \"CONFIG_KEYS\", {}), this._row = [], this.config = e || {}, n && (this.supplements = n) } return x()(t, [{ key: \"_nextUnset\", value: function (t) { for (var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = e; n < t.length; n++)if (!t[n]) return n; return t.length } }, { key: \"_matchPattern\", value: function (t, e) { for (var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.SINGLE_CODE_ERROR || 1, r = 0, o = 0, i = 0, a = 0, u = 0, c = 0, s = 0, f = 0; f < t.length; f++)i += t[f], a += e[f]; if (i < a) return Number.MAX_VALUE; n *= u = i / a; for (var l = 0; l < t.length; l++) { if (c = t[l], s = e[l] * u, (o = Math.abs(c - s) / s) > n) return Number.MAX_VALUE; r += o } return r / a } }, { key: \"_nextSet\", value: function (t) { for (var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = e; n < t.length; n++)if (t[n]) return n; return t.length } }, { key: \"_correctBars\", value: function (t, e, n) { for (var r = n.length, o = 0; r--;)(o = t[n[r]] * (1 - (1 - e) / 2)) > 1 && (t[n[r]] = o) } }, { key: \"decodePattern\", value: function (t) { this._row = t; var e = this.decode(); return null === e ? (this._row.reverse(), (e = this.decode()) && (e.direction = o.Reverse, e.start = this._row.length - e.start, e.end = this._row.length - e.end)) : e.direction = o.Forward, e && (e.format = this.FORMAT), e } }, { key: \"_matchRange\", value: function (t, e, n) { var r; for (r = t = t < 0 ? 0 : t; r < e; r++)if (this._row[r] !== n) return !1; return !0 } }, { key: \"_fillCounters\", value: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._nextUnset(this._row), e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this._row.length, n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], r = [], o = 0; r[o] = 0; for (var i = t; i < e; i++)this._row[i] ^ (n ? 1 : 0) ? r[o]++ : (r[++o] = 1, n = !n); return r } }, { key: \"_toCounters\", value: function (t, e) { var n = e.length, r = this._row.length, o = !this._row[t], i = 0; A.a.init(e, 0); for (var a = t; a < r; a++)if (this._row[a] ^ (o ? 1 : 0)) e[i]++; else { if (++i === n) break; e[i] = 1, o = !o } return e } }, { key: \"decodeImage\", value: function (t) { return null } }], [{ key: \"Exception\", get: function () { return { StartNotFoundException: \"Start-Info was not found!\", CodeNotFoundException: \"Code could not be found!\", PatternNotFoundException: \"Pattern could not be found!\" } } }]), t }(); function P(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var D = [3, 1, 3, 1, 1, 1], T = [3, 1, 1, 1, 3], j = [[1, 1, 3, 3, 1], [3, 1, 1, 1, 3], [1, 3, 1, 1, 3], [3, 3, 1, 1, 1], [1, 1, 3, 1, 3], [3, 1, 3, 1, 1], [1, 3, 3, 1, 1], [1, 1, 1, 3, 3], [3, 1, 1, 3, 1], [1, 3, 1, 3, 1]], I = D.reduce((function (t, e) { return t + e }), 0), z = function (t) { w()(n, t); var e = P(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"barSpaceRatio\", [1, 1]), S()(m()(t), \"FORMAT\", \"2of5\"), S()(m()(t), \"SINGLE_CODE_ERROR\", .78), S()(m()(t), \"AVG_CODE_ERROR\", .3), t } return x()(n, [{ key: \"_findPattern\", value: function (t, e) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], o = [], i = 0, a = { error: Number.MAX_VALUE, code: -1, start: 0, end: 0 }, u = 0, c = 0, s = this.AVG_CODE_ERROR; e || (e = this._nextSet(this._row)); for (var f = 0; f < t.length; f++)o[f] = 0; for (var l = e; l < this._row.length; l++)if (this._row[l] ^ (n ? 1 : 0)) o[i]++; else { if (i === o.length - 1) { u = 0; for (var h = 0; h < o.length; h++)u += o[h]; if ((c = this._matchPattern(o, t)) < s) return a.error = c, a.start = l - u, a.end = l, a; if (!r) return null; for (var d = 0; d < o.length - 2; d++)o[d] = o[d + 2]; o[o.length - 2] = 0, o[o.length - 1] = 0, i-- } else i++; o[i] = 1, n = !n } return null } }, { key: \"_findStart\", value: function () { for (var t = null, e = this._nextSet(this._row), n = 1, r = 0; !t;) { if (!(t = this._findPattern(D, e, !1, !0))) return null; if (n = Math.floor((t.end - t.start) / I), (r = t.start - 5 * n) >= 0 && this._matchRange(r, t.start, 0)) return t; e = t.end, t = null } return t } }, { key: \"_verifyTrailingWhitespace\", value: function (t) { var e = t.end + (t.end - t.start) / 2; return e < this._row.length && this._matchRange(t.end, e, 0) ? t : null } }, { key: \"_findEnd\", value: function () { this._row.reverse(); var t = this._nextSet(this._row), e = this._findPattern(T, t, !1, !0); if (this._row.reverse(), null === e) return null; var n = e.start; return e.start = this._row.length - e.end, e.end = this._row.length - n, null !== e ? this._verifyTrailingWhitespace(e) : null } }, { key: \"_verifyCounterLength\", value: function (t) { return t.length % 10 == 0 } }, { key: \"_decodeCode\", value: function (t) { for (var e = this.AVG_CODE_ERROR, n = { error: Number.MAX_VALUE, code: -1, start: 0, end: 0 }, r = 0; r < j.length; r++) { var o = this._matchPattern(t, j[r]); o < n.error && (n.code = r, n.error = o) } return n.error < e ? n : null } }, { key: \"_decodePayload\", value: function (t, e, n) { for (var r = 0, o = t.length, i = [0, 0, 0, 0, 0], a = null; r < o;) { for (var u = 0; u < 5; u++)i[u] = t[r] * this.barSpaceRatio[0], r += 2; if (!(a = this._decodeCode(i))) return null; e.push(\"\".concat(a.code)), n.push(a) } return a } }, { key: \"decode\", value: function (t, e) { var n = this._findStart(); if (!n) return null; var r = this._findEnd(); if (!r) return null; var o = this._fillCounters(n.end, r.start, !1); if (!this._verifyCounterLength(o)) return null; var i = []; i.push(n); var a = []; return this._decodePayload(o, a, i) ? a.length < 5 ? null : (i.push(r), { code: a.join(\"\"), start: n.start, end: r.end, startInfo: n, decodedCodes: i, format: this.FORMAT }) : null } }]), n }(k); function U(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var L = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 45, 36, 58, 47, 46, 43, 65, 66, 67, 68], N = [3, 6, 9, 96, 18, 66, 33, 36, 48, 72, 12, 24, 69, 81, 84, 21, 26, 41, 11, 14], B = [26, 41, 11, 14], W = function (t) { w()(n, t); var e = U(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"_counters\", []), S()(m()(t), \"FORMAT\", \"codabar\"), t } return x()(n, [{ key: \"_computeAlternatingThreshold\", value: function (t, e) { for (var n = Number.MAX_VALUE, r = 0, o = 0, i = t; i < e; i += 2)(o = this._counters[i]) > r && (r = o), o < n && (n = o); return (n + r) / 2 | 0 } }, { key: \"_toPattern\", value: function (t) { var e = t + 7; if (e > this._counters.length) return -1; for (var n = this._computeAlternatingThreshold(t, e), r = this._computeAlternatingThreshold(t + 1, e), o = 64, i = 0, a = 0, u = 0; u < 7; u++)i = 0 == (1 & u) ? n : r, this._counters[t + u] > i && (a |= o), o >>= 1; return a } }, { key: \"_isStartEnd\", value: function (t) { for (var e = 0; e < B.length; e++)if (B[e] === t) return !0; return !1 } }, { key: \"_sumCounters\", value: function (t, e) { for (var n = 0, r = t; r < e; r++)n += this._counters[r]; return n } }, { key: \"_findStart\", value: function () { for (var t = this._nextUnset(this._row), e = 1; e < this._counters.length; e++) { var n = this._toPattern(e); if (-1 !== n && this._isStartEnd(n)) return { start: t += this._sumCounters(0, e), end: t + this._sumCounters(e, e + 8), startCounter: e, endCounter: e + 8 } } return null } }, { key: \"_patternToChar\", value: function (t) { for (var e = 0; e < N.length; e++)if (N[e] === t) return String.fromCharCode(L[e]); return null } }, { key: \"_calculatePatternLength\", value: function (t) { for (var e = 0, n = t; n < t + 7; n++)e += this._counters[n]; return e } }, { key: \"_verifyWhitespace\", value: function (t, e) { return (t - 1 <= 0 || this._counters[t - 1] >= this._calculatePatternLength(t) / 2) && (e + 8 >= this._counters.length || this._counters[e + 7] >= this._calculatePatternLength(e) / 2) } }, { key: \"_charToPattern\", value: function (t) { for (var e = t.charCodeAt(0), n = 0; n < L.length; n++)if (L[n] === e) return N[n]; return 0 } }, { key: \"_thresholdResultPattern\", value: function (t, e) { for (var n, r = { space: { narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE }, wide: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE } }, bar: { narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE }, wide: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE } } }, o = e, i = 0; i < t.length; i++) { n = this._charToPattern(t[i]); for (var a = 6; a >= 0; a--) { var u = 2 == (1 & a) ? r.bar : r.space, c = 1 == (1 & n) ? u.wide : u.narrow; c.size += this._counters[o + a], c.counts++, n >>= 1 } o += 8 } return [\"space\", \"bar\"].forEach((function (t) { var e = r[t]; e.wide.min = Math.floor((e.narrow.size / e.narrow.counts + e.wide.size / e.wide.counts) / 2), e.narrow.max = Math.ceil(e.wide.min), e.wide.max = Math.ceil((2 * e.wide.size + 1.5) / e.wide.counts) })), r } }, { key: \"_validateResult\", value: function (t, e) { for (var n, r = this._thresholdResultPattern(t, e), o = e, i = 0; i < t.length; i++) { n = this._charToPattern(t[i]); for (var a = 6; a >= 0; a--) { var u = 0 == (1 & a) ? r.bar : r.space, c = 1 == (1 & n) ? u.wide : u.narrow, s = this._counters[o + a]; if (s < c.min || s > c.max) return !1; n >>= 1 } o += 8 } return !0 } }, { key: \"decode\", value: function (t, e) { if (this._counters = this._fillCounters(), !(e = this._findStart())) return null; var n, r = e.startCounter, o = []; do { if ((n = this._toPattern(r)) < 0) return null; var i = this._patternToChar(n); if (null === i) return null; if (o.push(i), r += 8, o.length > 1 && this._isStartEnd(n)) break } while (r < this._counters.length); if (o.length - 2 < 4 || !this._isStartEnd(n)) return null; if (!this._verifyWhitespace(e.startCounter, r - 8)) return null; if (!this._validateResult(o, e.startCounter)) return null; r = r > this._counters.length ? this._counters.length : r; var a = e.start + this._sumCounters(e.startCounter, r - 8); return { code: o.join(\"\"), start: e.start, end: a, startInfo: e, decodedCodes: o, format: this.FORMAT } } }]), n }(k); function F(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var V = function (t) { w()(n, t); var e = F(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"CODE_SHIFT\", 98), S()(m()(t), \"CODE_C\", 99), S()(m()(t), \"CODE_B\", 100), S()(m()(t), \"CODE_A\", 101), S()(m()(t), \"START_CODE_A\", 103), S()(m()(t), \"START_CODE_B\", 104), S()(m()(t), \"START_CODE_C\", 105), S()(m()(t), \"STOP_CODE\", 106), S()(m()(t), \"CODE_PATTERN\", [[2, 1, 2, 2, 2, 2], [2, 2, 2, 1, 2, 2], [2, 2, 2, 2, 2, 1], [1, 2, 1, 2, 2, 3], [1, 2, 1, 3, 2, 2], [1, 3, 1, 2, 2, 2], [1, 2, 2, 2, 1, 3], [1, 2, 2, 3, 1, 2], [1, 3, 2, 2, 1, 2], [2, 2, 1, 2, 1, 3], [2, 2, 1, 3, 1, 2], [2, 3, 1, 2, 1, 2], [1, 1, 2, 2, 3, 2], [1, 2, 2, 1, 3, 2], [1, 2, 2, 2, 3, 1], [1, 1, 3, 2, 2, 2], [1, 2, 3, 1, 2, 2], [1, 2, 3, 2, 2, 1], [2, 2, 3, 2, 1, 1], [2, 2, 1, 1, 3, 2], [2, 2, 1, 2, 3, 1], [2, 1, 3, 2, 1, 2], [2, 2, 3, 1, 1, 2], [3, 1, 2, 1, 3, 1], [3, 1, 1, 2, 2, 2], [3, 2, 1, 1, 2, 2], [3, 2, 1, 2, 2, 1], [3, 1, 2, 2, 1, 2], [3, 2, 2, 1, 1, 2], [3, 2, 2, 2, 1, 1], [2, 1, 2, 1, 2, 3], [2, 1, 2, 3, 2, 1], [2, 3, 2, 1, 2, 1], [1, 1, 1, 3, 2, 3], [1, 3, 1, 1, 2, 3], [1, 3, 1, 3, 2, 1], [1, 1, 2, 3, 1, 3], [1, 3, 2, 1, 1, 3], [1, 3, 2, 3, 1, 1], [2, 1, 1, 3, 1, 3], [2, 3, 1, 1, 1, 3], [2, 3, 1, 3, 1, 1], [1, 1, 2, 1, 3, 3], [1, 1, 2, 3, 3, 1], [1, 3, 2, 1, 3, 1], [1, 1, 3, 1, 2, 3], [1, 1, 3, 3, 2, 1], [1, 3, 3, 1, 2, 1], [3, 1, 3, 1, 2, 1], [2, 1, 1, 3, 3, 1], [2, 3, 1, 1, 3, 1], [2, 1, 3, 1, 1, 3], [2, 1, 3, 3, 1, 1], [2, 1, 3, 1, 3, 1], [3, 1, 1, 1, 2, 3], [3, 1, 1, 3, 2, 1], [3, 3, 1, 1, 2, 1], [3, 1, 2, 1, 1, 3], [3, 1, 2, 3, 1, 1], [3, 3, 2, 1, 1, 1], [3, 1, 4, 1, 1, 1], [2, 2, 1, 4, 1, 1], [4, 3, 1, 1, 1, 1], [1, 1, 1, 2, 2, 4], [1, 1, 1, 4, 2, 2], [1, 2, 1, 1, 2, 4], [1, 2, 1, 4, 2, 1], [1, 4, 1, 1, 2, 2], [1, 4, 1, 2, 2, 1], [1, 1, 2, 2, 1, 4], [1, 1, 2, 4, 1, 2], [1, 2, 2, 1, 1, 4], [1, 2, 2, 4, 1, 1], [1, 4, 2, 1, 1, 2], [1, 4, 2, 2, 1, 1], [2, 4, 1, 2, 1, 1], [2, 2, 1, 1, 1, 4], [4, 1, 3, 1, 1, 1], [2, 4, 1, 1, 1, 2], [1, 3, 4, 1, 1, 1], [1, 1, 1, 2, 4, 2], [1, 2, 1, 1, 4, 2], [1, 2, 1, 2, 4, 1], [1, 1, 4, 2, 1, 2], [1, 2, 4, 1, 1, 2], [1, 2, 4, 2, 1, 1], [4, 1, 1, 2, 1, 2], [4, 2, 1, 1, 1, 2], [4, 2, 1, 2, 1, 1], [2, 1, 2, 1, 4, 1], [2, 1, 4, 1, 2, 1], [4, 1, 2, 1, 2, 1], [1, 1, 1, 1, 4, 3], [1, 1, 1, 3, 4, 1], [1, 3, 1, 1, 4, 1], [1, 1, 4, 1, 1, 3], [1, 1, 4, 3, 1, 1], [4, 1, 1, 1, 1, 3], [4, 1, 1, 3, 1, 1], [1, 1, 3, 1, 4, 1], [1, 1, 4, 1, 3, 1], [3, 1, 1, 1, 4, 1], [4, 1, 1, 1, 3, 1], [2, 1, 1, 4, 1, 2], [2, 1, 1, 2, 1, 4], [2, 1, 1, 2, 3, 2], [2, 3, 3, 1, 1, 1, 2]]), S()(m()(t), \"SINGLE_CODE_ERROR\", .64), S()(m()(t), \"AVG_CODE_ERROR\", .3), S()(m()(t), \"FORMAT\", \"code_128\"), S()(m()(t), \"MODULE_INDICES\", { bar: [0, 2, 4], space: [1, 3, 5] }), t } return x()(n, [{ key: \"_decodeCode\", value: function (t, e) { for (var n = { error: Number.MAX_VALUE, code: -1, start: t, end: t, correction: { bar: 1, space: 1 } }, r = [0, 0, 0, 0, 0, 0], o = t, i = !this._row[o], a = 0, u = o; u < this._row.length; u++)if (this._row[u] ^ (i ? 1 : 0)) r[a]++; else { if (a === r.length - 1) { e && this._correct(r, e); for (var c = 0; c < this.CODE_PATTERN.length; c++) { var s = this._matchPattern(r, this.CODE_PATTERN[c]); s < n.error && (n.code = c, n.error = s) } return n.end = u, -1 === n.code || n.error > this.AVG_CODE_ERROR ? null : (this.CODE_PATTERN[n.code] && (n.correction.bar = this.calculateCorrection(this.CODE_PATTERN[n.code], r, this.MODULE_INDICES.bar), n.correction.space = this.calculateCorrection(this.CODE_PATTERN[n.code], r, this.MODULE_INDICES.space)), n) } r[++a] = 1, i = !i } return null } }, { key: \"_correct\", value: function (t, e) { this._correctBars(t, e.bar, this.MODULE_INDICES.bar), this._correctBars(t, e.space, this.MODULE_INDICES.space) } }, { key: \"_findStart\", value: function () { for (var t = [0, 0, 0, 0, 0, 0], e = this._nextSet(this._row), n = { error: Number.MAX_VALUE, code: -1, start: 0, end: 0, correction: { bar: 1, space: 1 } }, r = !1, o = 0, i = e; i < this._row.length; i++)if (this._row[i] ^ (r ? 1 : 0)) t[o]++; else { if (o === t.length - 1) { for (var a = t.reduce((function (t, e) { return t + e }), 0), u = this.START_CODE_A; u <= this.START_CODE_C; u++) { var c = this._matchPattern(t, this.CODE_PATTERN[u]); c < n.error && (n.code = u, n.error = c) } if (n.error < this.AVG_CODE_ERROR) return n.start = i - a, n.end = i, n.correction.bar = this.calculateCorrection(this.CODE_PATTERN[n.code], t, this.MODULE_INDICES.bar), n.correction.space = this.calculateCorrection(this.CODE_PATTERN[n.code], t, this.MODULE_INDICES.space), n; for (var s = 0; s < 4; s++)t[s] = t[s + 2]; t[4] = 0, t[5] = 0, o-- } else o++; t[o] = 1, r = !r } return null } }, { key: \"decode\", value: function (t, e) { var n = this, r = this._findStart(); if (null === r) return null; var o = { code: r.code, start: r.start, end: r.end, correction: { bar: r.correction.bar, space: r.correction.space } }, i = []; i.push(o); for (var a = o.code, u = function (t) { switch (t) { case n.START_CODE_A: return n.CODE_A; case n.START_CODE_B: return n.CODE_B; case n.START_CODE_C: return n.CODE_C; default: return null } }(o.code), c = !1, s = !1, f = s, l = !0, h = 0, d = [], p = []; !c;) { if (f = s, s = !1, null !== (o = this._decodeCode(o.end, o.correction))) switch (o.code !== this.STOP_CODE && (l = !0), o.code !== this.STOP_CODE && (d.push(o.code), a += ++h * o.code), i.push(o), u) { case this.CODE_A: if (o.code < 64) p.push(String.fromCharCode(32 + o.code)); else if (o.code < 96) p.push(String.fromCharCode(o.code - 64)); else switch (o.code !== this.STOP_CODE && (l = !1), o.code) { case this.CODE_SHIFT: s = !0, u = this.CODE_B; break; case this.CODE_B: u = this.CODE_B; break; case this.CODE_C: u = this.CODE_C; break; case this.STOP_CODE: c = !0 }break; case this.CODE_B: if (o.code < 96) p.push(String.fromCharCode(32 + o.code)); else switch (o.code !== this.STOP_CODE && (l = !1), o.code) { case this.CODE_SHIFT: s = !0, u = this.CODE_A; break; case this.CODE_A: u = this.CODE_A; break; case this.CODE_C: u = this.CODE_C; break; case this.STOP_CODE: c = !0 }break; case this.CODE_C: if (o.code < 100) p.push(o.code < 10 ? \"0\" + o.code : o.code); else switch (o.code !== this.STOP_CODE && (l = !1), o.code) { case this.CODE_A: u = this.CODE_A; break; case this.CODE_B: u = this.CODE_B; break; case this.STOP_CODE: c = !0 } } else c = !0; f && (u = u === this.CODE_A ? this.CODE_B : this.CODE_A) } return null === o ? null : (o.end = this._nextUnset(this._row, o.end), this._verifyTrailingWhitespace(o) ? (a -= h * d[d.length - 1]) % 103 !== d[d.length - 1] ? null : p.length ? (l && p.splice(p.length - 1, 1), { code: p.join(\"\"), start: r.start, end: o.end, codeset: u, startInfo: r, decodedCodes: i, endInfo: o, format: this.FORMAT }) : null : null) } }, { key: \"_verifyTrailingWhitespace\", value: function (t) { var e; return (e = t.end + (t.end - t.start) / 2) < this._row.length && this._matchRange(t.end, e, 0) ? t : null } }, { key: \"calculateCorrection\", value: function (t, e, n) { for (var r = n.length, o = 0, i = 0; r--;)i += t[n[r]], o += e[n[r]]; return i / o } }]), n }(k), q = n(13), G = n.n(q), H = n(33), X = n.n(H); function Q(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var Y = new Uint16Array(X()(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%\").map((function (t) { return t.charCodeAt(0) }))), $ = new Uint16Array([52, 289, 97, 352, 49, 304, 112, 37, 292, 100, 265, 73, 328, 25, 280, 88, 13, 268, 76, 28, 259, 67, 322, 19, 274, 82, 7, 262, 70, 22, 385, 193, 448, 145, 400, 208, 133, 388, 196, 148, 168, 162, 138, 42]), Z = function (t) { w()(n, t); var e = Q(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"FORMAT\", \"code_39\"), t } return x()(n, [{ key: \"_findStart\", value: function () { for (var t = this._nextSet(this._row), e = t, n = new Uint16Array([0, 0, 0, 0, 0, 0, 0, 0, 0]), r = 0, o = !1, i = t; i < this._row.length; i++)if (this._row[i] ^ (o ? 1 : 0)) n[r]++; else { if (r === n.length - 1) { if (148 === this._toPattern(n)) { var a = Math.floor(Math.max(0, e - (i - e) / 4)); if (this._matchRange(a, e, 0)) return { start: e, end: i } } e += n[0] + n[1]; for (var u = 0; u < 7; u++)n[u] = n[u + 2]; n[7] = 0, n[8] = 0, r-- } else r++; n[r] = 1, o = !o } return null } }, { key: \"_toPattern\", value: function (t) { for (var e = t.length, n = 0, r = e, o = 0; r > 3;) { n = this._findNextWidth(t, n), r = 0; for (var i = 0, a = 0; a < e; a++)t[a] > n && (i |= 1 << e - 1 - a, r++, o += t[a]); if (3 === r) { for (var u = 0; u < e && r > 0; u++)if (t[u] > n && (r--, 2 * t[u] >= o)) return -1; return i } } return -1 } }, { key: \"_findNextWidth\", value: function (t, e) { for (var n = Number.MAX_VALUE, r = 0; r < t.length; r++)t[r] < n && t[r] > e && (n = t[r]); return n } }, { key: \"_patternToChar\", value: function (t) { for (var e = 0; e < $.length; e++)if ($[e] === t) return String.fromCharCode(Y[e]); return null } }, { key: \"_verifyTrailingWhitespace\", value: function (t, e, n) { var r = A.a.sum(n); return 3 * (e - t - r) >= r } }, { key: \"decode\", value: function () { var t = new Uint16Array([0, 0, 0, 0, 0, 0, 0, 0, 0]), e = [], n = this._findStart(); if (!n) return null; var r, o, i = this._nextSet(this._row, n.end); do { t = this._toCounters(i, t); var a = this._toPattern(t); if (a < 0) return null; if (null === (r = this._patternToChar(a))) return null; e.push(r), o = i, i += A.a.sum(t), i = this._nextSet(this._row, i) } while (\"*\" !== r); return e.pop(), e.length && this._verifyTrailingWhitespace(o, i, t) ? { code: e.join(\"\"), start: n.start, end: i, startInfo: n, decodedCodes: e, format: this.FORMAT } : null } }]), n }(k); function K(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var J = /[AEIO]/g, tt = function (t) { w()(n, t); var e = K(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"FORMAT\", \"code_32_reader\"), t } return x()(n, [{ key: \"_decodeCode32\", value: function (t) { if (/[^0-9BCDFGHJKLMNPQRSTUVWXYZ]/.test(t)) return null; for (var e = 0, n = 0; n < t.length; n++)e = 32 * e + \"0123456789BCDFGHJKLMNPQRSTUVWXYZ\".indexOf(t[n]); var r = \"\".concat(e); return r.length < 9 && (r = (\"000000000\" + r).slice(-9)), \"A\" + r } }, { key: \"_checkChecksum\", value: function (t) { return !!t } }, { key: \"decode\", value: function () { var t = G()(E()(n.prototype), \"decode\", this).call(this); if (!t) return null; var e = t.code; if (!e) return null; if (e = e.replace(J, \"\"), !this._checkChecksum(e)) return null; var r = this._decodeCode32(e); return r ? (t.code = r, t) : null } }]), n }(Z); function et(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var nt = /[IOQ]/g, rt = /[A-Z0-9]{17}/, ot = function (t) { w()(n, t); var e = et(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"FORMAT\", \"code_39_vin\"), t } return x()(n, [{ key: \"_checkChecksum\", value: function (t) { return !!t } }, { key: \"decode\", value: function () { var t = G()(E()(n.prototype), \"decode\", this).call(this); if (!t) return null; var e = t.code; return e && (e = e.replace(nt, \"\")).match(rt) && this._checkChecksum(e) ? (t.code = e, t) : null } }]), n }(Z); function it(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var at = new Uint16Array(X()(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*\").map((function (t) { return t.charCodeAt(0) }))), ut = new Uint16Array([276, 328, 324, 322, 296, 292, 290, 336, 274, 266, 424, 420, 418, 404, 402, 394, 360, 356, 354, 308, 282, 344, 332, 326, 300, 278, 436, 434, 428, 422, 406, 410, 364, 358, 310, 314, 302, 468, 466, 458, 366, 374, 430, 294, 474, 470, 306, 350]), ct = function (t) { w()(n, t); var e = it(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"FORMAT\", \"code_93\"), t } return x()(n, [{ key: \"_patternToChar\", value: function (t) { for (var e = 0; e < ut.length; e++)if (ut[e] === t) return String.fromCharCode(at[e]); return null } }, { key: \"_toPattern\", value: function (t) { for (var e = t.length, n = t.reduce((function (t, e) { return t + e }), 0), r = 0, o = 0; o < e; o++) { var i = Math.round(9 * t[o] / n); if (i < 1 || i > 4) return -1; if (0 == (1 & o)) for (var a = 0; a < i; a++)r = r << 1 | 1; else r <<= i } return r } }, { key: \"_findStart\", value: function () { for (var t = this._nextSet(this._row), e = t, n = new Uint16Array([0, 0, 0, 0, 0, 0]), r = 0, o = !1, i = t; i < this._row.length; i++)if (this._row[i] ^ (o ? 1 : 0)) n[r]++; else { if (r === n.length - 1) { if (350 === this._toPattern(n)) { var a = Math.floor(Math.max(0, e - (i - e) / 4)); if (this._matchRange(a, e, 0)) return { start: e, end: i } } e += n[0] + n[1]; for (var u = 0; u < 4; u++)n[u] = n[u + 2]; n[4] = 0, n[5] = 0, r-- } else r++; n[r] = 1, o = !o } return null } }, { key: \"_verifyEnd\", value: function (t, e) { return !(t === e || !this._row[e]) } }, { key: \"_decodeExtended\", value: function (t) { for (var e = t.length, n = [], r = 0; r < e; r++) { var o = t[r]; if (o >= \"a\" && o <= \"d\") { if (r > e - 2) return null; var i = t[++r], a = i.charCodeAt(0), u = void 0; switch (o) { case \"a\": if (!(i >= \"A\" && i <= \"Z\")) return null; u = String.fromCharCode(a - 64); break; case \"b\": if (i >= \"A\" && i <= \"E\") u = String.fromCharCode(a - 38); else if (i >= \"F\" && i <= \"J\") u = String.fromCharCode(a - 11); else if (i >= \"K\" && i <= \"O\") u = String.fromCharCode(a + 16); else if (i >= \"P\" && i <= \"S\") u = String.fromCharCode(a + 43); else { if (!(i >= \"T\" && i <= \"Z\")) return null; u = String.fromCharCode(127) } break; case \"c\": if (i >= \"A\" && i <= \"O\") u = String.fromCharCode(a - 32); else { if (\"Z\" !== i) return null; u = \":\" } break; case \"d\": if (!(i >= \"A\" && i <= \"Z\")) return null; u = String.fromCharCode(a + 32); break; default: return console.warn(\"* code_93_reader _decodeExtended hit default case, this may be an error\", u), null }n.push(u) } else n.push(o) } return n } }, { key: \"_matchCheckChar\", value: function (t, e, n) { var r = t.slice(0, e), o = r.length, i = r.reduce((function (t, e, r) { return t + ((-1 * r + (o - 1)) % n + 1) * at.indexOf(e.charCodeAt(0)) }), 0); return at[i % 47] === t[e].charCodeAt(0) } }, { key: \"_verifyChecksums\", value: function (t) { return this._matchCheckChar(t, t.length - 2, 20) && this._matchCheckChar(t, t.length - 1, 15) } }, { key: \"decode\", value: function (t, e) { if (!(e = this._findStart())) return null; var n, r, o = new Uint16Array([0, 0, 0, 0, 0, 0]), i = [], a = this._nextSet(this._row, e.end); do { o = this._toCounters(a, o); var u = this._toPattern(o); if (u < 0) return null; if (null === (r = this._patternToChar(u))) return null; i.push(r), n = a, a += A.a.sum(o), a = this._nextSet(this._row, a) } while (\"*\" !== r); return i.pop(), i.length && this._verifyEnd(n, a) && this._verifyChecksums(i) ? (i = i.slice(0, i.length - 2), null === (i = this._decodeExtended(i)) ? null : { code: i.join(\"\"), start: e.start, end: a, startInfo: e, decodedCodes: i, format: this.FORMAT }) : null } }]), n }(k); function st(t, e) { var n = Object.keys(t); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(t); e && (r = r.filter((function (e) { return Object.getOwnPropertyDescriptor(t, e).enumerable }))), n.push.apply(n, r) } return n } function ft(t) { for (var e = 1; e < arguments.length; e++) { var n = null != arguments[e] ? arguments[e] : {}; e % 2 ? st(Object(n), !0).forEach((function (e) { S()(t, e, n[e]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : st(Object(n)).forEach((function (e) { Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e)) })) } return t } function lt(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var ht = [1, 1, 1], dt = [1, 1, 1, 1, 1], pt = [1, 1, 2], vt = [[3, 2, 1, 1], [2, 2, 2, 1], [2, 1, 2, 2], [1, 4, 1, 1], [1, 1, 3, 2], [1, 2, 3, 1], [1, 1, 1, 4], [1, 3, 1, 2], [1, 2, 1, 3], [3, 1, 1, 2], [1, 1, 2, 3], [1, 2, 2, 2], [2, 2, 1, 2], [1, 1, 4, 1], [2, 3, 1, 1], [1, 3, 2, 1], [4, 1, 1, 1], [2, 1, 3, 1], [3, 1, 2, 1], [2, 1, 1, 3]], yt = [0, 11, 13, 14, 19, 25, 28, 21, 22, 26], gt = function (t) { w()(n, t); var e = lt(n); function n(t, r) { var o; return y()(this, n), o = e.call(this, c()({ supplements: [] }, t), r), S()(m()(o), \"FORMAT\", \"ean_13\"), S()(m()(o), \"SINGLE_CODE_ERROR\", .7), S()(m()(o), \"STOP_PATTERN\", [1, 1, 1]), o } return x()(n, [{ key: \"_findPattern\", value: function (t, e, n, r) { var o = new Array(t.length).fill(0), i = { error: Number.MAX_VALUE, start: 0, end: 0 }, a = 0; e || (e = this._nextSet(this._row)); for (var u = !1, c = e; c < this._row.length; c++)if (this._row[c] ^ (n ? 1 : 0)) o[a] += 1; else { if (a === o.length - 1) { var s = this._matchPattern(o, t); if (s < .48 && i.error && s < i.error) return u = !0, i.error = s, i.start = c - o.reduce((function (t, e) { return t + e }), 0), i.end = c, i; if (r) { for (var f = 0; f < o.length - 2; f++)o[f] = o[f + 2]; o[o.length - 2] = 0, o[o.length - 1] = 0, a-- } } else a++; o[a] = 1, n = !n } return u ? i : null } }, { key: \"_decodeCode\", value: function (t, e) { var n = [0, 0, 0, 0], r = t, o = { error: Number.MAX_VALUE, code: -1, start: t, end: t }, i = !this._row[r], a = 0; e || (e = vt.length); for (var u = r; u < this._row.length; u++)if (this._row[u] ^ (i ? 1 : 0)) n[a]++; else { if (a === n.length - 1) { for (var c = 0; c < e; c++) { var s = this._matchPattern(n, vt[c]); o.end = u, s < o.error && (o.code = c, o.error = s) } return o.error > .48 ? null : o } n[++a] = 1, i = !i } return null } }, { key: \"_findStart\", value: function () { for (var t = this._nextSet(this._row), e = null; !e;) { if (!(e = this._findPattern(ht, t, !1, !0))) return null; var n = e.start - (e.end - e.start); if (n >= 0 && this._matchRange(n, e.start, 0)) return e; t = e.end, e = null } return null } }, { key: \"_calculateFirstDigit\", value: function (t) { for (var e = 0; e < yt.length; e++)if (t === yt[e]) return e; return null } }, { key: \"_decodePayload\", value: function (t, e, n) { for (var r = ft({}, t), o = 0, i = 0; i < 6; i++) { if (!(r = this._decodeCode(r.end))) return null; r.code >= 10 ? (r.code -= 10, o |= 1 << 5 - i) : o |= 0 << 5 - i, e.push(r.code), n.push(r) } var a = this._calculateFirstDigit(o); if (null === a) return null; e.unshift(a); var u = this._findPattern(dt, r.end, !0, !1); if (null === u || !u.end) return null; n.push(u); for (var c = 0; c < 6; c++) { if (!(u = this._decodeCode(u.end, 10))) return null; n.push(u), e.push(u.code) } return u } }, { key: \"_verifyTrailingWhitespace\", value: function (t) { var e = t.end + (t.end - t.start); return e < this._row.length && this._matchRange(t.end, e, 0) ? t : null } }, { key: \"_findEnd\", value: function (t, e) { var n = this._findPattern(this.STOP_PATTERN, t, e, !1); return null !== n ? this._verifyTrailingWhitespace(n) : null } }, { key: \"_checksum\", value: function (t) { for (var e = 0, n = t.length - 2; n >= 0; n -= 2)e += t[n]; e *= 3; for (var r = t.length - 1; r >= 0; r -= 2)e += t[r]; return e % 10 == 0 } }, { key: \"_decodeExtensions\", value: function (t) { var e = this._nextSet(this._row, t), n = this._findPattern(pt, e, !1, !1); if (null === n) return null; for (var r = 0; r < this.supplements.length; r++)try { var o = this.supplements[r].decode(this._row, n.end); if (null !== o) return { code: o.code, start: e, startInfo: n, end: o.end, decodedCodes: o.decodedCodes, format: this.supplements[r].FORMAT } } catch (t) { console.error(\"* decodeExtensions error in \", this.supplements[r], \": \", t) } return null } }, { key: \"decode\", value: function (t, e) { var n = new Array, r = new Array, o = {}, i = this._findStart(); if (!i) return null; var a = { start: i.start, end: i.end }; if (r.push(a), !(a = this._decodePayload(a, n, r))) return null; if (!(a = this._findEnd(a.end, !1))) return null; if (r.push(a), !this._checksum(n)) return null; if (this.supplements.length > 0) { var u = this._decodeExtensions(a.end); if (!u) return null; if (!u.decodedCodes) return null; var c = u.decodedCodes[u.decodedCodes.length - 1], s = { start: c.start + ((c.end - c.start) / 2 | 0), end: c.end }; if (!this._verifyTrailingWhitespace(s)) return null; o = { supplement: u, code: n.join(\"\") + u.code } } return ft(ft({ code: n.join(\"\"), start: i.start, end: a.end, startInfo: i, decodedCodes: r }, o), {}, { format: this.FORMAT }) } }]), n }(k); function xt(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var _t = function (t) { w()(n, t); var e = xt(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"FORMAT\", \"ean_2\"), t } return x()(n, [{ key: \"decode\", value: function (t, e) { t && (this._row = t); var n = 0, r = e, o = this._row.length, i = [], a = [], u = null; if (void 0 === r) return null; for (var c = 0; c < 2 && r < o; c++) { if (!(u = this._decodeCode(r))) return null; a.push(u), i.push(u.code % 10), u.code >= 10 && (n |= 1 << 1 - c), 1 !== c && (r = this._nextSet(this._row, u.end), r = this._nextUnset(this._row, r)) } if (2 !== i.length || parseInt(i.join(\"\")) % 4 !== n) return null; var s = this._findStart(); return { code: i.join(\"\"), decodedCodes: a, end: u.end, format: this.FORMAT, startInfo: s, start: s.start } } }]), n }(gt); function mt(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var bt = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5]; var wt = function (t) { w()(n, t); var e = mt(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"FORMAT\", \"ean_5\"), t } return x()(n, [{ key: \"decode\", value: function (t, e) { if (void 0 === e) return null; t && (this._row = t); for (var n = 0, r = e, o = this._row.length, i = null, a = [], u = [], c = 0; c < 5 && r < o; c++) { if (!(i = this._decodeCode(r))) return null; u.push(i), a.push(i.code % 10), i.code >= 10 && (n |= 1 << 4 - c), 4 !== c && (r = this._nextSet(this._row, i.end), r = this._nextUnset(this._row, r)) } if (5 !== a.length) return null; if (function (t) { for (var e = t.length, n = 0, r = e - 2; r >= 0; r -= 2)n += t[r]; n *= 3; for (var o = e - 1; o >= 0; o -= 2)n += t[o]; return (n *= 3) % 10 }(a) !== function (t) { for (var e = 0; e < 10; e++)if (t === bt[e]) return e; return null }(n)) return null; var s = this._findStart(); return { code: a.join(\"\"), decodedCodes: u, end: i.end, format: this.FORMAT, startInfo: s, start: s.start } } }]), n }(gt); function Ot(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var Rt = function (t) { w()(n, t); var e = Ot(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"FORMAT\", \"ean_8\"), t } return x()(n, [{ key: \"_decodePayload\", value: function (t, e, n) { for (var r = t, o = 0; o < 4; o++) { if (!(r = this._decodeCode(r.end, 10))) return null; e.push(r.code), n.push(r) } if (null === (r = this._findPattern(dt, r.end, !0, !1))) return null; n.push(r); for (var i = 0; i < 4; i++) { if (!(r = this._decodeCode(r.end, 10))) return null; n.push(r), e.push(r.code) } return r } }]), n }(gt); function Ct(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var Et = function (t) { w()(n, t); var e = Ct(n); function n(t) { var r; return y()(this, n), r = e.call(this, c()({ normalizeBarSpaceWidth: !1 }, t)), S()(m()(r), \"barSpaceRatio\", [1, 1]), S()(m()(r), \"SINGLE_CODE_ERROR\", .78), S()(m()(r), \"AVG_CODE_ERROR\", .38), S()(m()(r), \"START_PATTERN\", [1, 1, 1, 1]), S()(m()(r), \"STOP_PATTERN\", [1, 1, 3]), S()(m()(r), \"CODE_PATTERN\", [[1, 1, 3, 3, 1], [3, 1, 1, 1, 3], [1, 3, 1, 1, 3], [3, 3, 1, 1, 1], [1, 1, 3, 1, 3], [3, 1, 3, 1, 1], [1, 3, 3, 1, 1], [1, 1, 1, 3, 3], [3, 1, 1, 3, 1], [1, 3, 1, 3, 1]]), S()(m()(r), \"MAX_CORRECTION_FACTOR\", 5), S()(m()(r), \"FORMAT\", \"i2of5\"), t.normalizeBarSpaceWidth && (r.SINGLE_CODE_ERROR = .38, r.AVG_CODE_ERROR = .09), r.config = t, R()(r, m()(r)) } return x()(n, [{ key: \"_matchPattern\", value: function (t, e) { if (this.config.normalizeBarSpaceWidth) { for (var r = [0, 0], o = [0, 0], i = [0, 0], a = this.MAX_CORRECTION_FACTOR, u = 1 / a, c = 0; c < t.length; c++)r[c % 2] += t[c], o[c % 2] += e[c]; i[0] = o[0] / r[0], i[1] = o[1] / r[1], i[0] = Math.max(Math.min(i[0], a), u), i[1] = Math.max(Math.min(i[1], a), u), this.barSpaceRatio = i; for (var s = 0; s < t.length; s++)t[s] *= this.barSpaceRatio[s % 2] } return G()(E()(n.prototype), \"_matchPattern\", this).call(this, t, e) } }, { key: \"_findPattern\", value: function (t, e) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], o = new Array(t.length).fill(0), i = 0, a = { error: Number.MAX_VALUE, start: 0, end: 0 }, u = this.AVG_CODE_ERROR; n = n || !1, r = r || !1, e || (e = this._nextSet(this._row)); for (var c = e; c < this._row.length; c++)if (this._row[c] ^ (n ? 1 : 0)) o[i]++; else { if (i === o.length - 1) { var s = o.reduce((function (t, e) { return t + e }), 0), f = this._matchPattern(o, t); if (f < u) return a.error = f, a.start = c - s, a.end = c, a; if (!r) return null; for (var l = 0; l < o.length - 2; l++)o[l] = o[l + 2]; o[o.length - 2] = 0, o[o.length - 1] = 0, i-- } else i++; o[i] = 1, n = !n } return null } }, { key: \"_findStart\", value: function () { for (var t = 0, e = this._nextSet(this._row), n = null, r = 1; !n;) { if (!(n = this._findPattern(this.START_PATTERN, e, !1, !0))) return null; if (r = Math.floor((n.end - n.start) / 4), (t = n.start - 10 * r) >= 0 && this._matchRange(t, n.start, 0)) return n; e = n.end, n = null } return null } }, { key: \"_verifyTrailingWhitespace\", value: function (t) { var e = t.end + (t.end - t.start) / 2; return e < this._row.length && this._matchRange(t.end, e, 0) ? t : null } }, { key: \"_findEnd\", value: function () { this._row.reverse(); var t = this._findPattern(this.STOP_PATTERN); if (this._row.reverse(), null === t) return null; var e = t.start; return t.start = this._row.length - t.end, t.end = this._row.length - e, null !== t ? this._verifyTrailingWhitespace(t) : null } }, { key: \"_decodePair\", value: function (t) { for (var e = [], n = 0; n < t.length; n++) { var r = this._decodeCode(t[n]); if (!r) return null; e.push(r) } return e } }, { key: \"_decodeCode\", value: function (t) { for (var e = this.AVG_CODE_ERROR, n = { error: Number.MAX_VALUE, code: -1, start: 0, end: 0 }, r = 0; r < this.CODE_PATTERN.length; r++) { var o = this._matchPattern(t, this.CODE_PATTERN[r]); o < n.error && (n.code = r, n.error = o) } return n.error < e ? n : null } }, { key: \"_decodePayload\", value: function (t, e, n) { for (var r = 0, o = t.length, i = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]], a = null; r < o;) { for (var u = 0; u < 5; u++)i[0][u] = t[r] * this.barSpaceRatio[0], i[1][u] = t[r + 1] * this.barSpaceRatio[1], r += 2; if (!(a = this._decodePair(i))) return null; for (var c = 0; c < a.length; c++)e.push(a[c].code + \"\"), n.push(a[c]) } return a } }, { key: \"_verifyCounterLength\", value: function (t) { return t.length % 10 == 0 } }, { key: \"decode\", value: function (t, e) { var n = new Array, r = new Array, o = this._findStart(); if (!o) return null; r.push(o); var i = this._findEnd(); if (!i) return null; var a = this._fillCounters(o.end, i.start, !1); return this._verifyCounterLength(a) && this._decodePayload(a, n, r) ? n.length % 2 != 0 || n.length < 6 ? null : (r.push(i), { code: n.join(\"\"), start: o.start, end: i.end, startInfo: o, decodedCodes: r, format: this.FORMAT }) : null } }]), n }(k); function Mt(t, e) { var n = Object.keys(t); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(t); e && (r = r.filter((function (e) { return Object.getOwnPropertyDescriptor(t, e).enumerable }))), n.push.apply(n, r) } return n } function St(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var At = function (t) { w()(n, t); var e = St(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"CODE_FREQUENCY\", [[56, 52, 50, 49, 44, 38, 35, 42, 41, 37], [7, 11, 13, 14, 19, 25, 28, 21, 22, 26]]), S()(m()(t), \"STOP_PATTERN\", [1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7]), S()(m()(t), \"FORMAT\", \"upc_e\"), t } return x()(n, [{ key: \"_decodePayload\", value: function (t, e, n) { for (var r = function (t) { for (var e = 1; e < arguments.length; e++) { var n = null != arguments[e] ? arguments[e] : {}; e % 2 ? Mt(Object(n), !0).forEach((function (e) { S()(t, e, n[e]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : Mt(Object(n)).forEach((function (e) { Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e)) })) } return t }({}, t), o = 0, i = 0; i < 6; i++) { if (!(r = this._decodeCode(r.end))) return null; r.code >= 10 && (r.code = r.code - 10, o |= 1 << 5 - i), e.push(r.code), n.push(r) } return this._determineParity(o, e) ? r : null } }, { key: \"_determineParity\", value: function (t, e) { for (var n = 0; n < this.CODE_FREQUENCY.length; n++)for (var r = 0; r < this.CODE_FREQUENCY[n].length; r++)if (t === this.CODE_FREQUENCY[n][r]) return e.unshift(n), e.push(r), !0; return !1 } }, { key: \"_convertToUPCA\", value: function (t) { var e = [t[0]], n = t[t.length - 2]; return (e = n <= 2 ? e.concat(t.slice(1, 3)).concat([n, 0, 0, 0, 0]).concat(t.slice(3, 6)) : 3 === n ? e.concat(t.slice(1, 4)).concat([0, 0, 0, 0, 0]).concat(t.slice(4, 6)) : 4 === n ? e.concat(t.slice(1, 5)).concat([0, 0, 0, 0, 0, t[5]]) : e.concat(t.slice(1, 6)).concat([0, 0, 0, 0, n])).push(t[t.length - 1]), e } }, { key: \"_checksum\", value: function (t) { return G()(E()(n.prototype), \"_checksum\", this).call(this, this._convertToUPCA(t)) } }, { key: \"_findEnd\", value: function (t, e) { return G()(E()(n.prototype), \"_findEnd\", this).call(this, t, !0) } }, { key: \"_verifyTrailingWhitespace\", value: function (t) { var e = t.end + (t.end - t.start) / 2; return e < this._row.length && this._matchRange(t.end, e, 0) ? t : null } }]), n }(gt); function kt(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var Pt = function (t) { w()(n, t); var e = kt(n); function n() { var t; y()(this, n); for (var r = arguments.length, o = new Array(r), i = 0; i < r; i++)o[i] = arguments[i]; return t = e.call.apply(e, [this].concat(o)), S()(m()(t), \"FORMAT\", \"upc_a\"), t } return x()(n, [{ key: \"decode\", value: function (t, e) { var n = gt.prototype.decode.call(this); return n && n.code && 13 === n.code.length && \"0\" === n.code.charAt(0) ? (n.code = n.code.substring(1), n) : null } }]), n }(gt), Dt = {}, Tt = { UP: 1, DOWN: -1 }; Dt.getBarcodeLine = function (t, e, n) { var r, o, i, a, u, c = 0 | e.x, s = 0 | e.y, f = 0 | n.x, l = 0 | n.y, h = Math.abs(l - s) > Math.abs(f - c), d = [], p = t.data, v = t.size.x, y = 255, g = 0; function x(t, e) { u = p[e * v + t], y = u < y ? u : y, g = u > g ? u : g, d.push(u) } h && (i = c, c = s, s = i, i = f, f = l, l = i), c > f && (i = c, c = f, f = i, i = s, s = l, l = i); var _ = f - c, m = Math.abs(l - s); r = _ / 2 | 0, o = s; var b = s < l ? 1 : -1; for (a = c; a < f; a++)h ? x(o, a) : x(a, o), (r -= m) < 0 && (o += b, r += _); return { line: d, min: y, max: g } }, Dt.toBinaryLine = function (t) { var e, n, r, o, i, a, u = t.min, c = t.max, s = t.line, f = u + (c - u) / 2, l = [], h = (c - u) / 12, d = -h; for (r = s[0] > f ? Tt.UP : Tt.DOWN, l.push({ pos: 0, val: s[0] }), i = 0; i < s.length - 2; i++)r !== (o = (e = s[i + 1] - s[i]) + (n = s[i + 2] - s[i + 1]) < d && s[i + 1] < 1.5 * f ? Tt.DOWN : e + n > h && s[i + 1] > .5 * f ? Tt.UP : r) && (l.push({ pos: i, val: s[i] }), r = o); for (l.push({ pos: s.length, val: s[s.length - 1] }), a = l[0].pos; a < l[1].pos; a++)s[a] = s[a] > f ? 0 : 1; for (i = 1; i < l.length - 1; i++)for (h = l[i + 1].val > l[i].val ? l[i].val + (l[i + 1].val - l[i].val) / 3 * 2 | 0 : l[i + 1].val + (l[i].val - l[i + 1].val) / 3 | 0, a = l[i].pos; a < l[i + 1].pos; a++)s[a] = s[a] > h ? 0 : 1; return { line: s, threshold: h } }, Dt.debug = { printFrequency: function (t, e) { var n, r = e.getContext(\"2d\"); for (e.width = t.length, e.height = 256, r.beginPath(), r.strokeStyle = \"blue\", n = 0; n < t.length; n++)r.moveTo(n, 255), r.lineTo(n, 255 - t[n]); r.stroke(), r.closePath() }, printPattern: function (t, e) { var n, r = e.getContext(\"2d\"); for (e.width = t.length, r.fillColor = \"black\", n = 0; n < t.length; n++)1 === t[n] && r.fillRect(n, 0, 1, 100) } }; var jt = Dt; function It(t, e) { var n = \"undefined\" != typeof Symbol && t[Symbol.iterator] || t[\"@@iterator\"]; if (!n) { if (Array.isArray(t) || (n = function (t, e) { if (!t) return; if (\"string\" == typeof t) return zt(t, e); var n = Object.prototype.toString.call(t).slice(8, -1); \"Object\" === n && t.constructor && (n = t.constructor.name); if (\"Map\" === n || \"Set\" === n) return Array.from(t); if (\"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return zt(t, e) }(t)) || e && t && \"number\" == typeof t.length) { n && (t = n); var r = 0, o = function () { }; return { s: o, n: function () { return r >= t.length ? { done: !0 } : { done: !1, value: t[r++] } }, e: function (t) { throw t }, f: o } } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\") } var i, a = !0, u = !1; return { s: function () { n = n.call(t) }, n: function () { var t = n.next(); return a = t.done, t }, e: function (t) { u = !0, i = t }, f: function () { try { a || null == n.return || n.return() } finally { if (u) throw i } } } } function zt(t, e) { (null == e || e > t.length) && (e = t.length); for (var n = 0, r = new Array(e); n < e; n++)r[n] = t[n]; return r } var Ut = { code_128_reader: V, ean_reader: gt, ean_5_reader: wt, ean_2_reader: _t, ean_8_reader: Rt, code_39_reader: Z, code_39_vin_reader: ot, codabar_reader: W, upc_reader: Pt, upc_e_reader: At, i2of5_reader: Et, \"2of5_reader\": z, code_93_reader: ct, code_32_reader: tt }, Lt = { registerReader: function (t, e) { Ut[t] = e }, create: function (t, e) { var n = { frequency: null, pattern: null, overlay: null }, r = []; function o() { t.readers.forEach((function (t) { var e, n = {}, o = []; \"object\" === a()(t) ? (e = t.format, n = t.config) : \"string\" == typeof t && (e = t), n.supplements && (o = n.supplements.map((function (t) { return new Ut[t] }))); try { var i = new Ut[e](n, o); r.push(i) } catch (t) { throw console.error(\"* Error constructing reader \", e, t), t } })) } function i(t) { var n, o = null, i = jt.getBarcodeLine(e, t[0], t[1]); for (jt.toBinaryLine(i), n = 0; n < r.length && null === o; n++)o = r[n].decodePattern(i.line); return null === o ? null : { codeResult: o, barcodeLine: i } } function u(t) { return c.apply(this, arguments) } function c() { return (c = l()(d.a.mark((function t(e) { var n, o, i, a; return d.a.wrap((function (t) { for (; ;)switch (t.prev = t.next) { case 0: n = null, o = It(r), t.prev = 2, o.s(); case 4: if ((i = o.n()).done) { t.next = 14; break } if (!(a = i.value).decodeImage) { t.next = 12; break } return t.next = 9, a.decodeImage(e); case 9: if (!(n = t.sent)) { t.next = 12; break } return t.abrupt(\"break\", 14); case 12: t.next = 4; break; case 14: t.next = 19; break; case 16: t.prev = 16, t.t0 = t.catch(2), o.e(t.t0); case 19: return t.prev = 19, o.f(), t.finish(19); case 22: return t.abrupt(\"return\", n); case 23: case \"end\": return t.stop() } }), t, null, [[2, 16, 19, 22]]) })))).apply(this, arguments) } function s(t) { var r, o; n.overlay; var a = function (t) { return Math.sqrt(Math.pow(Math.abs(t[1].y - t[0].y), 2) + Math.pow(Math.abs(t[1].x - t[0].x), 2)) }(r = function (t) { return [{ x: (t[1][0] - t[0][0]) / 2 + t[0][0], y: (t[1][1] - t[0][1]) / 2 + t[0][1] }, { x: (t[3][0] - t[2][0]) / 2 + t[2][0], y: (t[3][1] - t[2][1]) / 2 + t[2][1] }] }(t)), u = Math.atan2(r[1].y - r[0].y, r[1].x - r[0].x); return null === (r = function (t, n, r) { function o(e) { var r = e * Math.sin(n), o = e * Math.cos(n); t[0].y -= r, t[0].x -= o, t[1].y += r, t[1].x += o } for (o(r); r > 1 && (!e.inImageWithBorder(t[0]) || !e.inImageWithBorder(t[1]));)o(-(r -= Math.ceil(r / 2))); return t }(r, u, Math.floor(.1 * a))) ? null : (null === (o = i(r)) && (o = function (t, e, n) { var r, o, a, u = Math.sqrt(Math.pow(t[1][0] - t[0][0], 2) + Math.pow(t[1][1] - t[0][1], 2)), c = null, s = Math.sin(n), f = Math.cos(n); for (r = 1; r < 16 && null === c; r++)a = { y: (o = u / 16 * r * (r % 2 == 0 ? -1 : 1)) * s, x: o * f }, e[0].y += a.x, e[0].x -= a.y, e[1].y += a.x, e[1].x -= a.y, c = i(e); return c }(t, r, u)), null === o ? null : { codeResult: o.codeResult, line: r, angle: u, pattern: o.barcodeLine.line, threshold: o.barcodeLine.threshold }) } return o(), { decodeFromBoundingBox: function (t) { return s(t) }, decodeFromBoundingBoxes: function (e) { var n, r, o = [], i = t.multiple; for (n = 0; n < e.length; n++) { var a = e[n]; if ((r = s(a) || {}).box = a, i) o.push(r); else if (r.codeResult) return r } return { barcodes: o } }, decodeFromImage: function (t) { return l()(d.a.mark((function e() { var n; return d.a.wrap((function (e) { for (; ;)switch (e.prev = e.next) { case 0: return e.next = 2, u(t); case 2: return n = e.sent, e.abrupt(\"return\", n); case 4: case \"end\": return e.stop() } }), e) })))() }, registerReader: function (t, e) { if (Ut[t]) throw new Error(\"cannot register existing reader\", t); Ut[t] = e }, setReaders: function (e) { t.readers = e, r.length = 0, o() } } } }, Nt = function () { var t = {}; function e(e) { return t[e] || (t[e] = { subscribers: [] }), t[e] } function n(t, e) { t.async ? setTimeout((function () { t.callback(e) }), 4) : t.callback(e) } function r(t, n, r) { var o; if (\"function\" == typeof n) o = { callback: n, async: r }; else if (!(o = n).callback) throw new Error(\"Callback was not specified on options\"); e(t).subscribers.push(o) } return { subscribe: function (t, e, n) { return r(t, e, n) }, publish: function (t, r) { var o = e(t), i = o.subscribers; i.filter((function (t) { return !!t.once })).forEach((function (t) { n(t, r) })), o.subscribers = i.filter((function (t) { return !t.once })), o.subscribers.forEach((function (t) { n(t, r) })) }, once: function (t, e) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; r(t, { callback: e, async: n, once: !0 }) }, unsubscribe: function (n, r) { if (n) { var o = e(n); o.subscribers = o && r ? o.subscribers.filter((function (t) { return t.callback !== r })) : [] } else t = {} } } }(), Bt = n(85), Wt = n.n(Bt), Ft = n(86); function Vt(t) { var e = function () { if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if (\"function\" == typeof Proxy) return !0; try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () { }))), !0 } catch (t) { return !1 } }(); return function () { var n, r = E()(t); if (e) { var o = E()(this).constructor; n = Reflect.construct(r, arguments, o) } else n = r.apply(this, arguments); return R()(this, n) } } var qt, Gt = function (t) { w()(n, t); var e = Vt(n); function n(t, r) { var o; return y()(this, n), o = e.call(this, t), S()(m()(o), \"code\", void 0), o.code = r, Object.setPrototypeOf(m()(o), n.prototype), o } return x()(n) }(n.n(Ft)()(Error)), Ht = \"This may mean that the user has declined camera access, or the browser does not support media APIs. If you are running in iOS, you must use Safari.\"; function Xt() { try { return navigator.mediaDevices.enumerateDevices() } catch (e) { var t = new Gt(\"enumerateDevices is not defined. \".concat(Ht), -1); return Promise.reject(t) } } function Qt(t) { try { return navigator.mediaDevices.getUserMedia(t) } catch (t) { var e = new Gt(\"getUserMedia is not defined. \".concat(Ht), -1); return Promise.reject(e) } } function Yt(t) { return new Promise((function (e, n) { var r = 10; !function o() { r > 0 ? t.videoWidth > 10 && t.videoHeight > 10 ? e() : window.setTimeout(o, 500) : n(new Gt(\"Unable to play video stream. Is webcam working?\", -1)), r-- }() })) } function $t(t, e) { return Zt.apply(this, arguments) } function Zt() { return (Zt = l()(d.a.mark((function t(e, n) { var r; return d.a.wrap((function (t) { for (; ;)switch (t.prev = t.next) { case 0: return t.next = 2, Qt(n); case 2: if (r = t.sent, qt = r, !e) { t.next = 11; break } return e.setAttribute(\"autoplay\", \"true\"), e.setAttribute(\"muted\", \"true\"), e.setAttribute(\"playsinline\", \"true\"), e.srcObject = r, e.addEventListener(\"loadedmetadata\", (function () { e.play() })), t.abrupt(\"return\", Yt(e)); case 11: return t.abrupt(\"return\", Promise.resolve()); case 12: case \"end\": return t.stop() } }), t) })))).apply(this, arguments) } function Kt(t) { var e = Wt()(t, [\"width\", \"height\", \"facingMode\", \"aspectRatio\", \"deviceId\"]); return void 0 !== t.minAspectRatio && t.minAspectRatio > 0 && (e.aspectRatio = t.minAspectRatio, console.log(\"WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead\")), void 0 !== t.facing && (e.facingMode = t.facing, console.log(\"WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'\")), e } function Jt() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, e = Kt(t); return e && e.deviceId && e.facingMode && delete e.facingMode, Promise.resolve({ audio: !1, video: e }) } function te() { return (te = l()(d.a.mark((function t() { var e; return d.a.wrap((function (t) { for (; ;)switch (t.prev = t.next) { case 0: return t.next = 2, Xt(); case 2: return e = t.sent, t.abrupt(\"return\", e.filter((function (t) { return \"videoinput\" === t.kind }))); case 4: case \"end\": return t.stop() } }), t) })))).apply(this, arguments) } function ee() { if (!qt) return null; var t = qt.getVideoTracks(); return t && null != t && t.length ? t[0] : null } var ne = { requestedVideoElement: null, request: function (t, e) { return l()(d.a.mark((function n() { var r; return d.a.wrap((function (n) { for (; ;)switch (n.prev = n.next) { case 0: return ne.requestedVideoElement = t, n.next = 3, Jt(e); case 3: return r = n.sent, n.abrupt(\"return\", $t(t, r)); case 5: case \"end\": return n.stop() } }), n) })))() }, release: function () { var t = qt && qt.getVideoTracks(); return null !== ne.requestedVideoElement && ne.requestedVideoElement.pause(), new Promise((function (e) { setTimeout((function () { t && t.length && t[0].stop(), qt = null, ne.requestedVideoElement = null, e() }), 0) })) }, enumerateVideoDevices: function () { return te.apply(this, arguments) }, getActiveStreamLabel: function () { var t = ee(); return t ? t.label : \"\" }, getActiveTrack: ee }, re = ne; var oe = { create: function (t) { var e, n = document.createElement(\"canvas\"), r = n.getContext(\"2d\"), o = [], i = null !== (e = t.capacity) && void 0 !== e ? e : 20, a = !0 === t.capture; function u(e) { return !!i && e && !function (t, e) { return e && e.some((function (e) { return Object.keys(e).every((function (n) { return e[n] === t[n] })) })) }(e, t.blacklist) && function (t, e) { return \"function\" != typeof e || e(t) }(e, t.filter) } return { addResult: function (t, e, c) { var s = {}; u(c) && (i--, s.codeResult = c, a && (n.width = e.x, n.height = e.y, p.a.drawImage(t, e, r), s.frame = n.toDataURL()), o.push(s)) }, getResults: function () { return o } } } }, ie = { inputStream: { name: \"Live\", type: \"LiveStream\", constraints: { width: 640, height: 480, facingMode: \"environment\" }, area: { top: \"0%\", right: \"0%\", left: \"0%\", bottom: \"0%\" }, singleChannel: !1 }, locate: !0, numOfWorkers: 4, decoder: { readers: [\"code_128_reader\"] }, locator: { halfSample: !0, patchSize: \"medium\" } }, ae = n(7), ue = x()((function t() { y()(this, t), S()(this, \"config\", void 0), S()(this, \"inputStream\", void 0), S()(this, \"framegrabber\", void 0), S()(this, \"inputImageWrapper\", void 0), S()(this, \"stopped\", !1), S()(this, \"boxSize\", void 0), S()(this, \"resultCollector\", void 0), S()(this, \"decoder\", void 0), S()(this, \"workerPool\", []), S()(this, \"onUIThread\", !0), S()(this, \"canvasContainer\", new se) })), ce = x()((function t() { y()(this, t), S()(this, \"image\", void 0), S()(this, \"overlay\", void 0) })), se = x()((function t() { y()(this, t), S()(this, \"ctx\", void 0), S()(this, \"dom\", void 0), this.ctx = new ce, this.dom = new ce })), fe = n(23); function le(t) { if (\"undefined\" == typeof document) return null; if (t instanceof HTMLElement && t.nodeName && 1 === t.nodeType) return t; var e = \"string\" == typeof t ? t : \"#interactive.viewport\"; return document.querySelector(e) } function he(t, e) { var n = function (t, e) { var n = document.querySelector(t); return n || ((n = document.createElement(\"canvas\")).className = e), n }(t, e), r = n.getContext(\"2d\"); return { canvas: n, context: r } } function de(t) { var e, n, r, o, i = le(null == t || null === (e = t.config) || void 0 === e || null === (n = e.inputStream) || void 0 === n ? void 0 : n.target), a = null == t || null === (r = t.config) || void 0 === r || null === (o = r.inputStream) || void 0 === o ? void 0 : o.type; if (!a) return null; var u = function (t) { if (\"undefined\" != typeof document) { var e = he(\"canvas.imgBuffer\", \"imgBuffer\"), n = he(\"canvas.drawingBuffer\", \"drawingBuffer\"); return e.canvas.width = n.canvas.width = t.x, e.canvas.height = n.canvas.height = t.y, { dom: { image: e.canvas, overlay: n.canvas }, ctx: { image: e.context, overlay: n.context } } } return null }(t.inputStream.getCanvasSize()); if (!u) return { dom: { image: null, overlay: null }, ctx: { image: null, overlay: null } }; var c = u.dom; return \"undefined\" != typeof document && i && (\"ImageStream\" !== a || i.contains(c.image) || i.appendChild(c.image), i.contains(c.overlay) || i.appendChild(c.overlay)), u } var pe = { 274: \"orientation\" }, ve = Object.keys(pe).map((function (t) { return pe[t] })); function ye(t) { return new Promise((function (e) { var n = new FileReader; n.onload = function (t) { return e(t.target.result) }, n.readAsArrayBuffer(t) })) } function ge(t) { return new Promise((function (e, n) { var r = new XMLHttpRequest; r.open(\"GET\", t, !0), r.responseType = \"blob\", r.onreadystatechange = function () { r.readyState !== XMLHttpRequest.DONE || 200 !== r.status && 0 !== r.status || e(this.response) }, r.onerror = n, r.send() })) } function xe(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ve, n = new DataView(t), r = t.byteLength, o = e.reduce((function (t, e) { var n = Object.keys(pe).filter((function (t) { return pe[t] === e }))[0]; return n && (t[n] = e), t }), {}), i = 2; if (255 !== n.getUint8(0) || 216 !== n.getUint8(1)) return !1; for (; i < r;) { if (255 !== n.getUint8(i)) return !1; if (225 === n.getUint8(i + 1)) return _e(n, i + 4, o); i += 2 + n.getUint16(i + 2) } return !1 } function _e(t, e, n) { if (\"Exif\" !== function (t, e, n) { for (var r = \"\", o = e; o < e + n; o++)r += String.fromCharCode(t.getUint8(o)); return r }(t, e, 4)) return !1; var r, o = e + 6; if (18761 === t.getUint16(o)) r = !1; else { if (19789 !== t.getUint16(o)) return !1; r = !0 } if (42 !== t.getUint16(o + 2, !r)) return !1; var i = t.getUint32(o + 4, !r); return !(i < 8) && function (t, e, n, r, o) { for (var i = t.getUint16(n, !o), a = {}, u = 0; u < i; u++) { var c = n + 12 * u + 2, s = r[t.getUint16(c, !o)]; s && (a[s] = me(t, c, e, n, o)) } return a }(t, o, o + i, n, r) } function me(t, e, n, r, o) { var i = t.getUint16(e + 2, !o), a = t.getUint32(e + 4, !o); switch (i) { case 3: if (1 === a) return t.getUint16(e + 8, !o) }return null } var be = {}; function we(t, e) { t.onload = function () { e.loaded(this) } } be.load = function (t, e, n, r, o) { var i, a, u, c = new Array(r), s = new Array(c.length); if (!1 === o) c[0] = t; else for (i = 0; i < c.length; i++)u = n + i, c[i] = \"\".concat(t, \"image-\").concat(\"00\".concat(u).slice(-3), \".jpg\"); for (s.notLoaded = [], s.addImage = function (t) { s.notLoaded.push(t) }, s.loaded = function (n) { for (var r = s.notLoaded, i = 0; i < r.length; i++)if (r[i] === n) { r.splice(i, 1); for (var a = 0; a < c.length; a++) { var u = c[a].substr(c[a].lastIndexOf(\"/\")); if (-1 !== n.src.lastIndexOf(u)) { s[a] = { img: n }; break } } break } 0 === r.length && (!1 === o ? function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ve; return /^blob:/i.test(t) ? ge(t).then(ye).then((function (t) { return xe(t, e) })) : Promise.resolve(null) }(t, [\"orientation\"]).then((function (t) { s[0].tags = t, e(s) })).catch((function (t) { console.log(t), e(s) })) : e(s)) }, i = 0; i < c.length; i++)a = new Image, s.addImage(a), we(a, s), a.src = c[i] }; var Oe = be, Re = { createVideoStream: function (t) { var e, n, r = null, o = [\"canrecord\", \"ended\"], i = {}, a = { x: 0, y: 0, type: \"Point\" }, u = { x: 0, y: 0, type: \"XYSize\" }; var c = { getRealWidth: function () { return t.videoWidth }, getRealHeight: function () { return t.videoHeight }, getWidth: function () { return e }, getHeight: function () { return n }, setWidth: function (t) { e = t }, setHeight: function (t) { n = t }, setInputStream: function (t) { r = t, this.setAttribute(\"src\", void 0 !== t.src ? t.src : \"\") }, ended: function () { return t.ended }, getConfig: function () { return r }, setAttribute: function (e, n) { t && t.setAttribute(e, n) }, pause: function () { t.pause() }, play: function () { t.play() }, setCurrentTime: function (t) { var e; \"LiveStream\" !== (null === (e = r) || void 0 === e ? void 0 : e.type) && this.setAttribute(\"currentTime\", t.toString()) }, addEventListener: function (e, n, r) { -1 !== o.indexOf(e) ? (i[e] || (i[e] = []), i[e].push(n)) : t.addEventListener(e, n, r) }, clearEventHandlers: function () { o.forEach((function (e) { var n = i[e]; n && n.length > 0 && n.forEach((function (n) { t.removeEventListener(e, n) })) })) }, trigger: function (o, a) { var s, f, l, h, d, p = i[o]; if (\"canrecord\" === o && (h = t.videoWidth, d = t.videoHeight, e = null !== (f = r) && void 0 !== f && f.size ? h / d > 1 ? r.size : Math.floor(h / d * r.size) : h, n = null !== (l = r) && void 0 !== l && l.size ? h / d > 1 ? Math.floor(d / h * r.size) : r.size : d, u.x = e, u.y = n), p && p.length > 0) for (s = 0; s < p.length; s++)p[s].apply(c, a) }, setTopRight: function (t) { a.x = t.x, a.y = t.y }, getTopRight: function () { return a }, setCanvasSize: function (t) { u.x = t.x, u.y = t.y }, getCanvasSize: function () { return u }, getFrame: function () { return t } }; return c }, createLiveStream: function (t) { t && t.setAttribute(\"autoplay\", \"true\"); var e = Re.createVideoStream(t); return e.ended = function () { return !1 }, e }, createImageStream: function () { var t, e, n = null, r = 0, o = 0, i = 0, a = !0, u = !1, c = null, s = 0, f = null, l = !1, h = [\"canrecord\", \"ended\"], d = {}, p = { x: 0, y: 0, type: \"Point\" }, v = { x: 0, y: 0, type: \"XYSize\" }; function y(t, e) { var n, r = d[t]; if (r && r.length > 0) for (n = 0; n < r.length; n++)r[n].apply(g, e) } var g = { trigger: y, getWidth: function () { return t }, getHeight: function () { return e }, setWidth: function (e) { t = e }, setHeight: function (t) { e = t }, getRealWidth: function () { return r }, getRealHeight: function () { return o }, setInputStream: function (a) { var l; n = a, !1 === a.sequence ? (f = a.src, s = 1) : (f = a.src, s = a.length), u = !1, Oe.load(f, (function (a) { var s, f; if (c = a, a[0].tags && a[0].tags.orientation) switch (a[0].tags.orientation) { case 6: case 8: r = a[0].img.height, o = a[0].img.width; break; default: r = a[0].img.width, o = a[0].img.height } else r = a[0].img.width, o = a[0].img.height; t = null !== (s = n) && void 0 !== s && s.size ? r / o > 1 ? n.size : Math.floor(r / o * n.size) : r, e = null !== (f = n) && void 0 !== f && f.size ? r / o > 1 ? Math.floor(o / r * n.size) : n.size : o, v.x = t, v.y = e, u = !0, i = 0, setTimeout((function () { y(\"canrecord\", []) }), 0) }), 1, s, null === (l = n) || void 0 === l ? void 0 : l.sequence) }, ended: function () { return l }, setAttribute: function () { }, getConfig: function () { return n }, pause: function () { a = !0 }, play: function () { a = !1 }, setCurrentTime: function (t) { i = t }, addEventListener: function (t, e) { -1 !== h.indexOf(t) && (d[t] || (d[t] = []), d[t].push(e)) }, clearEventHandlers: function () { Object.keys(d).forEach((function (t) { return delete d[t] })) }, setTopRight: function (t) { p.x = t.x, p.y = t.y }, getTopRight: function () { return p }, setCanvasSize: function (t) { v.x = t.x, v.y = t.y }, getCanvasSize: function () { return v }, getFrame: function () { var t, e; if (!u) return null; a || (t = null === (e = c) || void 0 === e ? void 0 : e[i], i < s - 1 ? i++ : setTimeout((function () { l = !0, y(\"ended\", []) }), 0)); return t } }; return g } }, Ce = Re, Ee = n(10), Me = Math.PI / 180; var Se = { create: function (t, e) { var n, r = {}, o = t.getConfig(), i = (Object(Ee.h)(t.getRealWidth(), t.getRealHeight()), t.getCanvasSize()), a = Object(Ee.h)(t.getWidth(), t.getHeight()), u = t.getTopRight(), c = u.x, s = u.y, f = null, l = null; return (n = e || document.createElement(\"canvas\")).width = i.x, n.height = i.y, f = n.getContext(\"2d\"), l = new Uint8Array(a.x * a.y), r.attachData = function (t) { l = t }, r.getData = function () { return l }, r.grab = function () { var e, r = o.halfSample, u = t.getFrame(), h = u, d = 0; if (h) { if (function (t, e) { t.width !== e.x && (t.width = e.x), t.height !== e.y && (t.height = e.y) }(n, i), \"ImageStream\" === o.type && (h = u.img, u.tags && u.tags.orientation)) switch (u.tags.orientation) { case 6: d = 90 * Me; break; case 8: d = -90 * Me }return 0 !== d ? (f.translate(i.x / 2, i.y / 2), f.rotate(d), f.drawImage(h, -i.y / 2, -i.x / 2, i.y, i.x), f.rotate(-d), f.translate(-i.x / 2, -i.y / 2)) : f.drawImage(h, 0, 0, i.x, i.y), e = f.getImageData(c, s, a.x, a.y).data, r ? Object(Ee.e)(e, a, l) : Object(Ee.c)(e, l, o), !0 } return !1 }, r.getSize = function () { return a }, r } }, Ae = Se; function ke(t, e) { var n = Object.keys(t); if (Object.getOwnPropertySymbols) { var r = Object.getOwnPropertySymbols(t); e && (r = r.filter((function (e) { return Object.getOwnPropertyDescriptor(t, e).enumerable }))), n.push.apply(n, r) } return n } function Pe(t) { for (var e = 1; e < arguments.length; e++) { var n = null != arguments[e] ? arguments[e] : {}; e % 2 ? ke(Object(n), !0).forEach((function (e) { S()(t, e, n[e]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : ke(Object(n)).forEach((function (e) { Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e)) })) } return t } var De = []; function Te(t) { return Pe(Pe({}, t), {}, { inputStream: Pe(Pe({}, t.inputStream), {}, { target: null }) }) } function je(t) { if (t) { var e = t().default; if (!e) return void self.postMessage({ event: \"error\", message: \"Quagga could not be created\" }) } var n; function r(t) { self.postMessage({ event: \"processed\", imageData: n.data, result: t }, [n.data.buffer]) } function o() { self.postMessage({ event: \"initialized\", imageData: n.data }, [n.data.buffer]) } self.onmessage = function (t) { if (\"init\" === t.data.cmd) { var i = t.data.config; i.numOfWorkers = 0, n = new e.ImageWrapper({ x: t.data.size.x, y: t.data.size.y }, new Uint8Array(t.data.imageData)), e.init(i, o, n), e.onProcessed(r) } else \"process\" === t.data.cmd ? (n.data = new Uint8Array(t.data.imageData), e.start()) : \"setReaders\" === t.data.cmd ? e.setReaders(t.data.readers) : \"registerReader\" === t.data.cmd && e.registerReader(t.data.name, t.data.reader) } } function Ie(t, e, n) { var r, o, i = (\"undefined\" != typeof __factorySource__ && (o = __factorySource__), r = new Blob([\"(\" + je.toString() + \")(\" + o + \");\"], { type: \"text/javascript\" }), window.URL.createObjectURL(r)), a = { worker: new Worker(i), imageData: new Uint8Array(e.getWidth() * e.getHeight()), busy: !0 }; a.worker.onmessage = function (t) { \"initialized\" === t.data.event ? (URL.revokeObjectURL(i), a.busy = !1, a.imageData = new Uint8Array(t.data.imageData), n(a)) : \"processed\" === t.data.event ? (a.imageData = new Uint8Array(t.data.imageData), a.busy = !1) : t.data.event }, a.worker.postMessage({ cmd: \"init\", size: { x: e.getWidth(), y: e.getHeight() }, imageData: a.imageData, config: Te(t) }, [a.imageData.buffer]) } function ze(t, e, n, r) { var o = t - De.length; if (0 === o && r) r(); else if (o < 0) { De.slice(o).forEach((function (t) { t.worker.terminate() })), De = De.slice(0, o), r && r() } else { var i = function (e) { De.push(e), De.length >= t && r && r() }; if (e) for (var a = 0; a < o; a++)Ie(e, n, i) } } function Ue(t, e, n) { for (var r = t.length; r--;)t[r][0] += e, t[r][1] += n } var Le = function () { function t() { var e = this; y()(this, t), S()(this, \"context\", new ue), S()(this, \"canRecord\", (function (t) { var n; e.context.config && (fe.a.checkImageConstraints(e.context.inputStream, null === (n = e.context.config) || void 0 === n ? void 0 : n.locator), e.initCanvas(), e.context.framegrabber = Ae.create(e.context.inputStream, e.context.canvasContainer.dom.image), void 0 === e.context.config.numOfWorkers && (e.context.config.numOfWorkers = 0), ze(e.context.config.numOfWorkers, e.context.config, e.context.inputStream, (function () { var n; 0 === (null === (n = e.context.config) || void 0 === n ? void 0 : n.numOfWorkers) && e.initializeData(), e.ready(t) }))) })), S()(this, \"update\", (function () { if (e.context.onUIThread) { var t, n = (o = e.context.framegrabber, De.length ? !!(i = De.filter((function (t) { return !t.busy }))[0]) && (o.attachData(i.imageData), o.grab() && (i.busy = !0, i.worker.postMessage({ cmd: \"process\", imageData: i.imageData }, [i.imageData.buffer])), !0) : null); if (!n) e.context.framegrabber.attachData(null === (t = e.context.inputImageWrapper) || void 0 === t ? void 0 : t.data), e.context.framegrabber.grab() && (n || e.locateAndDecode()) } else { var r; e.context.framegrabber.attachData(null === (r = e.context.inputImageWrapper) || void 0 === r ? void 0 : r.data), e.context.framegrabber.grab(), e.locateAndDecode() } var o, i })) } var e, n; return x()(t, [{ key: \"initBuffers\", value: function (t) { if (this.context.config) { var e = function (t, e, n) { var r = e || new s.a({ x: t.getWidth(), y: t.getHeight(), type: \"XYSize\" }), o = [Object(ae.clone)([0, 0]), Object(ae.clone)([0, r.size.y]), Object(ae.clone)([r.size.x, r.size.y]), Object(ae.clone)([r.size.x, 0])]; return fe.a.init(r, n), { inputImageWrapper: r, boxSize: o } }(this.context.inputStream, t, this.context.config.locator), n = e.inputImageWrapper, r = e.boxSize; this.context.inputImageWrapper = n, this.context.boxSize = r } } }, { key: \"initializeData\", value: function (t) { this.context.config && (this.initBuffers(t), this.context.decoder = Lt.create(this.context.config.decoder, this.context.inputImageWrapper)) } }, { key: \"getViewPort\", value: function () { return this.context.config && this.context.config.inputStream ? le(this.context.config.inputStream.target) : null } }, { key: \"ready\", value: function (t) { this.context.inputStream.play(), t() } }, { key: \"initCanvas\", value: function () { var t = de(this.context); if (t) { var e = t.ctx, n = t.dom; this.context.canvasContainer.dom.image = n.image, this.context.canvasContainer.dom.overlay = n.overlay, this.context.canvasContainer.ctx.image = e.image, this.context.canvasContainer.ctx.overlay = e.overlay } } }, { key: \"initInputStream\", value: function (t) { if (this.context.config && this.context.config.inputStream) { var e = this.context.config.inputStream, n = e.type, r = e.constraints, o = function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"LiveStream\", e = arguments.length > 1 ? arguments[1] : void 0, n = arguments.length > 2 ? arguments[2] : void 0; switch (t) { case \"VideoStream\": var r = document.createElement(\"video\"); return { video: r, inputStream: n.createVideoStream(r) }; case \"ImageStream\": return { inputStream: n.createImageStream() }; case \"LiveStream\": var o = null; return e && ((o = e.querySelector(\"video\")) || (o = document.createElement(\"video\"), e.appendChild(o))), { video: o, inputStream: n.createLiveStream(o) }; default: return console.error(\"* setupInputStream invalid type \".concat(t)), { video: null, inputStream: null } } }(n, this.getViewPort(), Ce), i = o.video, a = o.inputStream; \"LiveStream\" === n && i && re.request(i, r).then((function () { return a.trigger(\"canrecord\") })).catch((function (e) { return t(e) })), a.setAttribute(\"preload\", \"auto\"), a.setInputStream(this.context.config.inputStream), a.addEventListener(\"canrecord\", this.canRecord.bind(void 0, t)), this.context.inputStream = a } } }, { key: \"getBoundingBoxes\", value: function () { var t; return null !== (t = this.context.config) && void 0 !== t && t.locate ? fe.a.locate() : [[Object(ae.clone)(this.context.boxSize[0]), Object(ae.clone)(this.context.boxSize[1]), Object(ae.clone)(this.context.boxSize[2]), Object(ae.clone)(this.context.boxSize[3])]] } }, { key: \"transformResult\", value: function (t) { var e = this, n = this.context.inputStream.getTopRight(), r = n.x, o = n.y; if ((0 !== r || 0 !== o) && (t.barcodes && t.barcodes.forEach((function (t) { return e.transformResult(t) })), t.line && 2 === t.line.length && function (t, e, n) { t[0].x += e, t[0].y += n, t[1].x += e, t[1].y += n }(t.line, r, o), t.box && Ue(t.box, r, o), t.boxes && t.boxes.length > 0)) for (var i = 0; i < t.boxes.length; i++)Ue(t.boxes[i], r, o) } }, { key: \"addResult\", value: function (t, e) { var n = this; e && this.context.resultCollector && (t.barcodes ? t.barcodes.filter((function (t) { return t.codeResult })).forEach((function (t) { return n.addResult(t, e) })) : t.codeResult && this.context.resultCollector.addResult(e, this.context.inputStream.getCanvasSize(), t.codeResult)) } }, { key: \"hasCodeResult\", value: function (t) { return !(!t || !(t.barcodes ? t.barcodes.some((function (t) { return t.codeResult })) : t.codeResult)) } }, { key: \"publishResult\", value: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, e = arguments.length > 1 ? arguments[1] : void 0, n = t; t && this.context.onUIThread && (this.transformResult(t), this.addResult(t, e), n = t.barcodes || t), Nt.publish(\"processed\", n), this.hasCodeResult(t) && Nt.publish(\"detected\", n) } }, { key: \"locateAndDecode\", value: (n = l()(d.a.mark((function t() { var e, n, r, o, i; return d.a.wrap((function (t) { for (; ;)switch (t.prev = t.next) { case 0: if (!(e = this.getBoundingBoxes())) { t.next = 12; break } return t.next = 4, this.context.decoder.decodeFromBoundingBoxes(e); case 4: if (t.t0 = t.sent, t.t0) { t.next = 7; break } t.t0 = {}; case 7: (r = t.t0).boxes = e, this.publishResult(r, null === (n = this.context.inputImageWrapper) || void 0 === n ? void 0 : n.data), t.next = 16; break; case 12: return t.next = 14, this.context.decoder.decodeFromImage(this.context.inputImageWrapper); case 14: (o = t.sent) ? this.publishResult(o, null === (i = this.context.inputImageWrapper) || void 0 === i ? void 0 : i.data) : this.publishResult(); case 16: case \"end\": return t.stop() } }), t, this) }))), function () { return n.apply(this, arguments) }) }, { key: \"startContinuousUpdate\", value: function () { var t, e = this, n = null, r = 1e3 / ((null === (t = this.context.config) || void 0 === t ? void 0 : t.frequency) || 60); this.context.stopped = !1; var o = this.context; !function t(i) { n = n || i, o.stopped || (i >= n && (n += r, e.update()), window.requestAnimationFrame(t)) }(performance.now()) } }, { key: \"start\", value: function () { var t, e; this.context.onUIThread && \"LiveStream\" === (null === (t = this.context.config) || void 0 === t || null === (e = t.inputStream) || void 0 === e ? void 0 : e.type) ? this.startContinuousUpdate() : this.update() } }, { key: \"stop\", value: (e = l()(d.a.mark((function t() { var e; return d.a.wrap((function (t) { for (; ;)switch (t.prev = t.next) { case 0: if (this.context.stopped = !0, ze(0), null === (e = this.context.config) || void 0 === e || !e.inputStream || \"LiveStream\" !== this.context.config.inputStream.type) { t.next = 6; break } return t.next = 5, re.release(); case 5: this.context.inputStream.clearEventHandlers(); case 6: case \"end\": return t.stop() } }), t, this) }))), function () { return e.apply(this, arguments) }) }, { key: \"setReaders\", value: function (t) { this.context.decoder && this.context.decoder.setReaders(t), function (t) { De.forEach((function (e) { return e.worker.postMessage({ cmd: \"setReaders\", readers: t }) })) }(t) } }, { key: \"registerReader\", value: function (t, e) { Lt.registerReader(t, e), this.context.decoder && this.context.decoder.registerReader(t, e), function (t, e) { De.forEach((function (n) { return n.worker.postMessage({ cmd: \"registerReader\", name: t, reader: e }) })) }(t, e) } }]), t }(), Ne = new Le, Be = Ne.context, We = { init: function (t, e, n) { var r, o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : Ne; return e || (r = new Promise((function (t, n) { e = function (e) { e ? n(e) : t() } }))), o.context.config = c()({}, ie, t), o.context.config.numOfWorkers > 0 && (o.context.config.numOfWorkers = 0), n ? (o.context.onUIThread = !1, o.initializeData(n), e && e()) : o.initInputStream(e), r }, start: function () { return Ne.start() }, stop: function () { return Ne.stop() }, pause: function () { Be.stopped = !0 }, onDetected: function (t) { t && (\"function\" == typeof t || \"object\" === a()(t) && t.callback) ? Nt.subscribe(\"detected\", t) : console.trace(\"* warning: Quagga.onDetected called with invalid callback, ignoring\") }, offDetected: function (t) { Nt.unsubscribe(\"detected\", t) }, onProcessed: function (t) { t && (\"function\" == typeof t || \"object\" === a()(t) && t.callback) ? Nt.subscribe(\"processed\", t) : console.trace(\"* warning: Quagga.onProcessed called with invalid callback, ignoring\") }, offProcessed: function (t) { Nt.unsubscribe(\"processed\", t) }, setReaders: function (t) { t ? Ne.setReaders(t) : console.trace(\"* warning: Quagga.setReaders called with no readers, ignoring\") }, registerReader: function (t, e) { t ? e ? Ne.registerReader(t, e) : console.trace(\"* warning: Quagga.registerReader called with no reader, ignoring\") : console.trace(\"* warning: Quagga.registerReader called with no name, ignoring\") }, registerResultCollector: function (t) { t && \"function\" == typeof t.addResult && (Be.resultCollector = t) }, get canvas() { return Be.canvasContainer }, decodeSingle: function (t, e) { var n = this, r = new Le; return (t = c()({ inputStream: { type: \"ImageStream\", sequence: !1, size: 800, src: t.src }, numOfWorkers: 1, locator: { halfSample: !1 } }, t)).numOfWorkers > 0 && (t.numOfWorkers = 0), t.numOfWorkers > 0 && (\"undefined\" == typeof Blob || \"undefined\" == typeof Worker) && (console.warn(\"* no Worker and/or Blob support - forcing numOfWorkers to 0\"), t.numOfWorkers = 0), new Promise((function (o, i) { try { n.init(t, (function () { Nt.once(\"processed\", (function (t) { r.stop(), e && e.call(null, t), o(t) }), !0), r.start() }), null, r) } catch (t) { i(t) } })) }, get default() { return We }, Readers: r, CameraAccess: re, ImageDebug: p.a, ImageWrapper: s.a, ResultCollector: oe }; e.default = We }]).default\r\n}));","angular.module(\"boyds\").factory('config', function () {\r\n return {\r\n defaults: {\r\n guid: '00000000-0000-0000-0000-000000000000',\r\n gunstockInitialEngravingKeyPhrase: 'FONT'\r\n },\r\n pages: {\r\n titles: {\r\n home: 'home',\r\n userRegistration: 'user-registration'\r\n },\r\n routes: {\r\n home: '/home',\r\n userRegistration: '/user-registration'\r\n },\r\n customSearchResults: 'custom-search-results',\r\n productConfigurator: 'product-configurator',\r\n products: 'products',\r\n login: 'sign-in',\r\n productUrlName: '/product-configurator/product-url-name',\r\n pathNameOnProductDetail: '/accessories/product-url-name',\r\n productDetail: 'accessories',\r\n accessories: 'accessories',\r\n cart: 'cart',\r\n checkout: 'checkout',\r\n gunstocks: 'gunstocks',\r\n recommendedProducts: 'recommended-products'\r\n },\r\n customizations: {\r\n CustomWoods: {\r\n value: 'CustomWoods',\r\n display: 'Wood',\r\n displayShort: 'Wood',\r\n description: 'Laminate blanks, made up of many thin layers dyed and bonded, designed for exceptional strength, stability, and unconditional use in any environment. Solid hardwood options give the traditional look back to your gun.'\r\n },\r\n CustomFinishes: {\r\n value: 'CustomFinishes',\r\n display: 'Finish',\r\n displayShort: 'Finish',\r\n description: 'A variety of superior finishes for each wood type and tested for all environments.'\r\n },\r\n CustomLops: {\r\n value: 'CustomLops',\r\n display: 'Length of Pull',\r\n displayShort: 'LOP',\r\n description: 'Proper length of pull gives you quick sight acquisition, better control and better accuracy. Length of pull is the distance from the front surface of the trigger to the middle of the buttstock. The thickness of the pad is included in the final measurement.'\r\n },\r\n CustomPads: {\r\n value: 'CustomPads',\r\n display: 'Recoil Pad',\r\n displayShort: 'Pad',\r\n description: 'A custom pad can reduce recoil, fatigue and assures a solid grip while firing your rifle. It can also add to the look and comfort of your firearm.'\r\n },\r\n CustomTips: {\r\n value: 'CustomTips',\r\n display: 'Tip',\r\n displayShort: 'Tip',\r\n description: 'Custom tips are available in straight or angled cut in a variety of materials and adhere to the end of the forearm.'\r\n },\r\n CustomGrips: {\r\n value: 'CustomGrips',\r\n display: 'Grip Cap',\r\n displayShort: 'Grip',\r\n description: 'A custom grip gives your stock a polished look by adding a small grip cap accent made from nylon or natural woods.'\r\n },\r\n CustomAccents: {\r\n value: 'CustomAccents',\r\n display: 'White Line Spacer',\r\n displayShort: 'Spacer',\r\n description: 'A white line spacer kit is a thin white plastic accent between your stock and your grip, buttpad and tip. Creates a touch of class for your stock.'\r\n },\r\n CustomOther: {\r\n value: 'CustomOther',\r\n display: 'Pillar Bedding',\r\n displayShort: 'Pillar Bedding',\r\n description: 'Other customization options available for this stock.'\r\n },\r\n LaserBasics: {\r\n value: 'LaserBasics',\r\n display: 'Laser Engraving',\r\n displayShort: 'Laser',\r\n description: 'Custom laser engraving is an option for grips or forend panels. It enhances the look of your firearm and can also add functionality by giving the shooter a textured surface to grip.'\r\n },\r\n AdjustableCombs: {\r\n value: 'AdjustableCombs',\r\n display: 'Adjustable Comb',\r\n displayShort: 'Comb',\r\n description: 'Adjustable Combs help you with your sighting plane. They adjusts up to 1/2 inch above the surrounding comb height and the adjustment is made with 2 allen wrench screws that are recessed into the top of the comb.'\r\n }\r\n },\r\n filters: {\r\n currency: 'currency'\r\n },\r\n events: {\r\n itemAddedToCart: 'ItemAddedToCart',\r\n updateCustomSearch: 'UpdateCustomSearch',\r\n productFiltersCallback: 'ProductFiltersCallback'\r\n },\r\n images: {\r\n defaults: {\r\n gun: '/ResourcePackages/Boyds/assets/dist/images/generic-gun.png'\r\n },\r\n thumbnails: {\r\n customOption: '.tmb-customopt',\r\n gunstock: '.tmb-gunstock',\r\n silhouette: '.tmb-silhouette'\r\n },\r\n configurator: {\r\n selectGunstock: '/ResourcePackages/Boyds/assets/dist/images/configurator-gunstock-selected.png',\r\n selectGunstockMobile: '/ResourcePackages/Boyds/assets/dist/images/configurator-bar-mobile.png',\r\n selectShape: '/ResourcePackages/Boyds/assets/dist/images/configurator-shapes.png',\r\n selectShapeMobile: '/ResourcePackages/Boyds/assets/dist/images/configurator-shapes-mobile.png',\r\n customizeGunstock: '/ResourcePackages/Boyds/assets/dist/images/configurator-custom-options-padded.png',//configurator-selected-options.png\r\n customizeGunstockMobile: '/ResourcePackages/Boyds/assets/dist/images/configurator-custom-options-mobile.png'\r\n }\r\n },\r\n inputPatterns: {\r\n productQuantity: '^[\\\\d]*$',\r\n email: '^[a-zA-Z0-9.!#$%&\\'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$',\r\n phone: '^[+]*[1]{0,1}[- \\.\\/]{0,1}[(]{0,1}[0-9]{3}[)]{0,1}[ ]{0,1}[- \\.\\/0-9]{4,12}$',\r\n htmlTags: /<[^>]+>| /gm,\r\n multipleSpaces: /\\s{2,}/gm,\r\n engraving: /[^A-Za-z0-9]/g\r\n },\r\n states: [\r\n { Name: 'Alabama', IsoCode: 'AL' },\r\n { Name: 'Alaska', IsoCode: 'AK' },\r\n { Name: 'Arizona', IsoCode: 'AZ' },\r\n { Name: 'Arkansas', IsoCode: 'AR' },\r\n { Name: 'California', IsoCode: 'CA' },\r\n { Name: 'Colorado', IsoCode: 'CO' },\r\n { Name: 'Connecticut', IsoCode: 'CT' },\r\n { Name: 'Delaware', IsoCode: 'DE' },\r\n { Name: 'District Of Columbia', IsoCode: 'DC' },\r\n { Name: 'Florida', IsoCode: 'FL' },\r\n { Name: 'Georgia', IsoCode: 'GA' },\r\n { Name: 'Hawaii', IsoCode: 'HI' },\r\n { Name: 'Idaho', IsoCode: 'ID' },\r\n { Name: 'Illinois', IsoCode: 'IL' },\r\n { Name: 'Indiana', IsoCode: 'IN' },\r\n { Name: 'Iowa', IsoCode: 'IA' },\r\n { Name: 'Kansas', IsoCode: 'KS' },\r\n { Name: 'Kentucky', IsoCode: 'KY' },\r\n { Name: 'Louisiana', IsoCode: 'LA' },\r\n { Name: 'Maine', IsoCode: 'ME' },\r\n { Name: 'Maryland', IsoCode: 'MD' },\r\n { Name: 'Massachusetts', IsoCode: 'MA' },\r\n { Name: 'Michigan', IsoCode: 'MI' },\r\n { Name: 'Minnesota', IsoCode: 'MN' },\r\n { Name: 'Mississippi', IsoCode: 'MS' },\r\n { Name: 'Missouri', IsoCode: 'MO' },\r\n { Name: 'Montana', IsoCode: 'MT' },\r\n { Name: 'Nebraska', IsoCode: 'NE' },\r\n { Name: 'Nevada', IsoCode: 'NV' },\r\n { Name: 'New Hampshire', IsoCode: 'NH' },\r\n { Name: 'New Jersey', IsoCode: 'NJ' },\r\n { Name: 'New Mexico', IsoCode: 'NM' },\r\n { Name: 'New York', IsoCode: 'NY' },\r\n { Name: 'North Carolina', IsoCode: 'NC' },\r\n { Name: 'North Dakota', IsoCode: 'ND' },\r\n { Name: 'Ohio', IsoCode: 'OH' },\r\n { Name: 'Oklahoma', IsoCode: 'OK' },\r\n { Name: 'Oregon', IsoCode: 'OR' },\r\n { Name: 'Pennsylvania', IsoCode: 'PA' },\r\n { Name: 'Rhode Island', IsoCode: 'RI' },\r\n { Name: 'South Carolina', IsoCode: 'SC' },\r\n { Name: 'South Dakota', IsoCode: 'SD' },\r\n { Name: 'Tennessee', IsoCode: 'TN' },\r\n { Name: 'Texas', IsoCode: 'TX' },\r\n { Name: 'Utah', IsoCode: 'UT' },\r\n { Name: 'Vermont', IsoCode: 'VT' },\r\n { Name: 'Virginia', IsoCode: 'VA' },\r\n { Name: 'Washington', IsoCode: 'WA' },\r\n { Name: 'West Virginia', IsoCode: 'WV' },\r\n { Name: 'Wisconsin', IsoCode: 'WI' },\r\n { Name: 'Wyoming', IsoCode: 'WY' }\r\n ],\r\n service: {\r\n clearShoppingCart: {\r\n url: \"/api/ecommerce/CartOrders/ClearShoppingCart\"\r\n },\r\n getRecommendedProducts: {\r\n url: '/api/ecommerce/CartOrders/GetRecommendedProducts'\r\n },\r\n getRecommendedProductsCount: {\r\n url: '/api/ecommerce/CartOrders/GetRecommendedProductsCount/'\r\n },\r\n addRecommendedProductToCart: {\r\n url: '/api/ecommerce/CartOrders/AddRecommendedProductToCart'\r\n },\r\n getCartOrderTotal: {\r\n url: '/api/ecommerce/CartOrders/GetCartOrderTotal/'\r\n },\r\n getOrderSubTotal: {\r\n url: '/api/ecommerce/CartOrders/GetOrderSubTotal/'\r\n },\r\n getDealerSubTotal: {\r\n url: '/api/ecommerce/CartOrders/GetDealerSubTotal/'\r\n },\r\n getCheckoutStepOne: {\r\n url: '/api/ecommerce/CartOrders/GetCheckoutStepOne/'\r\n },\r\n getCheckoutStepShipping: {\r\n url: '/api/ecommerce/CartOrders/GetCheckoutStepShipping/'\r\n },\r\n getCheckoutStepPaymentAndReview: {\r\n url: '/api/ecommerce/CartOrders/GetCheckoutStepPaymentAndReview/'\r\n },\r\n getElementsInitializers: {\r\n url: '/api/ecommerce/CartOrders/GetElementsInitializers/'\r\n },\r\n getCheckoutStepReceipt: {\r\n url: '/api/ecommerce/Orders/GetCheckoutStepReceipt/'\r\n },\r\n getCartOrderForCurrentCustomer: {\r\n url: '/api/ecommerce/CartOrders/GetCartOrderForCurrentCustomer/'\r\n },\r\n getCountries: {\r\n url: '/api/locations/countries'\r\n },\r\n getMakes: {\r\n url: '/api/productconfigurator/makes'\r\n },\r\n getModels: {\r\n url: '/api/productconfigurator/models'\r\n },\r\n getActions: {\r\n url: '/api/productconfigurator/actions'\r\n },\r\n getShapes: {\r\n url: '/api/productconfigurator/shapes'\r\n },\r\n getProduct: {\r\n url: '/api/productconfigurator/product'\r\n },\r\n getGunstockClassificationIds: {\r\n url: '/api/productconfigurator/product/{urlName}'\r\n },\r\n getAvailableAddOns: {\r\n url: '/api/productconfigurator/addons'\r\n },\r\n getTotalResultsCount: {\r\n url: \"/api/productsearch/count/\"\r\n },\r\n getAllProductsCount: {\r\n url: \"/api/productsearch/all/count\"\r\n },\r\n search: {\r\n url: \"/api/productsearch/\"\r\n },\r\n searchSuggestions: {\r\n url: \"/api/productsearch/suggestions/\"\r\n },\r\n searchForOrders: {\r\n url: \"/api/orders/ordersearch/\"\r\n },\r\n searchForOrdersCount: {\r\n url: \"/api/orders/ordersearchcount/\"\r\n },\r\n sendPasswordRecoveryEmail: {\r\n url: \"/sign-in/SendPasswordResetEmail?email=\"\r\n },\r\n searchGetMakes: {\r\n url: \"/api/productsearch/getmakes/\"\r\n },\r\n searchGetModels: {\r\n url: \"/api/productsearch/getmodels/\"\r\n },\r\n searchGetActions: {\r\n url: \"/api/productsearch/getactions/\"\r\n },\r\n searchGetShapes: {\r\n url: \"/api/productsearch/getshapes/\"\r\n },\r\n getAllProducts: {\r\n url: \"/api/productsearch/all\"\r\n },\r\n addProductToCart: {\r\n url: '/api/ecommerce/CartOrders/AddProductToCart/'\r\n },\r\n addProductsToCart: {\r\n url: '/api/ecommerce/CartOrders/AddProductsToCart/'\r\n },\r\n registerCustomer: {\r\n url: '/api/ecommerce/Customers/RegisterCustomer'\r\n },\r\n getCustomerProfile: {\r\n url: '/api/ecommerce/Customers/GetProfile'\r\n },\r\n updateCustomerProfile: {\r\n url: '/api/ecommerce/Customers/UpdateProfile'\r\n },\r\n addCustomizedGunstockToCart: {\r\n url: '/api/ecommerce/CartOrders/AddCustomizedGunstockToCart/'\r\n },\r\n getCartCount: {\r\n url: '/api/ecommerce/CartOrders/GetProductsInCartCount/'\r\n },\r\n updateCartAddress: {\r\n url: '/api/ecommerce/CartOrders/UpdateCartAddress/'\r\n },\r\n updateCartAddresses: {\r\n url: '/api/ecommerce/CartOrders/UpdateCartAddresses/'\r\n },\r\n updateCartOrderMetaFields: {\r\n url: '/api/ecommerce/CartOrders/UpdateCartOrderMetaFields/'\r\n },\r\n updateCartOrderShippingMethod: {\r\n url: '/api/ecommerce/CartOrders/UpdateCartOrderShippingMethod/'\r\n },\r\n updateCheckoutStepOne: {\r\n url: '/api/ecommerce/CartOrders/UpdateCheckoutStepOne/'\r\n },\r\n createUserAccount: {\r\n url: '/api/ecommerce/Customers/CreateUserAccount/'\r\n },\r\n processOrder: {\r\n url: '/api/ecommerce/Checkout/ProcessOrder/'\r\n },\r\n placeOrder: {\r\n url: '/api/ecommerce/Checkout/PlaceOrder/'\r\n },\r\n getOrderDetails: {\r\n url: '/api/orderhistory/GetOrderHistoryDetailItems/'\r\n },\r\n getOrder: {\r\n url: '/api/orderhistory/GetOrderHistoryItem/'\r\n },\r\n submitPromotionForm: {\r\n formId: '17cc5771-9fc6-6023-a26e-ff000071b53d',\r\n url: '/api/v1/sf/forms/submit',\r\n yesValue: 'Yes',\r\n noValue: 'No',\r\n emailFieldName: 'Email',\r\n optInFieldName: 'OptIn'\r\n },\r\n getWorkstations: {\r\n url: '/api/internal/operationinstructions/GetLiveWorkstations/'\r\n },\r\n getWorkstationInstructions: {\r\n url: '/api/internal/operationinstructions/GetWorkstationInstructions/'\r\n },\r\n importParts: {\r\n url: '/api/internal/operationinstructions/ImportParts/'\r\n },\r\n requestHelp: {\r\n url: '/api/internal/operationinstructions/RequestHelp/'\r\n },\r\n voidTransaction: {\r\n url: '/api/ecommerce/Checkout/VoidTransaction/'\r\n }\r\n },\r\n templates: {\r\n productFilters: {\r\n url: '/app/templates/productFiltersTemplate.html'\r\n },\r\n searchFilters: {\r\n url: '/app/templates/searchFiltersTemplate.html'\r\n },\r\n labeledDropdown: {\r\n url: '/app/templates/labeledDropdownTemplate.html'\r\n },\r\n loadingBar: {\r\n url: '/app/templates/loadingBarTemplate.html'\r\n },\r\n labeledImage: {\r\n url: '/app/templates/labeledImageTemplate.html'\r\n },\r\n loadingSpinner: {\r\n url: '/app/templates/loadingSpinnerTemplate.html'\r\n },\r\n attachDropdownEvents: {\r\n url: '/app/templates/attachDropdownEventsTemplate.html'\r\n },\r\n pageLoadingSpinner: {\r\n url: '/app/templates/pageLoadingSpinnerTemplate.html'\r\n },\r\n fancybox: {\r\n url: '/app/templates/fancyboxTemplate.html'\r\n }\r\n },\r\n checkout: {\r\n errorMessage: \"An error has occurred. Please contact us at info@boydsgunstocks.com\",\r\n errorMessageWithEmail: \"An error has occurred. Please contact us at info@boydsgunstocks.com\",\r\n errorMessageWithEmailAndOrderNumber: \"An error has occurred. Please contact us at info@boydsgunstocks.com - Order Number: ({orderNumberForCartError})\",\r\n minPasswordLength: 7,\r\n phoneNumberFormat: /^(\\+?(\\d{1}|\\d{2}|\\d{3})[- ]?)?\\d{3}[- ]?\\d{3}[- ]?\\d{4}$/,\r\n emailFormat: /^[a-zA-Z0-9.!#$%&\\'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,\r\n customOrderText:\r\n \"All orders (except Rapid Fire items) are built to order, sent to production immediately after you hit submit. \" +\r\n \"Any change/cancellation will incur a 15% cancellation fee. \" +\r\n \"Please verify all measurements, make, model, and action before placing your order to ensure the correct stock is built for you. \" +\r\n \"Boyds offers a 90 day warranty on all custom orders. \" +\r\n \"Outside the 90 days, stocks will not be returned. \"\r\n },\r\n session: {\r\n productFiltersObj: 'productFiltersObj'\r\n },\r\n messages: {\r\n gunstockImageUnavailable: 'Image not representative of actual color',\r\n selectIncompatibleOptionWarning: 'Warning! Selecting this option will cause one of the previous selected options to be reselected.'\r\n },\r\n payments: {\r\n cvvErrorMessage: \"Incorrect CVV. Please use the CVV on the back of the card.\",\r\n avsErrorMessage: \"Credit card billing address is invalid. Please use the billing address associated with the credit card.\",\r\n declinedErrorMessage: \"Credit Card Declined. Confirm credit card information was entered correctly or try using another card.\",\r\n creditCardNetworkErrorMessage: \"Invalid credit card network. Use a different credit card with a supported network: Visa, Mastercard, Discover.\",\r\n defaultErrorMessage: \"Payment failure, please contact us at 605-996-5011.\",\r\n failedRequestCode: \"400000\"\r\n },\r\n cookie: {\r\n loginRedirect: 'LoginRedirectToPreviousPage',\r\n sfTokenId: 'SF-TokenId'\r\n },\r\n cookieConsentService: {\r\n getCookiesForRemoval: {\r\n url: '/api/public-modules/electivecookies'\r\n }\r\n }\r\n }\r\n});","angular.module(\"boyds\").service('productFiltersService', [ 'config', function (config) {\r\n function getProductFiltersObject() {\r\n return JSON.parse(sessionStorage.getItem(config.session.productFiltersObj))\r\n }\r\n\r\n function setProductFiltersObject(obj) {\r\n sessionStorage.setItem(config.session.productFiltersObj, JSON.stringify(obj));\r\n }\r\n\r\n function hasProductFiltersObj() {\r\n return sessionStorage.getItem(config.session.productFiltersObj) ? true : false;\r\n }\r\n\r\n return {\r\n getProductFiltersObject: getProductFiltersObject,\r\n setProductFiltersObject: setProductFiltersObject,\r\n hasProductFiltersObj: hasProductFiltersObj\r\n }\r\n}]);","angular.module(\"boyds\").factory('confirmationService', function () {\r\n function confirmMessage(msg) {\r\n return confirm(msg);\r\n }\r\n return {\r\n confirmMessage: confirmMessage\r\n }\r\n});","angular.module(\"boyds\").factory('domService', function () {\r\n function attr(element, attribute, value) {\r\n $(element).attr(attribute, value);\r\n }\r\n\r\n function removeClass(element, className) {\r\n $(element).removeClass(className);\r\n }\r\n\r\n function scrollTop() {\r\n $('html, body').animate({ scrollTop: 0 });\r\n }\r\n\r\n function insertAfter(first, second) {\r\n $('#' + first).insertAfter($('#' + second));\r\n }\r\n\r\n return {\r\n attr: attr,\r\n removeClass: removeClass,\r\n scrollTop: scrollTop,\r\n insertAfter: insertAfter\r\n }\r\n});","angular.module(\"boyds\").service('windowService', ['$window', function ($window) {\r\n function getPathName() {\r\n return $window.location.pathname;\r\n }\r\n\r\n function assignLocation(page, name) {\r\n $window.location.assign($window.location.origin + \"/\" + page + \"/\" + name);\r\n }\r\n\r\n function setLocation(location) {\r\n $window.location = location;\r\n }\r\n\r\n function setHref(page, name) {\r\n $window.location.href = \"/\" + page + \"/\" + (name ? name : \"\");\r\n }\r\n\r\n function getHref() {\r\n return $window.location.href;\r\n }\r\n\r\n function setCookie(cookie) {\r\n $window.document.cookie = cookie;\r\n }\r\n\r\n function refreshPage() {\r\n $window.location.reload();\r\n }\r\n\r\n function isOnPage(page) {\r\n return $window.location.href.indexOf(page) != -1;\r\n }\r\n\r\n return {\r\n getPathName: getPathName,\r\n assignLocation: assignLocation,\r\n setHref: setHref,\r\n getHref: getHref,\r\n setCookie: setCookie,\r\n refreshPage: refreshPage,\r\n isOnPage: isOnPage,\r\n setLocation: setLocation\r\n };\r\n}]);","angular.module(\"boyds\").service('searchService', function () {\r\n function getSearchTerm() {\r\n var searchTerm = sessionStorage.getItem('searchTerm');\r\n return searchTerm? searchTerm : '';\r\n }\r\n\r\n function getSanitizedSearchTerm() {\r\n return sanitizeForSearch(getSearchTerm());\r\n }\r\n\r\n function setSearchTerm(newSearchTerm) {\r\n sessionStorage.setItem('searchTerm', newSearchTerm && typeof newSearchTerm === typeof (typeof 1)? newSearchTerm: '');\r\n }\r\n\r\n function sanitizeForSearch(value) {\r\n return value.replace(/[^\\sa-zA-Z0-9\\-]/g, '_').trim();\r\n }\r\n\r\n function clearSearchTerm() {\r\n setSearchTerm('');\r\n }\r\n\r\n return {\r\n getSearchTerm: getSearchTerm,\r\n setSearchTerm: setSearchTerm,\r\n sanitizeForSearch: sanitizeForSearch,\r\n getSanitizedSearchTerm: getSanitizedSearchTerm,\r\n clearSearchTerm: clearSearchTerm\r\n }\r\n});","angular.module(\"boyds\").service('thumbnailService', ['config', function (config) {\r\n\r\n function asSilhouetteThumbnail(url) {\r\n return asThumbnail(config.images.thumbnails.silhouette, url);\r\n }\r\n\r\n function asGunstockThumbnail(url) {\r\n return asThumbnail(config.images.thumbnails.gunstock, url);\r\n\r\n }\r\n\r\n function asCustomOptionThumbnail(url) {\r\n return asThumbnail(config.images.thumbnails.customOption, url);\r\n }\r\n\r\n function asThumbnail(thumbnailExtension, url) {\r\n if (!url) return url;\r\n if (url.indexOf('Images.DefaultProductTmb') != -1) return url;\r\n return url.replace(\".jpg\", thumbnailExtension + \".jpg\").replace(\".png\", thumbnailExtension + \".png\");\r\n }\r\n\r\n return {\r\n asSilhouetteThumbnail: asSilhouetteThumbnail,\r\n asGunstockThumbnail: asGunstockThumbnail,\r\n asCustomOptionThumbnail: asCustomOptionThumbnail,\r\n asThumbnail: asThumbnail\r\n };\r\n}]);","angular.module(\"boyds\").factory('cookieConsentService', ['$http', 'config', function ($http, config) {\r\n var consentCookieName = 'boyds_cookie_consent'\r\n function grantConsent() {\r\n createCookie(consentCookieName, 'granted', 30, '/', window.location.hostname.replace('www', ''))\r\n //console.log(getCookie(consentCookieName))\r\n fireGTMEvent('boyds_cookie_consent_updated');\r\n }\r\n function denyConsent() {\r\n createCookie(consentCookieName, 'denied', 30, '/', window.location.hostname.replace('www', ''))\r\n fireGTMEvent('boyds_cookie_consent_updated');\r\n getCookiesForRemoval().then(function (cookies) {\r\n cookies.forEach(function (cookie) {\r\n expireCookie(cookie.Name)\r\n })\r\n })\r\n }\r\n function isConsentStatusKnown() { \r\n return !!getCookie(consentCookieName)\r\n }\r\n function getCookiesForRemoval(page, pageSize) {\r\n return $http({\r\n url: config.cookieConsentService.getCookiesForRemoval.url,// + \"?page=\" + (page || 0) + \"&pageSize=\" + (pageSize || 50),\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data.value;\r\n });\r\n }\r\n function expireCookie(name) {\r\n console.log('expiring: ' + name)\r\n //console.log('value: ' + getCookie(name))\r\n var cookieValue = getCookie(name)\r\n if (cookieValue) {\r\n createCookie(name, \"\", -1, '/', '.' + window.location.hostname);\r\n createCookie(name, \"\", -1, '/', window.location.hostname);\r\n }\r\n //console.log('value: ' + getCookie(name))\r\n }\r\n function getCookie(c_name) {\r\n if (document.cookie.length > 0) {\r\n var c_start = document.cookie.indexOf(c_name + \"=\");\r\n if (c_start != -1) {\r\n c_start = c_start + c_name.length + 1;\r\n var c_end = document.cookie.indexOf(\";\", c_start);\r\n if (c_end == -1) {\r\n c_end = document.cookie.length;\r\n }\r\n return unescape(document.cookie.substring(c_start, c_end));\r\n }\r\n }\r\n return \"\";\r\n }\r\n function createCookie(name, value, expires, path, domain) {\r\n var cookie = name + \"=\" + escape(value) + \";\";\r\n\r\n if (expires) {\r\n // If it's a date\r\n if (expires instanceof Date) {\r\n // If it isn't a valid date\r\n if (isNaN(expires.getTime()))\r\n expires = new Date();\r\n }\r\n else {\r\n expires = new Date(new Date().getTime() + parseInt(expires) * 1000 * 60 * 60 * 24);\r\n }\r\n\r\n cookie += \"expires=\" + expires.toGMTString() + \";\";\r\n }\r\n\r\n if (path)\r\n cookie += \"path=\" + path + \";\";\r\n if (domain)\r\n cookie += \"domain=\" + domain + \";\";\r\n\r\n document.cookie = cookie;\r\n }\r\n function fireGTMEvent(eventName) {\r\n window.dataLayer && window.dataLayer.push({\r\n 'event': eventName\r\n })\r\n }\r\n return {\r\n grantConsent: grantConsent,\r\n denyConsent: denyConsent,\r\n isConsentStatusKnown: isConsentStatusKnown,\r\n }\r\n}]);","angular.module(\"boyds\").directive('attachDropdownEvents', ['config', function (config) {\r\n return {\r\n restrict: 'E',\r\n templateUrl: config.templates.attachDropdownEvents.url\r\n };\r\n}]);","angular.module(\"boyds\").directive('focusInput', function () {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n trigger: '=focus'\r\n },\r\n link: function (scope, element) {\r\n scope.$watch('trigger', function (value) {\r\n if (value === true) {\r\n element[0].focus();\r\n\r\n if (element.find(\"option\").length > 12)\r\n element.attr(\"size\", 12);\r\n else\r\n element.attr(\"size\", element.find(\"option\").length);\r\n\r\n element.addClass(\"floating-select\");\r\n } else {\r\n element.attr(\"size\", 0);\r\n element.removeClass(\"floating-select\");\r\n }\r\n });\r\n }\r\n };\r\n});","angular.module(\"boyds\").directive('fancybox', ['config',function (config) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n imageUrl: '@',\r\n title: '@'\r\n },\r\n templateUrl: config.templates.fancybox.url, \r\n link: function (scope, element) {\r\n $(element).find('a').fancyboxPlus({\r\n 'transitionIn' : 'fade',\r\n 'transitionOut' : 'fade',\r\n 'speedIn' : 200,\r\n 'speedOut' : 200,\r\n 'overlayShow' : true,\r\n 'titlePosition': 'inside', \r\n 'margin':10\r\n });\r\n\r\n $(element).find('a').click(function(e){\r\n e.stopPropagation();\r\n });\r\n }\r\n };\r\n}]); ","angular.module(\"boyds\").directive('focusSelect', function () {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n trigger: '=focus'\r\n },\r\n link: function (scope, element) {\r\n scope.$watch('trigger', function (value) {\r\n if (value === true) {\r\n element[0].focus();\r\n\r\n if (element.find(\"option\").length > 12)\r\n element.attr(\"size\", 12);\r\n else\r\n element.attr(\"size\", element.find(\"option\").length + 1);\r\n\r\n element.addClass(\"floating-select\");\r\n } else {\r\n element.attr(\"size\", 0);\r\n element.removeClass(\"floating-select\");\r\n }\r\n });\r\n }\r\n };\r\n});","angular.module(\"boyds\").directive('labeledDropdown', ['config', function (config) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n options: '=',\r\n label: '=',\r\n model: '=',\r\n change: '=',\r\n disable: '=',\r\n isLoading: '=',\r\n focus: '=',\r\n unfocus: '='\r\n },\r\n templateUrl: config.templates.labeledDropdown.url,\r\n link: function (scope) {\r\n scope.onChange = function () {\r\n scope.change(scope.model);\r\n }\r\n }\r\n };\r\n}]);","angular.module(\"boyds\").directive('labeledImage', ['config', function (config) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n show: '=',\r\n label: '=',\r\n src: '='\r\n },\r\n templateUrl: config.templates.labeledImage.url \r\n };\r\n }]);","angular.module(\"boyds\").directive('loadingSpinner', ['config', function (config) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n isLoading: '=',\r\n isBig: '=?'\r\n },\r\n templateUrl: config.templates.loadingSpinner.url\r\n };\r\n}]);","https://github.com/AlphaGit/ng-pattern-restrict\r\nangular.module('boyds').directive('ngPatternRestrict', ['$log', function (a) { 'use strict'; return { restrict: 'A', require: '?ngModel', compile: function () { return function (a, b, c, d) { function e() { return b[0].selectionStart } function f() { var a = document.selection.createRange(); return a.moveStart('character', -b.val().length), a.text.length } function g() { var a, b, c, d = window.getSelection(), e = (d + '').length, f = !1; do a = (d + '').length, d.modify('extend', 'backward', 'character'), 0 === (d + '').length && (f = !0); while (a !== (d + '').length); for (b = f ? a : a - e, d.collapseToStart(), c = b; c-- > 0;) d.modify('move', 'forward', 'character'); for (; e-- > 0;) d.modify('extend', 'forward', 'character'); return b } function h(a) { b[0].setSelectionRange(a, a) } function i(a) { var c = b[0].createTextRange(); c.collapse(!0), c.moveEnd('character', a), c.moveStart('character', a), c.select() } function j(a) { var b, c = window.getSelection(); do b = (c + '').length, c.modify('extend', 'backward', 'line'); while (b !== (c + '').length); for (c.collapseToStart() ; a--;) c.modify('move', 'forward', 'character') } function k(a) { if (!/Opera/i.test(navigator.userAgent)) return 0; a.focus(), document.execCommand('selectAll'); var b = window.getSelection().focusNode; return (b || {}).selectionStart || 0 } function l() { b.val(w), angular.isUndefined(x) || z(x) } function m(a) { w = a, x = y() } function n(c) { if (!B) { var e = b.val(), f = b.prop('validity'); '' === e && 'text' !== b.attr('type') && f && f.badInput ? (c.preventDefault(), l()) : '' === e && 0 !== k(b[0]) ? (c.preventDefault(), l()) : A.test(e) ? m(e) : (c.preventDefault(), l()), d && a.$apply(function () { d.$setViewValue(w) }) } } function o() { D || b.bind('input keyup click', n) } function p() { D && (b.unbind('input', n), b.unbind('keyup', n), b.unbind('click', n), D = !1) } function q() { var a = c.ngPatternRestrict ? c.ngPatternRestrict : c.pattern; B = /\\^?\\.\\*\\$?/.test(a); try { A = RegExp(a) } catch (b) { throw 'Invalid RegEx string parsed for ngPatternRestrict: ' + a } } function r(a, b) { try { return a() || !b } catch (c) { return !1 } } function s() { var a = b[0]; y = r(function () { return a.selectionStart }) ? e : r(function () { return document.selection }, !0) ? f : g } function t() { var a = b[0]; z = 'function' == typeof a.setSelectionRange ? h : 'function' == typeof a.createTextRange ? i : j } function u() { C || (q(), w = b.val(), w || (w = ''), o(), s(), t(), C = !0) } function v() { p() } var w, x, y, z, A = /.*/, B = !0, C = !1, D = !1; c.$observe('ngPatternRestrict', q), c.$observe('pattern', q), a.$on('$destroy', v), u() } } } }]);","angular.module(\"boyds\").directive('pageLoadingSpinner', ['config', function (config) {\r\n return {\r\n restrict: 'E',\r\n templateUrl: config.templates.pageLoadingSpinner.url\r\n };\r\n}]);","angular.module(\"boyds\").directive('productFilters', ['config', function (config) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n preselectFilter: '='\r\n },\r\n controller: 'productFiltersController',\r\n controllerAs: 'vm',\r\n bindToController: true,\r\n templateUrl: config.templates.productFilters.url,\r\n };\r\n}]);","angular.module(\"boyds\").directive('searchFilters', ['config', function (config) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n searchTerm: '=',\r\n preselectFilter: '=',\r\n callback: '='\r\n },\r\n controller: 'searchFiltersController',\r\n controllerAs: 'vm',\r\n bindToController: true,\r\n templateUrl: config.templates.searchFilters.url\r\n };\r\n}]);","angular.module(\"boyds\").directive('slickSlider', function () {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element) {\r\n if ($(element).parent().hasClass(\"slick-slider\")) {\r\n\r\n $(element).parent().slick(\"unslick\");\r\n }\r\n\r\n $(element).parent().slick({\r\n infinite: false,\r\n arrows: true,\r\n variableWidth: true,\r\n easeing: \"\",\r\n swipeToSlide: true,\r\n mobileFirst: true,\r\n touchThreshold: 70,\r\n //edgeFriction: 1,\r\n responsive: [\r\n {\r\n breakpoint: 1050,\r\n settings: {\r\n slidesToShow: 5,\r\n slidesToScroll: 2\r\n }\r\n },\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 4,\r\n slidesToScroll: 2\r\n }\r\n },\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 3,\r\n slidesToScroll: 2\r\n }\r\n },\r\n {\r\n breakpoint: 480,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 2\r\n }\r\n },\r\n {\r\n breakpoint: 320,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 2\r\n }\r\n }\r\n ]\r\n });\r\n\r\n }\r\n };\r\n});","angular.module(\"boyds\").directive('match', function ($parse) {\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, elem, attrs, ctrl) {\r\n scope.$watch(function () {\r\n return $parse(attrs.match)(scope) === ctrl.$modelValue;\r\n }, function (currentValue) {\r\n ctrl.$setValidity('mismatch', currentValue);\r\n });\r\n }\r\n };\r\n});","angular.module(\"boyds\").directive('textEllipsis', ['config', function (config) {\r\n return {\r\n bindings: {\r\n textLength: '@',\r\n text: '@',\r\n tooltip: '@'\r\n },\r\n template: [\r\n '{{$ctrl.displayText}}',\r\n '',\r\n '',\r\n '{{::$ctrl.fullText}}',\r\n '',\r\n 'more_horiz',\r\n ''\r\n ].join(''),\r\n controller: function () {\r\n this.$onInit = function () {\r\n var length = parseInt(this.textLength || 0) || 30,\r\n text = this.text || '';\r\n if (text && text.length > length) {\r\n this.displayText = text.substring(0, length);\r\n this.fullText = text;\r\n this.showTooltip = true;\r\n } else {\r\n this.displayText = text;\r\n }\r\n };\r\n this.click = function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n }\r\n };\r\n}]);","angular.module('boyds').directive('googleAutocomplete', [function () {\r\n return {\r\n scope: {\r\n callback: '='\r\n },\r\n link: function (scope, element, attrs, model) {\r\n scope.gPlace = new google.maps.places.Autocomplete(element[0]);\r\n\r\n google.maps.event.addListener(scope.gPlace, 'place_changed', function () {\r\n var geoComponents = scope.gPlace.getPlace();\r\n var addressComponents = geoComponents.address_components;\r\n\r\n var address = {\r\n streetAddress: getAddressComponent('street_number', addressComponents).short_name + \" \" + getAddressComponent('route', addressComponents).long_name,\r\n city: getAddressComponent('locality', addressComponents).long_name,\r\n state: {\r\n Name: getAddressComponent('administrative_area_level_1', addressComponents).long_name,\r\n IsoCode: getAddressComponent('administrative_area_level_1', addressComponents).short_name\r\n },\r\n postalCode: getAddressComponent('postal_code', addressComponents).long_name,\r\n country: {\r\n Name: getAddressComponent('country', addressComponents).long_name,\r\n IsoCode: getAddressComponent('country', addressComponents).short_name\r\n },\r\n };\r\n scope.callback(address);\r\n });\r\n }\r\n };\r\n\r\n function getAddressComponent(type, array) {\r\n for (var i = 0; i < array.length; i++)\r\n if (array[i].types.includes(type))\r\n return array[i];\r\n return null;\r\n }\r\n}]);","angular\r\n\t.module('boyds')\r\n\t.config(['ngToastProvider', function(ngToast) {\r\n\t\tngToast.configure({\r\n\t\t\tverticalPosition: 'bottom',\r\n\t\t\thorizontalPosition: 'right',\r\n\t\t\tmaxNumber: 2,\r\n\t\t\tanimation:'slide'\r\n\t\t});\r\n\t}]);","angular.module('boyds').controller('searchFiltersController', searchFiltersController);\r\n\r\nsearchFiltersController.$inject = ['domService', 'service', '$scope'];\r\nfunction searchFiltersController(domService, service, $scope) {\r\n var vm = this;\r\n vm.makes = [];\r\n vm.models = [];\r\n vm.shapes = [];\r\n vm.actions = [];\r\n\r\n vm.isLoadingMakes = false;\r\n vm.isLoadingModels = false;\r\n vm.isLoadingShapes = false;\r\n vm.isLoadingActions = false;\r\n\r\n vm.isModelsDisabled = true;\r\n vm.isActionsDisabled = true;\r\n vm.isShapesDisabled = true;\r\n\r\n vm.focusMakes = false;\r\n vm.focusModels = false;\r\n vm.focusActions = false;\r\n vm.focusShapes = false;\r\n\r\n vm.selectedMake = null;\r\n vm.selectedModel = null;\r\n vm.selectedAction = null;\r\n vm.selectedShape = null;\r\n\r\n vm.getMakes = getMakes;\r\n vm.selectMake = selectMake;\r\n vm.selectModel = selectModel;\r\n vm.selectAction = selectAction;\r\n vm.selectShape = selectShape;\r\n vm.unfocused = unfocused;\r\n vm.resetProductFilters = resetProductFilters;\r\n vm.clearFiltersButton = clearFiltersButton;\r\n vm.onSearchTermChange = onSearchTermChange;\r\n\r\n $scope.$watch('vm.searchTerm', onSearchTermChange);\r\n\r\n init();\r\n\r\n return vm;\r\n\r\n function init() {\r\n clearFilters();\r\n getMakes()\r\n .then(function () { if (vm.preselectFilter) setFocus(); });\r\n }\r\n\r\n function onSearchTermChange(newVal, oldVal) {\r\n if (newVal !== oldVal)\r\n resetProductFilters();\r\n }\r\n\r\n function selectMake(make) {\r\n vm.selectedMake = make;\r\n if (!make || make.Id === undefined) return;\r\n vm.models = vm.actions = vm.shapes = [];\r\n return getModels()\r\n .then(function () { vm.callback(getCallbackObject()) })\r\n .then(setFocus);\r\n }\r\n\r\n function selectModel(model) {\r\n vm.selectedModel = model;\r\n if (!model || model.Id === undefined) return;\r\n return getActions()\r\n .then(function () { vm.callback(getCallbackObject()) })\r\n .then(setFocus);\r\n }\r\n\r\n function selectAction(action) {\r\n vm.selectedAction = action;\r\n if (!action || action.Id === undefined) return;\r\n return getShapes()\r\n .then(function () { vm.callback(getCallbackObject()) })\r\n .then(setFocus);\r\n }\r\n\r\n function selectShape(shape) {\r\n vm.selectedShape = shape;\r\n if (!shape || shape.Id === undefined) return;\r\n vm.callback(getCallbackObject());\r\n setFocus();\r\n }\r\n\r\n function getMakes() {\r\n vm.isLoadingMakes = true;\r\n if (vm.searchTerm)\r\n return getMakesBySearchTerm();\r\n return getAllMakes();\r\n }\r\n\r\n function getAllMakes() {\r\n return service.getMakes().then(function (response) {\r\n vm.makes = response.data;\r\n vm.isLoadingMakes = false;\r\n });\r\n }\r\n\r\n function getMakesBySearchTerm() {\r\n return service.searchGetMakes(vm.searchTerm).then(function (response) {\r\n vm.makes = response.data;\r\n vm.isLoadingMakes = false;\r\n });\r\n }\r\n\r\n function getModels() {\r\n vm.isLoadingModels = true;\r\n if (vm.searchTerm)\r\n return getModelsBySearchTerm();\r\n return getAllModels();\r\n }\r\n\r\n function getAllModels() {\r\n return service.getModels(vm.selectedMake.Id).then(function (response) {\r\n vm.models = response.data;\r\n setupModelsDropdown();\r\n vm.isLoadingModels = false;\r\n });\r\n }\r\n\r\n function getModelsBySearchTerm(id) {\r\n return service.searchGetModels(vm.searchTerm, vm.selectedMake.Id).then(function (response) {\r\n vm.models = response.data;\r\n setupModelsDropdown();\r\n vm.isLoadingModels = false;\r\n });\r\n }\r\n\r\n function getActions() {\r\n vm.isLoadingActions = true;\r\n if (vm.searchTerm)\r\n return getActionsBySearchTerm();\r\n return getAllActions();\r\n }\r\n\r\n function getAllActions() {\r\n return service.getActions(vm.selectedModel.Id).then(function (response) {\r\n vm.actions = response.data;\r\n setupActionsDropdown();\r\n vm.isLoadingActions = false;\r\n });\r\n }\r\n\r\n function getActionsBySearchTerm() {\r\n return service.searchGetActions(vm.searchTerm, vm.selectedMake.Id, vm.selectedModel.Id).then(function (response) {\r\n vm.actions = response.data;\r\n setupActionsDropdown();\r\n vm.isLoadingActions = false;\r\n });\r\n }\r\n\r\n function getShapes() {\r\n vm.isLoadingShapes = true;\r\n if (vm.searchTerm)\r\n return getShapesBySearchTerm();\r\n return getAllShapes();\r\n }\r\n\r\n function getAllShapes() {\r\n return service.getShapes(vm.selectedAction.Id).then(function (response) {\r\n vm.shapes = response.data;\r\n setupShapesDropdown();\r\n vm.isLoadingShapes = false;\r\n });\r\n }\r\n\r\n function getShapesBySearchTerm() {\r\n return service.searchGetShapes(vm.searchTerm, vm.selectedMake.Id, vm.selectedModel.Id, vm.selectedAction.Id).then(function (response) {\r\n vm.shapes = response.data;\r\n setupShapesDropdown();\r\n vm.isLoadingShapes = false;\r\n });\r\n }\r\n\r\n function setupMakesDropdown() {\r\n vm.selectedMake = null;\r\n vm.selectedModel = null;\r\n vm.selectedAction = null;\r\n vm.selectedShape = null;\r\n vm.isModelsDisabled = true;\r\n vm.isActionsDisabled = true;\r\n vm.isShapesDisabled = true;\r\n }\r\n\r\n function setupModelsDropdown() {\r\n vm.selectedModel = null;\r\n vm.selectedAction = null;\r\n vm.selectedShape = null;\r\n vm.isActionsDisabled = true;\r\n vm.isShapesDisabled = true;\r\n vm.isModelsDisabled = false;\r\n }\r\n\r\n function setupActionsDropdown() {\r\n vm.shapes = [];\r\n vm.selectedAction = null;\r\n vm.selectedShape = null;\r\n vm.isActionsDisabled = false;\r\n vm.isShapesDisabled = true;\r\n }\r\n\r\n function setupShapesDropdown() {\r\n vm.selectedShape = null;\r\n vm.isShapesDisabled = false;\r\n }\r\n\r\n function clearFilters() {\r\n clearAllSelections();\r\n clearDropdownOptions();\r\n resetDropdownsToDisabled();\r\n }\r\n\r\n function clearFiltersButton() {\r\n resetProductFilters();\r\n vm.callback(getCallbackObject());\r\n }\r\n\r\n function resetProductFilters() {\r\n clearFilters();\r\n return getMakes().then(function () { if (vm.preselectFilter) setFocus(); });\r\n }\r\n\r\n function clearAllSelections() {\r\n vm.selectedMake = null;\r\n vm.selectedModel = null;\r\n vm.selectedAction = null;\r\n vm.selectedShape = null;\r\n }\r\n\r\n function clearDropdownOptions() {\r\n vm.makes = [];\r\n vm.models = [];\r\n vm.shapes = [];\r\n vm.actions = [];\r\n }\r\n\r\n function resetDropdownsToDisabled() {\r\n vm.isModelsDisabled = true;\r\n vm.isActionsDisabled = true;\r\n vm.isShapesDisabled = true;\r\n }\r\n\r\n function setFocus() {\r\n resetFocus();\r\n if (vm.selectedMake === null) vm.focusMakes = true;\r\n else if (vm.selectedModel === null) vm.focusModels = true;\r\n else if (vm.selectedAction === null) vm.focusActions = true;\r\n else if (vm.selectedShape === null) vm.focusShapes = true;\r\n }\r\n\r\n function resetFocus() {\r\n vm.focusMakes = false;\r\n vm.focusModels = false;\r\n vm.focusActions = false;\r\n vm.focusShapes = false;\r\n }\r\n\r\n function unfocused(event) {\r\n domService.attr(event.target, 'size', 0);\r\n domService.removeClass(event.target, 'floating-select');\r\n }\r\n\r\n function getCallbackObject() {\r\n return {\r\n selectedMake: vm.selectedMake,\r\n selectedModel: vm.selectedModel,\r\n selectedAction: vm.selectedAction,\r\n selectedShape: vm.selectedShape\r\n };\r\n }\r\n}","angular.module('boyds').controller('slideNavigation', slideNavigation);\n\nfunction slideNavigation() {\r\n var vm = this;\n\n vm.navigationIsOpen = false;\n vm.toggleSlideNavigation = toggleSlideNavigation;\n\n return vm;\n\n function toggleSlideNavigation() {\r\n vm.navigationIsOpen = !vm.navigationIsOpen;\r\n }\r\n}","angular.module('boyds').controller('productFiltersController', productFiltersController);\r\n\r\nproductFiltersController.$inject = ['domService', 'service', '$rootScope', 'windowService', 'config', 'productFiltersService'];\r\nfunction productFiltersController(domService, service, $rootScope, windowService, config, productFiltersService) {\r\n var vm = this;\r\n var productFromUrl = false;\r\n\r\n vm.makes = [];\r\n vm.models = [];\r\n vm.actions = [];\r\n\r\n vm.showProductFilters = true;\r\n vm.productUrlName = null;\r\n\r\n vm.isLoadingMakes = false;\r\n vm.isLoadingModels = false;\r\n vm.isLoadingActions = false;\r\n\r\n vm.isModelsDisabled = true;\r\n vm.isActionsDisabled = true;\r\n\r\n vm.focusMakes = false;\r\n vm.focusModels = false;\r\n vm.focusActions = false;\r\n\r\n vm.selectedMake = null;\r\n vm.selectedModel = null;\r\n vm.selectedAction = null;\r\n vm.preselectedProduct = null;\r\n\r\n vm.getMakes = getMakes;\r\n vm.selectMake = selectMake;\r\n vm.selectModel = selectModel;\r\n vm.selectAction = selectAction;\r\n vm.unfocused = unfocused;\r\n vm.resetProductFilters = resetProductFilters;\r\n vm.clearFiltersButton = clearFiltersButton;\r\n vm.loadGivenProduct = loadGivenProduct;\r\n vm.goToConfigurator = goToConfigurator;\r\n vm.isOnConfigurator = isOnConfigurator;\r\n\r\n init();\r\n\r\n return vm;\r\n\r\n function init() {\r\n redirectToPreviousPageAfterLogin();\r\n clearFilters();\r\n setProductUrlName();\r\n getMakes()\r\n .then(getPreselectedProduct)\r\n .then(loadGivenProduct)\r\n .then(function () {\r\n if (!isOnConfigurator())\r\n setFiltersObj(null);\r\n if (vm.preselectFilter) { setFocus(); }\r\n });\r\n }\r\n\r\n function redirectToPreviousPageAfterLogin() {\r\n if (isOnHomePage() && hasValidRedirectCookie()) {\r\n var redirect = readCookie(config.cookie.loginRedirect);\r\n if (isUnwantedRedirect(redirect)) return;\r\n redirectPage(redirect)\r\n }\r\n }\r\n\r\n function isOnHomePage() {\r\n return (windowService.getPathName() == '/' || windowService.getPathName() == config.pages.routes.home);\r\n }\r\n\r\n function hasValidRedirectCookie() {\r\n return readCookie(config.cookie.loginRedirect) != null && getCookie(config.cookie.sfTokenId) != null;\r\n }\r\n\r\n function getCookie(key) {\r\n var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');\r\n return keyValue ? keyValue[2] : null;\r\n }\r\n\r\n function readCookie(name) {\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\r\n }\r\n return null;\r\n }\r\n\r\n function isUnwantedRedirect(redirect) {\r\n return isRedirectPage(redirect, config.pages.routes.userRegistration) \r\n || isRedirectPage(redirect, config.pages.routes.home);\r\n }\r\n\r\n function isRedirectPage(redirect, page) {\r\n return redirect.indexOf(page) != -1;\r\n }\r\n\r\n function redirectPage(redirect) {\r\n eraseCookie(config.cookie.loginRedirect);\r\n windowService.setLocation(redirect);\r\n }\r\n\r\n function eraseCookie(name) {\r\n createCookie(name, \"\", -1);\r\n }\r\n\r\n //Might be able to cut some of this out\r\n function createCookie(name, value, days) {\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n var expires = \"; expires=\" + date.toGMTString();\r\n }\r\n else var expires = \"\";\r\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\r\n }\r\n\r\n function getPreselectedProduct() {\r\n if ((isOnProductDetail() || isOnConfigurator()) && vm.productUrlName)\r\n return getGunstockClassificationIds();\r\n else if (isOnConfigurator() && productFiltersService.hasProductFiltersObj())\r\n vm.preselectedProduct = productFiltersService.getProductFiltersObject();\r\n return;\r\n }\r\n\r\n function loadGivenProduct() {\r\n if (vm.preselectedProduct)\r\n return selectMake(getPreselectedMake())\r\n .then(function () { vm.selectedMake = getPreselectedMake(); })\r\n .then(function () { return selectModel(getPreselectedModel()); })\r\n .then(function () { vm.selectedModel = getPreselectedModel(); })\r\n .then(function () { return selectAction(getPreselectedAction()); })\r\n .then(function () { vm.selectedAction = getPreselectedAction(); });\r\n else {\r\n $rootScope.$broadcast(config.events.productFiltersCallback);\r\n return;\r\n }\r\n }\r\n\r\n function getGunstockClassificationIds() {\r\n return service.getGunstockClassificationIds(vm.productUrlName).then(function (response) {\r\n vm.preselectedProduct = response.data;\r\n productFromUrl = true;\r\n });\r\n }\r\n\r\n function setProductUrlName() {\r\n var brokenPath = windowService.getPathName().split(\"/\");\r\n if (brokenPath.length <= 2)\r\n return;\r\n var productUrlName = brokenPath[brokenPath.length - 1];\r\n if (productUrlName !== config.pages.productConfigurator) vm.productUrlName = productUrlName;\r\n }\r\n\r\n function callback() {\r\n if (isOnConfigurator()) {\r\n if (productFromUrl)\r\n setFiltersObj(getCallbackObject());\r\n else\r\n setFiltersObj(getBaseCallbackObject());\r\n $rootScope.$broadcast(config.events.productFiltersCallback);\r\n }\r\n\r\n productFromUrl = false;\r\n }\r\n\r\n function goToConfigurator() {\r\n if (allFiltersAreSelected()) {\r\n setFiltersObj(getCallbackObject());\r\n routeToConfigurator();\r\n }\r\n }\r\n\r\n function setFiltersObj(obj) {\r\n productFiltersService.setProductFiltersObject(obj);\r\n }\r\n\r\n function routeToConfigurator() {\r\n windowService.setHref(config.pages.productConfigurator);\r\n }\r\n\r\n function isOnConfigurator() {\r\n return windowService.getHref().indexOf(config.pages.productConfigurator) > -1;\r\n }\r\n\r\n function isOnProductDetail() {\r\n return windowService.getHref().indexOf(config.pages.productDetail) > -1;\r\n }\r\n\r\n function allFiltersAreSelected() {\r\n return vm.selectedMake && vm.selectedModel && vm.selectedAction;\r\n }\r\n\r\n function selectMake(make) {\r\n vm.selectedMake = make;\r\n if (!make || make.Id === undefined) return;\r\n vm.models = vm.actions = [];\r\n return getModels()\r\n .then(setFocus);\r\n }\r\n\r\n function selectModel(model) {\r\n vm.selectedModel = model;\r\n if (!model || model.Id === undefined) return;\r\n return getActions()\r\n .then(setFocus);\r\n }\r\n\r\n function selectAction(action) {\r\n vm.selectedAction = action;\r\n if (!action || action.Id === undefined) return;\r\n callback();\r\n setFocus();\r\n }\r\n\r\n function getMakes() {\r\n vm.isLoadingMakes = true;\r\n return getAllMakes();\r\n }\r\n\r\n function getAllMakes() {\r\n return service.getMakes().then(function (response) {\r\n vm.makes = response.data;\r\n vm.isLoadingMakes = false;\r\n });\r\n }\r\n\r\n function getModels() {\r\n vm.isLoadingModels = true;\r\n return getAllModels();\r\n }\r\n\r\n function getAllModels() {\r\n return service.getModels(vm.selectedMake.Id).then(function (response) {\r\n vm.models = response.data;\r\n setupModelsDropdown();\r\n vm.isLoadingModels = false;\r\n });\r\n }\r\n\r\n function getActions() {\r\n vm.isLoadingActions = true;\r\n return getAllActions();\r\n }\r\n\r\n function getAllActions() {\r\n return service.getActions(vm.selectedModel.Id).then(function (response) {\r\n vm.actions = response.data;\r\n setupActionsDropdown();\r\n vm.isLoadingActions = false;\r\n });\r\n }\r\n\r\n function setupMakesDropdown() {\r\n vm.selectedMake = null;\r\n vm.selectedModel = null;\r\n vm.selectedAction = null;\r\n vm.isModelsDisabled = true;\r\n vm.isActionsDisabled = true;\r\n }\r\n\r\n function setupModelsDropdown() {\r\n vm.selectedModel = null;\r\n vm.selectedAction = null;\r\n vm.isActionsDisabled = true;\r\n vm.isModelsDisabled = false;\r\n }\r\n\r\n function setupActionsDropdown() {\r\n vm.selectedAction = null;\r\n vm.isActionsDisabled = false;\r\n }\r\n\r\n function clearFilters() {\r\n clearAllSelections();\r\n clearDropdownOptions();\r\n resetDropdownsToDisabled();\r\n }\r\n\r\n function clearFiltersButton() {\r\n resetProductFilters();\r\n }\r\n\r\n function resetProductFilters() {\r\n clearFilters();\r\n return getMakes().then(function () { if (vm.preselectFilter) setFocus(); });\r\n }\r\n\r\n function clearAllSelections() {\r\n vm.selectedMake = null;\r\n vm.selectedModel = null;\r\n vm.selectedAction = null;\r\n }\r\n\r\n function clearDropdownOptions() {\r\n vm.makes = [];\r\n vm.models = [];\r\n vm.actions = [];\r\n }\r\n\r\n function resetDropdownsToDisabled() {\r\n vm.isModelsDisabled = true;\r\n vm.isActionsDisabled = true;\r\n }\r\n\r\n function setFocus() {\r\n resetFocus();\r\n if (vm.selectedMake === null) vm.focusMakes = true;\r\n else if (vm.selectedModel === null) vm.focusModels = true;\r\n else if (vm.selectedAction === null) vm.focusActions = true;\r\n }\r\n\r\n function resetFocus() {\r\n vm.focusMakes = false;\r\n vm.focusModels = false;\r\n vm.focusActions = false;\r\n }\r\n\r\n function unfocused(event) {\r\n domService.attr(event.target, 'size', 0);\r\n domService.removeClass(event.target, 'floating-select');\r\n }\r\n\r\n function getBaseCallbackObject() {\r\n return {\r\n selectedMake: vm.selectedMake,\r\n selectedModel: vm.selectedModel,\r\n selectedAction: vm.selectedAction,\r\n MakeId: vm.selectedMake.Id,\r\n ModelId: vm.selectedModel.Id,\r\n ActionId: vm.selectedAction.Id,\r\n ShapeId: null\r\n };\r\n }\r\n\r\n function getCallbackObject() {\r\n var base = getBaseCallbackObject();\r\n base.ShapeId = vm.preselectedProduct && vm.preselectedProduct.ShapeId ? vm.preselectedProduct.ShapeId : null\r\n return base;\r\n }\r\n\r\n function getPreselectedMake() {\r\n for (var i = 0; i < vm.makes.length; i++)\r\n if (vm.makes[i].Id === vm.preselectedProduct.MakeId)\r\n return vm.makes[i];\r\n }\r\n\r\n function getPreselectedModel() {\r\n for (var i = 0; i < vm.models.length; i++)\r\n if (vm.models[i].Id === vm.preselectedProduct.ModelId)\r\n return vm.models[i];\r\n }\r\n\r\n function getPreselectedAction() {\r\n for (var i = 0; i < vm.actions.length; i++)\r\n if (vm.actions[i].Id === vm.preselectedProduct.ActionId)\r\n return vm.actions[i];\r\n }\r\n}","angular.module(\"boyds\").factory('service', ['$http', 'config', function ($http, config) {\r\n return {\r\n getRecommendedProducts: function (page, pageSize) {\r\n return $http({\r\n url: config.service.getRecommendedProducts.url + \"?page=\" + page + \"&pageSize=\" + pageSize,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getRecommendedProductsCount: function () {\r\n return $http({\r\n url: config.service.getRecommendedProductsCount.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n addRecommendedProductToCart: function (productUrl) {\r\n return $http({\r\n url: config.service.addRecommendedProductToCart.url + insertValue(productUrl),\r\n method: 'POST'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getCartOrderTotal: function () {\r\n return $http({\r\n url: config.service.getCartOrderTotal.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getOrderSubTotal: function () {\r\n return $http({\r\n url: config.service.getOrderSubTotal.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getDealerSubTotal: function () {\r\n return $http({\r\n url: config.service.getDealerSubTotal.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getCheckoutStepOne: function () {\r\n return $http({\r\n url: config.service.getCheckoutStepOne.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getCheckoutStepShipping: function () {\r\n return $http({\r\n url: config.service.getCheckoutStepShipping.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getCheckoutStepPaymentAndReview: function () {\r\n return $http({\r\n url: config.service.getCheckoutStepPaymentAndReview.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getElementsInitializers: function () {\r\n return $http({\r\n url: config.service.getElementsInitializers.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getCheckoutStepReceipt: function (orderId) {\r\n return $http({\r\n url: config.service.getCheckoutStepReceipt.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getCartOrderForCurrentCustomer: function (unit) {\r\n return $http({\r\n url: config.service.getCartOrderForCurrentCustomer.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getCountries: function () {\r\n return new $http.get(config.service.getCountries.url);\r\n },\r\n getMakes: function () {\r\n return new $http.get(config.service.getMakes.url);\r\n },\r\n getModels: function (makeId) {\r\n return getByParentId(config.service.getModels.url, makeId);\r\n },\r\n getActions: function (modelId) {\r\n return getByParentId(config.service.getActions.url, modelId);\r\n },\r\n getShapes: function (actionId) {\r\n return getByParentId(config.service.getShapes.url, actionId);\r\n },\r\n getProduct: function (shapeId) {\r\n return getByParentId(config.service.getProduct.url, shapeId);\r\n },\r\n getGunstockClassificationIds: function (urlName) {\r\n return new $http.get(config.service.getGunstockClassificationIds.url.replace('{urlName}', urlName));\r\n },\r\n getTotalResultsCount: function (searchTerm, make, model, action, shape) {\r\n return new $http.get(config.service.getTotalResultsCount.url + searchTerm\r\n + insertValue(make) + insertValue(model) + insertValue(action) + insertValue(shape)\r\n );\r\n },\r\n getAllProductsCount: function (make, model, action, shape) {\r\n return new $http.get(config.service.getAllProductsCount.url\r\n + insertValue(make) + insertValue(model) + insertValue(action) + insertValue(shape));\r\n },\r\n search: function (searchTerm, page, take, make, model, action, shape) {\r\n return new $http.get(config.service.search.url + searchTerm + insertValue(page) + insertValue(take)\r\n + insertValue(make) + insertValue(model) + insertValue(action) + insertValue(shape));\r\n },\r\n searchSuggestions: function (searchTerm) {\r\n return new $http.get(config.service.searchSuggestions.url + searchTerm);\r\n },\r\n searchForOrders: function (searchTerm, page, take) {\r\n return new $http.get(config.service.searchForOrders.url + \"?searchTerm=\" + searchTerm + \"&skipPage=\" + page + \"&takeCount=\" + take);\r\n },\r\n searchForOrdersCount: function (searchTerm) {\r\n return new $http.get(config.service.searchForOrdersCount.url + \"?searchTerm=\" + searchTerm);\r\n },\r\n sendPasswordRecoveryEmail: function (email) {\r\n return new $http.post(config.service.sendPasswordRecoveryEmail.url + email);\r\n },\r\n searchGetMakes: function (searchTerm) {\r\n return new $http.get(config.service.searchGetMakes.url + searchTerm);\r\n },\r\n searchGetModels: function (searchTerm, makeId) {\r\n return new $http.get(config.service.searchGetModels.url + searchTerm + insertValueSimple(makeId));\r\n },\r\n searchGetActions: function (searchTerm, makeId, modelId) {\r\n return new $http.get(config.service.searchGetActions.url + searchTerm + insertValueSimple(makeId) + insertValueSimple(modelId));\r\n },\r\n searchGetShapes: function (searchTerm, makeId, modelId, actionId) {\r\n return new $http.get(config.service.searchGetShapes.url + searchTerm + insertValueSimple(makeId) + insertValueSimple(modelId) + insertValueSimple(actionId));\r\n },\r\n getAllProducts: function (page, take, make, model, action, shape) {\r\n return new $http.get(config.service.getAllProducts.url + insertValue(page) + insertValue(take)\r\n + insertValue(make) + insertValue(model) + insertValue(action) + insertValue(shape));\r\n },\r\n addRecommendedProductToCart: function (productUrl) {\r\n return new $http.post(config.service.addRecommendedProductToCart.url + '/' + productUrl);\r\n },\r\n addProductToCart: function (product) {\r\n return new $http.post(config.service.addProductToCart.url, product);\r\n },\r\n addProductsToCart: function (product) {\r\n return new $http.post(config.service.addProductsToCart.url, product);\r\n },\r\n addCustomizedGunstockToCart: function (products) {\r\n return new $http.post(config.service.addCustomizedGunstockToCart.url, products);\r\n },\r\n registerCustomer: function (customer) {\r\n return new $http.post(config.service.registerCustomer.url, customer);\r\n },\r\n getCustomerProfile: function (userId) {\r\n return new $http.get(config.service.getCustomerProfile.url + \"?userId=\" + userId);\r\n },\r\n updateCustomerProfile: function (customer) {\r\n return new $http.put(config.service.updateCustomerProfile.url, customer);\r\n },\r\n getAvailableAddOns: function (productId) {\r\n return getByProductId(config.service.getAvailableAddOns.url, productId);\r\n },\r\n getCartCount: function () {\r\n return new $http.get(config.service.getCartCount.url);\r\n },\r\n updateCartAddress: function (address) {\r\n return $http({\r\n url: config.service.updateCartAddress.url,\r\n method: 'PUT',\r\n data: address\r\n })\r\n },\r\n updateCartAddresses: function (address) {\r\n return $http({\r\n url: config.service.updateCartAddresses.url,\r\n method: 'POST',\r\n data: address,\r\n contentType: \"application/json\"\r\n })\r\n },\r\n updateCartOrderMetaFields: function (metaFields) {\r\n return $http({\r\n url: config.service.updateCartOrderMetaFields.url,\r\n method: 'POST',\r\n data: metaFields\r\n })\r\n },\r\n updateCartOrderShippingMethod: function (shippingMethod) {\r\n return $http({\r\n url: config.service.updateCartOrderShippingMethod.url,\r\n method: 'PUT',\r\n data: shippingMethod\r\n })\r\n },\r\n updateCheckoutStepOne: function (checkoutData) {\r\n return $http({\r\n url: config.service.updateCheckoutStepOne.url,\r\n method: 'PUT',\r\n data: checkoutData\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n createUserAccount: function (newUser) {\r\n return $http({\r\n url: config.service.createUserAccount.url,\r\n method: 'POST',\r\n data: newUser\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n processOrder: function (paymentProcessorResponse) {\r\n return $http({\r\n url: config.service.processOrder.url,\r\n method: 'POST',\r\n contentType: \"application/json\",\r\n data: paymentProcessorResponse\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n placeOrder: function (paymentResponse) {\r\n return $http({\r\n url: config.service.placeOrder.url,\r\n method: 'POST',\r\n contentType: \"application/json\",\r\n data: paymentResponse\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getOrderDetails: function (orderId) {\r\n return new $http.get(config.service.getOrderDetails.url + orderId);\r\n },\r\n getOrder: function (orderId) {\r\n return new $http.get(config.service.getOrder.url + orderId);\r\n },\r\n submitPromotionForm: function (formValues) {\r\n //https://github.com/Sitefinity/feather-widgets/blob/master/Telerik.Sitefinity.Frontend.Forms/Mvc/Controllers/FormController.cs\r\n //http://www.uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs/\r\n //https://developer.mozilla.org/en-US/docs/Web/API/FormData\r\n\r\n formValues.FormId = config.service.submitPromotionForm.formId;\r\n\r\n var formData = new FormData();\r\n for (var key in formValues)\r\n formData.append(key, formValues[key]);\r\n\r\n return $http({\r\n method: 'POST',\r\n url: config.service.submitPromotionForm.url,\r\n data: formData,\r\n transformRequest: angular.identity,\r\n headers: { 'Content-Type': undefined }\r\n });\r\n },\r\n getWorkstations: function () {\r\n return $http({\r\n url: config.service.getWorkstations.url,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n getWorkstationInstructions: function (workstationNumber, purchaseOrderId) {\r\n return $http({\r\n url: `${config.service.getWorkstationInstructions.url}?workstationGuid=${workstationNumber}&purchaseOrderId=${purchaseOrderId}`,\r\n method: 'GET'\r\n }).then(\r\n function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n },\r\n function failureCallback(response) {\r\n throw response.data.ExceptionMessage;\r\n }\r\n );\r\n },\r\n importParts: function (workstationIds) {\r\n return $http({\r\n url: `${config.service.importParts.url}?workstationIds=${JSON.stringify(workstationIds)}`,\r\n method: 'GET'\r\n }).then(function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n });\r\n },\r\n requestHelp: function (workstation, workstationId, purchaseOrderNumber, helpType, additionalInfo) {\r\n let data = {\r\n workstation: workstation,\r\n workstationId: workstationId,\r\n purchaseOrderNumber: purchaseOrderNumber,\r\n helpType: helpType,\r\n additionalInfo: additionalInfo\r\n };\r\n return $http({\r\n url: config.service.requestHelp.url,\r\n method: 'POST',\r\n data\r\n }).then(\r\n function successCallback(response) {\r\n if (response.status === 200)\r\n return response.data;\r\n },\r\n function failureCallback(response) {\r\n throw response.data.ExceptionMessage;\r\n }\r\n );\r\n },\r\n voidTransaction: function (transactionId) {\r\n return $http({\r\n url: config.service.voidTransaction.url + transactionId,\r\n method: 'POST'\r\n }).then(\r\n function successCallback(response) {\r\n if (response.status === 200)\r\n return true;\r\n },\r\n function failureCallback(response) {\r\n throw response.data.ExceptionMessage;\r\n }\r\n );\r\n }\r\n }\r\n\r\n function getByParentId(url, parentId) {\r\n return new $http.get(url, { params: { parentId: parentId } });\r\n }\r\n\r\n function getByProductId(url, productId) {\r\n return new $http.get(url, { params: { productId: productId } });\r\n }\r\n\r\n function getByFilters(url, make, model, action, shape) {\r\n return new $http.get(url, {\r\n params: {\r\n makeTitle: make,\r\n modelTitle: model,\r\n actionTitle: action,\r\n shapeTitle: shape\r\n }\r\n });\r\n }\r\n\r\n function insertValue(value) {\r\n return value ? \"/\" + encodeURIComponent(value) : \"\";\r\n }\r\n\r\n function insertValueSimple(value) {\r\n return value ? \"/\" + value : \"\";\r\n }\r\n\r\n function insertOptional(value) {\r\n return value ? value : null;\r\n }\r\n}]);","angular.module(\"boyds\").controller('productConfiguratorController', productConfiguratorController);\r\nproductConfiguratorController.$inject = ['$rootScope', '$filter', '$anchorScroll', '$timeout', 'config', 'thumbnailService', 'service', 'ngProgressFactory', 'productFiltersService', 'confirmationService'];\r\n\r\nfunction productConfiguratorController($rootScope, $filter, $anchorScroll, $timeout, config, thumbnailService, service, ngProgress, productFiltersService, confirmationService) {\r\n var vm = this;\r\n var productFilters = null;\r\n\r\n vm.showAddedToCart = false;\r\n vm.showInstructions = false;\r\n vm.showInvalidQuantityMessage = false;\r\n vm.showInvalidInitialEngravingMessage = false;\r\n\r\n vm.selectedProduct = null;\r\n vm.productUrlName = null;\r\n vm.addOns = null;\r\n vm.selectedAddOnGroup = null;\r\n vm.selectedMake = null;\r\n vm.selectedModel = null;\r\n vm.selectedShape = null;\r\n vm.runningTotal = null;\r\n vm.imageUrl = null;\r\n vm.hasVariationImage = true;\r\n vm.gunImageUrl = null;\r\n vm.categoryDescription = null;\r\n vm.baseModelPrice = null;\r\n\r\n vm.config = config;\r\n vm.productQuantity = 1;\r\n vm.productQuantityPattern = config.inputPatterns.productQuantity;\r\n vm.gunstockImageUnavailable = config.messages.gunstockImageUnavailable;\r\n\r\n vm.shapes = [];\r\n vm.selectedCustomizations = {};\r\n vm.gunstockEngravingInitials = null;\r\n\r\n vm.hasSelectedInitialEngraving = hasSelectedInitialEngraving;\r\n vm.selectShape = selectShape;\r\n vm.addProductToCart = addProductToCart;\r\n vm.hasProduct = hasProduct;\r\n vm.clickAndAddProductToCart = clickAndAddProductToCart;\r\n vm.selectAddOnGroup = selectAddOnGroup;\r\n vm.scrollToShapeSelectorName = scrollToShapeSelectorName;\r\n vm.isCategorySelected = isCategorySelected;\r\n vm.hasAvailableCustomization = hasAvailableCustomization;\r\n vm.selectAddOn = selectAddOn;\r\n vm.isCustomizationSelected = isCustomizationSelected;\r\n vm.isAnyCustomizationSelectedFor = isAnyCustomizationSelectedFor;\r\n vm.filtersCallback = filtersCallback;\r\n vm.getOrderedCustomizations = getOrderedCustomizations;\r\n vm.getRunningTotal = getRunningTotal;\r\n vm.removeSelectedCustomOption = removeSelectedCustomOption;\r\n vm.toggleCustomOptionDescription = toggleCustomOptionDescription;\r\n vm.hasPrimaryImage = hasPrimaryImage;\r\n vm.thumbnailService = thumbnailService;\r\n vm.hasSelectedCustomizations = hasSelectedCustomizations;\r\n vm.hasAddons = hasAddons;\r\n vm.getGunstockPrice = getGunstockPrice;\r\n vm.getFormattedGunstockPrice = getFormattedGunstockPrice;\r\n vm.formatCurrency = formatCurrency;\r\n vm.getCustomOptionPrice = getCustomOptionPrice;\r\n vm.isOnSale = isOnSale;\r\n vm.getCustomOptionDisplay = getCustomOptionDisplay;\r\n vm.baseModelPrice = 100;\r\n\r\n vm.isCompatibleWithSelectedOptions = isCompatibleWithSelectedOptions;\r\n\r\n $rootScope.$on(config.events.productFiltersCallback, function () {\r\n resetProductConfigurator();\r\n filtersCallback(productFiltersService.getProductFiltersObject());\r\n });\r\n\r\n init();\r\n\r\n return vm;\r\n\r\n function init() {\r\n initializeSelectedCustomizations();\r\n configureProgressBar();\r\n updateImageUrl();\r\n }\r\n\r\n function initializeSelectedCustomizations() {\r\n for (customization in config.customizations)\r\n vm.selectedCustomizations[customization] = null;\r\n }\r\n\r\n function configureProgressBar() {\r\n vm.progressBar = ngProgress.createInstance();\r\n vm.progressBar.setParent(document.getElementById('header-layout'));\r\n vm.progressBar.setColor('#bf1e2e');\r\n }\r\n\r\n function getOrderedCustomizations() {\r\n return [vm.config.customizations.CustomWoods.value,\r\n vm.config.customizations.CustomFinishes.value,\r\n vm.config.customizations.CustomLops.value,\r\n vm.config.customizations.CustomPads.value,\r\n vm.config.customizations.CustomTips.value,\r\n vm.config.customizations.CustomGrips.value,\r\n vm.config.customizations.CustomAccents.value,\r\n vm.config.customizations.LaserBasics.value,\r\n vm.config.customizations.AdjustableCombs.value,\r\n vm.config.customizations.CustomOther.value].reverse();\r\n }\r\n\r\n function hasProductImage() {\r\n return vm.selectedProduct !== null && vm.selectedProduct.PrimaryImageUrl !== null;\r\n }\r\n\r\n function filtersCallback(filters) {\r\n startLoadingIdentifiers();\r\n vm.showInstructions = !filters;\r\n if (filters) {\r\n populateLocalFiltersObj(filters);\r\n setSelectedFilters(filters);\r\n return getItemsBySelectedFilters(filters)\r\n }\r\n else\r\n completeLoadingIdentifiers();\r\n resetProductConfigurator();\r\n }\r\n\r\n function getItemsBySelectedFilters(filters) {\r\n if (filters.ShapeId && vm.selectedShape)\r\n return getProduct(filters.ShapeId);\r\n else if (filters.ActionId)\r\n return getAllShapes(filters.ActionId)\r\n }\r\n\r\n function populateLocalFiltersObj(filters) {\r\n productFilters = filters;\r\n }\r\n\r\n function setSelectedFilters(filters) {\r\n vm.selectedMake = filters.selectedMake ? filters.selectedMake : null;\r\n vm.selectedModel = filters.selectedModel ? filters.selectedModel : null;\r\n vm.selectedShape = filters.selectedShape ? filters.selectedShape : null;\r\n }\r\n\r\n function getProduct(id) {\r\n return service.getProduct(id).then(function (response) {\r\n vm.selectedProduct = response.data;\r\n if (vm.selectedProduct === null) return null;\r\n setupSelectedProductFields();\r\n\r\n return getAvailableAddOns(vm.selectedProduct.Id);\r\n });\r\n }\r\n\r\n function setupSelectedProductFields() {\r\n getRunningTotal();\r\n if (vm.selectedProduct.Description !== \"\")\r\n vm.selectedProduct.Description = sanitizeHtmlToPlainText(vm.selectedProduct.Description);\r\n }\r\n\r\n function sanitizeHtmlToPlainText(text) {\r\n return text.replace(config.inputPatterns.htmlTags, ' ').replace(config.inputPatterns.multipleSpaces, ' ').trim();\r\n }\r\n\r\n function getAvailableAddOns(ProductId) {\r\n vm.addOns = null;\r\n return service.getAvailableAddOns(ProductId).then(setupAvailableAddOns);\r\n }\r\n\r\n function setupAvailableAddOns(response) {\r\n vm.addOns = response.data;\r\n preselectFirstCustomOptionGroupIfAvailable();\r\n preselectStandardCustomOptions();\r\n vm.isAddOnMenuHidden = false;\r\n evaluatePrimaryImageUrl();\r\n vm.getRunningTotal();\r\n completeLoadingIdentifiers();\r\n }\r\n\r\n function preselectStandardCustomOptions() {\r\n selectFirstCompatibleCustomOptionForGroup(config.customizations.CustomWoods.value);\r\n selectFirstCompatibleCustomOptionForGroup(config.customizations.CustomFinishes.value);\r\n selectFirstCompatibleCustomOptionForGroup(config.customizations.CustomLops.value);\r\n selectFirstCompatibleCustomOptionForGroup(config.customizations.CustomPads.value);\r\n }\r\n\r\n function selectFirstCompatibleCustomOptionForGroup(group) {\r\n vm.selectedCustomizations[group] = findFirstCompatibleOption(vm.addOns[group]);\r\n if (vm.selectedCustomizations[group] !== null && vm.selectedCustomizations[group] !== undefined) {\r\n indicateSelectedOption(vm.selectedCustomizations[group]);\r\n updateCompatibleSelectedOptions(vm.selectedCustomizations[group]);\r\n updateCompatibleAvailableOptions(vm.selectedCustomizations[group]);\r\n }\r\n }\r\n\r\n function findFirstCompatibleOption(options) {\r\n for (let i = 0; i < options.length; i++) {\r\n if (isCompatibleWithSelectedOptions(options[i])) {\r\n return options[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function preselectFirstCustomOptionGroupIfAvailable() {\r\n if (vm.addOns[config.customizations.CustomWoods.value].length !== 0)\r\n vm.selectedAddOnGroup = config.customizations.CustomWoods.value;\r\n else\r\n vm.selectedAddOnGroup = null;\r\n }\r\n\r\n function getStandardCustomOption(customOptions) {\r\n for (var i = 0; i < customOptions.length; i++)\r\n if (customOptions[i].Price === 0)\r\n return customOptions[i];\r\n return customOptions[0];\r\n }\r\n\r\n function isRequiredCustomOption(fieldName) {\r\n return fieldName === config.customizations.CustomWoods.value\r\n || fieldName === config.customizations.CustomFinishes.value\r\n || fieldName === config.customizations.CustomLops.value\r\n || fieldName === config.customizations.CustomPads.value;\r\n }\r\n\r\n function removeSelectedCustomOption(fieldName) {\r\n if (isRequiredCustomOption(fieldName)) return;\r\n if (confirmationService.confirmMessage('Remove ' + vm.selectedCustomizations[fieldName].Title + '?')) {\r\n if(fieldName === config.customizations.LaserBasics.value)\r\n vm.showInvalidInitialEngravingMessage = false;\r\n vm.selectedCustomizations[fieldName] = null;\r\n vm.getRunningTotal();\r\n evaluatePrimaryImageUrl();\r\n }\r\n }\r\n\r\n function getAllShapes(ActionId) {\r\n service.getShapes(ActionId).then(function (response) {\r\n vm.shapes = response.data;\r\n if (productFilters.ShapeId) getPreselectedShape();\r\n else if (vm.shapes.length > 0) selectShape(vm.shapes[0]);\r\n });\r\n }\r\n\r\n function getPreselectedShape() {\r\n for (var i = 0; i < vm.shapes.length; i++)\r\n if (vm.shapes[i].Id === productFilters.ShapeId)\r\n selectShape(vm.shapes[i]);\r\n }\r\n\r\n function selectShape(shape) {\r\n if (vm.selectedShape === shape) return;\r\n\r\n scrollToProductName();\r\n resetFieldsOnShapeChange();\r\n populateProductFiltersShape(shape);\r\n vm.filtersCallback(productFilters);\r\n }\r\n\r\n function scrollToProductName() {\r\n $anchorScroll('ProductName');\r\n }\r\n\r\n function scrollToShapeSelectorName() {\r\n vm.toggleShapeSelector = false;\r\n $anchorScroll('ShapeSelectorName');\r\n }\r\n\r\n function resetFieldsOnShapeChange() {\r\n vm.addOns = null;\r\n vm.categoryDescription = null;\r\n vm.showAddedToCart = false;\r\n vm.selectedCustomizations = {};\r\n initializeSelectedCustomizations();\r\n }\r\n\r\n function populateProductFiltersShape(shape) {\r\n productFilters.selectedShape = shape;\r\n productFilters.ShapeId = shape.Id;\r\n }\r\n\r\n function clearSelectedProduct() {\r\n vm.selectedProduct = null;\r\n initializeSelectedCustomizations();\r\n }\r\n\r\n function hasProduct() {\r\n if (vm.selectedProduct === null) {\r\n clearMessages()\r\n resetProductQuantity();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n function clickAndAddProductToCart() {\r\n vm.showAddedToCart = false;\r\n vm.showInvalidQuantityMessage = false;\r\n vm.showInvalidInitialEngravingMessage = false;\r\n addProductToCart();\r\n }\r\n\r\n function addProductToCart() {\r\n if (vm.productQuantity < 1) {\r\n vm.showInvalidQuantityMessage = true;\r\n return;\r\n }\r\n if (vm.hasSelectedInitialEngraving() && (!vm.gunstockEngravingInitials || (vm.gunstockEngravingInitials.match(config.inputPatterns.engraving) !== null))) {\r\n vm.showInvalidInitialEngravingMessage = true;\r\n return;\r\n }\r\n startLoadingIdentifiers();\r\n assembleProductsAndAdd();\r\n }\r\n\r\n function assembleProductsAndAdd() {\r\n if (isStandardGunstock())\r\n addStandardGunstockToCart(assembleStandardGunstock());\r\n else\r\n addCustomizedGunstockToCart(assembleCustomGunstockProducts());\r\n }\r\n\r\n function assembleStandardGunstock() {\r\n return {\r\n ProductId: vm.selectedProduct.Id,\r\n VariantId: vm.selectedCustomizations.CustomWoods.VariationId,\r\n Quantity: vm.productQuantity\r\n };\r\n }\r\n\r\n function addStandardGunstockToCart(product) {\r\n service.addProductToCart(product).then(function () {\r\n productAddedToCartSuccess();\r\n });\r\n }\r\n\r\n function assembleCustomGunstockProducts() {\r\n var products = [];\r\n\r\n products = assembleSelectedProducts(products, vm.selectedProduct);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.CustomWoods);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.CustomFinishes);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.CustomLops);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.CustomAccents);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.CustomGrips);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.CustomPads);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.CustomTips);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.CustomOther);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.AdjustableCombs);\r\n products = assembleSelectedProducts(products, vm.selectedCustomizations.LaserBasics);\r\n\r\n return products;\r\n }\r\n\r\n function addCustomizedGunstockToCart(products) {\r\n service.addCustomizedGunstockToCart(products).then(function () {\r\n productAddedToCartSuccess();\r\n });\r\n }\r\n\r\n function isStandardGunstock() {\r\n return onlyStandardCustomizationsAreSelected() && hasVariationId() && hasStandardFinish() && hasStandardLop() && hasStandardPad();\r\n }\r\n\r\n function productAddedToCartSuccess() {\r\n vm.showAddedToCart = true;\r\n $rootScope.cartCount++;\r\n $rootScope.$broadcast(config.events.itemAddedToCart);\r\n completeLoadingIdentifiers();\r\n $timeout(function () { vm.showAddedToCart = false; }, 5000);\r\n }\r\n\r\n function onlyStandardCustomizationsAreSelected() {\r\n if (hasCustomWood() && hasCustomFinish() && hasCustomLop() && hasCustomPad())\r\n for (var option in vm.selectedCustomizations)\r\n if (nonVariationCustomOptionHasValue(option)) return false;\r\n return true;\r\n }\r\n\r\n function hasSelectedCustomizations() {\r\n return hasCustomWood() || hasCustomFinish() || hasCustomLop() || hasCustomPad();\r\n }\r\n\r\n function hasSelectedInitialEngraving() {\r\n return hasLaserBasics() && vm.selectedCustomizations.LaserBasics.Title && vm.selectedCustomizations.LaserBasics.Title.toUpperCase().indexOf(config.defaults.gunstockInitialEngravingKeyPhrase) !== -1;\r\n }\r\n\r\n function hasVariationId() {\r\n return hasCustomWood() && vm.selectedCustomizations.CustomWoods.VariationId && vm.selectedCustomizations.CustomWoods.VariationId !== config.defaults.guid;\r\n }\r\n\r\n function hasStandardFinish() {\r\n return vm.selectedCustomizations.CustomFinishes && vm.selectedCustomizations.CustomFinishes.Price === 0;\r\n }\r\n\r\n function hasStandardLop() {\r\n return vm.selectedCustomizations.CustomLops && vm.selectedCustomizations.CustomLops.Price === 0;\r\n }\r\n\r\n function hasStandardPad() {\r\n return vm.selectedCustomizations.CustomPads && vm.selectedCustomizations.CustomPads.Price === 0;\r\n }\r\n\r\n function hasCustomWood() {\r\n return vm.selectedCustomizations.CustomWoods;\r\n }\r\n\r\n function hasCustomFinish() {\r\n return vm.selectedCustomizations.CustomFinishes;\r\n }\r\n\r\n function hasCustomLop() {\r\n return vm.selectedCustomizations.CustomLops;\r\n }\r\n\r\n function hasCustomPad() {\r\n return vm.selectedCustomizations.CustomPads;\r\n }\r\n\r\n function hasLaserBasics() {\r\n return vm.selectedCustomizations.LaserBasics;\r\n }\r\n\r\n function hasAddons() {\r\n var length = 0;\r\n for (prop in vm.addOns)\r\n if (vm.addOns[prop]) length += vm.addOns[prop].length;\r\n return length > 0;\r\n }\r\n\r\n function nonVariationCustomOptionHasValue(option) {\r\n if (option === config.customizations.CustomWoods.value) return false;\r\n if (option === config.customizations.CustomFinishes.value) return false;\r\n if (option === config.customizations.CustomLops.value) return false;\r\n if (option === config.customizations.CustomPads.value) return false;\r\n if (vm.selectedCustomizations[option]) return true;\r\n return false;\r\n }\r\n\r\n function assembleSelectedProducts(products, selectedProduct) {\r\n if (selectedProduct && selectedProduct.Id)\r\n products.push(isGunstockWithVariationImage(selectedProduct) ? getProductWithCustomGunstockImage(selectedProduct) : getProductWithoutCustomGunstockImage(selectedProduct));\r\n return products;\r\n }\r\n\r\n function isGunstockWithVariationImage(selectedProduct) {\r\n return vm.selectedProduct.Id === selectedProduct.Id && !!vm.selectedCustomizations.CustomWoods && !!vm.selectedCustomizations.CustomWoods.GunstockImageUrl;\r\n }\r\n\r\n function getProductWithCustomGunstockImage(selectedProduct) {\r\n var product = getProductWithoutCustomGunstockImage(selectedProduct);\r\n product.CustomGunstockImage = vm.selectedCustomizations.CustomWoods.GunstockImageUrl;\r\n return product;\r\n }\r\n\r\n function getProductWithoutCustomGunstockImage(selectedProduct) {\r\n if (hasSelectedInitialEngraving() && selectedProduct.Title.indexOf(config.defaults.gunstockInitialEngravingKeyPhrase) !== -1)\r\n return { ProductId: selectedProduct.Id, Quantity: vm.productQuantity, Engraving: vm.gunstockEngravingInitials };\r\n return {ProductId: selectedProduct.Id, Quantity: vm.productQuantity};\r\n }\r\n\r\n function selectAddOnGroup(addOnGroup) {\r\n vm.selectedAddOnGroup = addOnGroup;\r\n vm.categoryDescription = null;\r\n }\r\n\r\n function isCategorySelected(key) {\r\n return vm.selectedAddOnGroup === key;\r\n }\r\n\r\n function hasAvailableCustomization(addOnGroup) {\r\n if (vm.addOns === null) return false;\r\n return vm.addOns[addOnGroup] !== undefined && vm.addOns[addOnGroup].length > 0;\r\n }\r\n\r\n function isCustomizationSelected(customization) {\r\n return vm.selectedCustomizations[vm.selectedAddOnGroup] === customization;\r\n }\r\n\r\n function selectAddOn(selectedOption) {\r\n if (selectedOption.isCompatible) {\r\n processSelection(selectedOption);\r\n } else {\r\n if (confirmationService.confirmMessage(config.messages.selectIncompatibleOptionWarning)) {\r\n processSelection(selectedOption);\r\n }\r\n }\r\n }\r\n\r\n function processSelection(selectedOption) {\r\n clearSelectedOptionIndicators();\r\n indicateSelectedOption(selectedOption);\r\n vm.selectedCustomizations[vm.selectedAddOnGroup] = selectedOption;\r\n\r\n updateCompatibleSelectedOptions(selectedOption);\r\n updateCompatibleAvailableOptions(selectedOption);\r\n selectCompatibleCustomOptions();\r\n\r\n if (!vm.selectedCustomizations.CustomFinishes) {\r\n updateCompatibleAvailableOptions(selectedOption);\r\n selectFirstCompatibleCustomOption(config.customizations.CustomFinishes.value);\r\n }\r\n\r\n getRunningTotal();\r\n evaluatePrimaryImageUrl();\r\n }\r\n\r\n function evaluatePrimaryImageUrl() {\r\n if (hasCustomWoodImage())\r\n setVariationImage();\r\n else\r\n updateImageUrl();\r\n }\r\n\r\n function hasCustomWoodImage() {\r\n return vm.selectedCustomizations.CustomWoods && vm.selectedCustomizations.CustomWoods.GunstockImageUrl;\r\n }\r\n\r\n function setVariationImage() {\r\n vm.imageUrl = vm.selectedCustomizations.CustomWoods.GunstockImageUrl;\r\n vm.hasVariationImage = true;\r\n }\r\n\r\n function updateImageUrl() {\r\n if (hasProductImage()) setProductImage()\r\n }\r\n\r\n function setProductImage() {\r\n vm.imageUrl = vm.selectedProduct.PrimaryImageUrl;\r\n vm.hasVariationImage = false;\r\n }\r\n\r\n function hasGunstockImageUrl() {\r\n return vm.selectedCustomizations.CustomWoods.GunstockImageUrl;\r\n }\r\n\r\n function updateStartingPrice() {\r\n var highestPrice = isStandardGunstock() ? Math.max(getBaseVariationPrice(), vm.selectedProduct.Price) : vm.selectedProduct.Price;\r\n vm.selectedProduct.FormattedPrice = formatCurrency(highestPrice);\r\n }\r\n\r\n function getRunningTotal() {\r\n updateStartingPrice();\r\n vm.runningTotal = isStandardGunstock() ? getFormattedGunstockPrice() : getFormattedGunstockWithCustomOptionsPrice();\r\n }\r\n\r\n function getGunstockPrice() {\r\n return isStandardGunstock() ? getVariationGunstockPrice() : getBaseGunstockPrice();\r\n }\r\n\r\n function getFormattedGunstockPrice() {\r\n return formatCurrency(getGunstockPrice());\r\n }\r\n function getFormattedGunstockBasePrice() {\r\n return formatCurrency(getGunstockPrice());\r\n }\r\n\r\n function getGunstockWithCustomOptionsPrice() {\r\n return calculateTotalCustomizationPrice() + getGunstockPrice();\r\n }\r\n\r\n function getFormattedGunstockWithCustomOptionsPrice() {\r\n return formatCurrency(getGunstockWithCustomOptionsPrice());\r\n }\r\n\r\n function getBaseGunstockPrice() {\r\n\t\treturn getCheapestProductPrice(vm.selectedProduct);\r\n }\r\n\r\n function getVariationGunstockPrice() {\r\n return isOnSale(vm.selectedProduct) ? getBaseVariationSalePrice() : getBaseVariationPrice();\r\n }\r\n \r\n\r\n function getBaseVariationPrice() {\r\n return vm.selectedProduct.Price + getVariationAdditionalPrice()\r\n }\r\n\r\n\r\n\tfunction getBaseVariationSalePrice() {\r\n\t\treturn vm.selectedProduct.SalePrice + getVariationAdditionalPrice()\r\n\t}\r\n\r\n function formatCurrency(value) {\r\n return value ? $filter(config.filters.currency)(value) : value;\r\n }\r\n\r\n function getVariationAdditionalPrice() {\r\n return vm.selectedCustomizations.CustomWoods.VariationAdditionalPrice;\r\n }\r\n\r\n function calculateTotalCustomizationPrice() {\r\n var totalCustomizationPrice = 0;\r\n for (var item in vm.selectedCustomizations)\r\n totalCustomizationPrice += vm.selectedCustomizations[item] ? getCustomOptionPrice(vm.selectedCustomizations[item]) : 0;\r\n return totalCustomizationPrice;\r\n }\r\n\r\n function getCustomOptionPrice(customOption) {\r\n return getCheapestProductPrice(customOption);\r\n }\r\n \r\n function getCheapestProductPrice(product) {\r\n\t\tvar price = product.Price;\r\n\t\tif (isOnSale(product)) price = Math.min(product.SalePrice, price);\r\n\t\tif (hasDealerPrice(product)) price = Math.min(product.DealerPrice, price);\r\n\t\treturn price;\r\n\t}\r\n\r\n function isAnyCustomizationSelectedFor(addOnGroup) {\r\n return vm.selectedCustomizations[addOnGroup] !== null;\r\n }\r\n\r\n function resetProductConfigurator() {\r\n clearAllSelections();\r\n resetProductQuantity();\r\n clearMessages();\r\n updateImageUrl();\r\n }\r\n\r\n function clearAllSelections() {\r\n vm.selectedAddOnGroup = null;\r\n clearSelectedProduct();\r\n }\r\n\r\n function resetProductQuantity() {\r\n vm.productQuantity = 1;\r\n }\r\n\r\n function clearMessages() {\r\n vm.showAddedToCart = false;\r\n vm.showInvalidQuantityMessage = false;\r\n vm.showInvalidInitialEngravingMessage = false;\r\n }\r\n\r\n function toggleCustomOptionDescription(key) {\r\n var clickedDescription = config.customizations[key].description;\r\n if (vm.categoryDescription !== null && vm.categoryDescription === clickedDescription)\r\n vm.categoryDescription = null;\r\n else {\r\n vm.selectAddOnGroup(key);\r\n vm.categoryDescription = clickedDescription;\r\n }\r\n }\r\n\r\n function hasPrimaryImage(shape) {\r\n return shape.PrimaryImageUrl;\r\n }\r\n\r\n function startLoadingIdentifiers() {\r\n vm.progressBar.start();\r\n $rootScope.DisplayPageLoadingSpinner = true;\r\n }\r\n\r\n function completeLoadingIdentifiers() {\r\n vm.progressBar.complete();\r\n $rootScope.DisplayPageLoadingSpinner = false;\r\n }\r\n\r\n function clearSelectedOptionIndicators() {\r\n for (optionGroup in vm.selectedCustomizations) {\r\n if (vm.selectedCustomizations.hasOwnProperty(optionGroup) && vm.selectedCustomizations[optionGroup] && vm.selectedCustomizations[optionGroup].IncompatibilityList && vm.selectedCustomizations[optionGroup].IncompatibilityList.indexOf(customization.Sku) !== -1)\r\n vm.selectedCustomizations[optionGroup].selected = false;\r\n }\r\n }\r\n\r\n function indicateSelectedOption(selectedOption) {\r\n if (selectedOption === null || selectedOption === undefined) return;\r\n \r\n if (selectedOption.selectedTimeout) {\r\n $timeout.cancel(selectedOption.selectedTimeout);\r\n $timeout(function () {\r\n selectedOption.selected = false;\r\n }, 100, true);\r\n }\r\n\r\n $timeout(function () {\r\n selectedOption.selected = true;\r\n }, 100, true);\r\n selectedOption.selectedTimeout = $timeout(function () {\r\n selectedOption.selected = false;\r\n }, 4000, true);\r\n }\r\n\r\n function isCompatibleWithSelectedOptions(customization) {\r\n for (optionGroup in vm.selectedCustomizations) {\r\n if (vm.selectedCustomizations.hasOwnProperty(optionGroup) && vm.selectedCustomizations[optionGroup] && vm.selectedCustomizations[optionGroup].IncompatibilityList && vm.selectedCustomizations[optionGroup].IncompatibilityList.indexOf(customization.Sku) !== -1)\r\n return customization.isCompatible = false;\r\n }\r\n return customization.isCompatible = true;\r\n }\r\n\r\n function isCompatibleWith(customization1, customization2) {\r\n return customization1.IncompatibilityList.indexOf(customization2.Sku) === -1;\r\n }\r\n\r\n function updateCompatibleSelectedOptions(selectedOption) {\r\n for (optionGroup in vm.selectedCustomizations) {\r\n if (vm.selectedCustomizations[optionGroup] !== null && vm.selectedCustomizations[optionGroup] !== undefined\r\n && vm.selectedCustomizations[optionGroup].hasOwnProperty(\"Sku\") && vm.selectedCustomizations[optionGroup].Sku) \r\n vm.selectedCustomizations[optionGroup].isCompatible = selectedOption.IncompatibilityList.indexOf(vm.selectedCustomizations[optionGroup].Sku) === -1;\r\n }\r\n }\r\n\r\n function updateCompatibleAvailableOptions(selectedOption) {\r\n for (optionGroup in vm.addOns) {\r\n if (vm.addOns[optionGroup] !== null ) {\r\n for (var i = 0; i < vm.addOns[optionGroup].length; i++) {\r\n var option = vm.addOns[optionGroup][i];\r\n if (option)\r\n option.isCompatible = isCompatibleWith(selectedOption, option);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function selectCompatibleCustomOptions() {\r\n selectFirstCompatibleCustomOption(config.customizations.CustomWoods.value);\r\n selectFirstCompatibleCustomOption(config.customizations.CustomFinishes.value);\r\n selectFirstCompatibleCustomOption(config.customizations.CustomLops.value);\r\n selectFirstCompatibleCustomOption(config.customizations.CustomPads.value);\r\n selectFirstCompatibleCustomOption(config.customizations.CustomTips.value);\r\n selectFirstCompatibleCustomOption(config.customizations.CustomGrips.value);\r\n selectFirstCompatibleCustomOption(config.customizations.CustomAccents.value);\r\n selectFirstCompatibleCustomOption(config.customizations.CustomOther.value);\r\n selectFirstCompatibleCustomOption(config.customizations.LaserBasics.value);\r\n selectFirstCompatibleCustomOption(config.customizations.AdjustableCombs.value);\r\n }\r\n\r\n function selectFirstCompatibleCustomOption(group) {\r\n if (vm.selectedCustomizations[group] !== null && vm.selectedCustomizations[group] !== undefined) {\r\n if (vm.selectedCustomizations[group].hasOwnProperty(\"isCompatible\") && !vm.selectedCustomizations[group].isCompatible) {\r\n vm.selectedCustomizations[group] = vm.addOns[group].filter(function (o) { return o.isCompatible || o.isCompatible === undefined })[0];\r\n indicateSelectedOption(vm.selectedCustomizations[group]);\r\n }\r\n }\r\n else if (group === config.customizations.CustomFinishes.value) {\r\n vm.selectedCustomizations[group] = vm.addOns[group].filter(function (o) { return o.isCompatible || o.isCompatible === undefined })[0];\r\n indicateSelectedOption(vm.selectedCustomizations[group]);\r\n }\r\n }\r\n\r\n function isOnSale(value) {\r\n return value && (value.SalePrice || value.SalePrice === 0);\r\n }\r\n\r\n\tfunction hasDealerPrice(value) {\r\n\t\treturn value && (value.DealerPrice || value.DealerPrice === 0);\r\n\t}\r\n\r\n function getCustomOptionDisplay(optionPrice) {\r\n return optionPrice === 0 ? \"Free\" : formatCurrency(optionPrice);\r\n }\r\n}","angular.module(\"boyds\").controller('recommendedProductsController', recommendedProductsController);\r\nrecommendedProductsController.$inject = ['$rootScope', 'config', 'service', 'ngProgressFactory', 'windowService', 'ngToast', 'domService'];\r\n\r\nfunction recommendedProductsController($rootScope, config, service, ngProgress, windowService, ngToast, domService) {\r\n var vm = this;\r\n vm.recommendedProducts = null;\r\n vm.recommendedProductsCount = null;\r\n\r\n vm.pageTake = 12;\r\n vm.currentPage = 1;\r\n\r\n vm.changePage = changePage;\r\n vm.routeToUrl = routeToUrl;\r\n vm.addRecommendedProductToCart = addRecommendedProductToCart;\r\n vm.checkout = checkout;\r\n\r\n init();\r\n\r\n return vm;\r\n\r\n function init() {\r\n configureProgressBar();\r\n getRecommendedProductsCount();\r\n getRecommendedProducts();\r\n }\r\n\r\n function getRecommendedProducts() {\r\n vm.progressBar.start();\r\n return service.getRecommendedProducts(vm.currentPage, vm.pageTake).then(function (response) {\r\n vm.recommendedProducts = response;\r\n vm.progressBar.complete();\r\n });\r\n }\r\n\r\n function getRecommendedProductsCount() {\r\n return service.getRecommendedProductsCount().then(function (response) {\r\n vm.recommendedProductsCount = response;\r\n });\r\n }\r\n\r\n function changePage() {\r\n domService.scrollTop();\r\n getRecommendedProducts();\r\n }\r\n\r\n function routeToUrl(product) {\r\n product.Sku.length >= 12 && product.Sku.endsWith('ZZ') ? windowService.assignLocation(config.pages.productConfigurator, product.UrlName) : windowService.assignLocation(config.pages.accessories, product.UrlName);\r\n }\r\n\r\n function configureProgressBar() {\r\n vm.progressBar = ngProgress.createInstance();\r\n vm.progressBar.setParent(document.getElementById('header-layout'));\r\n vm.progressBar.setColor('#bf1e2e');\r\n }\r\n\r\n function addRecommendedProductToCart(product) {\r\n\t\tstartLoadingIdentifiers();\r\n service.addRecommendedProductToCart(product.UrlName).then(function (response) {\r\n\t\t\tproductAddedToCartSuccess();\r\n\t\t});\r\n }\r\n\t\r\n\tfunction productAddedToCartSuccess() {\r\n\t\tvm.showAddedToCart = true;\r\n\t\t$rootScope.cartCount++;\r\n\t\t$rootScope.$broadcast(config.events.itemAddedToCart);\r\n\t\tstopLoadingIdentifiers();\r\n\t\tngToast.create({content:'

Item added to Cart!

'});\r\n\t}\r\n\r\n\tfunction startLoadingIdentifiers() {\r\n\t\tvm.progressBar.start();\r\n\t\t$rootScope.DisplayPageLoadingSpinner = true;\r\n\t}\r\n\r\n\tfunction stopLoadingIdentifiers() {\r\n\t\tvm.progressBar.complete();\r\n\t\t$rootScope.DisplayPageLoadingSpinner = false;\r\n\t}\r\n\t\r\n\tfunction checkout() {\r\n\t\twindowService.setHref(config.pages.checkout)\r\n\t}\r\n}","angular.module(\"boyds\").controller('customSearchResultsController', customSearchResultsController);\r\n\r\ncustomSearchResultsController.$inject = ['$scope', '$rootScope', 'windowService', 'service', 'config', 'domService', 'ngProgressFactory', 'searchService'];\r\nfunction customSearchResultsController($scope, $rootScope, windowService, service, config, domService, ngProgress, searchService) {\r\n var vm = this;\r\n var searchFilters = null;\r\n\r\n vm.originalSearchTerm = null;\r\n vm.sanitizedSearchTerm = null;\r\n vm.totalResultsCount = null;\r\n vm.searchResults = null;\r\n vm.pageTake = 6;\r\n vm.loadingCount = true;\r\n\r\n vm.filtersCallback = filtersCallback;\r\n vm.showSearchResults = showSearchResults;\r\n vm.changePage = changePage;\r\n vm.routeToUrl = routeToUrl;\r\n\r\n $scope.$on(config.events.updateCustomSearch, init);\r\n configureProgressBar();\r\n\r\n init();\r\n\r\n return vm;\r\n\r\n function init() {\r\n vm.currentPage = 1;\r\n findOriginalSearchTerm();\r\n getResultsCount();\r\n getSearchResults();\r\n }\r\n\r\n function findOriginalSearchTerm() {\r\n vm.originalSearchTerm = searchService.getSearchTerm();\r\n vm.sanitizedSearchTerm = searchService.getSanitizedSearchTerm();\r\n }\r\n\r\n function getResultsCount() {\r\n vm.loadingCount = true;\r\n if (validSearchTerm())\r\n return getTotalResultsCount();\r\n return getAllProductsCount();\r\n }\r\n\r\n function validSearchTerm() {\r\n return vm.originalSearchTerm;\r\n }\r\n\r\n function getTotalResultsCount() {\r\n return service.getTotalResultsCount(searchService.getSanitizedSearchTerm(), getSelectedMake(), getSelectedModel(), getSelectedAction(), getSelectedShape()).then(function (response) {\r\n vm.totalResultsCount = response.data;\r\n vm.loadingCount = false;\r\n });\r\n }\r\n\r\n function getAllProductsCount() {\r\n return service.getAllProductsCount(getSelectedMake(), getSelectedModel(), getSelectedAction(), getSelectedShape()).then(function (response) {\r\n vm.totalResultsCount = response.data;\r\n vm.loadingCount = false;\r\n });\r\n }\r\n\r\n function getSearchResults() {\r\n vm.progressBar.start();\r\n vm.searchResults = null;\r\n\r\n if (validSearchTerm())\r\n return search();\r\n return getAllProducts();\r\n }\r\n\r\n function search() {\r\n\t\tstartProgressIndicator();\r\n return service.search(searchService.getSanitizedSearchTerm(), vm.currentPage, vm.pageTake, getSelectedMake(), getSelectedModel(), getSelectedAction(), getSelectedShape()).then(function (response) {\r\n vm.searchResults = response.data;\r\n\t\t\tstopProgressIndicator();\r\n vm.progressBar.complete();\r\n });\r\n }\r\n\r\n function getAllProducts() {\r\n return service.getAllProducts(vm.currentPage, vm.pageTake, getSelectedMake(), getSelectedModel(), getSelectedAction(), getSelectedShape()).then(function (response) {\r\n vm.searchResults = response.data;\r\n vm.progressBar.complete();\r\n });\r\n }\r\n\r\n function routeToUrl(product) {\r\n (productIsConfigurable(product)) ? windowService.assignLocation(config.pages.productConfigurator, product.UrlName) : windowService.assignLocation(config.pages.products, product.UrlName)\r\n }\r\n\r\n function productIsConfigurable(product) {\r\n return product.Shape;\r\n }\r\n\r\n function showSearchResults() {\r\n return vm.searchResults && vm.searchResults.length > 0 ? true : false;\r\n }\r\n\r\n function changePage() {\r\n domService.scrollTop();\r\n getSearchResults();\r\n }\r\n\r\n function filtersCallback(filters) {\r\n searchFilters = filters;\r\n init();\r\n }\r\n\r\n function getSelectedMake() {\r\n return searchFilters && searchFilters.selectedMake && searchFilters.selectedMake.Title ? searchService.sanitizeForSearch(searchFilters.selectedMake.Title) : null;\r\n }\r\n\r\n function getSelectedModel() {\r\n return searchFilters && searchFilters.selectedModel && searchFilters.selectedModel.Title ? searchService.sanitizeForSearch(searchFilters.selectedModel.Title) : null;\r\n }\r\n\r\n function getSelectedAction() {\r\n return searchFilters && searchFilters.selectedAction && searchFilters.selectedAction.Title ? searchService.sanitizeForSearch(searchFilters.selectedAction.Title) : null;\r\n }\r\n\r\n function getSelectedShape() {\r\n return searchFilters && searchFilters.selectedShape && searchFilters.selectedShape.Title ? searchService.sanitizeForSearch(searchFilters.selectedShape.Title) : null;\r\n }\r\n\r\n function configureProgressBar() {\r\n vm.progressBar = ngProgress.createInstance();\r\n vm.progressBar.setParent(document.getElementById('header-layout'));\r\n vm.progressBar.setColor('#bf1e2e');\r\n }\r\n\r\n\tfunction startProgressIndicator() {\r\n\t\t$rootScope.DisplayPageLoadingSpinner = true;\r\n\t}\r\n\r\n\tfunction stopProgressIndicator() {\r\n\t\t$rootScope.DisplayPageLoadingSpinner = false;\r\n\t}\r\n}","angular.module(\"boyds\").controller('accountProfileController', accountProfileController);\r\n\r\naccountProfileController.$inject = ['$scope', '$rootScope', 'service', 'config'];\r\nfunction accountProfileController($scope, $rootScope, service, config) {\r\n var vm = this;\r\n\r\n vm.user = {\r\n id: null,\r\n firstName: null,\r\n lastName: null,\r\n company: null,\r\n phoneNumber: null,\r\n streetAddress: null,\r\n streetAddress2: null,\r\n city: null,\r\n stateCode: null,\r\n postalCode: null,\r\n countryCode: null,\r\n emailPromotions: true\r\n };\r\n vm.address = {};\r\n vm.countries = null;\r\n vm.submitError = null;\r\n vm.CurrentUserId = null;\r\n vm.states = config.states;\r\n\r\n vm.displaySaveSuccessNotification = false;\r\n vm.displayInvalidFormNotification = false;\r\n vm.isEditing = false;\r\n\r\n vm.emailFormat = config.inputPatterns.email;\r\n vm.phoneFormat = config.inputPatterns.phone;\r\n\r\n vm.addressCallback = addressCallback;\r\n vm.updateCustomerProfile = updateCustomerProfile;\r\n vm.displayStates = displayStates;\r\n vm.editAccountProfile = editAccountProfile;\r\n vm.cancelEditAccountProfile = cancelEditAccountProfile;\r\n vm.init = init;\r\n\r\n init();\r\n\r\n return vm;\r\n\r\n function init() {\r\n getCountries()\r\n .then(getCustomerProfile);\r\n }\r\n\r\n function getCountries() {\r\n return service.getCountries().then(function (response) {\r\n vm.countries = response.data;\r\n });\r\n }\r\n\r\n function getCustomerProfile() {\r\n return service.getCustomerProfile(vm.CurrentUserId).then(function (response) {\r\n vm.user = {\r\n id: vm.CurrentUserId,\r\n firstName: response.data.FirstName,\r\n lastName: response.data.LastName,\r\n company: response.data.Company,\r\n phoneNumber: response.data.PhoneNumber,\r\n streetAddress: response.data.StreetAddress,\r\n streetAddress2: response.data.StreetAddress2,\r\n city: response.data.City,\r\n stateCode: response.data.StateCode,\r\n postalCode: response.data.PostalCode,\r\n countryCode: response.data.CountryCode,\r\n emailPromotions: response.data.EmailPromotions\r\n };\r\n getAddressFromUser();\r\n });\r\n }\r\n\r\n function getAddressFromUser() {\r\n vm.address.streetAddress = vm.user.streetAddress;\r\n vm.address.city = vm.user.city;\r\n vm.address.postalCode = vm.user.postalCode;\r\n vm.address.country = getCountryFromUser();\r\n vm.address.state = getStateFromUser();\r\n }\r\n\r\n function getCountryFromUser() {\r\n for (var i = 0; i < vm.countries.length; i++)\r\n if (vm.countries[i].IsoCode == vm.user.countryCode)\r\n return vm.countries[i];\r\n return null;\r\n }\r\n\r\n function getStateFromUser() {\r\n for (var i = 0; i < vm.states.length; i++)\r\n if (vm.states[i].IsoCode == vm.user.stateCode)\r\n return vm.states[i];\r\n return null;\r\n }\r\n\r\n function editAccountProfile() {\r\n vm.displaySaveSuccessNotification = false;\r\n vm.isEditing = true;\r\n }\r\n\r\n function cancelEditAccountProfile() {\r\n emptyAccountProfile();\r\n getCustomerProfile();\r\n vm.isEditing = false;\r\n }\r\n\r\n function emptyAccountProfile() {\r\n for (var prop in vm.user)\r\n vm.user[prop] = null;\r\n vm.address = {};\r\n }\r\n\r\n function addressCallback(address) {\r\n $scope.$apply(function () {\r\n vm.address = address;\r\n updateUserWithAddress();\r\n });\r\n }\r\n\r\n function updateCustomerProfile() {\r\n clearOutStateWhenNotInUs();\r\n if (validRegistrationForm()) {\r\n showLoadingSpinner();\r\n service.updateCustomerProfile(vm.user).then(updateCustomerProfileSuccess, updateCustomerProfileFailure);\r\n }\r\n else\r\n vm.displayInvalidFormNotification = true;\r\n }\r\n\r\n function showLoadingSpinner() {\r\n $rootScope.DisplayPageLoadingSpinner = true;\r\n try { $rootScope.$apply(); } catch (e) { }\r\n }\r\n\r\n function hideLoadingSpinner() {\r\n $rootScope.DisplayPageLoadingSpinner = false;\r\n try { $rootScope.$apply(); } catch (e) { }\r\n }\r\n\r\n function updateUserWithAddress() {\r\n vm.user.id = vm.CurrentUserId;\r\n vm.user.city = vm.address.city ? vm.address.city : null;\r\n vm.user.postalCode = vm.address.postalCode ? vm.address.postalCode : null;\r\n vm.user.streetAddress = vm.address.streetAddress ? vm.address.streetAddress : null;\r\n vm.user.stateCode = vm.address.state && vm.address.state.IsoCode ? vm.address.state.IsoCode : null;\r\n vm.user.countryCode = vm.address.country && vm.address.country.IsoCode ? vm.address.country.IsoCode : null;\r\n }\r\n\r\n function updateCustomerProfileSuccess(response) {\r\n vm.displaySaveSuccessNotification = true;\r\n cancelEditAccountProfile();\r\n hideLoadingSpinner();\r\n }\r\n\r\n function updateCustomerProfileFailure(response) {\r\n vm.submitError = response.data;\r\n vm.displayInvalidFormNotification = false;\r\n hideLoadingSpinner();\r\n }\r\n\r\n function validRegistrationForm() {\r\n for (var prop in vm.user)\r\n if (vm.user[prop] === null && prop != 'company' && prop != 'streetAddress2' && prop != 'phoneNumber')\r\n return prop == 'stateCode' && vm.user.countryCode != 'US' ? true : false;\r\n return true;\r\n }\r\n\r\n function displayStates() {\r\n return vm.user.countryCode == 'US' || vm.user.countryCode === null;\r\n }\r\n\r\n function clearOutStateWhenNotInUs() {\r\n if (vm.user.countryCode != 'US')\r\n vm.user.stateCode = null;\r\n }\r\n}","angular.module(\"boyds\").controller('searchBoxController', searchBoxController);\r\n\r\nsearchBoxController.$inject = ['$timeout', '$rootScope', '$scope', 'windowService', 'config', 'service', 'domService', 'searchService'];\r\nfunction searchBoxController($timeout, $rootScope, $scope, windowService, config, service, domService, searchService) {\r\n var vm = this;\r\n\r\n vm.searchTerm = getSearchTerm();\r\n vm.preventKeypressEvent = false;\r\n vm.products = [];\r\n\r\n vm.search = search;\r\n vm.searchNow = searchNow;\r\n vm.getProducts = getProducts;\r\n vm.selectSearch = selectSearch;\r\n\r\n return vm;\r\n\r\n function getSearchTerm() {\r\n if (isOnAResultsPage())\r\n searchService.clearSearchTerm('')\r\n return searchService.getSearchTerm();\r\n }\r\n\r\n function isOnAResultsPage() {\r\n return windowService.isOnPage(\"/\" + config.pages.accessories)\r\n || windowService.isOnPage(\"/\" + config.pages.productConfigurator)\r\n || windowService.isOnPage(\"/\" + config.pages.cart)\r\n || windowService.isOnPage(\"/\" + config.pages.checkout)\r\n || windowService.isOnPage(\"/\" + config.pages.gunstocks);\r\n }\r\n\r\n function positionButton() {\r\n domService.insertAfter('searchBoxButton', 'searchBoxInput');\r\n }\r\n\r\n function getProducts(searchTerm) {\r\n if (searchTerm.length > 2)\r\n return service.searchSuggestions(searchService.sanitizeForSearch(searchTerm))\r\n .then(function (response) {\r\n vm.products = response.data;\r\n //$scope.$apply();\r\n positionButton();\r\n return response.data;\r\n });\r\n }\r\n\r\n function searchNow($event) {\r\n if ($event.keyCode === 13) {\r\n $event.preventDefault();\r\n if (vm.preventKeypressEvent)\r\n vm.preventKeypressEvent = false;\r\n else\r\n $timeout(function () {\r\n search(vm.searchTerm);\r\n }, 800);\r\n }\r\n }\r\n\r\n function selectSearch() {\r\n vm.preventKeypressEvent = true;\r\n search();\r\n }\r\n\r\n function search(product) {\r\n vm.searchTerm = product;\r\n if (searchingObject()) {\r\n searchService.clearSearchTerm();\r\n windowService.setHref(config.pages.products, vm.searchTerm.UrlName);\r\n }\r\n else if (onCustomSearchResultsPage())\r\n updateCustomSearchResults();\r\n else {\r\n searchService.setSearchTerm(vm.searchTerm);\r\n windowService.setHref(config.pages.customSearchResults);\r\n }\r\n }\r\n\r\n function searchingObject() {\r\n for (var i = 0; i < vm.products.length; i++) {\r\n if (vm.products[i].Title == vm.searchTerm.Title) {\r\n vm.searchTerm = vm.products[i];\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function updateCustomSearchResults() {\r\n searchService.setSearchTerm(vm.searchTerm);\r\n $rootScope.$broadcast(config.events.updateCustomSearch);\r\n }\r\n\r\n function onCustomSearchResultsPage() {\r\n return windowService.getHref().indexOf(config.pages.customSearchResults) > -1;\r\n }\r\n};","angular.module(\"boyds\").controller('searchCartController', searchCartController);\r\n\r\nsearchCartController.$inject = ['$rootScope', 'config', 'service'];\r\nfunction searchCartController($rootScope, config, service) {\r\n var vm = this;\r\n $rootScope.cartCount = 0;\r\n \r\n init();\r\n\r\n return vm;\r\n\r\n function init() {\r\n updateCartCount();\r\n $rootScope.$on(config.events.itemAddedToCart, updateCartCount);\r\n }\r\n \r\n function updateCartCount() {\r\n service.getCartCount().then(function (response) {\r\n if (typeof (response.data) != \"number\") response.data = 0;\r\n $rootScope.cartCount = response.data;\r\n });\r\n }\r\n};","angular.module(\"boyds\").controller('userRegistrationController', userRegistrationController);\r\n\r\nuserRegistrationController.$inject = ['$scope', '$rootScope', 'windowService', 'service', 'config'];\r\nfunction userRegistrationController($scope, $rootScope, windowService, service, config) {\r\n var vm = this;\r\n\r\n vm.user = {\r\n firstName: null,\r\n lastName: null,\r\n company: null,\r\n emailAddress: null,\r\n phoneNumber: null,\r\n streetAddress: null,\r\n city: null,\r\n stateCode: null,\r\n postalCode: null,\r\n countryCode: null,\r\n password: null,\r\n emailPromotions: true\r\n };\r\n vm.address = null;\r\n vm.countries = null;\r\n vm.submitError = null;\r\n vm.states = config.states;\r\n\r\n vm.displayEmailNotification = false;\r\n vm.displaySubmitError = false\r\n vm.displayGoToLoginButton = false;\r\n vm.displayInvalidFormNotification = false;\r\n vm.displayRegistrationForm = true;\r\n\r\n vm.emailFormat = config.inputPatterns.email;\r\n vm.phoneFormat = config.inputPatterns.phone;\r\n\r\n vm.addressCallback = addressCallback;\r\n vm.validatePassword = validatePassword;\r\n vm.confirmPassword = confirmPassword;\r\n vm.registerCustomer = registerCustomer;\r\n vm.routeToLogin = routeToLogin;\r\n vm.displayStates = displayStates;\r\n\r\n init();\r\n\r\n return vm;\r\n\r\n function init() {\r\n service.getCountries().then(function (response) {\r\n vm.countries = response.data;\r\n });\r\n }\r\n\r\n function addressCallback(address) {\r\n $scope.$apply(function () {\r\n vm.address = address;\r\n updateUserWithAddress();\r\n });\r\n }\r\n\r\n function registerCustomer() {\r\n clearOutStateWhenNotInUs();\r\n if (validRegistrationForm()) {\r\n showLoadingSpinner();\r\n service.registerCustomer(vm.user).then(registerCustomerSuccess, registerCustomerFailure);\r\n }\r\n else {\r\n vm.displayInvalidFormNotification = true;\r\n }\r\n }\r\n\r\n function clearOutStateWhenNotInUs() {\r\n if (vm.user.countryCode != 'US')\r\n vm.user.stateCode = null;\r\n }\r\n\r\n function showLoadingSpinner() {\r\n $rootScope.DisplayPageLoadingSpinner = true;\r\n try { $rootScope.$apply(); } catch (e) { }\r\n }\r\n\r\n function hideLoadingSpinner() {\r\n $rootScope.DisplayPageLoadingSpinner = false;\r\n try { $rootScope.$apply(); } catch (e) { }\r\n }\r\n\r\n function updateUserWithAddress() {\r\n vm.user.city = vm.address.city ? vm.address.city : null;\r\n vm.user.postalCode = vm.address.postalCode ? vm.address.postalCode : null;\r\n vm.user.streetAddress = vm.address.streetAddress ? vm.address.streetAddress : null;\r\n vm.user.stateCode = vm.address.state && vm.address.state.IsoCode ? vm.address.state.IsoCode : null;\r\n vm.user.countryCode = vm.address.country && vm.address.country.IsoCode ? vm.address.country.IsoCode : null;\r\n }\r\n\r\n function registerCustomerSuccess(response) {\r\n vm.displayRegistrationForm = false;\r\n vm.displayEmailNotification = true;\r\n vm.displayGoToLoginButton = true;\r\n hideLoadingSpinner()\r\n }\r\n\r\n function registerCustomerFailure(response) {\r\n vm.submitError = response.data;\r\n vm.displaySubmitError = true;\r\n vm.displayInvalidFormNotification = false;\r\n hideLoadingSpinner()\r\n }\r\n\r\n function validRegistrationForm() {\r\n for (var prop in vm.user)\r\n if (vm.user[prop] === null && prop != 'company')\r\n return prop == 'stateCode' && vm.user.countryCode != 'US' ? true : false;\r\n return true;\r\n }\r\n\r\n function routeToLogin() {\r\n windowService.setHref(config.pages.login);\r\n }\r\n\r\n function validatePassword(page) {\r\n var returnValue = vm.user.password && vm.user.password.length > 6;\r\n page.registerUser.password.$setValidity(\"password\", returnValue);\r\n return returnValue;\r\n }\r\n\r\n function confirmPassword(page, confirm) {\r\n var returnValue = confirm == vm.user.password;\r\n page.registerUser.confirmPassword.$setValidity(\"confirmPassword\", returnValue);\r\n return returnValue;\r\n }\r\n\r\n function displayStates() {\r\n return vm.user.countryCode == 'US' || vm.user.countryCode === null;\r\n }\r\n}","angular.module(\"boyds\").controller('checkoutController', checkoutController);\r\n\r\ncheckoutController.$inject = ['$scope', '$rootScope', '$element', 'service', '$q', 'config', '$timeout'];\r\nfunction checkoutController($scope, $rootScope, $element, service, $q, config, $timeout) {\r\n var nextStep = $($element).find(\"#next-step\").data(\"next-step-url\");\r\n var previousStep = $($element).find(\"#previous-step\").data(\"next-step-url\");\r\n\r\n const StatusID = {\r\n 101: 'Approved',\r\n 102: 'AuthOnly',\r\n 111: 'Refunded',\r\n 121: 'AVSOnly',\r\n 131: 'PendingOrigination',\r\n 132: 'Originating',\r\n 133: 'Originated',\r\n 134: 'Settled',\r\n 201: 'Voided',\r\n 301: 'Declined',\r\n 331: 'ChargedBack'\r\n }\r\n\r\n $(\"#previous-step\").click(function () {\r\n $(\"#previous-step\").html(' Processing');\r\n });\r\n\r\n $scope.order = {};\r\n $scope.newUser = {};\r\n $scope.payment = {};\r\n $scope.cartOrder = {};\r\n $scope.addressesDto = {};\r\n $scope.checkoutData = {};\r\n $scope.billingAddress = {\r\n Country: \"US\"\r\n };\r\n $scope.shippingAddress = {\r\n Country: \"US\"\r\n };\r\n $scope.orderMetaFields = {};\r\n $scope.shippingMethodChosen = {};\r\n $scope.isInternationalOrder = isInternationalOrder;\r\n\r\n var promises = [];\r\n $scope.errors = [];\r\n $scope.products = [];\r\n $scope.discounts = [];\r\n $scope.Countries = [];\r\n $scope.CreditCardExpirationYearOptions = [];\r\n $scope.CreditCardExpirationMonthOptions = [];\r\n\r\n $scope.total = 0;\r\n $scope.taxTotalPrice = 0;\r\n $scope.productTotalPrice = 0;\r\n $scope.checkoutStepOneValidateCount = 0;\r\n\r\n $scope.userId = null;\r\n $scope.taxDisplay = '';\r\n $scope.nextPageUrl = '';\r\n $scope.PromotionEmail = '';\r\n $scope.PromotionOptIn = true;\r\n $scope.paymentIsVisible = false;\r\n $scope.sagePaymentIsSuccessful = false;\r\n $scope.verifiedHuman = false;\r\n $rootScope.DisplayPageLoadingSpinner = false;\r\n\r\n $scope.customOrderText = config.checkout.customOrderText;\r\n $scope.States = config.states;\r\n $scope.displayErrors = displayErrors;\r\n $scope.phone_number = config.inputPatterns.phone;\r\n $scope.emailFormat = config.inputPatterns.email;\r\n $scope.ShippingDifferent = localStorage.ShippingDifferent;\r\n $scope.RegisterNewAccount = localStorage.RegisterNewAccount;\r\n\r\n $scope.InitializeCheckout = function (checkoutStep) {\r\n promises = [];\r\n $scope.errors = [];\r\n switch (checkoutStep) {\r\n case \"StepOne\":\r\n $scope.loadCheckoutStepOne();\r\n break;\r\n case \"Shipping\":\r\n $scope.loadShippingStep();\r\n break;\r\n case \"PaymentAndReview\":\r\n $scope.loadPaymentAndReviewStep();\r\n break;\r\n case \"Receipt\":\r\n $scope.loadCheckoutStepReceipt();\r\n break;\r\n }\r\n\r\n $q.all(promises).then(function success(data) {\r\n $scope.getTotal();\r\n $scope.recalculateTotal();\r\n $(\"#checkout\").fadeIn(\"slow\");\r\n $(\"#loading-message\").hide();\r\n }, function fail(err) {\r\n console.log(err);\r\n $(\"#loading-message\").hide();\r\n });\r\n }\r\n\r\n $scope.loadCheckoutStepOne = function () {\r\n promises.push(service.getCheckoutStepOne().then(function successCallback(response) {\r\n $scope.cartOrder = response.cartOrder;\r\n $scope.Countries = response.countries;\r\n $scope.orderMetaFields = response.metaFields;\r\n\r\n setTaxDisplay();\r\n initializeCheckoutAddress();\r\n setProducts($scope.cartOrder);\r\n setDiscounts($scope.cartOrder);\r\n setProductTotals($scope.cartOrder);\r\n\r\n setTimeout(function () {\r\n $(\"#checkout .billing-state\").val($scope.billingAddress.StateRegion);\r\n $(\"#checkout .shipping-state\").val($scope.shippingAddress.StateRegion);\r\n\r\n $(\"#billing-address.checkout-geoaddress\").checkoutAutoAddress();\r\n $(\"#shipping-address.checkout-geoaddress\").checkoutAutoAddress();\r\n $scope.$apply();\r\n }, 100);\r\n }));\r\n }\r\n $scope.loadShippingStep = function () {\r\n showLoadingSpinner();\r\n promises.push(service.getCheckoutStepShipping().then(function successCallback(response) {\r\n hideLoadingSpinner();\r\n $scope.cartOrder = response.cartOrder;\r\n $scope.shippingMethods = response.shippingOptions;\r\n $scope.shippingTaxRate = response.shippingTaxRate;\r\n\r\n setTaxDisplay();\r\n getAddresses($scope.cartOrder);\r\n setProducts($scope.cartOrder);\r\n setDiscounts($scope.cartOrder);\r\n setProductTotals($scope.cartOrder);\r\n\r\n if ($scope.shippingMethods.length == 0) {\r\n $scope.errors.push(\"Unable to ship to provided shipping address.\");\r\n displayErrors();\r\n $scope.hasShippingOptions = false;\r\n }\r\n\r\n setShippingMethod(response);\r\n }));\r\n };\r\n\r\n $scope.loadPaymentAndReviewStep = function () {\r\n $scope.shippingMethods = JSON.parse(localStorage.shippingMethods);\r\n setExpirationYears();\r\n setExpirationMonths();\r\n promises.push(service.getCheckoutStepPaymentAndReview().then(function successCallback(response) {\r\n $scope.cartOrder = response.cartOrder;\r\n $scope.orderHasCustomProducts = false;\r\n $scope.Countries = response.countries;\r\n $scope.shippingTaxRate = response.shippingTaxRate;\r\n $scope.creditCardsAccepted = response.creditCardsAccepted;\r\n\r\n setTaxDisplay();\r\n setDiscounts($scope.cartOrder);\r\n getAddresses($scope.cartOrder);\r\n setProducts($scope.cartOrder);\r\n setProductTotals($scope.cartOrder);\r\n\r\n if ($scope.cartOrder.ShippingServiceCode != null && $scope.cartOrder.ShippingServiceCode != \"\")\r\n restoreShippingMethodChosen();\r\n }));\r\n }\r\n $scope.loadCheckoutStepReceipt = function () {\r\n promises = [];\r\n $scope.errors = [];\r\n\r\n promises.push(service.getCheckoutStepReceipt().then(function successCallback(response) {\r\n $scope.order = response.order;\r\n $scope.payment = response.order.Payments[0];\r\n $scope.orderMetaFields = response.metaFields;\r\n\r\n getAddresses($scope.order);\r\n setProducts($scope.order);\r\n setDiscounts($scope.order);\r\n setProductTotals($scope.order);\r\n }));\r\n\r\n $q.all(promises).then(function success(data) {\r\n localStorage.setItem('ShippingDifferent', \"false\");\r\n $(\"#checkout\").show();\r\n $(\"#loading-message\").hide();\r\n }, function fail(err) {\r\n console.log(err)\r\n console.log('loadCheckoutStepReceipt FAIL');\r\n });\r\n }\r\n $scope.loadCheckoutStepPrint = function (checkoutStep) {\r\n promises = [];\r\n $scope.errors = [];\r\n promises.push(service.getCheckoutStepReceipt().then(function successCallback(response) {\r\n $scope.order = response.order;\r\n $scope.payment = response.order.Payments[0];\r\n $scope.orderMetaFields = response.metaFields;\r\n\r\n getAddresses($scope.order);\r\n setProducts($scope.order);\r\n setDiscounts($scope.order);\r\n setProductTotals($scope.order);\r\n }));\r\n\r\n $q.all(promises).then(function success(data) {\r\n $scope.getTotal();\r\n $(\"#checkout\").show();\r\n $(\"#loading-message\").hide();\r\n setTimeout(function () {\r\n window.print();\r\n }, 300);\r\n\r\n }, function fail(err) {\r\n console.log(err);\r\n console.log('loadCheckoutStepPrint FAIL');\r\n });\r\n }\r\n\r\n $scope.saveCheckoutStepOne = function () {\r\n showLoadingSpinner();\r\n promises = [];\r\n var valid = false;\r\n $scope.nextStepHtml = $(\"#next-step\").html();\r\n\r\n valid = validateCheckoutStepOne();\r\n\r\n if (valid) {\r\n $scope.checkoutData.addresses = combineAddressObjects($scope.billingAddress, $scope.shippingAddress);\r\n\r\n promises.push(promiseToSubmitPromotionFormIfOptedIn());\r\n promises.push(service.updateCartAddresses($scope.checkoutData.addresses).then(function (response) { }));\r\n $q.all(promises).then(function success(data) {\r\n // if success, then move on to the next step in the checkout process\r\n moveToNextCheckoutStep();\r\n }, function fail(err) {\r\n //errorHandling(err.ExceptionMessage, false);\r\n if (err.data)\r\n $scope.errors.push(err.data.ExceptionMessage);\r\n else $scope.errors.push(err);\r\n $(\".checkout-errors\").show();\r\n displayErrors();\r\n });\r\n }\r\n else {\r\n displayErrors();\r\n }\r\n }\r\n $scope.saveCheckoutStepShipping = function () {\r\n if ($scope.errors.length > 0)\r\n return;\r\n showLoadingSpinner();\r\n promises = [];\r\n var valid = false;\r\n\r\n valid = validateCheckoutStepTwo();\r\n\r\n if (valid) {\r\n promises.push(service.updateCartOrderShippingMethod($scope.shippingMethodChosen).then(function (response) {\r\n }));\r\n $q.all(promises).then(function success(data) {\r\n // if success, then move on to the next step in the checkout process\r\n moveToNextCheckoutStep();\r\n }, function fail(err) {\r\n console.log(err);\r\n console.log('saveCheckoutStepShipping FAIL');\r\n });\r\n }\r\n else {\r\n displayErrors();\r\n }\r\n }\r\n $scope.validateCheckoutStepPayment = function () {\r\n showLoadingSpinner();\r\n if (paymentStepValid()) {\r\n displayErrors();\r\n $(\"#checkout-errors\").hide();\r\n\r\n $timeout(function () {\r\n if (false) {\r\n //if ($scope.RegisterNewAccount) {\r\n $scope.newUser.cartOrderId = $scope.cartOrder.Id;\r\n $scope.newUser.registerUser = $scope.RegisterNewAccount;\r\n promises.push(service.createUserAccount($scope.newUser).then(function successCallback(response) {\r\n loadReviewStep();\r\n $(\"#checkout-errors\").hide();\r\n hideLoadingSpinner();\r\n }, function () {\r\n displayErrors();\r\n $(\"#next-step\").html('REVIEW & CONFIRM ORDER ');\r\n }\r\n ));\r\n }\r\n else {\r\n loadReviewStep();\r\n hideLoadingSpinner();\r\n }\r\n }, 500);\r\n }\r\n else {\r\n displayErrors();\r\n hideLoadingSpinner();\r\n }\r\n }\r\n $scope.makePayment = function () {\r\n showLoadingSpinner();\r\n $(\"#checkout-errors\").hide();\r\n $scope.payment.CardHolderName = $scope.billingAddress.FirstName + \" \" + $scope.billingAddress.LastName;\r\n loadPaymentStep();\r\n }\r\n $scope.processOrder = function (paymentProcessorResponse) {\r\n showLoadingSpinner();\r\n nextStep = location.href.replace(\"payment\", \"receipt\");\r\n if ($scope.payment.CardHolderName == null || $scope.payment.CardHolderName == \"\")\r\n $scope.payment.CardHolderName = $scope.billingAddress.FirstName + \" \" + $scope.billingAddress.LastName;\r\n return service.processOrder(paymentProcessorResponse).then(function success(response) {\r\n $scope.paymentResponse = response;\r\n if ($scope.paymentResponse.IsSuccess)\r\n moveToNextCheckoutStep();\r\n else if ($scope.paymentResponse.GatewayAdditionalResult == \"252\" || $scope.paymentResponse.GatewayAdditionalResult == \"253\")\r\n moveToNextCheckoutStep();\r\n else if ($scope.paymentResponse == 'undefined' || $scope.paymentResponse.length < 2) {\r\n $(\"#place-order\").html($scope.nextStepHtml);\r\n displayPaymentResponseErrorMessage($scope.paymentResponse);\r\n }\r\n else {\r\n $(\"#place-order\").html($scope.nextStepHtml);\r\n displayPaymentResponseErrorMessage($scope.paymentResponse);\r\n }\r\n hideLoadingSpinner();\r\n }, function fail(err) {\r\n updatePaymentScreenOnError();\r\n displayErrorMessageFromServer(err.data.ExceptionMessage);\r\n hideLoadingSpinner();\r\n });\r\n }\r\n $scope.voidTransaction = function (transactionId, errorMessage) {\r\n showLoadingSpinner();\r\n return service.voidTransaction(transactionId).then(result => {\r\n $scope.elementsError = errorMessage;\r\n hideLoadingSpinner();\r\n })\r\n }\r\n $scope.updateShippingAddressState = function () {\r\n\r\n if ($(\"#ShippingDifferent\").attr(\"checked\") == \"checked\") {\r\n localStorage.setItem('ShippingDifferent', \"true\");\r\n $(\"#ShippingDifferent\").prop(\"checked\", true);\r\n setTimeout(function () {\r\n $(\"#shipping-address.checkout-geoaddress\").checkoutAutoAddress();\r\n }, 100);\r\n }\r\n else {\r\n localStorage.setItem('ShippingDifferent', \"false\");\r\n $(\"#ShippingDifferent\").prop(\"checked\", false);\r\n }\r\n };\r\n $scope.getShippingAddressState = function () {\r\n if ($scope.ShippingDifferent == \"true\") {\r\n $(\"#ShippingDifferent\").prop(\"checked\", true);\r\n $scope.ShippingDifferent = true;\r\n }\r\n else {\r\n $(\"#ShippingDifferent\").prop(\"checked\", false);\r\n $scope.ShippingDifferent = false;\r\n }\r\n }\r\n $scope.getAgreeTerms = function () {\r\n if ($scope.AgreeTerms == \"true\") {\r\n $(\"#AgreeTerms\").prop(\"checked\", true);\r\n $scope.AgreeTerms = true;\r\n }\r\n else {\r\n $(\"#AgreeTerms\").prop(\"checked\", false);\r\n $scope.AgreeTerms = false;\r\n }\r\n }\r\n $scope.shippingMethodSelected = function ($event) {\r\n $scope.shippingMethodChosen.ServiceCode = $event.target.dataset.serviceCode;\r\n $scope.shippingMethodChosen.ServiceName = $event.target.dataset.serviceName;\r\n $scope.shippingMethodChosen.ServicePrice = $event.target.dataset.servicePrice;\r\n $scope.shippingMethodChosen.ShippingCarrierName = $event.target.dataset.carrierName;\r\n $scope.shippingMethodChosen.ShippingMethodId = $event.target.dataset.shippingMethodId;\r\n $scope.shippingMethodChosen.ShippingServiceName = $event.target.dataset.shippingServiceName;\r\n $scope.recalculateTotal();\r\n };\r\n $scope.registerNewAccountCheckboxChanged = function ($event) {\r\n if ($(\"#RegisterUser\").attr(\"checked\") == \"checked\") {\r\n localStorage.setItem('RegisterNewAccount', \"true\");\r\n $(\"#RegisterUser\").prop(\"checked\", true);\r\n $scope.RegisterNewAccount = true;\r\n $scope.newUser.userEmail = $scope.billingAddress.Email;\r\n }\r\n else {\r\n localStorage.setItem('RegisterNewAccount', \"false\");\r\n $(\"#RegisterUser\").prop(\"checked\", false);\r\n $scope.RegisterNewAccount = false;\r\n }\r\n }\r\n $scope.toggleReviewPaymentViews = function (viewType) {\r\n if (viewType == \"review\") {\r\n $(\"#loading-message\").show();\r\n $(\"#checkout\").hide();\r\n $scope.paymentIsVisible = false;\r\n\r\n setTimeout(function () {\r\n $(\"#checkout-review\").show();\r\n $(\"#checkout\").hide().fadeIn(\"slow\");\r\n $(\"#loading-message\").hide();\r\n }, 500);\r\n }\r\n else if (viewType == \"back\") {\r\n $(\"#loading-message\").show();\r\n $(\"#checkout\").hide();\r\n location.reload();\r\n\r\n setTimeout(function () {\r\n $scope.paymentIsVisible = true;\r\n $(\"#checkout\").hide().fadeIn(\"slow\");\r\n $(\"#loading-message\").hide();\r\n }, 500);\r\n }\r\n else if (viewType == \"confirm\") { }\r\n }\r\n $scope.getTotal = function () {\r\n var total = 0.00;\r\n if ($scope.cartOrder.Total)\r\n total = parseFloat($scope.cartOrder.Total);\r\n $scope.total = total.toFixed(2);\r\n }\r\n $scope.getTax = function () {\r\n return \"$\" + $scope.cartOrder.ExchangeRateTax;\r\n }\r\n $scope.getBaseTotal = function () {\r\n var baseTotal = 0;\r\n $scope.products.forEach(function (item) { baseTotal += item.BasePrice; });\r\n return baseTotal;\r\n }\r\n $scope.recalculateTotal = function () {\r\n var shippingPrice = parseFloat($scope.shippingMethodChosen.ServicePrice);\r\n var total = $scope.cartOrder.SubTotalDisplay;\r\n\r\n if ($scope.cartOrder.ExchangeRateSubTotal)\r\n total = parseFloat($scope.cartOrder.ExchangeRateSubTotal);\r\n\r\n if ($scope.cartOrder.ExchangeRateDiscountTotal && $scope.cartOrder.Discounts.length != 0) {\r\n total -= $scope.cartOrder.ExchangeRateDiscountTotal;\r\n } else if ($scope.cartOrder.DiscountTotal) {\r\n total -= $scope.cartOrder.DiscountTotal;\r\n }\r\n\r\n if (shippingPrice)\r\n total += shippingPrice;\r\n \r\n if ($scope.cartOrder.ExchangeRateTax) {\r\n $scope.taxDisplay = $scope.cartOrder.ExchangeRateTax.toFixed(2);\r\n total += $scope.cartOrder.ExchangeRateTax;\r\n }\r\n $scope.total = total.toFixed(2);\r\n }\r\n $scope.isCardNumberValid = function () {\r\n switch ($scope.payment.CardType) {\r\n case \"visa\":\r\n $scope.regex = new RegExp(\"^4[0-9]{12}(?:[0-9]{3})?$\");\r\n $scope.currentTypeName = \"Visa\";\r\n break;\r\n case \"delta\":\r\n $scope.regex = new RegExp(\"^4[0-9]{12}(?:[0-9]{3})?$\");\r\n $scope.currentTypeName = \"Delta\";\r\n break;\r\n case \"uke\":\r\n $scope.regex = new RegExp(\"^4[0-9]{12}(?:[0-9]{3})?$\");\r\n $scope.currentTypeName = \"Uke\";\r\n break;\r\n case \"dinersclub\":\r\n $scope.regex = new RegExp(\"^3(?:0[0-5]|[68][0-9])[0-9]{11}$\");\r\n $scope.currentTypeName = \"Diners Club\";\r\n break;\r\n case \"laser\":\r\n $scope.regex = new RegExp(\"^(6304|6706|6709|6771)[0-9]{12,15}$\");\r\n $scope.currentTypeName = \"Laser\";\r\n break;\r\n case \"americanexpress\":\r\n $scope.regex = new RegExp(\"^3[47][0-9]{13}$\");\r\n $scope.currentTypeName = \"American Express\";\r\n break;\r\n case \"mastercard\":\r\n $scope.regex = new RegExp(\"^5[1-5][0-9]{5,}|222[1-9][0-9]{3,}|22[3-9][0-9]{4,}|2[3-6][0-9]{5,}|27[01][0-9]{4,}|2720[0-9]\");\r\n $scope.currentTypeName = \"Master Card\";\r\n break;\r\n case \"discover\":\r\n $scope.regex = new RegExp(\"^6(?:011|5[0-9]{2})[0-9]{3,}$\");\r\n $scope.currentTypeName = \"Discover\";\r\n break;\r\n default:\r\n $scope.currentTypeName = \"Card\";\r\n break;\r\n\r\n }\r\n if ($scope.currentTypeName != \"Card\")\r\n if (!$scope.regex.test($scope.payment.Number))\r\n return false;\r\n var credit_card_number = $scope.payment.Number.replace(/-/g, '');\r\n if (!passesLuhnAlgorithm(credit_card_number))\r\n return false;\r\n return true;\r\n };\r\n $scope.changePromoOptIn = function () {\r\n if ($scope.PromotionOptIn && !$scope.PromotionEmail)\r\n $scope.PromotionEmail = $scope.billingAddress.Email;\r\n }\r\n $scope.onRecaptchaSuccess = function () {\r\n $scope.verifiedHuman = true;\r\n $scope.initializeElements();\r\n }\r\n $scope.getElementsInitializers = function () {\r\n return service.getElementsInitializers().then(elementsInitializers => {\r\n if (elementsInitializers.ElementsClientToken == \"\") {\r\n $scope.elementsError = \"There was an issue checking out. Please try refreshing the page.\";\r\n } else if (elementsInitializers.ElementsClientToken == \"rl\") {\r\n $scope.elementsErrorCustom = \"If you are having trouble placing an order, please contact our customer service hotline at 605-996-5011 for assistance.\";\r\n }\r\n $scope.elementsInitializers = elementsInitializers;\r\n })\r\n }\r\n $scope.initializeElements = function () {\r\n if (!$scope.verifiedHuman)\r\n return;\r\n try {\r\n let { FirstName, LastName, Email, Phone, Address, Country, StateRegion, City, PostalCode } = $scope.billingAddress;\r\n let Name = FirstName + ' ' + LastName;\r\n if(StateRegion == null){\r\n StateRegion = '';\r\n }\r\n const addressMaxLength = 32; // Set by Fortis\r\n const cityMaxLength = 36; // Set by Fortis\r\n const stateMaxLength = 2; // Set by Fortis, though it is unclear if the limit is 2 or 24.\r\n const postalCodeMaxLength = 10; // Set by Fortis\r\n const countryMaxLength = 10; // Set by Fortis, though we use 2-character country codes.\r\n const phoneMaxLength = 10; // Set by Fortis\r\n const emailMaxLength = 128; // Set by Fortis (assumed limit based on custom field limitation)\r\n const nameMaxLength = 128; // Set by Fortis (custom field limitation)\r\n Address = Address.length > addressMaxLength ? Address.substring(0, addressMaxLength) : Address;\r\n City = City.length > cityMaxLength ? City.substring(0, cityMaxLength) : City;\r\n StateRegion = StateRegion.length > stateMaxLength ? StateRegion.substring(0, stateMaxLength) : StateRegion;\r\n PostalCode = PostalCode.length > postalCodeMaxLength ? PostalCode.substring(0, postalCodeMaxLength) : PostalCode;\r\n Country = Country.length > countryMaxLength ? Country.substring(0, countryMaxLength) : Country;\r\n Phone = Phone.length > phoneMaxLength ? Phone.substring(0, phoneMaxLength) : Phone;\r\n Email = Email.length > emailMaxLength ? Email.substring(0, emailMaxLength) : Email;\r\n Name = Name.length > nameMaxLength ? Name.substring(0, nameMaxLength) : Name;\r\n $scope.getElementsInitializers().then(() => {\r\n const { ElementsClientToken, TransactionApiId, Environment } = $scope.elementsInitializers;\r\n var elements = new Commerce.elements(ElementsClientToken);\r\n elements.create({\r\n container: '#payment',\r\n theme: 'default',\r\n environment: Environment,\r\n showReceipt: false,\r\n appearance: {\r\n colorButtonActionBackground: '#245079',\r\n colorButtonActionText: '#ffffff',\r\n colorButtonSelectedBackground: '#24507980',\r\n borderRadius: '4px'\r\n },\r\n fields: {\r\n billing: [\r\n { name: 'address', required: true, readOnly: true, value: Address },\r\n { name: 'city', required: false, readOnly: true, value: City },\r\n { name: 'state', required: Country === 'US', readOnly: true, value: StateRegion || '' },\r\n { name: 'postal_code', required: true, readOnly: true, value: PostalCode },\r\n { name: 'country', required: true, readOnly: true, value: Country }\r\n ],\r\n additional: [\r\n { name: 'email_address', hidden: true, value: Email },\r\n { name: 'transaction_api_id', hidden: true, value: TransactionApiId },\r\n { name: 'transaction_custom_1', hidden: true, value: Name }\r\n ]\r\n },\r\n });\r\n elements.on('done', async (result) => {\r\n if (result.data.status_code == Object.keys(StatusID)[Object.values(StatusID).findIndex(x => 'Approved')]) {\r\n if (await transactionAmountHasBeenChanged(result.data.transaction_amount)) {\r\n $scope.voidTransaction(result.data.id, 'Your order total did not match the payment total. Your transaction has been voided.').then(() => {\r\n resetPaymentProcessing();\r\n });\r\n return;\r\n }\r\n $scope.processOrder(result.data);\r\n } else {\r\n $scope.elementsError = 'An error occurred while trying to process your payment with the following status code: ' +\r\n StatusID[result.data.status_code] + '.';\r\n $scope.$apply();\r\n resetPaymentProcessing();\r\n }\r\n });\r\n });\r\n $scope.elementsError = '';\r\n }\r\n catch (e) {\r\n $scope.elementsError = \"There was an issue loading the payment processor. Please return to the cart and try again.\";\r\n }\r\n }\r\n\r\n var unbindPaymentSuccessWatch = $scope.$watch(function (scope) {\r\n if (scope.sagePaymentIsSuccessful) {\r\n unbindPaymentSuccessWatch();\r\n scope.placeOrder();\r\n }\r\n }, true);\r\n\r\n enableCheckoutAutoAddress();\r\n\r\n return $scope;\r\n\r\n function resetPaymentProcessing() {\r\n $('.payment').empty();\r\n $scope.verifiedHuman = false;\r\n }\r\n\r\n async function transactionAmountHasBeenChanged(transactionAmount) {\r\n return transactionAmount !== Math.round(await service.getCartOrderTotal() * 100); // Convert to pennies.\r\n }\r\n\r\n function initializeCheckoutAddress() {\r\n if ($scope.cartOrder.Addresses.length > 0)\r\n for (var i = 0; i < $scope.cartOrder.Addresses.length; i++) {\r\n if ($scope.cartOrder.Addresses[i].AddressType == 1)\r\n $scope.billingAddress = $scope.cartOrder.Addresses[i];\r\n else if ($scope.cartOrder.Addresses[i].AddressType == 2)\r\n $scope.shippingAddress = $scope.cartOrder.Addresses[i];\r\n }\r\n else if ($scope.userId != config.defaults.guid)\r\n service.getCustomerProfile($scope.userId).then(function (response) {\r\n $scope.billingAddress = {\r\n FirstName: response.data.FirstName,\r\n LastName: response.data.LastName,\r\n Company: response.data.Company,\r\n Email: response.data.EmailAddress,\r\n Phone: response.data.PhoneNumber,\r\n Address: response.data.StreetAddress,\r\n Address2: response.data.StreetAddress2,\r\n Country: response.data.CountryCode,\r\n StateRegion: response.data.StateCode,\r\n City: response.data.City,\r\n PostalCode: response.data.PostalCode\r\n };\r\n });\r\n }\r\n\r\n function getAddresses(order) {\r\n for (var i = 0; i < order.Addresses.length; i++)\r\n if (order.Addresses[i].AddressType == 1)\r\n $scope.billingAddress = order.Addresses[i];\r\n else if (order.Addresses[i].AddressType == 2)\r\n $scope.shippingAddress = order.Addresses[i];\r\n }\r\n\r\n function setTaxDisplay() {\r\n if ($scope.cartOrder.ExchangeRateTax == null)\r\n $scope.taxDisplay = \"Tax will be calculated on the next step\"\r\n else\r\n $scope.taxDisplay = $scope.cartOrder.ExchangeRateTax.toFixed(2)\r\n }\r\n\r\n function setProducts(order) {\r\n $scope.products = [];\r\n for (var i = 0; i < order.Details.length; i++) {\r\n $scope.products.push(order.Details[i]);\r\n if (order.Details[i] !== null && order.Details[i].Sku !== null && order.Details[i].Sku.endsWith(\"ZZ\"))\r\n $scope.orderHasCustomProducts = true;\r\n }\r\n }\r\n\r\n function setProductTotals(cartOrder) {\r\n cartOrder.Details.forEach(function (el) {\r\n el.Total = el.Price * el.Quantity;\r\n });\r\n }\r\n\r\n function setDiscounts(order) {\r\n $scope.discounts = [];\r\n for (var i = 0; i < order.Discounts.length; i++)\r\n $scope.discounts.push(order.Discounts[i]);\r\n }\r\n\r\n function setShippingMethod(response) {\r\n localStorage.setItem('shippingMethods', JSON.stringify($scope.shippingMethods));\r\n\r\n if ($scope.cartOrder.ShippingServiceCode != null && $scope.cartOrder.ShippingServiceCode != \"\")\r\n restoreShippingMethodChosen();\r\n else {\r\n $scope.shippingMethodChosen.ServiceCode = response.shippingOptions[0].ServiceCode;\r\n $scope.shippingMethodChosen.ServiceName = response.shippingOptions[0].ServiceName;\r\n $scope.shippingMethodChosen.ServicePrice = response.shippingOptions[0].ServicePrice;\r\n $scope.shippingMethodChosen.ShippingCarrierName = response.shippingOptions[0].ShippingCarrierName;\r\n $scope.shippingMethodChosen.ShippingMethodId = response.shippingOptions[0].ShippingMethodId;\r\n $scope.shippingMethodChosen.ShippingServiceName = response.shippingOptions[0].ShippingServiceName;\r\n setTimeout(function () {\r\n if ($scope.shippingMethodChosen.ServiceName && $scope.shippingMethodChosen.ServiceName.length > 0)\r\n $('[data-service-code=' + $scope.shippingMethodChosen.ServiceCode + ']').prop(\"checked\", true);\r\n }, 200);\r\n return;\r\n }\r\n }\r\n\r\n function updatePaymentScreenOnError() {\r\n promises.push(service.getCheckoutStepPaymentAndReview().then(function (response) {\r\n $scope.cartOrder = response.cartOrder;\r\n setTaxDisplay();\r\n setProducts($scope.cartOrder);\r\n setDiscounts($scope.cartOrder);\r\n setProductTotals($scope.cartOrder);\r\n $scope.recalculateTotal();\r\n }));\r\n }\r\n\r\n function promiseToSubmitPromotionFormIfOptedIn() {\r\n if ($scope.PromotionOptIn && promotionEmailIsValid())\r\n return service.submitPromotionForm(getPromotionFormValues())\r\n ['catch'](function () { });\r\n }\r\n\r\n function promotionEmailIsValid() {\r\n var isValid = typeof ($scope.billingAddress.Email) === 'string'\r\n && $scope.billingAddress.Email.match(config.inputPatterns.email);\r\n\r\n return isValid;\r\n }\r\n\r\n function getPromotionFormValues() {\r\n var values = {},\r\n conf = config.service.submitPromotionForm;\r\n\r\n values[conf.emailFieldName] = $scope.billingAddress.Email;\r\n values[conf.optInFieldName] = $scope.PromotionOptIn ? conf.yesValue : conf.noValue;\r\n\r\n return values;\r\n }\r\n\r\n function passesLuhnAlgorithm(identifier) {\r\n var sum = 0,\r\n alt = false,\r\n i = identifier.length - 1,\r\n num;\r\n\r\n if (identifier.length < 13 || identifier.length > 19)\r\n return false;\r\n\r\n while (i >= 0) {\r\n num = parseInt(identifier.charAt(i), 10); //get the next digit\r\n\r\n //if it's not a valid number, abort\r\n if (isNaN(num))\r\n return false;\r\n\r\n //if it's an alternate number...\r\n if (alt) {\r\n num *= 2;\r\n if (num > 9)\r\n num = (num % 10) + 1;\r\n }\r\n\r\n alt = !alt; //flip the alternate bit\r\n sum += num; //add to the rest of the sum\r\n i--; //go to next digit\r\n }\r\n\r\n //determine if it's valid\r\n return (sum % 10 == 0);\r\n }\r\n\r\n function setExpirationMonths() {\r\n currentMonth = new Date().getMonth();\r\n for (i = 1; i <= 12; i++) {\r\n if (i < 10) sm = \"0\" + i;\r\n else sm = i;\r\n $scope.CreditCardExpirationMonthOptions.push({ numericMonth: i, stringMonth: sm.toString() });\r\n }\r\n }\r\n\r\n function setExpirationYears() {\r\n currentYear = new Date().getFullYear();\r\n for (i = currentYear; i < currentYear + 10; i++)\r\n $scope.CreditCardExpirationYearOptions.push({ fullYear: i, shortYear: i.toString().slice(-2) });\r\n }\r\n\r\n function paymentStepValid() {\r\n $scope.errors = [];\r\n return $scope.sagePaymentIsSuccessful;\r\n }\r\n\r\n function displayPaymentResponseErrorMessage(paymentResponse) {\r\n $scope.errors = [];\r\n $scope.errors.push(paymentResponse.GatewayResponse);\r\n displayErrors();\r\n }\r\n\r\n function validateCheckoutStepOne() {\r\n $scope.buttonIsEnabled = true;\r\n if ($scope.shippingAddress.Country != 'US')\r\n $(\"#checkout #shipping-address .state\").removeClass(\"ng-invalid\").addClass('ng-valid');\r\n\r\n if ($scope.billingAddress.Country != 'US')\r\n $(\"#checkout #billing-address .state\").removeClass(\"ng-invalid\").addClass('ng-valid');\r\n\r\n var invalidFormElements = $(\".ng-invalid\");\r\n var shippingOptions = $(\".shipping-option\");\r\n $scope.errors = [];\r\n\r\n if (invalidFormElements.length > 0) {\r\n invalidFormElements.addClass(\"ng-dirty\");\r\n $scope.errors.push(\"- Please fill out all the required fields below.\");\r\n }\r\n\r\n if (!isZipCodeAndCountryCodeValid($scope.billingAddress.Country, $scope.billingAddress.PostalCode))\r\n $scope.errors.push(\"- The billing zip code entered is not a valid zip code for the country selected.\");\r\n\r\n if ($scope.ShippingDifferent)\r\n if (!isZipCodeAndCountryCodeValid($scope.shippingAddress.Country, $scope.shippingAddress.PostalCode))\r\n $scope.errors.push(\"- The shipping zip code entered is not a valid zip code for the country selected.\");\r\n\r\n if ($scope.errors.length > 0) {\r\n scrollTo(\"#checkout\", 75);\r\n $(\"#checkout-errors\").show();\r\n return false;\r\n }\r\n else\r\n $(\"#checkout-errors\").hide();\r\n\r\n return true;\r\n }\r\n\r\n function showLoadingSpinner() {\r\n $rootScope.DisplayPageLoadingSpinner = true;\r\n try { $rootScope.$apply(); } catch (e) { }\r\n }\r\n\r\n function hideLoadingSpinner() {\r\n $rootScope.DisplayPageLoadingSpinner = false;\r\n try { $rootScope.$apply(); } catch (e) { }\r\n }\r\n\r\n function isZipCodeAndCountryCodeValid(countryCode, zipCode) {\r\n switch (countryCode) {\r\n /* Numeric codes */\r\n case \"IS\":\r\n return (/^[0-9]{3}$/gi).test(zipCode);\r\n case \"AU\":\r\n case \"AT\":\r\n case \"BE\":\r\n case \"BG\":\r\n case \"DK\":\r\n case \"SV\":\r\n case \"HU\":\r\n case \"LU\":\r\n case \"NZ\":\r\n case \"NO\":\r\n case \"PH\":\r\n case \"ZA\":\r\n case \"CH\":\r\n return (/^[0-9]{4}$/gi).test(zipCode);\r\n case \"AR\":\r\n return (/^([0-9]{4})|([a-z][0-9]{4}[a-z]{3})$/gi).test(zipCode);\r\n case \"US\":\r\n case \"HR\":\r\n case \"FI\":\r\n case \"FR\":\r\n case \"DE\":\r\n case \"IT\":\r\n case \"TH\":\r\n case \"UA\":\r\n return (/^[0-9]{5}$/gi).test(zipCode);\r\n case \"CZ\":\r\n case \"GR\":\r\n case \"SE\":\r\n case \"SK\":\r\n return (/^[0-9]{3}\\ [0-9]{2}$/gi).test(zipCode);\r\n case \"PL\":\r\n return (/^[0-9]{2}\\-[0-9]{3}$/gi).test(zipCode);\r\n case \"BR\":\r\n return (/^[0-9]{5}(\\-[0-9]{3})?$/gi).test(zipCode);\r\n case \"NC\":\r\n return (/^988[0-9]{2}$/gi).test(zipCode);\r\n case \"ES\":\r\n return (/^(0[1-9]|[1-4][0-9]|5[0-2])[0-9]{3}$/gi).test(zipCode);\r\n case \"KZ\":\r\n return (/^[0-9]{6}$/gi).test(zipCode);\r\n case \"GB\":\r\n return (/^((?![qvx])[a-z])((?![ijz])[a-z])?[0-9]((?![iloq])[a-y0-9])?\\ [0-9]((?![cikmov])[a-z]){2}$/gi).test(zipCode);\r\n case \"CA\":\r\n return (/^(?![dfioqu])[a-z][0-9](?![dfioqu])[a-z]\\ [0-9](?![dfioqu])[a-z][0-9]$/gi).test(zipCode);\r\n case \"NL\":\r\n return (/^([0-9]{4}\\ [a-z]{2})?$/gi).test(zipCode);\r\n case \"IE\":\r\n return (/^[A-Za-z]\\d{2}\\s[A-Za-z\\d]{4}$/gi).test(zipCode);\r\n case \"MT\":\r\n return (/^[a-z]{3}\\ [0-9]{4}$/gi).test(zipCode);\r\n case \"BW\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n function validateCheckoutStepTwo() {\r\n var shippingOptions = $(\".shipping-option\");\r\n $scope.errors = [];\r\n if (shippingOptions.prop(\"required\")) {\r\n $(\".shipping\").addClass(\"shipping-invalid\");\r\n $scope.errors.push(\"Please select a shipping method.\");\r\n }\r\n if ($scope.errors.length > 0) {\r\n scrollTo(\"#checkout\", 75);\r\n $(\"#checkout-errors\").show();\r\n return false;\r\n }\r\n else\r\n $(\"#checkout-errors\").hide();\r\n return true;\r\n }\r\n\r\n function delayedCloseWindow() {\r\n $(\"#countdown-message\").show();\r\n var seconds_left = 10;\r\n var interval = setInterval(function () {\r\n $(\"#countdown\").html(--seconds_left);\r\n\r\n if (seconds_left <= 0) {\r\n window.close();\r\n }\r\n }, 1000);\r\n }\r\n function displayErrors() {\r\n scrollTo(\"#checkout\", 75);\r\n if ($scope.errors.length > 0) {\r\n $(\"#checkout-errors ul\").html(\"\");\r\n\r\n for (var i = 0; i < $scope.errors.length; i++)\r\n $(\"#checkout-errors ul\").append(\"
  • \" + $scope.errors[i] + \"
  • \")\r\n\r\n $(\"#checkout-errors\").show();\r\n }\r\n else {\r\n $(\"#checkout-errors\").hide();\r\n $(\"#checkout-errors ul\").html(\"\");\r\n }\r\n hideLoadingSpinner();\r\n }\r\n\r\n function moveToNextCheckoutStep() {\r\n window.location.href = nextStep;\r\n }\r\n\r\n function containsObject(obj, list) {\r\n var i;\r\n for (i = 0; i < list.length; i++)\r\n if (list[i].id == obj.id) return true;\r\n return false;\r\n }\r\n\r\n function combineAddressObjects(billingAddress, shippingAddress) {\r\n validateAddresses();\r\n\r\n return addresses = {\r\n BillingAddress: $scope.billingAddress.Address,\r\n BillingAddress2: $scope.billingAddress.Address2,\r\n BillingAddressType: \"billing\",\r\n BillingCountry: $scope.billingAddress.Country,\r\n BillingCity: $scope.billingAddress.City,\r\n BillingCompany: $scope.billingAddress.Company,\r\n BillingEmail: $scope.billingAddress.Email,\r\n BillingFirstName: $scope.billingAddress.FirstName,\r\n BillingLastName: $scope.billingAddress.LastName,\r\n BillingPhone: $scope.billingAddress.Phone,\r\n BillingPostalCode: $scope.billingAddress.PostalCode,\r\n BillingStateRegion: $scope.billingAddress.StateRegion,\r\n ShippingAddress: $scope.shippingAddress.Address,\r\n ShippingAddress2: $scope.shippingAddress.Address2,\r\n ShippingAddressType: \"shipping\",\r\n ShippingCountry: $scope.shippingAddress.Country,\r\n ShippingCity: $scope.shippingAddress.City,\r\n ShippingCompany: $scope.shippingAddress.Company,\r\n ShippingEmail: $scope.shippingAddress.Email,\r\n ShippingFirstName: $scope.shippingAddress.FirstName,\r\n ShippingLastName: $scope.shippingAddress.LastName,\r\n ShippingPhone: $scope.shippingAddress.Phone,\r\n ShippingPostalCode: $scope.shippingAddress.PostalCode,\r\n ShippingStateRegion: $scope.shippingAddress.StateRegion\r\n };\r\n }\r\n\r\n function restoreShippingMethodChosen() {\r\n for (var i = 0; i < $scope.shippingMethods.length; i++)\r\n if ($scope.shippingMethods[i].ServiceCode == $scope.cartOrder.ShippingServiceCode) {\r\n $scope.shippingMethodChosen.ServiceCode = $scope.shippingMethods[i].ServiceCode;\r\n $scope.shippingMethodChosen.ServiceName = $scope.shippingMethods[i].ServiceName;\r\n $scope.shippingMethodChosen.ServicePrice = $scope.shippingMethods[i].ServicePrice;\r\n $scope.shippingMethodChosen.ShippingCarrierName = $scope.shippingMethods[i].ShippingCarrierName;\r\n $scope.shippingMethodChosen.ShippingMethodId = $scope.shippingMethods[i].ShippingMethodId;\r\n $scope.shippingMethodChosen.ShippingServiceName = $scope.shippingMethods[i].ShippingServiceName;\r\n setTimeout(function () {\r\n if ($scope.shippingMethodChosen.ServiceName.length > 0)\r\n $('[data-service-code=\"' + $scope.shippingMethodChosen.ServiceCode + '\"]').prop(\"checked\", true);\r\n }, 200)\r\n return;\r\n }\r\n }\r\n\r\n function scrollTo(elem, offset) {\r\n var width = $(\"html\").width();\r\n var position = $(elem).position();\r\n if (width < 998)\r\n $(window).scrollTop(position.top - offset, \"slow\");\r\n else\r\n $(document).scrollTop(position.top - offset, \"slow\");\r\n }\r\n\r\n function displayErrorMessageFromServer(message) {\r\n if (message == null || message == undefined)\r\n message = 'We encountered an error while processing the order. Please contact us at 605-996-5011 to verify that your order is processed correctly. We are sorry for the inconvenience!';\r\n $scope.errors = [];\r\n $(\"#place-order\").html($scope.nextStepHtml);\r\n $scope.errors.push(message);\r\n $(\".checkout-errors\").show();\r\n displayErrors();\r\n }\r\n\r\n function errorHandling(message, display) {\r\n debugger;\r\n $scope.errors = [];\r\n\r\n if ($scope.CartOrder != null)\r\n message = config.checkout.errorMessageWithEmailAndOrderNumber.replace(\"{orderNumberForCartError}\", $scope.CartOrder.orderNumber);\r\n else\r\n message = config.checkout.errorMessageWithEmail;\r\n $(\"#place-order\").html($scope.nextStepHtml);\r\n $scope.errors.push(message);\r\n $(\".checkout-errors\").show();\r\n displayErrors();\r\n }\r\n\r\n function loadReviewStep() {\r\n $(\"#loading-message\").show();\r\n $(\"#checkout\").hide();\r\n $scope.paymentIsVisible = false;\r\n $(\"#next-step\").html($scope.nextStepHtml);\r\n setTimeout(function () {\r\n $(\"#checkout-review\").show();\r\n $(\"#checkout\").hide().fadeIn(\"slow\");\r\n $(\"#loading-message\").hide();\r\n }, 500);\r\n }\r\n\r\n function loadPaymentStep() {\r\n $(\"#loading-message\").show();\r\n $(\"#checkout\").hide();\r\n $(\"#checkout-review\").hide();\r\n $(\"#next-step\").html($scope.nextStepHtml);\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n $timeout(() => {\r\n $scope.paymentIsVisible = true;\r\n $(\"#checkout\").hide().fadeIn(\"slow\");\r\n $(\"#loading-message\").hide();\r\n hideLoadingSpinner();\r\n }, 500)\r\n }\r\n\r\n function isInternationalOrder(billingData) {\r\n return $scope.billingAddress.Country != 'US' || $scope.shippingAddress.Country != 'US' || (billingData && billingData.billing_country && billingData.billing_country != 'US');\r\n }\r\n \r\n function validateAddresses() {\r\n if (isInternationalOrder()) {\r\n for (var prop in $scope.billingAddress) $scope.shippingAddress[prop] = $scope.billingAddress[prop];\r\n localStorage.setItem('ShippingDifferent', \"false\");\r\n $(\"#ShippingDifferent\").prop(\"checked\", false);\r\n $scope.ShippingDifferent = false;\r\n }\r\n if (!$scope.ShippingDifferent) {\r\n $scope.shippingAddress = $scope.billingAddress;\r\n }\r\n }\r\n\r\n function enableCheckoutAutoAddress() {\r\n $.checkoutAutoAddress = function (element, options) {\r\n\r\n setTimeout(function () {\r\n $(\".pac-container\").prependTo(\".address-container\");\r\n }, 300);\r\n\r\n var isRad = function (el) {\r\n if (el === undefined) return;\r\n if ($(el).hasClass('autocomplete')) return false;\r\n var rad = typeof ($find) !== 'undefined' ? $find(el.id) : null;\r\n if (rad != null) return true;\r\n return false;\r\n }\r\n\r\n var getInput = function (name) {\r\n var el = $(name, element)[0];\r\n if (el !== undefined && isRad(el)) return el;\r\n\r\n if (!$(el).is('input') && !$(el).is('select'))\r\n el = $(name + ' input', element)[0];\r\n return el;\r\n }\r\n\r\n var getStreetAddress = function (components) {\r\n var street_number, route;\r\n for (var x = 0; x < components.length; x++) {\r\n if (components[x].types[0] == 'street_number')\r\n street_number = components[x].long_name;\r\n if (components[x].types[0] == 'route')\r\n route = components[x].long_name;\r\n }\r\n\r\n street_number = street_number ? street_number : '';\r\n route = route ? route : '';\r\n\r\n return street_number + ' ' + route;\r\n }\r\n\r\n var defaults = {\r\n autoComplete: null,\r\n placeHolderText: 'Enter your Address',\r\n autoCompleteTextBox: getInput('.autocomplete'),\r\n componentForm: {\r\n street_number: 'short_name',\r\n route: 'long_name',\r\n locality: 'long_name',\r\n country: 'long_name',\r\n administrative_area_level_1: 'short_name',\r\n postal_code: 'short_name'\r\n }\r\n }\r\n\r\n // to avoid confusions, use \"plugin\" to reference the \r\n // current instance of the object\r\n var plugin = this;\r\n\r\n // this will hold the merged default, and user-provided options\r\n // plugin's properties will be available through this object like:\r\n // plugin.settings.propertyName from inside the plugin or\r\n // element.data('pluginName').settings.propertyName from outside the plugin, \r\n // where \"element\" is the element the plugin is attached to;\r\n plugin.settings = {}\r\n\r\n var $element = $(element), // reference to the jQuery version of DOM element\r\n element = element; // reference to the actual DOM element\r\n\r\n plugin.init = function () {\r\n // the plugin's final properties are the merged default and \r\n // user-provided options (if any)\r\n plugin.settings = $.extend({}, defaults, options);\r\n plugin.settings.autoComplete = new google.maps.places.Autocomplete(\r\n plugin.settings.autoCompleteTextBox,\r\n { types: ['geocode'] });\r\n\r\n var placeholder = $(plugin.settings.autoCompleteTextBox).attr('placeholder');\r\n if (typeof (placeholder) === 'undefined')\r\n $(plugin.settings.autoCompleteTextBox).attr('placeholder', plugin.settings.placeholderText)\r\n plugin.settings.autoComplete.addListener('place_changed', fillInAddress);\r\n }\r\n\r\n var fillInAddress = function () {\r\n // Get the place details from the autocomplete object.\r\n var place = plugin.settings.autoComplete.getPlace();\r\n\r\n if (!place.address_components) {\r\n if ($element.attr(\"id\") == \"billing-address\") {\r\n $(\"#billing-address-tooltip\").popover(\"show\");\r\n $(\"#billing-address-tooltip ~ .popover\").click(function () {\r\n $(\"#billing-address-tooltip\").popover(\"hide\");\r\n });\r\n\r\n setTimeout(function () {\r\n $(\"#billing-address\").keyup(function () {\r\n if ($(\"#billing-address-tooltip ~ .popover:visible\")) {\r\n $(\"#billing-address-tooltip\").popover(\"hide\");\r\n $(\"#billing-address\").unbind(\"keyup\");\r\n }\r\n });\r\n }, 500);\r\n $scope.billingAddress.Address = \"\";\r\n $scope.billingAddress.Address2 = \"\";\r\n $scope.billingAddress.City = \"\";\r\n $scope.billingAddress.StateRegion = \"\";\r\n $scope.billingAddress.PostalCode = \"\";\r\n\r\n }\r\n else if ($element.attr(\"id\") == \"shipping-address\") {\r\n $(\"#shipping-address-tooltip\").popover(\"show\");\r\n $(\"#shipping-address-tooltip ~ .popover\").click(function () {\r\n $(\"#shipping-address-tooltip\").popover(\"hide\");\r\n });\r\n setTimeout(function () {\r\n $(\"#shipping-address\").keyup(function () {\r\n if ($(\"#shipping-address-tooltip ~ .popover:visible\")) {\r\n $(\"#shipping-address-tooltip\").popover(\"hide\");\r\n $(\"#shipping-address\").unbind(\"keyup\");\r\n }\r\n });\r\n }, 500);\r\n $scope.shippingAddress.Address = \"\";\r\n $scope.shippingAddress.Address2 = \"\";\r\n $scope.shippingAddress.City = \"\";\r\n $scope.shippingAddress.StateRegion = \"\";\r\n $scope.shippingAddress.PostalCode = \"\";\r\n }\r\n\r\n $scope.$apply();\r\n return;\r\n }\r\n place.address_components = place.address_components.reverse(); // put country before state.\r\n\r\n for (var component in plugin.settings.componentForm) {\r\n var input = getInput('.' + component);\r\n if (input !== undefined) {\r\n if (!isRad(input)) {\r\n getInput('.' + component).value = '';\r\n getInput('.' + component).disabled = false;\r\n } else {\r\n // Do rad resets.\r\n var rad = typeof ($find) !== 'undefined' ? $find(input.id) : null;\r\n if (!rad) continue;\r\n if (!rad.findItemByText)\r\n rad.set_value('');\r\n }\r\n }\r\n }\r\n for (var i = 0; i < place.address_components.length; i++) {\r\n var streetAddress = getStreetAddress(place.address_components);\r\n\r\n var component_types = place.address_components[i].types;\r\n for (var j = 0; j < component_types.length; j++) {\r\n var addressType = component_types[j];\r\n if (plugin.settings.componentForm[addressType]) {\r\n var val = place.address_components[i][plugin.settings.componentForm[addressType]];\r\n var input = getInput('.' + addressType);\r\n if (addressType == 'route' || addressType == 'street_number') {\r\n if (input !== undefined)\r\n input.value = streetAddress;\r\n if (input.id == \"BillingAddress\")\r\n $scope.billingAddress.Address = streetAddress;\r\n else\r\n $scope.shippingAddress.Address = streetAddress;\r\n }\r\n else {\r\n if (input !== undefined) {\r\n if ($(input).is('select')) {\r\n if (input.id == \"BillingState\" || input.id == \"ShippingState\")\r\n $(input).val(val);\r\n else\r\n $(input).val(getCountryCode(val));\r\n updateScope(input);\r\n } else {\r\n input.value = val;\r\n updateScope(input);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n var geolocate = function () {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n var geolocation = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude\r\n };\r\n var circle = new google.maps.Circle({\r\n center: geolocation,\r\n radius: position.coords.accuracy\r\n });\r\n plugin.settings.autoComplete.setBounds(circle.getBounds());\r\n });\r\n }\r\n }\r\n\r\n var createAutocompleteTextBox = function () {\r\n var el = $('');\r\n $element.append(el);\r\n el.on('focus', function () {\r\n geolocate();\r\n });\r\n return el;\r\n }\r\n\r\n updateScope = function (input) {\r\n var type = input.id;\r\n switch (type) {\r\n case \"BillingAddress\":\r\n $scope.billingAddress.Address = input.value;\r\n break;\r\n case \"BillingAddress2\":\r\n $scope.billingAddress.Address2 = input.value;\r\n break;\r\n case \"BillingCity\":\r\n $scope.billingAddress.City = input.value;\r\n break;\r\n case \"BillingState\":\r\n $scope.billingAddress.StateRegion = input.value;\r\n break;\r\n case \"BillingZip\":\r\n $scope.billingAddress.PostalCode = input.value;\r\n break;\r\n case \"BillingCountry\":\r\n $scope.billingAddress.Country = input.value;\r\n break;\r\n case \"ShippingAddress\":\r\n $scope.shippingAddress.Address = input.value;\r\n break;\r\n case \"ShippingAddress2\":\r\n $scope.shippingAddress.Address2 = input.value;\r\n break;\r\n case \"ShippingCity\":\r\n $scope.shippingAddress.City = input.value;\r\n break;\r\n case \"ShippingState\":\r\n $scope.shippingAddress.StateRegion = input.value;\r\n break;\r\n case \"ShippingZip\":\r\n $scope.shippingAddress.PostalCode = input.value;\r\n break;\r\n case \"ShippingCountry\":\r\n $scope.shippingAddress.Country = input.value;\r\n break;\r\n default:\r\n }\r\n $scope.$apply();\r\n }\r\n\r\n getStateCode = function (state) {\r\n for (var i = 0; i < $scope.States.length; i++)\r\n if ($scope.States[i].Name == state)\r\n return $scope.States[i].IsoCode;\r\n return \"\";\r\n }\r\n\r\n getCountryCode = function (country) {\r\n for (var i = 0; i < $scope.Countries.length; i++)\r\n if ($scope.Countries[i].Name == country)\r\n return $scope.Countries[i].IsoCode;\r\n return \"\";\r\n }\r\n\r\n plugin.init();\r\n }\r\n }\r\n}","angular.module(\"boyds\").controller('customerServiceToolController', customerServiceToolController);\r\ncustomerServiceToolController.$inject = ['service', '$scope', '$rootScope', 'domService'];\r\n\r\nfunction customerServiceToolController(service, $scope, $rootScope, domService) {\r\n\tvar vm = this;\r\n\tvar cssFlavor = ['danger', 'default', 'primary', 'success', 'warning', 'info'];\r\n\tvar cssFlavorIterator = 0;\r\n\tvm.title = \"Order Search tool\";\r\n\tvm.orders = [];\r\n\tvm.search = search;\r\n\tvm.searchTerm = '';\r\n\tvm.currentPage = 1;\r\n\tvm.takeCount = 20;\r\n\tvm.changePage = changePage;\r\n\r\n\tinit();\r\n\r\n\treturn vm;\r\n\r\n\r\n\tfunction init() {\r\n\t\tpreventFormSubmit();\r\n\t\tpreformSearchWhenSearchTermChanges();\r\n\t}\r\n\r\n\r\n\tfunction search(newSearch) {\r\n\t\tif (!vm.searchTerm) return;\r\n\t\tif (newSearch) resetSearchResults();\r\n\t\tstartProgressIndicator();\r\n\r\n\t\tsearchForOrders();\r\n\r\n\t\tsearchForOrdersCount();\r\n\t}\r\n\r\n\tfunction searchForOrders() {\r\n\t\tvar skipPage = vm.currentPage - 1;\r\n\t\tservice.searchForOrders(vm.searchTerm, skipPage, vm.takeCount).then(function (response) {\r\n\t\t\tvm.orders = response.data;\r\n\t\t\tapplyCalloutFlavor();\r\n\t\t\tstopProgressIndicator();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction searchForOrdersCount() {\r\n\t\tservice.searchForOrdersCount(vm.searchTerm).then(function (response) {\r\n\t\t\tvm.totalResultsCount = response.data;\r\n\t\t});\r\n\t}\r\n\r\n\tfunction applyCalloutFlavor() {\r\n\t\tvm.orders.forEach(function (x) {\r\n\t\t\tx.calloutFlavor = getCalloutFlavor();\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getCalloutFlavor() {\r\n\t\tvar css = \"bs-callout bs-callout-\" + cssFlavor[cssFlavorIterator];\r\n\t\tcssFlavorIterator = cssFlavorIterator > 5 ? 0 : cssFlavorIterator + 1;\r\n\t\treturn css;\r\n\t}\r\n\r\n\tfunction startProgressIndicator() {\r\n\t\t$rootScope.DisplayPageLoadingSpinner = true;\r\n\t}\r\n\r\n\tfunction stopProgressIndicator() {\r\n\t\t$rootScope.DisplayPageLoadingSpinner = false;\r\n\t}\r\n\r\n\tfunction changePage() {\r\n\t\tdomService.scrollTop();\r\n\t\tsearch();\r\n\t}\r\n\r\n\tfunction resetSearchResults() {\r\n\t\tvm.currentPage = 1;\r\n\t}\r\n\r\n\tfunction preventFormSubmit() {\r\n\t\tangular.element(document).find(\"form\").on(\"submit\", function (e) {e.preventDefault();});\r\n\t}\r\n\r\n\tfunction preformSearchWhenSearchTermChanges() {\r\n\t\t$scope.$watch('vm.searchTerm', function () {search(true);});\r\n\t}\r\n}","angular.module(\"boyds\").controller('cookieConsentController', cookieConsentController).animation('.slide', slideAnimation);\r\ncookieConsentController.$inject = ['cookieConsentService', '$scope'];\r\n\r\nfunction cookieConsentController(service, $scope) {\r\n var vm = this;\r\n\r\n vm.displayCookieConsent = !service.isConsentStatusKnown()\r\n vm.onAcceptButtonClick = onAcceptButtonClick;\r\n vm.onDeclineButtonClick = onDeclineButtonClick;\r\n\r\n function onAcceptButtonClick() {\r\n vm.displayCookieConsent = false\r\n service.grantConsent()\r\n }\r\n\r\n function onDeclineButtonClick() {\r\n vm.displayCookieConsent = false\r\n service.denyConsent()\r\n }\r\n}\r\n\r\nfunction slideAnimation() {\r\n var NG_HIDE_CLASS = 'ng-hide';\r\n return {\r\n beforeAddClass: function (element, className, done) {\r\n if (className === NG_HIDE_CLASS) {\r\n element.slideUp(done);\r\n }\r\n },\r\n removeClass: function (element, className, done) {\r\n if (className === NG_HIDE_CLASS) {\r\n element.hide().slideDown(done);\r\n }\r\n }\r\n }\r\n}","angular.module(\"boyds\").controller('operationInstructionsController', operationInstructionsController);\r\noperationInstructionsController.$inject = ['$rootScope', '$scope', '$sce', '$timeout', 'service'];\r\nfunction operationInstructionsController($rootScope, $scope, $sce, $timeout, service) {\r\n var vm = this;\r\n vm.workstationDropdownData = {\r\n getSelectedWorkstationCacheLabel: () => 'selectedWorkstationGuid',\r\n\r\n workstations: null,\r\n selectedWorkstationDefaultOptionValue: '',\r\n selectedWorkstationGuid: '',\r\n workStationSelected: workStationSelected\r\n };\r\n vm.barcodeData = {\r\n searchTerm: ''\r\n };\r\n vm.operationInstructions = {\r\n data: null\r\n };\r\n vm.constraints = window.constraints = {\r\n audio: false,\r\n video: true\r\n };\r\n vm.requestHelpData = {\r\n helpType: '',\r\n additionalInfo: '',\r\n requestFeedback: '',\r\n };\r\n vm.error = null;\r\n vm.onScanButtonClick = onScanButtonClick;\r\n vm.onClickRequestHelp = onClickRequestHelp;\r\n vm.onSendHelpRequest = onSendHelpRequest;\r\n vm.trust = trust;\r\n init();\r\n return vm;\r\n\r\n function init() {\r\n preventFormSubmit();\r\n getWorkstations();\r\n performSearchWhenSearchTermChanges();\r\n setupBarcodeScanning();\r\n }\r\n\r\n function setupBarcodeScanning() {\r\n $(document).on({\r\n normaldeviceinput: function (e, barCode) {\r\n setSearchTerm(vm.barcodeData.searchTerm + barCode); // Append normal input, like single keystrokes\r\n },\r\n altdeviceinput: function (e, barCode) {\r\n setSearchTerm(barCode); // Replace the entire value with alternate input, like a barcode scanner\r\n }\r\n });\r\n $('.po-search').on({\r\n keypress: _onKeypress\r\n });\r\n }\r\n\r\n function getWorkstations() {\r\n displayProgressIndicator(true);\r\n return service.getWorkstations().then(function (response) {\r\n vm.workstationDropdownData.workstations = response;\r\n vm.workstationDropdownData.selectedWorkstationGuid = loadCachedSelection();\r\n focusInput();\r\n displayProgressIndicator(false);\r\n });\r\n }\r\n\r\n function loadCachedSelection() {\r\n return localStorage[vm.workstationDropdownData.getSelectedWorkstationCacheLabel()] ?? vm.workstationDropdownData.selectedWorkstationDefaultOptionValue;\r\n }\r\n\r\n function focusInput() {\r\n $('.po-search').focus();\r\n }\r\n\r\n function workStationSelected() {\r\n localStorage.setItem(vm.workstationDropdownData.getSelectedWorkstationCacheLabel(), vm.workstationDropdownData.selectedWorkstationGuid);\r\n focusInput();\r\n }\r\n\r\n function displayProgressIndicator(display) {\r\n $rootScope.DisplayPageLoadingSpinner = display;\r\n }\r\n\r\n function performSearchWhenSearchTermChanges() {\r\n $scope.$watch('vm.workstationDropdownData.selectedWorkstationGuid', searchForOperationInstructions);\r\n $scope.$watch('vm.barcodeData.searchTerm', searchForOperationInstructions);\r\n }\r\n\r\n function onScanButtonClick() {\r\n var isScanning = $('.camera-preview video').length;\r\n\r\n if (isScanning)\r\n stopWebcam();\r\n else\r\n startWebcam();\r\n }\r\n\r\n function searchForOperationInstructions() {\r\n setErrorMessage(null);\r\n vm.operationInstructions.data = null;\r\n if (!workstationIsSelected())\r\n return;\r\n if (!barcodeIsEntered())\r\n return;\r\n\r\n displayProgressIndicator(true);\r\n service.getWorkstationInstructions(vm.workstationDropdownData.selectedWorkstationGuid, vm.barcodeData.searchTerm).then(function (response) {\r\n vm.operationInstructions.data = response;\r\n console.log('%c Operation Instructions Response', 'color: green; text-decoration: underline;')\r\n console.log(response);\r\n }).catch(function (errorMessage) {\r\n setErrorMessage(errorMessage);\r\n }).finally(() => {\r\n displayProgressIndicator(false);\r\n });\r\n }\r\n\r\n function workstationIsSelected() {\r\n return vm.workstationDropdownData.selectedWorkstationGuid !== '';\r\n }\r\n\r\n function barcodeIsEntered() {\r\n return vm.barcodeData.searchTerm.length > 0;\r\n }\r\n\r\n function startWebcam() {\r\n setSearchTerm('');\r\n setErrorMessage(null);\r\n navigator.mediaDevices.getUserMedia(vm.constraints)\r\n .then(handleWebcamStream)\r\n .catch(handleWebcamError);\r\n }\r\n\r\n function handleWebcamStream(stream) {\r\n const video = document.querySelector('.camera-preview');\r\n const videoTracks = stream.getVideoTracks();\r\n console.log(`Using video device: ${videoTracks[0].label}`);\r\n\r\n Quagga.init({\r\n inputStream: {\r\n name: \"Live\",\r\n type: \"LiveStream\",\r\n target: video\r\n },\r\n decoder: {\r\n readers: [\r\n \"code_128_reader\",\r\n \"ean_reader\",\r\n \"ean_8_reader\",\r\n \"code_39_reader\",\r\n \"code_39_vin_reader\",\r\n \"codabar_reader\",\r\n \"upc_reader\",\r\n \"upc_e_reader\",\r\n \"i2of5_reader\"\r\n ]\r\n }\r\n }, function (e) {\r\n if (e) {\r\n handleWebcamError(e);\r\n return;\r\n }\r\n console.log(\"Initialization finished. Ready to start\");\r\n Quagga.start();\r\n updateButtonState(true);\r\n });\r\n Quagga.onDetected(onBarcodeDetected);\r\n }\r\n\r\n function onBarcodeDetected(result) {\r\n var barcode = result.codeResult.code;\r\n const regex = /^PO\\d+$/; //Matches any string that starts with PO followed by any amount of numbers\r\n if (!regex.exec(barcode)) {\r\n alert('barcode')\r\n return;\r\n }\r\n\r\n stopWebcam();\r\n setSearchTerm(barcode);\r\n alert(\"Barcode detected and processed : [\" + barcode + \"]\");\r\n }\r\n\r\n function handleWebcamError(e) {\r\n stopWebcam();\r\n if (e.name === 'NotFoundError') {\r\n setErrorMessage('A camera was not found')\r\n }\r\n else if (e.name === 'NotAllowedError') {\r\n setErrorMessage('Permissions have not been granted to use your camera');\r\n }\r\n alert(`getUserMedia error: ${e.name}`)\r\n }\r\n\r\n function stopWebcam() {\r\n Quagga.stop();\r\n $('.camera-preview').children(':not(\"button\")').remove();\r\n updateButtonState();\r\n }\r\n\r\n function updateButtonState(isStartingWebcam) {\r\n var btn = $('.camera-preview button');\r\n var previewClass = 'preview-position';\r\n if (isStartingWebcam)\r\n btn.addClass(previewClass);\r\n else\r\n btn.removeClass(previewClass);\r\n }\r\n\r\n function setSearchTerm(msg) {\r\n vm.barcodeData.searchTerm = msg;\r\n if (!$scope.$$phase)\r\n $scope.$apply();\r\n }\r\n\r\n function onClickRequestHelp() {\r\n let modal = getHelpRequestModal();\r\n let isCurrentlyHidden = isRequestHelpCurrentlyHidden();\r\n let button = $('.operator-help > button');\r\n setRequestFeedback('');\r\n swapRequestHelpIcon(button);\r\n if (isCurrentlyHidden) {\r\n modal.removeClass('hide');\r\n }\r\n else {\r\n modal.addClass('hide');\r\n }\r\n }\r\n\r\n function swapRequestHelpIcon(button) {\r\n let classList = button.attr('class').split(/\\s+/);\r\n let mainIconClass = classList.find(clazz => clazz.includes('fa-'));\r\n let alternateIconClass = button.data('alternate-class');\r\n button.removeClass(mainIconClass);\r\n button.addClass(alternateIconClass);\r\n button.data('alternate-class', mainIconClass);\r\n }\r\n\r\n function onSendHelpRequest() {\r\n let workstation = getSelectedWorkstation();\r\n let workstationId = getSelectedWorkstationId();\r\n let purchaseOrderNumber = vm.barcodeData.searchTerm;\r\n let helpType = vm.requestHelpData.helpType;\r\n let additionalInfo = vm.requestHelpData.additionalInfo;\r\n displayProgressIndicator(true);\r\n service.requestHelp(workstation, workstationId, purchaseOrderNumber, helpType, additionalInfo)\r\n .then(response => {\r\n vm.requestHelpData.helpType = '';\r\n vm.requestHelpData.additionalInfo = '';\r\n setRequestFeedback('Your request has been submitted!');\r\n $timeout(() => {\r\n if (!isRequestHelpCurrentlyHidden()) {\r\n onClickRequestHelp();\r\n }\r\n }, 3000);\r\n })\r\n .catch(msg => {\r\n setRequestFeedback('There was a problem sending your request.');\r\n $timeout(() => {\r\n setRequestFeedback('');\r\n }, 3000);\r\n })\r\n .finally(() => {\r\n displayProgressIndicator(false);\r\n });\r\n }\r\n\r\n function setRequestFeedback(msg) {\r\n vm.requestHelpData.requestFeedback = msg;\r\n }\r\n\r\n function isRequestHelpCurrentlyHidden() {\r\n let modal = getHelpRequestModal();\r\n return modal.hasClass('hide');\r\n }\r\n\r\n function getHelpRequestModal() {\r\n return $('.operator-help section');\r\n }\r\n\r\n function getSelectedWorkstation() {\r\n return vm.workstationDropdownData.workstations\r\n ?.find(workstation => workstation.Guid == vm.workstationDropdownData.selectedWorkstationGuid)\r\n ?.DisplayNumber;\r\n }\r\n\r\n function getSelectedWorkstationId() {\r\n return vm.workstationDropdownData.workstations\r\n ?.find(workstation => workstation.Guid == vm.workstationDropdownData.selectedWorkstationGuid)\r\n ?.Guid;\r\n }\r\n\r\n function setErrorMessage(msg, e) {\r\n vm.error = msg;\r\n }\r\n\r\n function preventFormSubmit() {\r\n angular.element(document).find(\"form\").on(\"submit\", function (e) { e.preventDefault(); });\r\n }\r\n\r\n function trust(html) {\r\n return $sce.trustAsHtml(html);\r\n }\r\n}\r\n\r\nvar _timeoutHandler = 0,\r\n _inputString = '',\r\n _onKeypress = function (e) {\r\n e.preventDefault();\r\n if (_timeoutHandler) {\r\n clearTimeout(_timeoutHandler);\r\n }\r\n _inputString += e.key;\r\n\r\n _timeoutHandler = setTimeout(function () {\r\n if (_inputString.length <= 3) {\r\n $(e.target).trigger('normaldeviceinput', _inputString);\r\n } else {\r\n $(e.target).trigger('altdeviceinput', _inputString);\r\n }\r\n _inputString = '';\r\n }, 20);\r\n };\r\n","angular.module('boyds').controller('cartController', cartController);\r\n\r\ncartController.$inject = ['$rootScope', 'config', 'windowService', '$http', '$q'];\r\n\r\nfunction cartController($rootScope, config, windowService, $http, $q) {\r\n\tvar vm = this;\r\n\tvm.config = config;\r\n\tvm.checkoutErrorMessage = false;\r\n\t$rootScope.DisplayPageLoadingSpinner = false;\r\n\r\n\tvm.checkout = checkout;\r\n\tvm.update = update;\r\n\tvm.clear = clear;\r\n\tvm.showLoadingSpinner = showLoadingSpinner;\r\n\tvm.hideLoadingSpinner = hideLoadingSpinner;\r\n\tvm.showCheckoutErrorMessage = showCheckoutErrorMessage;\r\n\r\n\tangular.element(\"input[name$='CouponCodeApplyButton']\").on('click', showLoadingSpinner);\r\n\tangular.element(\"a[id$='RemoveCouponCodeLink']\").on('click', showLoadingSpinner);\r\n\tangular.element(\"input[name$='checkoutButton']\").on('click', showLoadingSpinner);\r\n\r\n\tvar ApplyCouponObserver = new MutationObserver(applyCoupon);\r\n\r\n\tvar ApplyCouponTarget = document.querySelector('.CouponCodeEntryView');\r\n\r\n\tfunction clearShoppingCart() {\r\n\t\treturn $http({\r\n\t\t\turl: config.service.clearShoppingCart.url,\r\n\t\t\tmethod: 'POST',\r\n\t\t\tcontentType: \"application/json\",\r\n\t\t\tdata: null\r\n\t\t}).then(function successCallback() {\r\n\t\t\treturn null;\r\n\t\t});\r\n\t};\r\n\r\n\tApplyCouponObserver.observe(ApplyCouponTarget, {\r\n\t\tattributes: true,\r\n\t\tchildList: true,\r\n\t\tcharacterData: true,\r\n\t\tsubtree: true,\r\n\t\tattributeOldValue: true,\r\n\t\tcharacterDataOldValue: true\r\n\t});\r\n\r\n\tfunction applyCoupon(mutations) {\r\n\t\thideLoadingSpinner();\r\n\t\tangular.element(\"input[name$='CouponCodeApplyButton']\").off('click', showLoadingSpinner);\r\n\t\tangular.element(\"input[name$='CouponCodeApplyButton']\").on('click', showLoadingSpinner);\r\n\t\tangular.element(\"a[id$='RemoveCouponCodeLink']\").off('click', showLoadingSpinner);\r\n\t\tangular.element(\"a[id$='RemoveCouponCodeLink']\").on('click', showLoadingSpinner);\r\n\t\tangular.element(\"input[name$='checkoutButton']\").off('click', showLoadingSpinner);\r\n\t\tangular.element(\"input[name$='checkoutButton']\").on('click', showLoadingSpinner);\r\n\t}\r\n\r\n\tfunction checkout() {\r\n\t\tshowLoadingSpinner();\r\n\t}\r\n\r\n\tfunction update() {\r\n\t\tshowLoadingSpinner();\r\n\t}\r\n\r\n\tfunction clear() {\r\n\t\tshowLoadingSpinner();\r\n\r\n\t\tvar promises = [];\r\n\t\tpromises.push(clearShoppingCart().then(function () {\r\n\t\t}));\r\n\t\t$q.all(promises).then(function success(data) {\r\n\t\t\thideLoadingSpinner()\r\n\t\t\twindowService.refreshPage();\r\n\t\t}, function fail(err) {\r\n\t\t\thideLoadingSpinner()\r\n\t\t\tconsole.log(err);\r\n\t\t});\r\n\t\t// old code, didnt work // windowService.setCookie('shoppingCartId=; expires=Thu, 01 Jan 2000 00:00:01 GMT;');\r\n\t}\r\n\r\n\t$rootScope.clearShoppingCart = function () {\r\n\t\tpromises.push(service.clearShoppingCart().then(function () {\r\n\t\t}));\r\n\t}\r\n\r\n\tfunction showLoadingSpinner() {\r\n\t\t$rootScope.DisplayPageLoadingSpinner = true;\r\n\t\ttry { $rootScope.$apply(); } catch (e) {\r\n\t\t\tconsole.log(e); }\r\n\t}\r\n\r\n\tfunction hideLoadingSpinner() {\r\n\t\t$rootScope.DisplayPageLoadingSpinner = false;\r\n\t\ttry { $rootScope.$apply(); } catch (e) { }\r\n\t}\r\n\r\n\tfunction showCheckoutErrorMessage() {\r\n\t\tvm.checkoutErrorMessage = true;\r\n\t}\r\n\r\n\treturn vm;\r\n};","angular.module(\"boyds\").controller('productDetailsController', productDetailsController);\r\n\r\nproductDetailsController.$inject = ['$rootScope', 'config'];\r\nfunction productDetailsController($rootScope, config) {\r\n var vm = this;\r\n var cartCount = $rootScope.cartCount;\r\n\r\n angular.element(\"input[name$='addToCartButton']\").on('click', showLoadingSpinner);\r\n var observer = new MutationObserver(broadcastCartCount);\r\n\r\n var target = document.querySelector('.sfAddToCartWidget');\r\n observer.observe(target, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true,\r\n attributeOldValue: true,\r\n characterDataOldValue: true\r\n });\r\n\r\n function broadcastCartCount(mutations) {\r\n $rootScope.$broadcast(config.events.itemAddedToCart);\r\n angular.element(\"input[name$='addToCartButton']\").off('click', showLoadingSpinner);\r\n angular.element(\"input[name$='addToCartButton']\").on('click', showLoadingSpinner);\r\n hideLoadingSpinner();\r\n if (cartCount == $rootScope.cartCount)\r\n $rootScope.cartCount += Number(angular.element(\"input[name$='quantity']\").val());\r\n }\r\n\r\n function showLoadingSpinner() {\r\n $rootScope.DisplayPageLoadingSpinner = true;\r\n try { $rootScope.$apply(); } catch (e) { }\r\n }\r\n\r\n function hideLoadingSpinner() {\r\n $rootScope.DisplayPageLoadingSpinner = false;\r\n try { $rootScope.$apply(); } catch (e) { }\r\n }\r\n\r\n return vm;\r\n}\r\n"]}