Help
RSS
API
Feed
Maltego
Contact
Domain > afbasolution.easy.co
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2024-03-19
151.101.66.236
(
ClassC
)
2025-12-05
3.175.34.25
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Fri, 05 Dec 2025 09:29:13 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://afbasolution.easy.co/X-Cache: Redirect from cloudfrontVia: 1.1 e46509f22800a7c13e2737ab1c5f5990.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P3X-Amz-Cf-Id: Uh39-jpvXYuiTYbygyHi49tDVEeswwk1k6ktzoMqmzyX7BCBFVNQ5A html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveDate: Fri, 05 Dec 2025 09:29:14 GMTX-XSS-Protection: 1; modeblockX-Content-Type-Options: nosniffVary: Accept-EncodingX-Powered-By: ExpressSet-Cookie: localeen_US; expiresSun, 04 Jan 2026 09:29:13 GMT; Max-Age2592000; path/Set-Cookie: sf_sessionoKqf8c81jvSZyCb7AetN8XMsmczruTmimh7Zc5j2; path/; domainafbasolution.easy.co; secure; httponly; samesitelaxSet-Cookie: _landing_page%252F; expiresFri, 19 Dec 2025 09:29:14 GMT; Max-Age1209600; path/; domainafbasolution.easy.co; secure; httponly; samesitelaxCache-Control: no-cache, no-store, privateX-Cache: Miss from cloudfrontVia: 1.1 6f63e8ad61ae5faec36867cb82b2a42a.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P3X-Amz-Cf-Id: KmR757RAiR78qQpQSE-44uHuw2iGBiQ38N_qh4_gjetyluoa4YbznwStrict-Transport-Security: max-age15552000 !doctype html>!--if lt IE 7>html classno-js lt-ie9 lt-ie8 lt-ie7 langen> !endif-->!--if IE 7>html classno-js lt-ie9 lt-ie8 langen> !endif-->!--if IE 8>html classno-js lt-ie9 langen> !endif-->!--if IE 9 >html classie9 no-js> !endif-->!--if (gt IE 9)|!(IE)>!--> html classno-js> !--!endif-->head> !-- Basic page needs --> meta charsetutf-8> meta http-equivX-UA-Compatible contentIEedge,chrome1> link relicon href /> !-- Title and description --> title> AFBASolution /title> !-- Social meta --> meta propertyog:type contentwebsite> meta propertyog:title contentAFBASolution> meta propertyog:url contenthttps://afbasolution.easy.co> meta propertyog:image contenthttps://cdn.store-assets.com/s/643095/f/9154509.jpg?width350> meta propertyog:image:secure_url contenthttps://cdn.store-assets.com/s/643095/f/9154509.jpg?width350> meta propertyog:description contentAFBASolution>meta propertyog:site_name contentAFBASolution> meta nametwitter:card contentsummary> meta nametwitter:site content@> meta nametwitter:title contentAFBASolution> meta nametwitter:description content> !-- Helpers --> link relcanonical hrefhttps://afbasolution.easy.co> meta nameviewport contentwidthdevice-width,initial-scale1> meta nametheme-color content> !-- CSS --> link hrefhttps://store-themes.easystore.co/643095/themes/313/assets/timber.css?t1749834335 relstylesheet typetext/css mediascreen /> link hrefhttps://store-themes.easystore.co/643095/themes/313/assets/theme.css?t1749834335 relstylesheet typetext/css mediascreen /> script src//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js typetext/javascript >/script> !-- Header hook for plugins --> !-- ScriptTags -->script>window.__st{p: index, cid: };/script>script src/assets/events.js>/script>script>const __es_ads {country_code:MY ,title: Online store by img srchttps://s3.ap-southeast-1.amazonaws.com/easystore.website/images/logo/svg/easystore-logo-horizontal.svg altEasyStore styledisplay: block !important;width:8em;margin:-2px 0 0 8px;> i stylewidth: 1px;height: 25px;margin: 0 10px;background: #E3E7EB;>/i> Create yours for free today.,title_mb: Create online store with img srchttps://s3.ap-southeast-1.amazonaws.com/easystore.website/images/logo/svg/easystore-logo-horizontal.svg altEasyStore styledisplay: block !important;width:8em;margin:-2px 8px 0;>,cta: Get started}/script>script src/assets/js/ads/storefront-ads.js>/script>script>(function(){function asyncLoad(){var urls/assets/traffic.js?v1,https://apps.easystore.co/facebook-login/script.js?shopafbasolution.easy.co;for(var i0;iurls.length;i++){var sdocument.createElement(script);s.typetext/javascript;s.asynctrue;s.srcurlsi;var xdocument.getElementsByTagName(script)0;x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent(onload, asyncLoad) : window.addEventListener(load, asyncLoad, false);})();/script>!-- /ScriptTags --> !--if lt IE 9>script src//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js typetext/javascript >/script>script srchttps://store-themes.easystore.co/643095/themes/313/assets/respond.min.js?t1749834335 typetext/javascript >/script>link hrefhttps://store-themes.easystore.co/643095/themes/313/assets/respond-proxy.html idrespond-proxy relrespond-proxy />link href//afbasolution.easy.co/search?q59a58e2b4e767d94ff022f21458dfdc6 idrespond-redirect relrespond-redirect />script src//afbasolution.easy.co/search?q59a58e2b4e767d94ff022f21458dfdc6 typetext/javascript>/script>!endif--> script srchttps://store-themes.easystore.co/643095/themes/313/assets/modernizr.min.js?t1749834335 typetext/javascript >/script> script> (function(i,s,o,g,r,a,m){iGoogleAnalyticsObjectr;irir||function(){ (ir.qir.q||).push(arguments)},ir.l1*new Date();as.createElement(o), ms.getElementsByTagName(o)0;a.async1;a.srcg;m.parentNode.insertBefore(a,m) })(window,document,script,https://www.google-analytics.com/analytics.js,ga); ga(create, , auto,myTracker); ga(myTracker.send, pageview); /script> /head>body idafbasolution classtemplate-index > !-- Snippet:global/body_start: Console Extension -->div ides_console styledisplay: none;>643095/div>!-- /Snippet --> style> .search-modal__form{ position: relative; } .dropdown-wrapper { position: relative; } .dropdown-wrapper:hover .dropdown { display: block; } .dropdown { display: none; position: absolute; top: 100%; left: -20px; width: 100%; padding: 8px 0; margin: 0; background-color: #fff; z-index: 1000; border-radius: 5px; border: 1px solid rgba(var(--color-foreground), 1); border-top: none; overflow-x: hidden; overflow-y: auto; max-height: 350px; min-width: 150px; box-shadow: 0 0 5px rgba(0,0,0,0.1); } .dropdown li,.dropdown a{ display: block; } .dropdown a{ text-decoration: none; padding: 2px 10px; color: #000 !important; } .dropdown-item { padding: 0.4rem 2rem; cursor: pointer; line-height: 1.4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dropdown-item:hover{ background-color: #f3f3f3; } .search__input.is-focus{ border-radius: 15px; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border: 1px solid rgba(var(--color-foreground), 1); border-bottom: none; box-shadow: none; } .clear-all { text-align: right; padding: 0 2rem 0.2rem; line-height: 1; font-size: 70%; margin-bottom: -2px; } .clear-all:hover{ background-color: #fff; }/style>div classheader-bar> div classwrapper medium-down--hide> div classlarge--display-table> div classheader-bar__left large--display-table-cell> div classheader-bar__module header-bar__search> form action/search methodget classheader-bar__search-form clearfix rolesearch> button typesubmit classbtn icon-fallback-text header-bar__search-submit> span classicon icon-search aria-hiddentrue>/span> span classfallback-text>Search/span> /button> input typesearch nameq value aria-labelSearch classheader-bar__search-input placeholderSearch autocompleteoff> div classdropdown idsearchDropdown>/div> input typehidden namesearch_history idsearch_history> /form>script> var _search_history_listings if(_search_history_listings ! ) localStorage.setItem(searchHistory, JSON.stringify(_search_history_listings)); function clearAll() { localStorage.removeItem(searchHistory); var customer ; if(customer) { // Your logic to clear all data or call an endpoint fetch(/account/search_histories, { method: DELETE, headers: { Content-Type: application/json, X-Requested-With: XMLHttpRequest }, body: JSON.stringify({ _token: 4oTmDGcvw3wU4qqOXXnCnG6WbNZUlC8NMogDkcWg }), }) .then(response > response.json()) } } // End - store view history in local storage // search history dropdown var searchInputs document.querySelectorAll(inputtypesearch); if(searchInputs.length > 0) { searchInputs.forEach((searchInput)>{ searchInput.addEventListener(focus, function() { var searchDropdown searchInput.closest(form).querySelector(#searchDropdown); searchDropdown.innerHTML ; // Clear existing items // retrieve data from local storage var searchHistoryData JSON.parse(localStorage.getItem(searchHistory)) || ; // Convert JSON to string var search_history_json JSON.stringify(searchHistoryData); // Set the value of the hidden input searchInput.closest(form).querySelector(#search_history).value search_history_json; // create dropdown items var clearAllItem document.createElement(div); clearAllItem.className dropdown-item clear-all; clearAllItem.textContent Clear; clearAllItem.addEventListener(click, function() { clearAll(); searchDropdown.style.display none; searchInput.classList.remove(is-focus); }); searchDropdown.appendChild(clearAllItem); // create dropdown items searchHistoryData.forEach(function(item) { var dropdownItem document.createElement(div); dropdownItem.className dropdown-item; dropdownItem.textContent item.term; dropdownItem.addEventListener(click, function() { searchInput.value item.term; searchInput.closest(form).submit(); searchDropdown.style.display none; }); searchDropdown.appendChild(dropdownItem); }); if(searchHistoryData.length > 0){ // display the dropdown searchInput.classList.add(is-focus); document.body.classList.add(search-input-focus); searchDropdown.style.display block; } }); searchInput.addEventListener(focusout, (event) > { var searchDropdown searchInput.closest(form).querySelector(#searchDropdown); searchInput.classList.remove(is-focus); searchDropdown.classList.add(transparent); setTimeout(()>{ searchDropdown.style.display none; searchDropdown.classList.remove(transparent); document.body.classList.remove(search-input-focus); }, 400); }); }) } // End - search history dropdown/script> /div> /div> div classheader-bar__right large--display-table-cell> ul classheader-bar__module header-bar__module--list> li> a href/account/login>Log in/a> /li>li>OR/li> li> a href/account/register>Create account/a> /li> /ul> label classcurrency-picker__wrapper> !-- span classcurrency-picker__label>Pick a currency/span> --> select classcurrency-picker namecurrencies styledisplay: inline; width: auto; vertical-align: inherit;> option valueMYR selectedselected>MYR/option> option valueSGD>SGD/option> /select>/label> div classheader-bar__module> span classheader-bar__sep aria-hiddentrue>/span> a href/cart classcart-page-link> span classicon icon-cart header-bar__cart-icon aria-hiddentrue>/span> /a> /div> div classheader-bar__module> a href/cart classcart-page-link> Cartspan classhidden-count>:/span> span classcart-count header-bar__cart-count hidden-count>0/span> /a> /div> /div> /div> /div> div classwrapper large--hide stylepadding: 5px 30px 0;> button typebutton classmobile-nav-trigger idMobileNavTrigger> span classicon icon-hamburger aria-hiddentrue>/span> Menu /button> a href/cart classcart-page-link mobile-cart-page-link> span classicon icon-cart header-bar__cart-icon aria-hiddentrue>/span> Cart span classcart-count hidden-count>0/span> /a> div classmobile-cart-page-link stylemargin-right: 20px;> label classcurrency-picker__wrapper> !-- span classcurrency-picker__label>Pick a currency/span> --> select classcurrency-picker namecurrencies styledisplay: inline; width: auto; vertical-align: inherit;> option valueMYR selectedselected>MYR/option> option valueSGD>SGD/option> /select>/label> /div> /div> ul idMobileNav classmobile-nav large--hide> li classmobile-nav__link> div classheader-bar__module header-bar__search> form action/search methodget classheader-bar__search-form clearfix rolesearch> button typesubmit classbtn icon-fallback-text header-bar__search-submit> span classicon icon-search aria-hiddentrue>/span> span classfallback-text>Search/span> /button> input typesearch nameq value aria-labelSearch classheader-bar__search-input placeholderSearch autocompleteoff> div classdropdown idsearchDropdown>/div> input typehidden namesearch_history idsearch_history> /form>script> var _search_history_listings if(_search_history_listings ! ) localStorage.setItem(searchHistory, JSON.stringify(_search_history_listings)); function clearAll() { localStorage.removeItem(searchHistory); var customer ; if(customer) { // Your logic to clear all data or call an endpoint fetch(/account/search_histories, { method: DELETE, headers: { Content-Type: application/json, X-Requested-With: XMLHttpRequest }, body: JSON.stringify({ _token: 4oTmDGcvw3wU4qqOXXnCnG6WbNZUlC8NMogDkcWg }), }) .then(response > response.json()) } } // End - store view history in local storage // search history dropdown var searchInputs document.querySelectorAll(inputtypesearch); if(searchInputs.length > 0) { searchInputs.forEach((searchInput)>{ searchInput.addEventListener(focus, function() { var searchDropdown searchInput.closest(form).querySelector(#searchDropdown); searchDropdown.innerHTML ; // Clear existing items // retrieve data from local storage var searchHistoryData JSON.parse(localStorage.getItem(searchHistory)) || ; // Convert JSON to string var search_history_json JSON.stringify(searchHistoryData); // Set the value of the hidden input searchInput.closest(form).querySelector(#search_history).value search_history_json; // create dropdown items var clearAllItem document.createElement(div); clearAllItem.className dropdown-item clear-all; clearAllItem.textContent Clear; clearAllItem.addEventListener(click, function() { clearAll(); searchDropdown.style.display none; searchInput.classList.remove(is-focus); }); searchDropdown.appendChild(clearAllItem); // create dropdown items searchHistoryData.forEach(function(item) { var dropdownItem document.createElement(div); dropdownItem.className dropdown-item; dropdownItem.textContent item.term; dropdownItem.addEventListener(click, function() { searchInput.value item.term; searchInput.closest(form).submit(); searchDropdown.style.display none; }); searchDropdown.appendChild(dropdownItem); }); if(searchHistoryData.length > 0){ // display the dropdown searchInput.classList.add(is-focus); document.body.classList.add(search-input-focus); searchDropdown.style.display block; } }); searchInput.addEventListener(focusout, (event) > { var searchDropdown searchInput.closest(form).querySelector(#searchDropdown); searchInput.classList.remove(is-focus); searchDropdown.classList.add(transparent); setTimeout(()>{ searchDropdown.style.display none; searchDropdown.classList.remove(transparent); document.body.classList.remove(search-input-focus); }, 400); }); }) } // End - search history dropdown/script> /div> /li> li classmobile-nav__link aria-haspopuptrue> a href/ classmobile-nav> Home /a> /li> li classmobile-nav__link aria-haspopuptrue> a href/collections/all classmobile-nav__sublist-trigger> Catalog span classicon-fallback-text mobile-nav__sublist-expand> span classicon icon-plus aria-hiddentrue>/span> span classfallback-text>+/span>/span>span classicon-fallback-text mobile-nav__sublist-contract> span classicon icon-minus aria-hiddentrue>/span> span classfallback-text>-/span>/span> /a> ul classmobile-nav__sublist> li classmobile-nav__sublist-link aria-haspopuptrue> a href/collections/new-arrival classmobile-nav> New arrival /a> /li> li classmobile-nav__sublist-link aria-haspopuptrue> a href/collections/hot-selling classmobile-nav> Hot selling /a> /li> /ul> /li> li classmobile-nav__link aria-haspopuptrue> a href/blogs/news classmobile-nav> News /a> /li> li classmobile-nav__link aria-haspopuptrue> a href/store-locator classmobile-nav> Location /a> /li> li classmobile-nav__link> a href/account/login>Log in/a> /li> li classmobile-nav__link> a href/account/register>Create account/a> /li> /ul>/div> header classsite-header rolebanner> div classwrapper> div classgrid--full large--display-table> div classgrid__item large--one-third large--display-table-cell> h1 classsite-header__logo large--left itemscope itemtypehttp://schema.org/Organization> a href/ classlogo-wrapper itempropurl> img srchttps://cdn.store-assets.com/s/643095/f/9154509.jpg?width350 altAFBASolution itemproplogo> /a> /h1> p classheader-message large--hide> small>/small> /p> /div> div classgrid__item large--two-thirds large--display-table-cell medium-down--hide> ul classsite-nav large--text-center idAccessibleNav> li classsite-nav--active> a href/ classsite-nav__link>Home/a> /li> li classsite-nav--has-dropdown aria-haspopuptrue> a href/collections/all classsite-nav__link> Catalog span classicon-fallback-text> span classicon icon-arrow-down aria-hiddentrue>/span> /span> /a> ul classsite-nav__dropdown> li > a href/collections/new-arrival classsite-nav__link>New arrival/a> /li> li > a href/collections/hot-selling classsite-nav__link>Hot selling/a> /li> /ul> /li> li > a href/blogs/news classsite-nav__link>News/a> /li> li > a href/store-locator classsite-nav__link>Location/a> /li> /ul> /div> /div> /div> /header> main classwrapper main-content rolemain> div classgrid> div classgrid__item medium-down--hide large--one-quarter> hr classhr--small hr--clear> nav> font size5> hr>b>Categorybr>/b>/font> a href/collections/new-arrival>New arrival/a>br> a href/collections/hot-selling>Hot selling/a>br> hr> /nav> /div> div classgrid__item large--three-quarters> div classflexslider> ul classslides> li> a href classslide-link> img srchttps://cdn.store-assets.com/s/643095/f/9154547.jpg?width1500 alt class /> /a> /li> li> a href classslide-link> img srchttps://cdn.store-assets.com/s/643095/f/9154548.jpg?width1500 alt class /> /a> /li> /ul>/div> hr classhr--small hr--clear> div classgrid-uniform> div classproduct_grid-item grid__item small--one-half medium--one-half large--one-quarter on-sale> div classgrid-link text-center> span classgrid-link__image grid-link__image--product> span classbadge badge--sale> span classbadge__text badge__text--small>Sale/span> /span> div classaddToCartList float-btn btn small--hide medium--hide data-id37142702 data-viewView cart data-token4oTmDGcvw3wU4qqOXXnCnG6WbNZUlC8NMogDkcWg> i classicon icon-cart>/i>span> Add to Cart/span> /div> a href/collections/feature-on-homepage/products/canela classgrid-link__image-centered> img srchttps://cdn.store-assets.com/s/643095/i/47202172.jpeg?width480 altphoto_6087009630111773025_y classproduct-featured_image> /a> /span> a href/collections/feature-on-homepage/products/canela> p classgrid-link__title>Canela/p> p classgrid-link__meta> s classgrid-link__sale_price data-expires>span classmoney data-ori-price20.00>RM 20.00 /span>/s> span classmoney data-ori-price15.00>RM 15.00 /span> /p> /a> div classaddToCartList btn btn--small large--hide data-id37142702 data-viewView cart data-token4oTmDGcvw3wU4qqOXXnCnG6WbNZUlC8NMogDkcWg> i classicon icon-cart>/i>span> Add to Cart/span> /div> /div>/div> /div> hr classhr--small hr--clear> div classrte> link href/assets/css/froala_style.min.css relstylesheet typetext/css/>div classfr-view>p>Write a few sentences to tell people about your store (the kind of products you sell, your mission, etc). You can also add images and videos to help tell your story and generate more interest in your shop./p>p>To edit the content on this page, go to the section of a href{{ admin_url }}>admin panel/a>./p> script typetext/javascript> $(imgdata-typeyoutube).click(function(){ var this_parent $(this).closest(div.Grid-cell--wrapper); var height $(this_parent).height(); var youtube_player document.createElement(iframe); youtube_player.setAttribute(style, width:100%; height:+height+px;); youtube_player.setAttribute(allowfullscreen,); youtube_player.setAttribute(src,https://www.youtube.com/embed/+$(this).data(youtube-id)+?autoplay1&fs1); this_parent.html(youtube_player); }); /script>/div> /div> /div> /div> /main> footer classsite-footer small--text-center rolecontentinfo> div classwrapper> div classgrid-uniform> div classgrid__item large--one-half medium--one-half> h4>Quick Links/h4> ul classsite-footer__links> li>a href/store-locator >Location/a>/li> /ul> /div> div classgrid__item large--one-half medium--one-half> h4>Follow Us/h4> ul classinline-list social-icons> li> a classicon-fallback-text hrefhttps://twitter.com/ titleAFBASolution on Twitter target_blank> span classicon icon-twitter aria-hiddentrue>/span> span classfallback-text>Twitter/span> /a> /li> li> a classicon-fallback-text hrefhttps://web.facebook.com/profile.php?id100085593065266 titleAFBASolution on Facebook target_blank> span classicon icon-facebook aria-hiddentrue>/span> span classfallback-text>Facebook/span> /a> /li> li> a classicon-fallback-text hrefhttps://www.pinterest.com/ titleAFBASolution on Pinterest target_blank> span classicon icon-pinterest aria-hiddentrue>/span> span classfallback-text>Pinterest/span> /a> /li> li> a classicon-fallback-text hrefhttps://plus.google.com/ titleAFBASolution on Google Plus relpublisher target_blank> span classicon icon-google_plus aria-hiddentrue>/span> span classfallback-text>Google/span> /a> /li> li> a classicon-fallback-text hrefhttps://www.instagram.com/canela_soap/ titleAFBASolution on Instagram target_blank> span classicon icon-instagram aria-hiddentrue>/span> span classfallback-text>Instagram/span> /a> /li> li> a classicon-fallback-text hrefhttps://www.tumblr.com/ titleAFBASolution on Tumblr target_blank> span classicon icon-tumblr aria-hiddentrue>/span> span classfallback-text>Tumblr/span> /a> /li> li> a classicon-fallback-text hrefhttps://www.youtube.com/ titleAFBASolution on YouTube target_blank> span classicon icon-youtube aria-hiddentrue>/span> span classfallback-text>YouTube/span> /a> /li> li> a classicon-fallback-text hrefhttps://vimeo.com/ titleAFBASolution on Vimeo target_blank> span classicon icon-vimeo aria-hiddentrue>/span> span classfallback-text>Vimeo/span> /a> /li> /ul> /div> /div> hr classhr--small hr--clear> div classgrid> div classgrid__item text-center> ul classinline-list payment-icons> li> span classicon-fallback-text> span classicon icon-visa aria-hiddentrue>/span> span classfallback-text>Visa/span> /span> /li> li> span classicon-fallback-text> span classicon icon-master aria-hiddentrue>/span> span classfallback-text>Master/span> /span> /li> /ul> /div> /div> div classgrid> div classgrid__item text-center> p classsite-footer__links>© 2025 afbasolution./p> p classsite-footer__links> a href/legal/terms-of-service>Terms of Service/a> | a href/legal/privacy-policy>Privacy Policy/a> | a href/legal/refund-policy>Refund Policy/a> /p> /div> /div> /div> /footer> script srchttps://store-themes.easystore.co/643095/themes/313/assets/jquery.flexslider.min.js?t1749834335 typetext/javascript >/script> !-- Testing slick slider --> !-- script typetext/javascript src//cdn.jsdelivr.net/jquery.slick/1.5.9/slick.min.js>/script> --> script typetext/javascript> // $(document).ready(function(){ // $(.flexslider .slides).slick({ // dots: true // }); // }); window.timberSlider window.timberSlider || {}; timberSlider.cacheSelectors function () { timberSlider.cache { // Home Page $slider: $(.flexslider) } }; timberSlider.init function () { timberSlider.cacheSelectors(); timberSlider.sliders(); }; timberSlider.sliders function () { var $slider timberSlider.cache.$slider, sliderArgs { animation: slide, animationSpeed: 500, pauseOnHover: true, keyboard: false, slideshow: 1, slideshowSpeed: 3000, controlNav: 1, smoothHeight: false, touch: true, }; if ($slider.length) { if ($slider.find(li).length 1) { sliderArgs.slideshow false; sliderArgs.slideshowSpeed 0; sliderArgs.controlNav false; sliderArgs.directionNav false; } $slider.flexslider(sliderArgs); } }; // Initialize slider on docready $(window).on(load, function() { timberSlider.init(); }); /script> script srchttps://store-themes.easystore.co/643095/themes/313/assets/fastclick.min.js?t1749834335 typetext/javascript >/script> script srchttps://store-themes.easystore.co/643095/themes/313/assets/timber.js?t1749834335 typetext/javascript >/script> script srchttps://store-themes.easystore.co/643095/themes/313/assets/theme.js?t1749834335 typetext/javascript >/script> script src/assets/currencies.js typetext/javascript >/script>script src/assets/jquery.currencies.min.js typetext/javascript >/script>script src/assets/currencies_format.js typetext/javascript >/script>script>Currency.format money_with_currency_format;var shopCurrency MYR;var selectedCurrency MYR; Currency.convert function(amount, from, to) { return amount; }; if( $.cookie(currency) null ){ if( selectedCurrency ! false ) { Currency.convertAll(shopCurrency, selectedCurrency); jQuery(.selected-currency).text(Currency.currentCurrency); }}/* Sometimes merchants change their shop currency, lets tell our JavaScript file */// Currency.moneyFormatsshopCurrency.money_with_currency_format ;// Currency.moneyFormatsshopCurrency.money_format RM {{amount}} ; /* Default currency */var defaultCurrency MYR; /* Cookie currency */var cookieCurrency Currency.cookie.read();$(inputnamecurrent_currency).val(cookieCurrency);if(cookieCurrency null){ cookieCurrency shopCurrency; Currency.cookie.write(shopCurrency);}/* Fix for customer account pages */jQuery(span.money span.money).each(function() { jQuery(this).parents(span.money).removeClass(money);});/* Saving the current price */jQuery(span.money).each(function() { jQuery(this).attr(data-currency-MYR, jQuery(this).html());});// If theres no cookie.if (cookieCurrency null) { if (shopCurrency ! defaultCurrency) { Currency.convertAll(shopCurrency, defaultCurrency); } else { Currency.currentCurrency defaultCurrency; }}// If the cookie value does not correspond to any value in the currency dropdown.else if (jQuery(namecurrencies).size() && jQuery(namecurrencies optionvalue + cookieCurrency + ).size() 0) { Currency.currentCurrency shopCurrency; Currency.cookie.write(shopCurrency);}else if (cookieCurrency shopCurrency) { Currency.currentCurrency shopCurrency; Currency.convertAll(shopCurrency, cookieCurrency);}else { Currency.convertAll(shopCurrency, cookieCurrency);}jQuery(namecurrencies).val(Currency.currentCurrency).change(function() { var newCurrency jQuery(this).val(); Currency.cookie.write(newCurrency) if (index cart) { const params new URLSearchParams(window.location.search); params.set(delete_cache, 1); window.location.search params; } else { window.location.reload(); } });var original_selectCallback window.selectCallback;var selectCallback function(variant, selector) { var currencies null; original_selectCallback(variant, selector); if(typeof jQuery(namecurrencies).val() undefined){ currencies shopCurrency; } else{ currencies jQuery(namecurrencies).val(); } Currency.convertAll(shopCurrency, currencies); jQuery(.selected-currency).text(Currency.currentCurrency);};$(body).on(ajaxCart.afterCartLoad, function(cart) { Currency.convertAll(shopCurrency, jQuery(namecurrencies).val()); jQuery(.selected-currency).text(Currency.currentCurrency); });jQuery(.selected-currency).text(Currency.currentCurrency);/script>script> /* ------ Events ------ pages/viewed customers/signup customers/login products/searched collections/viewed products/viewed products/shared wishlists/item_added carts/items_added carts/viewed carts/item_removed checkouts/initiated checkouts/shipping_info_added checkouts/payment_info_added checkouts/completed orders/placed orders/purchased payments/captured payments/failed */ window.__latest_cart window.__latest_cart || null; const _selector document.querySelector.bind(document), _selectorAll document.querySelectorAll.bind(document) document.addEventListener(DOMContentLoaded, (event) > { const default_currency getCookie(currency) const customer_id window.__st.cid const template window.__st.p onPageView() //-----------------------// // Configs // //-----------------------// window.dataLayer window.dataLayer || Array.prototype.last Array.prototype.last || function() { return thisthis.length - 1 || null } Array.prototype.first Array.prototype.first || function() { return this0 || null } //----------------------// // Triggers // //----------------------// const XHR window.XMLHttpRequest function xhr() { const xhr new XHR() xhr.addEventListener(readystatechange, function() { if(xhr.readyState ! 4) return try { const response_url xhr.responseURL if (response_url.includes(cart/add)) { window.__latest_cart JSON.parse(xhr.response) onCartItemsAdded() // ok } if (response_url.includes(cart/remove_item_quantity)) { window.__latest_cart JSON.parse(xhr.response) onCartItemRemoved() // ok } if (response_url.includes(new_cart?retrievetrue)) { result JSON.parse(xhr.response) if (result.cart) { window.__latest_cart result.cart } } } catch(e) { console.error(e) } }, false); return xhr } window.XMLHttpRequest xhr switch(template) { case cart: onCartView() // ok break case product: onProductView() // ok break case collection: onCollectionView() // ok break case blog: onBlogView() break case article: onArticleView() break case payment_completed: onOrderPlace() break case payment_fail: onPaymentFail() break } // _selector(formaction/checkout/payments).addEventListener(submit, onPaymentInfoAdded(_selector(formaction/checkout/payments))) if (_selector(formaction/checkout/detail)) _selector(formaction/checkout/detail).addEventListener(submit, ()>{onShippingInfoAdded(_selector(formaction/checkout/detail))}) // ok if (_selector(formaction/checkout/shipping)) _selector(formaction/checkout/shipping).addEventListener(submit, ()>{onShippingInfoAdded(_selector(formaction/checkout/shipping))}) // ok if (_selector(formaction/account/register)) _selector(formaction/account/register).addEventListener(submit, onSignUp) // ok if (_selector(formaction/account/login)) _selector(formaction/account/login).addEventListener(submit, onLogin) // ok if (_selector(formaction/search)) _selector(formaction/search).addEventListener(submit, onProductSearch()) // ok if (_selector(#line-login-btn)) _selector(#line-login-btn).addEventListener(click, onLineLogin) // ok if (_selector(#PlaceOrder)) _selector(#PlaceOrder).addEventListener(click, ()>{onCheckoutComplete(_selector(formaction/checkout/payments))}); // ok if (_selector(#add_wishlist)) _selector(#add_wishlist).addEventListener(click, onWishlistItemAdded) // ok if (_selectorAll(ahref/account/logout)) _selectorAll(ahref/account/logout).forEach(logoutButton > logoutButton.addEventListener(click, onLogout)) // ok if (_selector(.CartDrawerTrigger.cart-page-link)) _selector(.CartDrawerTrigger.cart-page-link).addEventListener(click, onCartView) // ok if (_selector(.CartDrawerTrigger.cart-page-link.mobile-cart-page-link)) _selector(.CartDrawerTrigger.cart-page-link.mobile-cart-page-link).addEventListener(click, onCartView) // ok if (_selectorAll(aclass^share-)) _selectorAll(aclass^share-).forEach(shareButton > shareButton.addEventListener(click, ()>{onProductShare(shareButton)}) ) // ok if (_selectorAll(name$checkout)) _selectorAll(name$checkout).forEach(checkoutButton > checkoutButton.addEventListener(click, onCheckoutInitiate)) // For append elements const bodyMutationObserver new MutationObserver(() > { if (_selector(#form__spc #PlaceOrder)) _selector(#form__spc #PlaceOrder).addEventListener(click, onSinglePageCheckout) // ok if (_selectorAll(name$checkout)) _selectorAll(name$checkout).forEach(checkoutButton > checkoutButton.addEventListener(click, onCheckoutInitiate)) }); bodyMutationObserver.observe(_selector(body), {subtree: true, childList: true}); //------------------------------// // Event handlers // //------------------------------// function onPageView() { EasyStore.Event.dispatch(pages/viewed, { page: { type: template, title: document.title, description: _selector(metanamedescription) ? _selector(metanamedescription).getAttribute(content) : null, url: location.href, } }) } function onSignUp() { const email_regex new RegExp(/^a-zA-Z0-9.!#$%&*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)*$/) const phone_regex new RegExp(/^(\+?6?01)0-46-9-*0-9{7,8}$/) const email_or_phone _selector(`inputnamecustomeremail_or_phone`).value.replace(+, ).replace(/\s+/, ) let data {} if (email_regex.test(email_or_phone)) { data.method email data.email email_or_phone } if (phone_regex.test(email_or_phone)) { data.method phone data.phone email_or_phone } if (!data.method) return EasyStore.Event.dispatch(customers/signup, data) } function onLogin() { const email_regex new RegExp(/^a-zA-Z0-9.!#$%&*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)*$/) const phone_regex new RegExp(/^(\+?6?01)0-46-9-*0-9{7,8}$/) const email_or_phone _selector(`inputnamecustomeremail_or_phone`).value.replace(+, ).replace(/\s+/, ) let data {} if (email_regex.test(email_or_phone)) { data.method email data.email email_or_phone } if (phone_regex.test(email_or_phone)) { data.method phone data.phone email_or_phone } if (!data.method) return EasyStore.Event.dispatch(customers/login, data) } function onLineLogin() { EasyStore.Event.dispatch(customers/login, { method: line }) } function onLogout() { EasyStore.Event.dispatch(customers/logout, { customer_id }) } function onBlogView() { const blog EasyStore.Event.dispatch(blogs/viewed, { blog }) } function onArticleView() { const article EasyStore.Event.dispatch(articles/viewed, { article }) } function onProductSearch() { const query _selector(inputnameq).value if (!query) return EasyStore.Event.dispatch(products/searched, { query }) } function onCollectionView() { const collection {id:1598822,handle:feature-on-homepage,name:Feature on homepage,title:Feature on homepage,url:\/collections\/feature-on-homepage,description:,content:,featured_image:{src:null},products:{id:8213672,handle:canela,name:Canela,title:Canela,url:\/products\/canela,price:15,price_min:15.0,price_max:15.0,price_varies:false,compare_at_price:20,compare_at_price_min:20.0,compare_at_price_max:20.0,compare_at_price_varies:false,available:true,options_with_values:,options_by_name:,options:Title,has_only_default_variant:true,sole_variant_id:37142702,variants:{id:37142702,title:Default Title,sku:,taxable:false,barcode:null,available:true,inventory_quantity:null,featured_image:{id:47202172,alt:photo_6087009630111773025_y,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,height:1280,width:960,position:1,type:Images},price:1500,compare_at_price:2000,is_enabled:true,options:Default Title,option1:Default Title,option2:null,option3:null},selected_variant:{id:37142702,title:Default Title,sku:,taxable:false,barcode:null,available:true,inventory_quantity:null,featured_image:{id:47202172,alt:photo_6087009630111773025_y,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,height:1280,width:960,position:1,type:Images},price:1500,compare_at_price:2000,is_enabled:true,options:Default Title,option1:Default Title,option2:null,option3:null},first_available_variant:{id:37142702,title:Default Title,sku:,taxable:false,barcode:null,available:true,inventory_quantity:null,featured_image:{id:47202172,alt:photo_6087009630111773025_y,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,height:1280,width:960,position:1,type:Images},price:1500,compare_at_price:2000,is_enabled:true,options:Default Title,option1:Default Title,option2:null,option3:null},selected_or_first_available_variant:{id:37142702,title:Default Title,sku:,taxable:false,barcode:null,available:true,inventory_quantity:null,featured_image:{id:47202172,alt:photo_6087009630111773025_y,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,height:1280,width:960,position:1,type:Images},price:1500,compare_at_price:2000,is_enabled:true,options:Default Title,option1:Default Title,option2:null,option3:null},img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,featured_image:{id:47202172,alt:photo_6087009630111773025_y,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,height:1280,width:960,position:1,type:Images},secondary_image:{id:47202176,alt:photo_6075631626089508975_x,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202176.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202176.jpeg,height:543,width:560,position:2,type:Images},images:{id:47202172,alt:photo_6087009630111773025_y,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,height:1280,width:960,position:1,type:Images},{id:47202176,alt:photo_6075631626089508975_x,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202176.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202176.jpeg,height:543,width:560,position:2,type:Images},media:{id:47202172,alt:photo_6087009630111773025_y,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,height:1280,width:960,position:1,type:Images},{id:47202176,alt:photo_6075631626089508975_x,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202176.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202176.jpeg,height:543,width:560,position:2,type:Images},featured_media:{id:47202172,alt:photo_6087009630111773025_y,img_url:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,src:https:\/\/cdn.store-assets.com\/s\/643095\/i\/47202172.jpeg,height:1280,width:960,position:1,type:Images},metafields:,expires:null,published_at:2022-09-06T22:11:46.000+08:00,created_at:2022-09-06T22:11:49.000+08:00,is_wishlisted:null},sort_by:featured,product_count:1} EasyStore.Event.dispatch(collections/viewed, { collection }) } function onProductView() { const product EasyStore.Event.dispatch(products/viewed, { product }) } function onProductShare(el) { const product const channel el.getAttribute(class).split(-).last() EasyStore.Event.dispatch(products/shared, { product, channel }) } function onWishlistItemAdded() { let product const quantity _selector(#Quantity).value EasyStore.Event.dispatch(wishlists/item_added, { product }) } async function onCartItemsAdded() { const cart await getCart() if(cart && cart.items ! undefined && cart.items.length > 0) { EasyStore.Event.dispatch(carts/item_added, { cart }) } } async function onCartView() { const cart await getCart() EasyStore.Event.dispatch(carts/viewed, { cart }) } async function onCartItemRemoved() { const cart await getCart() cart.items if(cart) { EasyStore.Event.dispatch(carts/item_removed, { cart }) } } async function onCheckoutInitiate() { const cart await getCart() EasyStore.Event.dispatch(checkouts/initiated, { cart }) } async function onShippingInfoAdded(form) { let checkout getCheckout() let form_data {} new FormData(form).forEach((value, key) > form_datakey value) let shipping_tier null if (form_data.type && form_data.type.startsWith(r_pickup)) { shipping_tier `Pickup - ${form_data.pick_location}` } if (form_data.s_id) { shipping_tier _selector(`inputid`+form_data.s_id+``).getAttribute(data-shipping-name) } if (!shipping_tier) return EasyStore.Event.dispatch(checkouts/shipping_info_added, { checkout, shipping_tier }) } async function onPaymentInfoAdded(form) { let checkout getCheckout() let payment_type new FormData(form).get(payment_method) EasyStore.Event.dispatch(checkouts/payment_info_added, { checkout, payment_type }) } async function onOrderPlace() { let cart_token getCookie(cart_js) let previous_cart_token getCookie(previous_cart_ga4_js) if (previous_cart_token && previous_cart_token cart_token) { // Prevent duplicate purchase tracking return } let order getOrder() EasyStore.Event.dispatch(orders/placed, { order }) if(order.is_manual_payment) { EasyStore.Event.dispatch(orders/purchased, { order }) } const last_transaction order.transactions.last() if (last_transaction.status) { EasyStore.Event.dispatch(orders/purchased, { order }) EasyStore.Event.dispatch(payments/captured, { order }) } } async function onPaymentFail() { const order getOrder() EasyStore.Event.dispatch(payments/failed, { order }) } async function onCheckoutComplete(form) { onPaymentInfoAdded(form) const checkout getCheckout() EasyStore.Event.dispatch(checkouts/completed, { checkout }) } async function onSinglePageCheckout() { // let checkout $(data-app-checkout).data(app-checkout) let checkout getCheckout() // const payment_type _selector(#app_spc_payment_method).find(`class*label-content`).first().find(b).first().text() const payment_type _selector(#app_spc_payment_method).getElementsByClassName(label-content)0.getElementsByTagName(b)0.innerHTML const shipping_method _selector(#delivery_method).value let shipping_tier null let app_spc_customer_info_label _selector(#app_spc_customer_info).getElementsByClassName(label-content) if (shipping_method shipping) { shipping_tier app_spc_customer_info_labelapp_spc_customer_info_label.length - 1.getElementsByTagName(b)0.innerHTML } if (shipping_method pickup) { shipping_tier app_spc_customer_info_label0.innerHTML } if (shipping_tier) { EasyStore.Event.dispatch(checkouts/shipping_info_added, { checkout, shipping_tier, }) } if (payment_type) { EasyStore.Event.dispatch(checkouts/payment_info_added, { checkout, payment_type, }) } EasyStore.Event.dispatch(checkouts/completed, { checkout }) } }) //-----------------------// // Functions // //-----------------------// function getCookie(name) { name + decodedCookie decodeURIComponent(document.cookie) ca decodedCookie.split(;) for(i 0; i ca.length; i++) { c cai while (c.charAt(0) ) { c c.substring(1) } if (c.indexOf(name) 0) { return c.substring(name.length, c.length) } } return } const parsePrice price > { if(typeof price string) { return parseFloat(price.split(,).join()) } return price } const requestCart async (method, data) > { let response await fetch(/cart.json, {method: GET,headers: {Content-Type: application/json}}) result await response.json() return result.cart } const getCart async (latest false) > { let cart window.__latest_cart const cart_invalid !cart || !cart.items || (cart.total_price > 0 && !cart.items.length) if(latest || cart_invalid) { cart await requestCart() } cart.items cart.items || return mapCart(cart) } const getCheckout async () > { mapCheckout(window.__latest_cart || await requestCart()) } const getOrder async () > { mapOrder(window.__latest_cart || await requestCart()) } //-----------------------// // Mappers // //-----------------------// const fallbackAttribute (object, attribute) > { if(!Array.isArray(attribute)) { attribute attribute } let final_value null do { final_value objectattribute.shift() } while(!final_value && attribute.length) return final_value } const map (object, mapper) > { const newObject {} for(const key in mapper) { // Handle different keys between new and old format newObjectkey fallbackAttribute(object, mapperkey) // Cast price to float if(newObjectkey && price, amount, discount, discounts.some(x > key.endsWith(x))) { newObjectkey parsePrice(newObjectkey) } if(newObjectkey undefined) { delete newObjectkey } } return newObject } const mapCart cart > { const oldCart cart const mapper { id: id, currency: currency, item_count: item_count, items: items, total_price: total_price, latest_items: latest_items } cart map(cart, mapper) const discounts (oldCart.storewide_discounts || ).concat((oldCart.voucher_discounts || )) cart.discount_applications discounts.map(discount > ({ title: discount.voucher_code || null, value: parsePrice(discount.amount), })) cart.original_total_price cart.items.length ? cart.items .map(item > item.original_price) .reduce((sum, price) > sum + price) : 0 cart.total_discount cart.discount_applications.length ? cart.discount_applications .map(discount > parsePrice(discount.value)) .reduce((sum, value) > sum + value) : 0 cart.items cart.items.map(item > mapLineItem(item)) return cart } const mapCheckout checkout > { const mapper { note: note, attributes: note_attributes, billing_address: billing_address, currency: currency, customer_id: customer_id, discounts_amount: total_discount, id: id, line_items: order_item, order_number: order_number, shipping_address: shipping_address, shipping_price: shipping_tax, shipping_method: shipping_method_name, tax_price: total_tax, } checkout map(checkout, mapper) checkout.requires_shipping checkout.line_items.some(item > item.shipping_required) checkout.line_items checkout.line_items.map(item > mapLineItem(item)) return checkout } const mapOrder order > { const mapper { attributes: note_attributes, billing_address: billing_address, cancelled: is_cancelled, cancelled_at: cancelled_at, created_at: created_at, customer_id: customer_id, // discount_applications: discount_applications, email: email, financial_status: financial_status, fulfillment_status: fulfillment_status, line_items: order_item, note: note, order_number: order_number, phone: phone, shipping_address: shipping_address, shipping_methods: shipping_methods, shipping_price: total_shipping, subtotal_price: subtotal_price, // tax_lines: tax_lines, tax_price: total_tax, total_discounts: total_discount, total_net_amount: total_amount_include_transaction, total_price: total_price, transactions: transaction_records, is_manual_payment: is_manual_payment, } order.email order.billing_address.email order.phone order.billing_address.phone order.shipping_method order.shipping_method_name order map(order, mapper) order.line_items order.line_items.map(item > mapLineItem(item)) order.transactions order.transactions.map(transaction > mapTransaction(transaction)) return order } const mapLineItem line_item > { const old_line_item line_item const mapper { final_price: price, image: img_url, message: message, original_line_price: original_line_price, original_price: original_price, properties: properties, quantity: quantity, requires_shipping: shipping_required, sku: sku, taxable: taxable, title: product_name, product_name: product_name, url: url, product_id: product_id, variant_id: variant_id, id: id, i_id, } line_item map(line_item, mapper) line_item.product_id line_item.product_id || (old_line_item.product && old_line_item.product.id) || null line_item.variant_id line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null line_item.image line_item.image || (old_line_item.image && old_line_item.image.url) || null return line_item } const mapTransaction transaction > { const mapper { amount: amount, created_at: created_at, gateway: gateway_type, id: id, status: status, } transaction map(transaction, mapper) return transaction }/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]