THE 10 BEST United Arab Emirates Hotel Deals (Jul 2023)


THE 10 BEST United Arab Emirates Hotel Deals (Jul 2023) – Tripadvisor =0&&t1e12?new Date:performance.now())-e.timeStamp;”pointerdown”==e.type?function(e,t){var n=function(){c(e,t),a()},i=function(){a()},a=function(){removeEventListener(“pointerup”,n,r),removeEventListener(“pointercancel”,i,r)};addEventListener(“pointerup”,n,r),addEventListener(“pointercancel”,i,r)}(t,e):c(t,e)}},f=function(e){[“mousedown”,”keydown”,”touchstart”,”pointerdown”].forEach((function(t){return e(t,s,r)}))},p=”hidden”===document.visibilityState?0:1/0;addEventListener(“visibilitychange”,(function e(t){“hidden”===document.visibilityState&&(p=t.timeStamp,removeEventListener(“visibilitychange”,e,!0))}),!0);o(),self.webVitals={firstInputPolyfill:function(e){i.push(e),u()},resetFirstInputPolyfill:o,get firstHiddenTime(){return p}}}();]]>0;)define.apply(e,t.d.shift());for(;t.r.length>0;)require.apply(e,t.r.shift());e.getRequireJSQueue=null}l&&+new Date-i<5e3&&a.apply(e,l)}if(!e||!e.requireCallLast){var l,i,u=!1,a=e.requireCallLast=function(e,r){l=null;var a=[].slice.call(arguments,2);t(e)?n(require(e),r,a):t("trjs")?require(["trjs!"+e],function(e){n(e,r,a)}):u||(i=+new Date,l=[].slice.call(arguments))},c=e.requireCallIfReady=function(n){t(n)&&a.apply(e,arguments)},o=function(t,n,r,l){var i=c;return!r||"click"!==r.type&&"submit"!==r.type||(i=a,r.preventDefault&&r.preventDefault()),l.unshift(n),l.unshift(t),i.apply(e,l),!1};e.remoteModule=function(e,t){return o("remoteModule",null,e,[].slice.call(arguments))},e.requireEvCall=function(e,t,n,r){return e=e.match(/^((?:[^/]+/)*[^/.]+).([^/]*)?$/),o(e[1],e[2],t,[].slice.call(arguments,1))},e.widgetEvCall=function(e,t,n,r){return o("ta/prwidgets","call",t,[].slice.call(arguments))},e.placementEvCall=function(e,t,n,r,l){return o("ta/p13n/placements","evCall",n,[].slice.call(arguments))},document.addEventListener?document.addEventListener("DOMContentLoaded",r):e.addEventListener?e.addEventListener("load",r):e.attachEvent&&e.attachEvent("onload",r)}}(window); ]]> “}”,”pageServlet”:”SmartDeals”,”sessionId”:”EEA44D609E804877BED003847F2810EB”,”cdnHost”:”https://static.tacdn.com”,”quickSave”:true,”isExternalReferral”:true,”useERUserTracking”:true,”cookieDomain”:”.tripadvisor.com”,”uid”:”e43a4ffa-d13b-4844-921d-36b94b1a9bec”,”hasReferral”:true,”posLocale”:”en_US”,”MEDIA_HTTP_BASE”:”https://media-cdn.tripadvisor.com/media/”,”user_id”:””,”loggedIn”:false,”securelyLoggedIn”:false},”DUST_GLOBAL”:{“IS_IELE8″:false,”LOCALE”:”en_US”,”IS_IE10″:false,”CDN_HOST”:”https://static.tacdn.com”,”DEVICE”:”desktop”,”IS_RTL”:false,”LANG”:”en”,”DEBUG”:false,”READ_ONLY”:false,”POS_COUNTRY”:191},”JS_SECURITY_TOKEN”:”TNI1625!ALt/vXwKLOJ8KhOIcGjitNyh/IxQHjyLiCgi7wrvx6egxBkDETN7i8qzkFUYaexnPuDmUfDwMDXCFUp/X5hVlEBHQ/UpZ/TPss+KMVB+741OGOoTt7Jnygr3md44mYh7ky8hxzURrT/WzLuwpQ4ZerJZoJTWOjjbqfhotIWPZkx6″,”GEO_ID”:”294012″,”hotelsInGeo”:”1413″,”LOC_ID”:”294012″,”isMobile”:false,”isRtl”:false}; });]]> 0&&o&&(o=o[t[0]]||o[t[0].toLowerCase()]),o?(D[i]=o,d.push(o)):n.push(i)}else n&&n.push(i);else d.push(null);if(d.length===e.length)return d}function t(e){var n,r,i,t,o=”Missing immediately required dependency: “+e;for(n=0;n<10;n++){var d=v[e];if(!d){o+=" (not specified)";break}if(d.error){o+=" ("+d.error+")";break}if(e=null,t=d.deps)for(r=0;r "+e}var f=new Error(o);return y&&!window.IS_DEBUG||!g||y&&null===window.require.caller&&/^R|react$/.test(e)||g.error(f),f}function o(e,n,t){var u,a,s,p,c,h,y,g=[],w=[],m=[];n.deps=n.deps||[],n.defname&&(p=v[n.defname],v[n.defname]=n,p&&p!==n&&p.needers&&p.needers.length&&(n.needers=(p.needers||[]).concat(n.needers||[])));for(var c=0;c=0?(g.push(u.substring(0,h)),w.push(u.substring(h+1))):(g.push(null),w.push(u));if(g=i(g,m),!g)return o(m,n);for(var c=0;c0){o(n,d);continue}r=null,d.cb&&(r=d.cb.apply(null,e)),d.deps=[],d.cb=null,d.defname&&u(d.defname,r)}catch(e){P(“Error propagating dependency resolutions: “,e)}}q=null}function f(e){return function(n){e.defname&&u(e.defname,n)}}function l(e){return function(n){e.defname&&(e.error=”Error loading ‘”+e.defname+”‘: “+n,P(e.error),e.need=0,e.deps=[],a(e.defname))}}function u(e,n){if(!D[e]){var r=v[e];if(D[e]=n,delete v[e],w[e]){var i,t=e.split(“/”),o=ta;for(“ta”===t[0]&&t.shift();t.length>1;)i=t.shift(),o[i]||(o[i]={}),o=o[i];t.length>0&&(i=t.shift(),i in o||i.toLowerCase()in o||(o[i]=n,o[i.toLowerCase()]=n))}if(E&&E(e,[],s(n)),r)for(;r.needers&&r.needers.length>0;){var f=r.needers.shift();f.need-=1,f.need||b.push(f)}b.length&&!q&&(q=setTimeout(d,0))}}function a(e){var n=v[e];if(n){var r=n.eb;for(n.deps=null,n.cb=null,n.eb=null,n.error||(n.error=”Error loading ‘”+n.defname+”‘”);n.needers&&n.needers.length>0;){var i=n.needers.shift();i.error=”Failed to load AMD module ‘”+e+”‘ which is depended upon by ‘”+i.defname+”‘”,i.need>0&&(i.need=0,b.push(i)),y&&!window.IS_DEBUG||!g||g.error(i.error)}if(null!=r)try{r(n.error)}catch(e){}}b.length&&!q&&(q=setTimeout(d,0))}function s(e){return function(){return e}}function p(e){return e&&(e.indexOf(“trjs!”)!==-1||e.indexOf(“trcss!”)!==-1||e.indexOf(“trhtml!”)!==-1||e.indexOf(“trdust!”)!==-1)}function c(){return!(“undefined”!=typeof ta&&ta.page&&ta.page.loadDeferred)}function h(){var e,n,r,t,o;if(q)return void setTimeout(h,0);if(M=!0,v&&c())for(e in v)if(v.hasOwnProperty(e)){if(n=v[e],t=[],o=[],p(n.defname))continue;if(v.hasOwnProperty(“trjs!”+n.defname))continue;if(n.deps&&n.deps.length){for(r=0;r0)return void(r=setTimeout(t.apply.bind(t,this,arguments),i));var u=t.apply(this,arguments);return e=Date.now(),u}}}); define(“vanillajs”,[],function(){return{}}); define(“mobile/lite/image-loader”,[“utils/throttle”,”vanillajs”],function(t){“use strict”;function e(e,n){n=n||document,c=e||0;var i=Array.prototype.filter.call(n.querySelectorAll(“[“+u+”]”),r());if(0!=i.length){var o=t(function(t){i=i.filter(r()),0==i.length&&(window.removeEventListener(“scroll”,o),window.removeEventListener(“resize”,o))},200);window.addEventListener(“scroll”,o),window.addEventListener(“resize”,o)}}function r(){return function(t){if(!document.body.contains(t))return!1;try{if(!i(t))return!0}catch(t){return!1}var e=t.getAttribute(u);if(e)return”IMG”===t.tagName?t.src=e:t.style.backgroundImage=”url(“+e+”)”,t.removeAttribute(u),!1;var r=t.getAttribute(l);return r&&”IMG”===t.tagName&&(t.srcset=r,t.removeAttribute(l)),!0}}function n(t){t=t||document;var e=t.querySelectorAll(“[“+u+”]”);Array.prototype.filter.call(e,r())}function i(t){var e=t.getBoundingClientRect();return e.width>0&&e.height>0&&e.top+c>=0&&e.top-c<=window.innerHeight}function o(){return function(t){var e=t.getAttribute(u);return!e||("IMG"===t.tagName?t.src=e:t.style.backgroundImage="url("+e+")",t.removeAttribute(u),!1)}}function a(t){t=t||document;var e=t.querySelectorAll("["+u+"]");Array.prototype.filter.call(e,o())}var u="data-lazyurl",l="data-lazyset",c=0;return{init:e,demandLoadImages:n,forceLoadImages:a}}); define("utils/to-array",["vanillajs"],function(){return function(n){return"number"!=typeof n.length?[n]:Array.prototype.slice.call(n)}}); define("amdloaders",["utils/to-array"],function(e){var t=[],n=[],r=[],o=[],a=[],d=null,i=null,u={},s={},c={},l={},f=null,p=!1,h=1e4,m=!1,w={},v=function(e,t,r){if("@ta/"!==e.substring(0,4)){if(u[e]){if(s[e]&&/^[-a-z]+.[-_a-zA-Z0-9]+$/.test(e))return}else u[e]=!0,n.push(e);a.push(function(n){n||!t.parsed||t.parsed(e)||(n=new Error("Dynamic load failed to define module '"+e+"'")),n&&r.error&&r.error(n)}),S()}},g=function(e,t,r){u[e]||(u[e]=!0,s[e]||t.specified(e)||n.push(e)),a.push(function(n){var o=t.parsed(e);n||s[e]||o||(n=new Error("Dynamic load failed to define '"+e+"'")),n?r.error&&r.error(n):o||define(e,[],H(!0))}),t([e],r,r.error),S()},y=function(e,n,r){t.push(e),a.push(function(e){e?r.error&&r.error(e):r(!0)}),S()},C=function(e,t,n){r.push(e),a.push(function(r){r||t.specified("trhtml!"+e)||(r=new Error("Dynamic load failed to define content '"+e+"'")),r&&n.error&&n.error(r)}),S()},L=function(e,t,n){c[e]||(c[e]=!0,l[e]||o.push(e)),a.push(function(e){e?n.error&&n.error(e):n(!0)}),S()},L=function(e,t,n){c[e]||(c[e]=!0,l[e]||o.push(e)),a.push(function(e){e?n.error&&n.error(e):n(!0)}),S()},S=function(){!f&&p&&!m&&(a.length||t.length||n.length||r.length||o.length)&&(f=setTimeout(b,0))},E=function(e,t){var n=e.getAttribute("data-rup");if(n){var r;n=n.split(",");for(var o=0;o0&&(h+="&needContent="+encodeURIComponent(String(i))),window.pageServlet&&(h+="&metaReferer="+encodeURIComponent(window.pageServlet));var w=null;try{w=new XMLHttpRequest}catch(e){try{w=new ActiveXObject("MSXML2.XMLHTTP")}catch(e){try{w=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){throw new Error("Can't create XMLHttpRequest or similar")}}}var v=!1;w.onreadystatechange=function(){v||4!==w.readyState||(v=!0,w.status>=200&&w.status<=299?x(d,w.responseText):I(d,new Error("XHR returned "+w.status)))},w.open("POST","/DemandLoadAjax",!0);try{w.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8")}catch(e){}try{w.setRequestHeader("X-Requested-With","XMLHttpRequest")}catch(e){}try{w.setRequestHeader("Accept","text/html, */*")}catch(e){}m=!0,w.send(h)}},I=function(e,t){if(m=!1,S(),e.length)for(var n=0;n=l.limit&&(l.list=l.list.slice(0,l.list.length-1),l.callbacks=l.callbacks.slice(0,l.callbacks.length-1)),l.list.unshift(e),l.callbacks.unshift(t);var r=l.handlerModule;r&&l.handlerMethod&&(l.handlerModule=null,require([r+””],function(e){n(l,e[l.handlerMethod],0)}))}}function e(l,e){if(e=Array.prototype.slice.call(e),l.handler)try{l.handler.apply(null,e)}catch(l){}else if(l.list&&l.list.length=t)return!1;l.handler=n,l.priority=t;var a=l.list;l.list=null;for(var i=0;i0&&”function”==typeof e[0]&&l(o,e.slice(1),e[0])}}}); define(“ns-exporter”,[“vanillajs”],function(r){function n(r){if(“undefined”==typeof window)return null;if(“undefined”==typeof r&&(r=window),!r)return require.defined(“ta/util/Error”)&&require(“ta/util/Error”).record(null,”Using ns-exporter:exportTo without a namespace”),null;if(“string”==typeof r){var n=window;n.ta||(ta={}),r.split(“.”).forEach(function(r){n[r]||(n[r]={}),n=n[r]}),r=n}return r}return{exportTo:function(r,e,t){if(e=n(e),!e)return!1;for(var i in r)!r.hasOwnProperty(i)||t&&i in e||(e[i]=r[i]);return!0},createNs:function(r,e,t){return!!(e=n(e))&&void(e[t]=r)}}}); define(“ta/Core/TA.FireEvent”,[“vanillajs”],function(){var n={},e={};return n.on=function(n,r){var i=e[n];i||(i=e[n]=[]),i.push(r)},n.fireEvent=function(n,r){var i=Array.prototype.slice.call(arguments),t=e[n];i.shift(),t&&t.slice(0).forEach(function(n){try{n.apply(null,i)}catch(n){window.IS_DEBUG&&(console.error||console.log)(“Exception in TA.FireEvent handler”,n)}})},n.off=function(n,r){if(r){var i,t=e[n];t instanceof Array&&(i=t.indexOf(r),i>=0&&t.splice(i,1))}else delete e[n]},n.hasEventListener=function(n){return!!e[n]},n}); define(“ta/Core/TA.Event”,[“vanillajs”,”common/trackingStreams”,”ns-exporter”,”ta/Core/TA.FireEvent”],function(vanilla,tracks,nsExporter,fireEvent){function _makeClosure(e,t){var n=this;return t=Array.prototype.slice.call(t),function(){e.apply(n,t)}}function QueueTimer(e,t){var n=0,r=0,o=[],a=0,u=!1;this.start=function(){n&&clearTimeout(n),a=Date.now()},this.end=function(i){var c=Date.now(),f=c-a;r+=f;var l=””+f+”ms [“+(i||””)+”]”,s=e+(t?”-after”:””);u?console.error(“Straggler for “+s+”: “+l):(o.push(l),n=setTimeout(function(){console.error(“Timing for “+s+”: “+r+”msn”+o.sort(function(e,t){return parseInt(e)-parseInt(t)}).join(“n”)),u=!0},2e3))}}var exports={on:fireEvent.on,off:fireEvent.off,fireEvent:fireEvent.fireEvent,hasEventListener:fireEvent.hasEventListener};exports.call=function(e,t,n,r){if(null==t)return IS_DEBUG&&alert(“You must pass the event.nnUsage:nta.call(‘ta.namespace.Class.function’, event);”),!1;if(null==e)return IS_DEBUG&&alert(“ta.call of undefined function”),!1;var o=e;if(“function”==typeof e)e=””;else if(!/^ta.[wd.]+$/.test(e))return IS_DEBUG&&alert(“Invalid function name. Must be of the form: ta.namespace.Class.function”),!1;var a=t||window.event;[“stopPropagation”,”preventDefault”].forEach(function(e){a[e]||(a[e]=function(){})}),a.stop||(a.stop=function(){a.preventDefault(),a.stopPropagation()}),n||(n=a.target||a.srcElement),n||tracks.error(null,”ta.call re-wrap fail (non-DOM element) – “+e,t,{“funcName”:e});var u=arguments,i=Array.prototype.slice.call(u,3);i.splice(0,0,a,n);try{return i.unshift({callback:_ta_call_defer,evt:a}),i.unshift(o),exports.run.apply(null,i)}catch(n){tracks.error(n,”ta.call – “+e,t)}return!1};var _ta_call_defer=function(e,t){t&&delete t.evt,exports.run.apply(null,arguments)};exports.run=function(e,t){var n=arguments,r=Array.prototype.slice.call(n,2);try{var o=exports.fn(e);if(“function”==typeof o){var a=o.apply(window,Array.prototype.slice.call(r));if(t&&t.onComplete){var u=exports.fn(t.onComplete);u&&u(a)}return a}t&&t.evt&&(t.evt.stopPropagation?t.evt.stopPropagation():t.evt.cancelBubble=!0,t.evt.preventDefault?t.evt.preventDefault():t.evt.returnValue=!1);var i=_makeClosure(t&&t.callback||exports.run,arguments);require([“trjs!ta/Core/TA.Load”],function(t){try{t.load(e,i)}catch(t){tracks.error(t,”ta.run – “+e)}})}catch(t){tracks.error(t,”ta.run – “+e)}return!1};var OneTimeFunctionQueue=function(e,t,n){function r(){u=!0,c()}var o,a=[],u=!!n,i=function(n,r){o&&o.start();try{n()}catch(n){try{tracks.error(n,”OneTimeFunctionQueue “+e+(t?”-after”:””)+(r?”-“+r:””))}catch(e){}}o&&o.end(r)},c=function(){if(a.sort(function(e,t){return e.priority-t.priority||e.subpriority-t.subpriority}),t){var e=1;a.forEach(function(t){setTimeout(i.bind(null,t.func,t.name),e++)})}else a.forEach(function(e){i(e.func,e.name)});a=[]};null!=e&&(window.addEventListener?window.addEventListener(e,r,!1):window.attachEvent&&(“DOMContentLoaded”==e?window.attachEvent(“onload”,r):”load”==e?window.attachEvent(“on”+e,function(){setTimeout(r,1)}):window.attachEvent(“on”+e,r))),this.addToQueue=function(t,n,r){return t?(“string”==typeof n&&(r=n,n=!1),void(u?i(t,r):(n=n||100+a.length,a.push({func:t,priority:n,name:r,subpriority:a.length})))):void tracks.error(null,”addToQueue for “+e+” queue – no function”)},this.executeQueue=function(){c()}},loaded=”undefined”!=typeof document&&”complete”===document.readyState,ready=”undefined”!=typeof document&&”interactive”===document.readyState||loaded,_readyQ=new OneTimeFunctionQueue(“DOMContentLoaded”,!1,ready),_loadQ=new OneTimeFunctionQueue(“load”,!1,loaded),_afterLoadQ=new OneTimeFunctionQueue(“load”,!0);ready||_loadQ.addToQueue(function(){_readyQ.executeQueue()},-999999999,”checkReadyQueue”),_loadQ.addToQueue(function(){_afterLoadQ.executeQueue()},999999999,”afterLoadQueue”),exports.queueForReady=function(e,t,n){_readyQ.addToQueue(e,t,n)},exports.queueForLoad=function(e,t,n){_loadQ.addToQueue(e,t,n)},exports.queueForAfterLoad=function(e,t){_afterLoadQ.addToQueue(e,0,t)},exports.fn=function(fn){switch(typeof fn){case”function”:return fn;case”string”:var f=!1;try{f=eval(fn)}catch(e){}if(!f){var ns=fn.split(“.”),n=ns.pop();try{ns=eval(ns.join(“.”)),f=ns&&ns._magic&&ns._magic.partial(n)}catch(e){}}if(f&&”function”==typeof f)return f}return null},exports.fireClick=function(e){if(document.createEvent){var t=document.createEvent(“MouseEvents”);t.initEvent(“click”,!0,!1),e.dispatchEvent(t)}else document.createEventObject?e.fireEvent(“onclick”):”function”==typeof e.onclick&&e.onclick()},exports.throttle=function(e,t,n,r){function o(){delete m_throttles[t],a.cb()}var a,u=(new Date).getTime();if(t in m_throttles){if(a=m_throttles[t],u-a.lastResetr?o():(a.lastReset=u,a.timeout=setTimeout(o,n))};var m_throttles={};return nsExporter.exportTo(exports,ta),exports}); define(“ta/Core/TA.LocalStorage”,[“vanillajs”,”common/trackingStreams”,”ns-exporter”],function(e,t,n){“use strict”;var r=!1,o=”taLsTest”,i=”1″,a=”TALocalStorageCurrentSessionId”,u=!1,s=”session-“,l=!1,c=[],f=[],v=[],g=function(){return!(!u&&!l)},m=function(e){return!!g()||(t.error(null,”Accessing localStorage session cookie before session logic intialized: “+e),!1)},S=function(e){return d(e,”value”)},y=function(e){return d(e,”now”)},d=function(e,t){if(!t)return null;try{var n,o=JSON.parse(r.getItem(e)||”0″);return o?o.ttl&&o.ttl+o.now<(new Date).getTime()?(r.removeItem(e),null):o.hasOwnProperty(t)?(r.setItem("512",o[t]),n=r.getItem("512"),r.removeItem("512"),n):null:null}catch(e){}return null},h=function(e,t){try{var n=JSON.parse(e||"0");return n&&n.hasOwnProperty(t)?n[t]:null}catch(e){return null}},w=function(e){try{var t=JSON.parse(r.getItem(e)||"0");return t?t.ttl&&t.ttl+t.now<(new Date).getTime()?(r.removeItem(e),null):t.value:null}catch(e){}return null},I=function(e){try{r.removeItem(e)}catch(e){}},p=function(e,t){var n=y(e);if(t&&n&&n<(new Date).getTime()-t)try{r.removeItem(e)}catch(e){}},O=function(e){try{var t=r.getItem(e);if(null!==t&&void 0!==t)return!0}catch(e){}return!1},T=function(e,t,n){try{r.setItem(e,JSON.stringify({ttl:n||0,now:(new Date).getTime(),value:t}))}catch(e){}},k=function(e){if(l=!0,!e)return t.error(null,"Attempting to initialize localStorage with invalid sesion key: "+e),!1;if(!V())return!1;if(u=S(a),!u||u!=e){u=e,T(a,u);var n=S("latestPageServlet");n&&T("sessionEntryServlet",n),E(),O(a)&&require.defined("ta/Core/TA.Store")&&require("ta/Core/TA.Store").store("isFirstSessionPageView",!0)}for(var r=0;r0;if(this.delegate&&this.delegate.hasListeners)return this.delegate.hasListeners(e)}return!1},t.prototype.emit=function(e,t){if(this.events[e]){var r=Array.prototype.slice.call(arguments,1);this.events[e].slice(0).forEach(function(t){if(t)try{t.apply(this,r)}catch(t){“string”==typeof t&&(t=new Error(t));var i=”Error in event handler for “+e;if(require.defined(“ta/util/Error”))require(“ta/util/Error”).record(t,i);else{var s=require.defined(“ta”)&&require(“ta”);s&&s.log&&s.log.error?s.log.error(t,i):s&&s.m&&s.m.recordJSError?s.m.recordJSError([t,i]):”undefined”!=typeof console&&(console.error||console.log)(i,t)}}},this)}else this.delegate&&this.delegate.emit&&this.delegate.emit.apply(delegate,arguments);return this},t}); define(“ta/registration/RegEvents”,[“mixins/Events”],function(e){return new e(“success”)}); define(“post_rollup_globals_shim”,[“page-model”,”ns-exporter”,”common/trackingStreams”,”ta/registration/RegEvents”],function(e,r,t,i){var n=e.session;i.on(“success”,function(){e.session.loggedIn=!0});var o={uid:n.uid,userLoggedIn:n.loggedIn,userSecurelyLoggedIn:n.securelyLoggedIn};r.exportTo(o,”ta”);try{var s=XMLHttpRequest.prototype,u=s.send;s.send=function(e){try{var r=new RegExp(“^(/[^/]|(http(s)?:)?//”+window.location.hostname+”)”);if(this._url&&r.test(this._url)){var t=n.uid;if(require.defined(“redux-init”)){var i=require(“redux-init”);i&&i.tracking&&i.tracking.uid&&(t=i.tracking.uid)}this.setRequestHeader(“X-Puid”,t)}}catch(e){}u.call(this,e)};var a=s.open;s.open=function(e,r){return this._url=r,a.apply(this,arguments)}}catch(e){t.error(e,”Error intercepting AJAX for tracking”)}}); define(“servlets/standardTemplateSupport”,[“page-model”,”mobile/lite/image-loader”,”ta/Core/TA.Event”,”ta/Core/TA.LocalStorage”,”ta/util/LocalStorage”,”ta/util/Currency”,”ta/util/SessionStorage”,”post_rollup_globals_shim”],function(e,o,s,t,a,i,n,l){function r(){s.queueForLoad(function(){o.init(200)},”lazy load images”),e&&e.session&&e.session.sessionId&&t.updateSessionId(e.session.sessionId)}return{footerInit:r}}); define(“purify”,[“vanillajs”],function(e){function n(e,n){return e?t(e)?(window.IS_DEBUG&&console.error(“You’re using a jQuery object where you shouldn’t. Check the stack trace and fix it!”),n&&e.length>1?e.get():e.get(0)):e.forEach&&(e.length1){for(var f=Array(u),l=0;l0&&(n=n.substring(0,n.indexOf(“:”))),n}function l(){var e=Array.prototype.slice.call(arguments);require([“trjs!ta/p13n/placements-ajax”],function(n){n.loadDynamicPlacement.apply(n,e)})}function c(){var e=Array.prototype.slice.call(arguments);require([“trjs!ta/p13n/placements-ajax”],function(n){n.loadDynamicPlacement.apply(n,e)})}var i=new t(function(e){var n={};if(e)for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a]);return n.requestAJAXPlacement||(n.requestAJAXPlacement=function(e,a,t,r){require([“trjs!ta/p13n/placements-ajax”],function(l){l.requestAJAXPlacement(n,e,a,t,r)})}),{placement:n}}),o={“define”:i.define,”redefine”:i.redefine,”load”:i.load,”evCall”:i.evCall,”loadDynamicPlacement”:l,”enableAutoRefresh”:c,”getTemplateBaseFromPlacementName”:r};return n.exportTo(o,”ta.p13n.placements”),o}); define(“utils/object/set-props”,[“vanillajs”],function(){“use strict”;return function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t]);return n}}); define(“utils/object/shallow-copy”,[“utils/object/set-props”,”vanillajs”],function(t){“use strict”;return function(r){var e;if(“object”!=typeof r||null===r)return r;if(r.constructor===Array){e=[];for(var n=0;n1?n-1:0),i=1;i1?t-1:0),r=1;r2?r-2:0),u=2;u2?r-2:0),u=2;u1?t-1:0),r=1;r=0&&e.push(n);return e}function a(t){var e=ta.page.getDates(t);return e&&e[0]?new n(e[0]):null}var u=”zu”,T={CHECKIN:{queryString:null,pathString:null},CHECKOUT:{queryString:null,pathString:null},STAYDATES:{children:[“CHECKIN”,”CHECKOUT”],queryString:”staydates”,pathString:u+”s”},EATERY:{queryString:”eaterydate”,pathString:u+”r”},DEPARTURE:{queryString:null,pathString:null},RETURN:{queryString:null,pathString:null},ROUNDTRIP:{children:[“DEPARTURE”,”RETURN”],queryString:”rtdates”,pathString:u+”t”},ONEWAYFLIGHT:{queryString:”oneway”,pathString:u+”o”},LEG_1:{queryString:”leg1date”,pathString:u+”1″},LEG_2:{queryString:”leg2date”,pathString:u+”2″},LEG_3:{queryString:”leg3date”,pathString:u+”3″},ATTRACTION:{queryString:”attrdate”,pathString:u+”a”},ATTRACTION_FROM:{queryString:null,pathString:null},ATTRACTION_TO:{queryString:null,pathString:null},ATTRACTIONRANGE:{children:[“ATTRACTION_FROM”,”ATTRACTION_TO”],queryString:”attrrange”,pathString:u+”e”},VPDATES:{children:[“VPDEPARTURE”,”VPRETURN”],queryString:”vpdates”,pathString:null},VPDEPARTURE:{queryString:null,pathString:null},VPRETURN:{queryString:null,pathString:null}};return T.getStartDateType=function(t){var e=i(t);if(0==e.length){var n=T[t].children;return n&&n.length>0?n[0]:t}return T[e[0]].children[0]},T.getEndDateType=function(t){var e=i(t);if(0==e.length){var n=T[t].children;return n&&n.length>0?n[n.length-1]:t}var r=T[e[0]];return r.children[r.children.length-1]},T.isChildDateType=function(t){return i(t).length>0},T.isSingleDateType=function(t){var e=T[t];return!(T.isChildDateType(t)||e&&e.children&&e.children.length>0)},T.getParents=i,T.isHotelDateType=function(t){return i(t).indexOf(“STAYDATES”)>=0},T.isRoundTripDateType=function(t){return i(t).indexOf(“ROUNDTRIP”)>=0},T.isAttractionRangeDateType=function(t){return i(t).indexOf(“ATTRACTIONRANGE”)>=0},T.isVacationPackagesDateType=function(t){return i(t).indexOf(“VPDATES”)>=0},T.allowsSameDayRange=function(t){return T.isAttractionRangeDateType(t)||T.isRoundTripDateType(t)},T.isMultiCityDateType=function(t){return”LEG_1″==t||”LEG_2″==t||”LEG_3″==t},T.isStartDateType=function(t){var e=i(t);return 0!=e.length&&0==T[e[0]].children.indexOf(t)},T.isEndDateType=function(t){var e=i(t);if(0==e.length)return!1;var n=T[e[0]];return n.children.indexOf(t)==n.children.length-1},T.getStartDate=function(t){var e=T.getStartDateType(t);return null==e?ta.page.getDates(t)[0]:ta.page.getDates(e)[0]},T.getEndDate=function(t){var e=T.getEndDateType(t);return null==e?ta.page.getDates(t)[0]:ta.page.getDates(e)[0]},T.getMinEnabledDate=function(t){if(T.isHotelDateType(t)||T.isRoundTripDateType(t)){var i=e.retrieve(“multiDP.minCheckInDate”);if(i)return new n(r.fromString(i))}else{if(“LEG_1″==t)return a(“ONEWAYFLIGHT”);if(“LEG_2″==t)return a(“LEG_1”)||a(“ONEWAYFLIGHT”);if(“LEG_3″==t)return a(“LEG_2”)||a(“LEG_1”)||a(“ONEWAYFLIGHT”);if(“ATTRACTION_TO”==t)return a(“ATTRACTION_FROM”)}return null},T.flattenType=function(t){var e=T[t];return e?e.children?e.children.slice(0):[t]:[]},T.getCorrespondingDateType=function(t){switch(t){case”CHECKIN”:return”CHECKOUT”;case”CHECKOUT”:return”CHECKIN”;case”DEPARTURE”:return”RETURN”;case”RETURN”:return”DEPARTURE”;case”ATTRACTION_FROM”:return”ATTRACTION_TO”;case”ATTRACTION_TO”:return”ATTRACTION_FROM”;case”VPDEPARTURE”:return”VPRETURN”;case”VPRETURN”:return”VPDEPARTURE”;default:return null}},T}); define(“mixins/page-dates/Base”,[“vanillajs”,”ta”,”mixins/page-dates/Utils”,”mixins/page-dates/DateTypeStore”],function(e,r,t,n){“use strict”;function a(e){return e instanceof Date&&!isNaN(e.getTime())}function i(e){if(!n[e])throw”Invalid date type: “+e}function s(e){var r=[];for(var t in n)n.hasOwnProperty(t)&&n[t].children&&n[t].children.indexOf(e)>=0&&r.push(t);return r}function o(e,r){var a=n[e],i=””;if(a.children)for(var s=0,o=a.children.length;s0?”_”:””)+t.dateToIso(r[a.children[s]])}else{if(“_”===r[e])return”_”;i+=t.dateToIso(r[e])}return i}function h(e,r){var t=n[e];if(t.children){for(var a=0,i=t.children.length;a=n}}function r(n){return function(){return t()n()},portrait:function(){return n()>t()},currentBreakpoints:function(){return u.filter(function(t){return”function”==typeof c[t]&&c[t]()})},is:function(t,n,e){var r=”function”!=typeof t&&c[t]?c[t]:t;return function(t,i){return r()?”undefined”!=typeof t?t:n:”undefined”!=typeof i?i:e}}};return c}); define(“mixins/page-dates/pop-calendar”,[“ta”,”common/trackingStreams”,”common/Radio”,”ta/support/Qualtrics”,”ta/Core/TA.Store”,”ta/Core/TA.LocalStorage”,”ta/util/SessionStorage”,”utils/responsive”],function(e,t,n,r,i,a,o,s){function d(){j=!1}function u(t){b=!!t.popFromDefault,D=!!t.popFromVisibleOnly,P=t.popFromVisibleOnlyBreakpoint,k=!!t.datesWereDefaulted,y=t.popCalendarType,T=!!t.hasMetaMarketingDefaultDates,E=!!t.qualtricsSurveyEnabled,O=!!t.isDetailPage,A=”Vacation_Packages”===window.pageServlet,e.page.on(“datepickerRejected”,d),e.page.on(“dateSelected”,d)}function c(e){if(a.enabled&&a.get(“popCalendarAfterRedirectedFromIB”))return a.remove(“popCalendarAfterRedirectedFromIB”),!0;if(!k||R)return!1;if(i.retrieve(“suppressCalendarPop”))return!1;if(!y)return!1;if(E&&r&&(r.canDisplay()||r.seenThisPageView())){if(!require.defined(“page-model”))return!1;if(require(“page-model”).isMobile)return!1}if(e&&D&&(!P||s.is(P,!0,!1)())&&!g(e))return!1;switch(y){case”doNot”:return!1;case”untilClosedPerServletType”:return!l();case”untilClosed”:return!p();case”always”:return!0}return b&&k}function p(){return o.canUseSessionStore()&&!!o.getObject(C)}function l(){var e=o.canUseSessionStore()&&o.getObject(C);return e&&!!e[A?”vp”:O?”detail”:”list”]}function f(){if(o.canUseSessionStore()){var e=o.getObject(C)||{};e[A?”vp”:O?”detail”:”list”]=!0,o.setObject(“pop-calendar-dismissed”,e),n(“pop-calendar”).emit(“dismissed”)}}function g(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}function m(){return T}function S(n){j=!0,e.page.gatherDates(n),R=!0,t.trackEvent("DATEPICKER","auto-popped-calendar-shown",window.pageServlet),t.trackEvent("calendar","in_view","autopop")}function v(){return R}function h(){return j}function w(){k=!1}var C="pop-calendar-dismissed",b=!1,D=!1,P="",k=!1,E=!1,T=!1,y="",O=!1,R=!1,j=!1,A=!1;return{init:u,shouldPop:c,shouldPopMetaMarketing:m,popCalendar:S,wasPoppedThisPageLoad:v,isShowing:h,setUserEnteredDates:w,setDismissedThisSession:f}}); define("mixins/page-dates/default-dates",["ta","mixins/mixin","mixins/Events","mixins/page-dates/pop-calendar","mixins/page-dates/DateTypeStore","common/trackingStreams","vanillajs","ta/Core/TA.Event"],function(e,t,a,n,i,o,d,r){"use strict";function s(e){n.init(e),g=!!e.datesWereDefaulted,f=!!e.refreshLocalStorage,D=e.localStorageTTL,m=!0,S.emit("init")}function p(e){"function"==typeof e&&(m?e():S.on("init",e))}function u(t,a,d){function s(t){n.wasPoppedThisPageLoad()&&(S.emit("poppedCalendarDismissed",t),n.setDismissedThisSession(),e.page.off("datepickerRejected",s))}function p(){if(f&&(g&&o.trackEvent("DATEPICKER","undated_to_default_dated"),!a)){var t=n.shouldPop(f);(t||n.shouldPopMetaMarketing())&&(t&&S.emit("popFromDefault"),e.page.on("datepickerRejected",s),n.popCalendar(f))}}var u=d?d:"STAYDATES";if(e.page.usingUnifiedDates){e.page.hasDates(u)||e.page.clearDates(u),c=e.page.getDates(i.getStartDateType(u))[0],l=e.page.getDates(i.getEndDateType(u))[0];var f=t.querySelector('[data-datetype="'+i.getStartDateType(u)+'"]');e.page.on("dateSelected",function(a,i,d){var r,p=c&&l,f=e.page.getDates(u)[0],D=e.page.getDates(u)[1];if(t.contains(a)&&(!p&&e.page.hasDates(u)?r="undated_to_manually_dated":f==c&&D==l||(n.setUserEnteredDates(),e.page.off("datepickerRejected",s),g?(r="default_dated_to_manually_dated",g=!1):r="manually_dated_to_manually_dated"),c=f,l=D,r)){var m="";a&&a.getAttribute("data-picker-location")&&(m=a.getAttribute("data-picker-location"),document.querySelector("#PERSISTENT_TRIP_SEARCH_BAR.fixed")&&(m+="_persistent")),o.trackEvent("DATEPICKER",r,m)}}),"loading"===document.readyState?window.addEventListener("DOMContentLoaded",p):p(),r.on("specialOfferClosed",function(){a||f&&n.shouldPop(f)&&n.popCalendar(f)})}}var c,l,g=!1,f=!1,D=0,m=!1,S={init:s,onInit:p,apply:u,usingDefaults:function(){return g},shouldRefreshLocalStorage:function(){return f},getLocalStorageTTL:function(){return D}};return t(S,new a("popFromDefault"))}); define("ta/util/Deferred",["vanillajs","ns-exporter"],function(e,r){"use strict";function t(e){l.prototype[e]=function(r,t){return i(this,e,t?r.bind(t):r)}}for(var n=["success","failure","always","progress"],u={"resolved":["success","always"],"rejected":["failure","always"]},l=function(){},a=0;ae}function u(){return a.adults=97&&e=65&&e=48&&e”,0,0,0,0,0,0,”`”,”__2D__”,”X”,”<","slot",0,"ShowUrl","Owners",0,"[","q",0,"MemberProfile",0,"ShowUserReviews",'"',"Hotel",0,0,"Expedia","Vacation","Discount",0,"UserReview","Thumbnail",0,"__2F__","Inspiration","V","Map",":","@",0,"F","help",0,0,"Rental",0,"Picture",0,0,0,"hotels",0,"ftp://"],"x":[0,0,"J",0,0,"Z",0,0,0,";",0,"Text",0,"(","x","GenericAds","U",0,"careers",0,0,0,"D",0,"members","Search",0,0,0,"Post",0,0,0,"Q",0,"$",0,"K",0,"W",0,"Reviews",0,",","__2E__",0,0,0,0,0,0,0,"{","}",0,"Cheap",")",0,0,0,"#",".org"],"z":[0,"Hotels",0,0,"Icon",0,0,0,0,".net",0,0,"z",0,0,"pages",0,"geo",0,0,0,"cnt","~",0,0,"]","|",0,"tripadvisor","Images","BookingBuddy",0,"Commerce",0,0,"partnerKey",0,"area",0,"Deals","from","\",0,"urlKey",0,"'",0,"WeatherUnderground",0,"MemberSign","Maps",0,"matchID","Packages","E","Amenities","Travel",".htm",0,"!","^","G"]},r="",a=0;a=200&&this.status=0&&w&&w>0)return H*w>=6e4?-1:(H*(w+1)>=6e4&&(E=!0),H);var e=w||0;return 0<=e&&e0?w:w+1)):(o.fireEvent(e,{},-1),l.reply("initialPollComplete",function(){return!0}),l.reply("polling_complete",function(){return!0}),l.emit("polling_complete"),o.fireEvent(N+"-polling-complete"))}function d(){R=R>0?R+1:1}function f(){if(R>1)return void(R-=1);R=0;var e=g||[];g=null;for(var t;t=e.shift();)try{t()}catch(e){}}function v(){return y}e=e||{};var h,m,g,w=1,y=0,T=!1,E=!1,P=0,x=null,S={},j=!1,A={},b={},q={},M=!!e.evaluateScripts,N=e.placement||”page”,R=0,H=e.pollTimeoutOverride||-1,L=Date.now(),O=e.tracker,C=(e.inspector,s[e.pollIntervalName||”normal”]||s.normal),X=function(e){return e?decodeURIComponent(e.replace(/+/g,” “)):e},U=function(e){var t,n;h=e.split(“#”)[0],m=h.split(“?”)[0],t=h.split(“?”)[1]||””,n=t.split(“&”);for(var r=0;r=0;t–){var n=e[t];delete A[n],T=!0}},z=function(e,t){if(!t)return!1;for(var n=!1,r=Object.keys(t||{}),o=r.length-1;o>=0;o–){var a=r[o];e[a]!==t[a]&&(n=!0),e[a]=t[a]}return n&&(T=!0),n},B=function(e,t){if(!t)return!1;for(var n=Object.keys(t||{}),r=n.length-1;r>=0;r–){var o=n[r];e[o]=t[o]}},G=function(){ee(!1)},J=function(e){var t,n,r,o=(e&&e.getAttribute(“data-paramNames”)||””).split(“,”);for(t=0;t=0?(j=!0,T&&y++,T=!1,r=++P,window.setTimeout(function(){te(r)},i),a&&p()):(o.fireEvent(“hac-could-not-complete”),re())}},te=function(e){if(!x&&j&&e===P){if(R>0)return g=g||[],g.push(te.bind(this,e)),void(window.console&&console.log&&console.log(“request held while updates are paused”));var r=++w,o=t.extend({},A,b),a=null;o.reqNum=r,o.isLastPoll=E,o.paramSeqId=y,o.waitTime=Date.now()-L,O&&O.start(r),q.UNKNOWN||(a=[],t.each(q,function(e,t){t&&a.push(e)}),o.changeSet=a.toString()),i.session.uid&&(o.puid=i.session.uid),j=!1,b={},S=q,q={};var l;try{l=new XMLHttpRequest}catch(e){try{l=new ActiveXObject(“MSXML2.XMLHTTP”)}catch(e){try{l=new ActiveXObject(“Microsoft.XMLHTTP”)}catch(e){throw new Error(“Can’t create XMLHttpRequest or similar”)}}}l.onreadystatechange=c.bind(l,r),l.open(“POST”,m,!0),”responseType”in l&&(l.responseType=”document”);try{l.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded; charset=utf-8″)}catch(e){}try{l.setRequestHeader(“X-Requested-With”,”XMLHttpRequest”)}catch(e){}try{l.setRequestHeader(“Accept”,”text/html, */*”)}catch(e){}l.send(n.toQueryString(o)),x=l}},ne=function(e){if(R>0)return g=g||[],g.push(ne.bind(this,e)),void(window.console&&console.log&&console.log(“update held while updates are paused”));var t;”string”==typeof e?(t=document.createElement(“div”),t.innerHTML=e):t=e;var n=j;if(x=null,S={},M){var r=t.querySelectorAll(“script”);r=r?Array.prototype.slice.call(r):[];for(var i=0;i0)return g=g||[],g.push(re.bind(this)),void(window.console&&console.log&&console.log(“error held while updates are paused”));var e=j;x=null,S={},e?te(++P):o.fireEvent(N+”-repoll-failed”),p()};return o.on(N+”-repoll-not-done”,G),o.on(N+”-repoll-ajax-params”,J),U(e.pageUrl||window.location.href),e.ajaxParams&&(A=t.extend(A,e.ajaxParams)),setTimeout(function(){V()||o.fireEvent(N+”-polling-complete”)},0),{setPageUrl:U,repoll:D,pause:d,resume:f,getAjaxParams:F,setAjaxParams:I,setAjaxParamsNoPoll:k,setAjaxParamsNoPollForSP:_,setOneTimeParams:W,setOneTimeParamsNoPoll:K,removeAjaxParams:Q,setNotDone:G,isUpdatePending:V,getLastRequestNum:Y,setScriptsEval:Z,isScriptsEvalEnabled:$,fireTargetEvents:a,getParamSeqId:v}};return c}); define(“commerce/offerclickEvents”,[“mixins/Events”,”vanillajs”],function(e){“use strict”;return new e(“beforeClick”,”afterClick”)}); define(“utils/stopevent”,[“vanillajs”],function(){return function(e){return e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,e.preventDefault?e.preventDefault():e.returnValue=!1),!1}}); define(“utils/waiton”,[“vanillajs”],function(){return function(n,i,t){function o(){–u0&&(e=setTimeout(function(){u=0,o()},t)))):void i()}}); define(“ta/popups/PollForPartnerLoad”,[“common/trackingStreams”],function(t){var e=function(n,E,r,a,o){n&&setTimeout(function(){var C=null,c=(new Date).getTime()-E.getTime();try{C=n.document}catch(t){}C?c>2e4?t.trackEvent(“COMMERCE_CLICK”,”PROVIDER_TIMEOUT”,r||””,c):n.closed?t.trackEvent(“COMMERCE_CLICK”,”PROVIDER_CLOSED”,r||””,c):e(n,E,r,a,o):t.trackEvent(“COMMERCE_CLICK”,”PROVIDER_LOADED”,(o||window.pageServlet||””)+”|”+(a||””)+”|”+(r||””),c)},100)};return e}); define(“ta/Browser”,[“vanillajs”,”ns-exporter”],function(e,n){var t,r={},i=function(){return navigator.userAgent.indexOf(“MSIE 10.0”)>=0},o=r.isIE11orHigher=function(){return navigator.userAgent.toLowerCase().indexOf(“trident/7.”)>-1||navigator.userAgent.toLowerCase().indexOf(“msie 11.”)>-1};return r.isIE9orHigher=function(){return navigator.appVersion.indexOf(“MSIE 9”)>=0||i()||o()},r.isIE10Metro=function(){return i()&&r.isIEMetro()},r.isIEMetro=function(){var e=null,n=o(),t=n?127:0,r=window.innerWidth==screen.width&&screen.height-window.innerHeight===t;try{e=!!new ActiveXObject(“htmlfile”)}catch(n){e=!1}return!e&&r&&(n||i())},r.isIE=function(){return navigator.userAgent.indexOf(“MSIE”)>=0},r.isChrome=function(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)},r.getFlashVersion=function(){if(“number”!=typeof t){var e;try{e=navigator.plugins[“Shockwave Flash”].description}catch(n){try{e=new ActiveXObject(“ShockwaveFlash.ShockwaveFlash”).GetVariable(“$version”)}catch(e){}}var n=(e||”0 r0″).match(/d+/g);t=Number(n[0]||”0.”+n[1])||0}return t},r.isChromeIncognito=function(e){var n=window.RequestFileSystem||window.webkitRequestFileSystem;return n&&”function”==typeof n?void n(window.TEMPORARY,100,function(){e(“normal”)},function(){e(“incognito”)}):void e(“undetermined”)},n.exportTo(r,”ta.browser”),r}); define(“utils/json-to-url”,[“vanillajs”],function(){“use strict”;return function(n){return n?Object.keys(n).map(function(e){return encodeURIComponent(e)+”=”+encodeURIComponent(n[e])}).join(“&”):””}}); define(“mobile/lite/ajax-request”,[“utils/json-to-url”,”vanillajs”],function(t){function e(t){var e=document.createElement(“a”);return e.href=t,e.protocol!==window.location.protocol||e.host!==window.location.hostname}return function(s,o){“object”==typeof s&&(o=s,s=o.url),o=o||{};var n=o.method||o.type||”GET”,r=”string”==typeof o.data?o.data:t(o.data);return new Promise(function(t,a){var i=new XMLHttpRequest;i.onreadystatechange=function(){this.readyState===XMLHttpRequest.DONE&&(200===this.status?(o.success&&o.success(this.responseText,this.status,i),t(this.responseText)):(o.error&&o.error(i,this.status,this.statusText),a(this.responseText)),o.complete&&o.complete(i,this.statusText))},”get”==n.toLowerCase()&&”string”==typeof r&&r.length>0&&(s+=(“?”==r[0]?””:”?”)+r,r=null),i.open(n,s,!o.synchronous),i.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”),e(s)||i.setRequestHeader(“X-Requested-With”,”XMLHttpRequest”),i.send(r)})}}); define(“utils/cookieutils”,[“vanillajs”,”mobile/lite/ajax-request”],function(t,e){“use strict”;var o=function(t){return”undefined”!=typeof t&&null!==t},n=function(t){return t.replace(/([-.*+?^${}()|[]/\])/g,”\$1″)},i=function(){var t=window.location.host.match(/.tripadvisor..*/);return null!=t?t=t[0]:null},a=function(t,e,n){if(o(n.doNotEscape)&&n.doNotEscape||(e=encodeURIComponent(e)),e+=n.domain?”; domain=”+n.domain:”; domain=”+i(),n.path&&(e+=”; path=”+n.path),n.duration){var a=new Date;a.setTime(a.getTime()+1e3*n.duration),e+=”; expires=”+a.toGMTString()}n.secure&&(e+=”; secure”);var r=”%1%”;o(n.ignoreVersion)&&n.ignoreVersion&&(r=””),document.cookie=t+”=”+r+e};return{addPidToCookie:function(t){o(t)&&0!==t.length&&a(“NPID”,t,{path:”/”,duration:5,ignoreVersion:!0})},roybatty:function(){var t,o=i(),n=window.taSecureToken;if(window.taEarlyRoyBattyStatus)window.taEarlyRoyBattyStatus>1&&ta&&ta.trackEventOnPage&&ta.trackEventOnPage(“early_roy_batty”,”confirm”,””,0,!0);else if(t=this.getCookie(“roybatty”)){var a=t.split(“,”);if(a&&2==a.length){var r=parseInt(a[1],10);document.setCookie(“roybatty”,n+”,”+r,{domain:o,ignoreVersion:!0,path:”/”})}}else document.setCookie(“roybatty”,n+”,1″,{domain:o,ignoreVersion:!0,path:”/”}),e({method:”POST”,url:”/CookiePingback”})},getCookie:function(t){var e=document.cookie.match(“(?:^|;)\s*”+n(t)+”=([^;]*)”);return e?(e=e[1],0===e.indexOf(“%1%”)&&(e=e.substring(3)),decodeURIComponent(e)):null},setCookieInSeconds:a}}); define(“commerce/cookieSetter”,[“vanillajs”,”utils/cookieutils”],function(e,i){function o(){var e=require.defined(“page-model”)&&require(“page-model”);e&&e.session.uid&&i.setCookieInSeconds(n,e.session.uid,{duration:10,ignoreVersion:!0})}var n=”comm_puid”;return o}); define(“commerce/offerclick”,[“ta”,”mixins/mixin”,”commerce/offerclickEvents”,”utils/urlutils”,”utils/stopevent”,”utils/waiton”,”ta/popups/PollForPartnerLoad”,”ta/Browser”,”ta/util/Cookie”,”commerce/cookieSetter”],function(e,t,r,o,i,n,c,a,l,u){“use strict”;function f(e,t){if(“string”!=typeof e)return e;var r=o.asdf(e.trim()).replace(/&/g,”&”);if(“undefined”!=typeof window&&window.crPageServlet&&(r=r.replace(w,”$1from=HotelDateSearch_”+crPageServlet),w.test(r)||(r+=”&from=”+crPageServlet)),”undefined”!=typeof document&&document.location&&document.location.href){var i=o.getUrlPageLoc(document.location.href);i&&(r+=”&pageLocId=”+i)}t&&(r+=”&ra=true”);var n=o.getUrlQueryArgs(r);return r=r.replace(E,””),{url:r,isBooking:r.indexOf(“/StartBooking”)>=0||r.indexOf(“/MobileHotelBookingRoomSelection”)>=0,ttP:n.tp,ttIK:n.ik,ttAOK:n.aok,slot:n.slot,providerName:n.p,ik:n.ik,locId:n.d||n.geo,area:n.area,contentId:n.src_0||n.src,trackingContext:n.btc,selectedPrice:n.priceShown,offerStr:n.gosox||””,openBehavior:n.ob}}function d(e){“function”==typeof e&&P.push(e)}function s(){b=!0}function p(t){return”same_tab”!==t.openBehavior&&((!t.isBooking||!a.isIE10Metro())&&”undefined”!=typeof e)}function m(e,t){t=f(t);var r=window.open(t.url,”_blank”);r||(window.location=t.url),P.forEach(function(r){r(e,t,function(){})}),c(r,new Date,t.providerName,t.slot)}function v(t,r){r=f(r);var o=250;n(P.map(function(e){return e.bind(null,t,r)}),function(){“undefined”!=typeof e&&e.retrieve&&e.retrieve(“ta.isIE11orHigher”)?window.open(r.url,”_self”,null,!1):window.location.href=r.url},o)}function k(t,o,n,c,a,l){if(t&&!c&&i(t),n=f(n,l),b){if(n&&S===n.offerStr)return!1;setTimeout(function(){S=null},1e3),S=n&&n.offerStr}if(r.emit(“beforeClick”,n),e.store&&e.retrieve&&o&&n&&n.ttIK&&n.selectedPrice){var d=e.retrieve(“CLICK_PRICE_DOUBLE_CHECK”);d||(d={}),d[n.ttIK]=String(n.selectedPrice),e.store(“CLICK_PRICE_DOUBLE_CHECK”,d)}return require.defined(“ta/Core/TA.Event”)&&setTimeout(function(){try{require(“ta/Core/TA.Event”).fireEvent(“metaLinkClick”,o,n.isBooking?”TripAdvisor”:n.providerName,n.area,n.locId,n.contentId,”new_tab”,n.slot),n.isBooking&&require(“ta/Core/TA.Event”).fireEvent(“ibOfferClick”,o)}catch(e){require.defined(“ta/util/Error”)&&require(“ta/util/Error”).record(e,”Commerce click tracking failed”,null,{servlet:window.pageServlet,url:n.url,area:n.area})}},300),(!I||!I(n))&&(u(),p(n)?m(o,n):v(o,n),r.emit(“afterClick”,n),!1)}function g(e){I=e}function C(e,t){var r=t.getAttribute(“data-clicktoken”);r&&require([“ta/page”],function(){k(e,t,r)})}var w=new RegExp(“(&|\?)from=[^&]*”),E=new RegExp(“(&|\?)ob=[^&]*”),P=[],I=null,S=null,b=!1,_={expandToken:f,clickEvent:k,compElementClick:C,registerAsyncPreclick:d,setPreClickHandler:g,enableMultiTapPrevention:s};return t(_,r)}); define(“common/page-filters”,[“babel/babel-helpers”,”mixins/mixin”,”mixins/Events”],function(t,e,n){“use strict”;function r(t,e){var n=v[t];return n&&e(n)}function i(t,e,n,r){return v[t]=new e(t,n,r),this}function u(t){return r(t,function(t){return t.isModified()})}function o(e,n){var i=this;r(e,function(r){var u=r.get();r.set(n);var o=r.get();u!==o&&i.emit(“change”,t.defineProperty({},e,{from:u,to:o}))})}function c(e,n){var i=this;r(e,function(r){var u=r.get();r.clearAll(),n.forEach(function(t){return r.set(t)});var o=r.get();u!==o&&i.emit(“change”,t.defineProperty({},e,{from:u,to:o}))})}function s(t){return t?r(t,function(t){return t.get()}):Object.keys(v).reduce(function(t,e){return t[e]=v[e].get(),t},{})}function a(t,e){return!!(t&&e&&Array.isArray(e))&&r(t,function(t){return t.isSelected(e)})}function f(e,n){var i=this;r(e,function(r){var u=r.get();r.clear(n);var o=r.get();u!==o&&i.emit(“change”,t.defineProperty({},e,{from:u,to:o}))})}function l(e){var n=this;if(!e){var i=this.get(),u=Object.keys(v).reduce(function(t,e){var n=v[e];if(!n.excludeClearAll){var r=n.get();n.clearAll(),r!=n.get()&&(t[e]={from:r,to:n.get()})}return t},{});return void(JSON.stringify(i)!==JSON.stringify(u)&&this.emit(“change”,u))}r(e,function(r){var i=r.get();r.clearAll();var u=r.get();i!==u&&n.emit(“change”,t.defineProperty({},e,{from:i,to:u}))})}function h(t,e){return r(t,function(t){return t.parse(e)})}function p(t,e){return r(t,function(t){return t.format(e)})}var v={},d=”,”,y=”#”,g=function(t,e,n){var r=this,i=!1,u=e;this.param=t,this.excludeClearAll=n,this.set=function(t){i=i||u!==t,u=t},this.get=function(){return u},this.clear=function(t){return r.set(“”)},this.clearAll=function(){return r.set(“”)},this.parse=function(t){return t?[t]:[]},this.format=function(t){return t},this.isModified=function(t){return i},this.isSelected=function(t){return t.every(function(t){return u===t})}},m=function(t,e,n){var r=this,i=!1;this.parse=function(t){return”string”!=typeof t?[]:t.split(d).filter(function(t){return””!==t}).map(function(t){return t.split(y)}).filter(function(t){return t.length>0&&””!==t[0]}).map(function(t){return{key:t[0],value:t[1]||””}})},this.format=function(t){return Object.entries(t).map(function(t){return t.join(y)}).join(d)};var u=e?this.parse(e).reduce(function(t,e){return t[e.key]=e.value,t},{}):{};this.param=t,this.excludeClearAll=n,this.set=function(t){return r.parse(t).map(function(t){i=i||!u.hasOwnProperty(t.key)||u.hasOwnProperty(t.key)&&u[t.key]!==t.value,u[t.key]=t.value})},this.get=function(){return r.format(u)},this.clear=function(t){“string”==typeof t&&t.split(d).filter(function(t){return””!==t}).map(function(t){u.hasOwnProperty(t)&&(i=i||u.hasOwnProperty(t),delete u[t])})},this.clearAll=function(){return u={}},this.isModified=function(t){return i},this.isSelected=function(t){return t.every(function(t){return u.hasOwnProperty(t.key)&&u[t.key]===t.value})}},O=function(t,e,n){var r=!1;this.parse=function(t){return t.split(d).filter(function(t){return!!t})},this.format=function(t){return t.join(d)};var i=e?this.parse(e).reduce(function(t,e){return t[e]=!0,t},{}):{};this.param=t,this.excludeClearAll=n,this.set=function(t){var e=t.split(“,”);for(var n in e)if(e.hasOwnProperty(n)){var u=e[n];r=r||!i.hasOwnProperty(u),i[u]=!0}},this.get=function(){return Object.keys(i).join(d)},this.clear=function(t){var e=t.split(“,”);for(var n in e)if(e.hasOwnProperty(n)){var u=e[n];r=r||i.hasOwnProperty(u),delete i[u]}},this.clearAll=function(){r=r||Object.keys(i).length>0,i={}},this.isModified=function(t){return r},this.isSelected=function(t){return t.every(function(t){return i.hasOwnProperty(t)&&i[t]})}},A=function(t,e,n){var r=this;this.parse=function(t){},this.format=function(t){return””};var i=!1;this.param=t,this.excludeClearAll=n,this.set=function(t){return i=!0},this.get=function(){return null},this.clear=function(t){i&&(P.emit(“cleared-“+r.param),i=!1)},this.clearAll=function(){return r.clear(null)},this.isModified=function(t){return!1},this.isSelected=function(t){return!1}},P=e({SingleValueFilter:g,MultiValueFilter:O,FauxFilter:A,KeyValueFilter:m,register:i,set:o,isModified:u,setAll:c,get:s,isSelected:a,clear:f,clearAll:l,parse:h,format:p},new n(“change”));return P}); define(“sponsoredlisting/HotelsSponsoredListingPolling”,[“vanillajs”,”ta/Core/TA.FireEvent”],function(e,r){function s(e){e.removeAjaxParams([n]),r.fireEvent(“hotels.sponsored_listings_refreshed”)}var n=”sl_candidate_map”,o=function(e,r,s){var o,a,i=e.getAjaxParams()[n];o=i?JSON.parse(i):{};for(a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);var t={};t[n]=JSON.stringify(o),e.setAjaxParamsNoPollForSP(t),s&&e.setNotDone()};return{updateSponsoredListingAjaxParam:o,refreshSponsoredListings:s}}); define(“hotels/ListFilters”,[“babel/babel-helpers”,”common/page-filters”,”sponsoredlisting/HotelsSponsoredListingPolling”],function(e,r,t){function o(e){if(!e)return!0;var t=Object.keys(e);return 0===t.length||t.some(function(t){return!r.isSelected(t,e[t])})}function n(){var e=r.get(),t=Object.keys(e).filter(function(r){return e[r]}).map(function(r){return r+”=”+e[r]});return t.join(“&”)}function i(e,i){function l(){var e=i.reloadUrl&&window.location.pathname!==i.reloadUrl&&o(i.urlFilters);if(e){if(“REDIRECT”===i.reloadUrlBehavior){var r=i.reloadUrl.indexOf(“?”)>=0?”&”:”?”,t=n(),l=””+i.reloadUrl+r+t;window.location=l}else”REPLACE”===i.reloadUrlBehavior?window.history&&window.history.replaceState&&window.history.replaceState(i.reloadUrl,””,i.reloadUrl):window.history&&window.history.pushState&&window.history.pushState(i.reloadUrl,””,i.reloadUrl);return i.reloadUrlBehavior}return null}function a(){for(var o=r.get(),n={offset:0},a=[“cat”,”zff”],s=0;s0?”-“+w.join(“-“)+”-“:””;window.__REDUX_STORE__.dispatch({type:”SET_FILTERS”,filters:p})}}i.filtersInit.forEach(function(e){var t=”multi”===e.type?r.MultiValueFilter:r.SingleValueFilter;r.register(e.name,t,e.value,”true”===e.excludeFromClearAll)}),r.on(“change”,a)}return{init:i}}); define(“hotels/DatePickerUrlParamsBuilder”,[],function(){“use strict”;function t(t){return t<10?"0"+t:t}function e(e){return(e.getFullYear()+t(e.getMonth()+1)+t(e.getDate())).toString()}function n(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e.join("&")}function o(){var t=ta.page.guests.getAdults(),n=ta.page.guests.getRooms(),o=ta.page.guests.getChildRoomAges(),a=o&&o.length?o.split(/[,:]/).length:0,i=ta.page.hasDates("CHECKIN")?e(ta.page.getDates("CHECKIN")[0]):"default",c=ta.page.hasDates("CHECKOUT")?e(ta.page.getDates("CHECKOUT")[0]):"default",r={checkin:i,checkout:c,rooms:n,adults:t,children:a};return r}function a(t){var e=document.getElementsByClassName("btn_confirm");e.length>0&&e[0].addEventListener(“click”,function(){window.location&&(window.location=window.location.pathname+”?”+n(t))});var o=document.getElementById(“SEARCH_HOTELS”);o&&o.addEventListener(“click”,function(){window.location&&(window.location=window.location.pathname+”?”+n(t))})}function i(){var t=o();”function”==typeof window.history.replaceState&&window.location&&window.history.replaceState(o(),”date change”,window.location),a(t)}function c(){var t=o();”function”==typeof window.history.replaceState&&window.location&&window.history.replaceState(t,”date change”,window.location.pathname+”?”+n(t))}function r(t,e,n){return t.addEventListener?(t.addEventListener(e,n,!1),!0):t.attachEvent?t.attachEvent(“on”+e,n):void n()}function d(){window.location&&(window.location=window.location.pathname+”?”+n(o()))}function l(){var t=document.querySelector(“#TRIP_PLANNER”);t&&t.classList.add(“collapsed”);var e=768,n=window.innerWidtho,i=e.currentBreakpoints(),f=r(u,i,t);f.forEach(function(n){var e=t?”over-“:”under-“;c.emit(e+n)}),f.length&&c.emit(“breakpoint”,i[0]),u=i,o=n}}var o=document.documentElement.clientWidth,u=e.currentBreakpoints(),f=[“breakpoint”];e.breakpoints.forEach(function(n){f.push(“over-“+n,”under-“+n)});var c=n.create(f);return c.onOver=function(n,e){c.on(“over-“+n,e)},c.onUnder=function(n,e){c.on(“under-“+n,e)},c.offOver=function(n,e){c.off(“over-“+n,e)},c.offUnder=function(n,e){c.off(“under-“+n,e)},window.addEventListener(“resize”,t(i,100)),c}); define(“responsive/breakpoint-tracker”,[“babel/babel-helpers”,”common/trackingStreams”,”utils/ResponsiveEvents”,”utils/responsive”,”vanillajs”],function(e,n,t,i){“use strict”;function r(e){var t=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,r=”mobile”===e?320:i.widths[e];n.trackEvent(“Breakpoint”,r,t)}function o(){s||(r(i.currentBreakpoints()[0]),t.on(“breakpoint”,r),s=!0)}var s=!1;return{init:o}}); define(“tracking/preload-handler”,[“vanillajs”],function(e){“use strict”;function n(){r.mcid&&require([“trjs!utils/cookieutils”],function(e){e.setCookieInSeconds(“MC”,r.mcid,{}),r.landingPage&&e.setCookieInSeconds(“LP”,r.landingPage,{}),r.lastReferrer&&e.setCookieInSeconds(“LP”,r.lastReferrer,{})}),require([“trjs!ta/util/ActionRecord”],function(e){e.recordPlus(“PAC”,{data:{pac:r.mcid,pac_lp:r.landingPage,pac_ref:r.lastReferrer}},{action:r.landingPage,context:r.lastReferrer})}),window.removeEventListener(“click”,n),window.removeEventListener(“scroll”,n)}function i(e){e&&(r=e,window.addEventListener(“click”,n),window.addEventListener(“scroll”,n))}var r;return{init:i}}); define(“ta/util/trackHistoryInject”,[“common/trackingStreams”],function(t){return function(){window.history&&window.history.state&&(window.history.state.fromBackClick&&(delete window.history.state.fromBackClick,t.trackEventOnPageOnce(“commerce_history_injection”,”back_button_clicked”)),window.history.state.fromBABackClick&&(delete window.history.state.fromBABackClick,t.trackEventOnPageOnce(“ba_history_injection”,”back_button_clicked”)))}}); define(“maps/v3/baselineShims/mapStateControllerShim”,[“babel/babel-helpers”,”common/trackingStreams”],function(e,r){“use strict”;var n=null,t=new Promise(function(e){return n=e}),o=!1,l={waitForModule:function(){return t},resolve:function(e){return o?void r.error(“Resolved multiple mapStateController modules”):(n(e),void(o=!0))}};return l}); define(“maps/v3/MapsPollingOpenState”,[“babel/babel-helpers”,”maps/v3/baselineShims/mapStateControllerShim”],function(e,n){“use strict”;function t(){return a()?{mapOpened:!0}:{}}function a(){return r&&r.mapHasOpened||”#MAPVIEW”===window.location.hash}var r=null;return n.waitForModule().then(function(e){return r=e.forMap(document.querySelector(“.listMapContainer”))}),{getMapOpenedData:t}}); define(“common/poll-tracker”,[“babel/babel-helpers”,”mixins/mixin”,”mixins/Events”],function(n,t,e){“use strict”;function r(n){return n.reduce(function(n,t){return n.concat(t)})}function l(n){return n.pollGroups[n.pollGroups.length-1]}function u(n,t){for(var e=n.pollGroups.length-1;e>=0;e–){var r=n.pollGroups[e][t-1];if(r)return r}return null}function o(n){for(var t=0;t=200&&u.status0&&(r.error&&r.error(u,this.status,this.statusText),c(this.responseText)),r.complete&&r.complete(u,this.statusText))},”get”===o.toLowerCase()&&”string”==typeof a&&a.length>0&&(e+=(“?”===a[0]?””:”?”)+a,a=null),u.open(o,e,!r.synchronous),s(e,u,r),u.send(a)})}}); define(“common/metric-recorder”,[“babel/babel-helpers”,”ajax-request”],function(e,r){return function(e){return r({“method”:”POST”,”url”:”/MetricsAjax”,”x-requested-by”:require(“page-model”).JS_SECURITY_TOKEN,”data”:”metricsData=”+encodeURIComponent(JSON.stringify(e))})}}); define(“servlets/smartdeals”,[“utils/objutils”,”mixins/page-dates/DateEvents”,”mixins/page-dates/Responsive”,”mixins/page-guests/Guests”,”ta/Core/TA.FireEvent”,”ta/common/Repoll”,”ta/Core/TA.Store”,”common/trackingStreams”,”mixins/mixin”,”commerce/offerclick”,”commerce/offerclickEvents”,”mobile/lite/image-loader”,”hotels/ListFilters”,”hotels/DatePickerUrlParamsBuilder”,”amdloaders”,”responsive/breakpoint-tracker”,”tracking/preload-handler”,”sponsoredlisting/HotelsSponsoredListingPolling”,”ta/util/trackHistoryInject”,”maps/v3/MapsPollingOpenState”,”common/poll-tracker”,”common/metric-recorder”],function(e,t,n,a,i,s,r,o,l,c,d,u,p,m,g,T,f,h,S,E,v,A){“use strict”;function _(e){if(!C){l(this,t),l(this,new n(e.pageDates,e.calendar)),l(this,new a(e.pageGuests)),C=this,U=new Promise(require.bind(null,[“trjs!servlets/responsivesem-pl”])).then(function(t){return t.init(e),t}),U.then(g.activate.bind(g)),r.store(“batch_garecord”,!0),r.store(“allowSamePageClickWithoutTrackingTree”,!0),S();var o=this.gatherDates;this.gatherDates=function(){var e=Array.prototype.slice.call(arguments),t=this;U.then(function(){return o.apply(t,e)})};var h=e.repollOptions||{evaluateScripts:!0};if(e.trackPollingMetrics){var E=h.tracker=new v(“smartdeals”);E.on(“pollRecorded”,function(e){var t=e.end-e.start;A([{name:”sd_poll”,value:t,labels:[require(“page-model”).GEO_ID]}])})}w=new s(h),i.on(“page-repoll-failed”,R);var _=C.onDatesSelected;C.onDatesSelected=function(e,t,n){_(e,t,n),C.hasDates(“STAYDATES”)&&O()},d.on(“afterClick”,function(e){require([“trjs!ta/common/behavior/Ads-pagemoniker”],function(t){t.loadClickoutMonikers({locId:e.locId,isMetaCheckRates:!0,contentId:e.contentId,selectedPrice:e.selectedPrice,offerStr:e.offerStr})})}),e.preventOfferclickMultiTaps&&c.enableMultiTapPrevention(),f.init(e.preloadData),e.needPoll&&w.setNotDone(),i.on(“page-polling-complete”,function(){U.then(function(e){w.isUpdatePending()||e.onPollingComplete()})}),e.gatingATFEnabled&&e.softGateV4Enabled?(F=!0,m.initSearchAndUpdateButtonBehavior(m.updateUrl)):e.gatingATFEnabled&&!e.softGateV4Enabled?m.initSearchAndUpdateButtonBehavior(m.handleOnClick):!e.gatingATFEnabled&&e.softGateV4Enabled&&m.pushToUrlOnDateChange(),P(),p.init(w,e),u.init(200),T.init()}return C}function P(){i.on(“hotels.sponsored_listing_updated”,function(e,t){h.updateSponsoredListingAjaxParam(w,e,t)})}function D(e){window&&window.__REDUX_STORE__&&window.__REDUX_STORE__.dispatch(e)}function O(){var t=e.extend({},C.guests.toQueryJson(),C.datesToQueryJson(“STAYDATES”));h.refreshSponsoredListings(w),w.setOneTimeParams(M(t),[“TRAVEL_INFO”]),F?t&&D({type:”SET_HOTELS_DATES_GUESTS”,stayDates:t.staydates,guests:t.uguests}):(C.emit(“newPageTravelInfo”),t&&D({type:”SET_HOTELS_DATES_GUESTS”,stayDates:t.staydates,guests:t.uguests}))}function R(){}function k(){return w.isUpdatePending()}function y(){w.setOneTimeParams(M({}),[“MAIN_META”])}function L(e){e&&(h.refreshSponsoredListings(w),w.setOneTimeParams(M({sortOrder:e}),[“MAIN_META”,”SORT_ORDER”]))}function I(){w.setOneTimeParams(M({}),[“FILTERS”,”CATEGORY”])}function b(e){e.searchRequestType=”proximity”,w.setAjaxParams(M(e),[“FILTERS”,”MAIN_META”])}function x(){var e={searchRequestType:”geo”},t=[“centerLat”,”centerLng”,”searchRadius”,”minLat”,”maxLat”,”minLng”,”maxLng”];w.removeAjaxParams(t),w.setAjaxParams(M(e),[“FILTERS”,”MAIN_META”])}function M(t){return e.extend({},t,E.getMapOpenedData())}var w,U,C=void 0,F=!1;return{init:_,isUpdatePending:k,refreshPrices:y,processNewTravelInfo:O,setSortOrder:L,loadFilters:I,changeRequestTypeToProximity:b,changeRequestTypeToGeo:x}}); define(“utils/classnameUtils”,[“vanillajs”],function(){function s(s){return e[s]?e[s].lastIndex=0:e[s]=new RegExp(“(\s|^)”+s+”(\s|$)”,”g”),e[s]}var a={},e={};return a.hasClass=function(a,e){return!!a&&(a.classList?a.classList.contains(e):s(e).test(a.className))},a.addClass=function(s,e){s&&e&&(s.classList?s.classList.add(e):a.hasClass(s,e)||(s.className+=” “+e))},a.removeClass=function(a,e){a&&e&&(a.classList?a.classList.remove(e):a.className=a.className.replace(s(e),” “))},a.toggleClass=function(s,e,n){s&&(n||void 0===n&&!a.hasClass(s,e)?a.addClass(s,e):a.removeClass(s,e))},a.getParentByClassname=function(s,e){for(var n=s&&s.parentNode;n;n=n.parentNode)if(a.hasClass(n,e))return n;return null},a}); define(“dynamic-placement/loader”,[“babel/babel-helpers”,”ajax-request”,”page-model”,”utils/to-array”,”amdloaders”],function(e,t,a,r,n){“use strict”;function l(e){var t=document.createElement(“div”);t.innerHTML=e;var a=r(t.querySelectorAll(“style, link, script”)).reduce(function(e,t){return e[“STYLE”===t.tagName||”LINK”===t.tagName?”styles”:”scripts”].push(t),t.parentNode.removeChild(t),e},{styles:[],scripts:[]});return Object.assign(a,{html:t.innerHTML})}var s=1e4;return function(e,r){return t({url:”/DynamicPlacementAjax”,data:Object.assign({placementRollUps:e,geo:a.GEO_ID,detail:a.LOC_ID,occOffset:s++,updateType:”full”,metaReferer:a.session.pageServlet},n.getLoadedFilesParams(),r)}).then(l)}}); define(“dynamic-placement/dom-renderer”,[“babel/babel-helpers”,”amdloaders”],function(e,n){“use strict”;return function(e){return function(r){var t=r.scripts,l=r.styles,s=r.html;return n.installStyles(l),e.innerHTML+=s,n.installScripts(t)}}}); define(“maps/v3/map-loader”,[“babel/babel-helpers”,”dynamic-placement/loader”,”dynamic-placement/dom-renderer”],function(e,n,r){“use strict”;function a(){return o||(o={},o.promise=new Promise(function(e){o.resolve=e})),o}function t(e){s&&l&&a().resolve(e.querySelector(“.mapContainer”))}var o=null,l=!1,s=!1;return{waitForMap:function(){return a().promise},resolveBaseMapPlacement:function(e){l=!0,t(e)},resolveMapPageContainer:function(e){s=!0,t(e)},createMap:function(e,a,t){n(e,{servletName:a.servletName,servletClass:a.servletClass}).then(r(t))}}}); define(“maps/v3/models/eventTypes”,[“babel/babel-helpers”,”utils/objutils”],function(e,E){“use strict”;var n={PIN_CLICK:”pinClick”,PIN_HOVER_START:”pinHoverStart”,PIN_HOVER_END:”pinHoverEnd”,PIN_INTENT_HOVER:”pinHoverLong”,PIN_UPDATED:”pinUpdated”},t={CLICK:”mapClick”,CENTER_CHANGE:”centerChange”,PAN_START:”panStart”,ZOOM_CHANGE:”zoomChange”,RENDER_COMPLETE:”renderComplete”},R={PRERENDER:”preRender”,RENDER:”render”,POSTRENDER:”postRender”,BEFORE_CLOSE:”beforeClose”,CLOSE:”close”,AFTER_CLOSE:”afterClose”,LOAD_CONTENT_START:”loadContentStart”,CONTENT_RECEIVED:”contentReceived”,CONTENT_FAILED:”contentFailed”,LOAD_CONTENT_END:”loadContentEnd”,LOADING_START:”loadingStart”,LOADING_END:”loadingEnd”,REFRESH_CONTENT:”refreshContent”,DIMENSIONS_RESIZE:”dimensionsResize”,SIZE_CHANGE_REQUESTED:”sizeChangeRequested”,REDO_SEARCH_REQUESTED:”redoSearchRequested”,PIN_DATA_REQUESTED:”pinDataRequested”,DEMAND_LOAD_REQUESTED:”demandLoadRequested”,PIN_SELECTION_CHANGED:”pinTypeChanged”},C={CAROUSEL_CARD_SELECTED:”carouselCardSelected”},N=[];E.each(n,function(){N.push(this)}),E.each(t,function(){N.push(this)});var _={pin:n,map:t,state:R,providerEvents:N,external:C};return E.deepFreezeCopy(_)}); define(“maps/v3/mapStateController”,[“babel/babel-helpers”,”mixins/Events”,”utils/objutils”,”maps/v3/models/eventTypes”,”maps/v3/baselineShims/mapStateControllerShim”],function(n,t,e,i,a){“use strict”;function s(n){for(var t in n)if(n.hasOwnProperty(t)&&n[t])return!1;return!0}function o(n,t){return n+”:”+t}function p(){var n=this,i=new t(m),a={};this.on=i.on.bind(i),this.off=i.off.bind(i),this.emit=i.emit.bind(i),this.initialOpenMapOptions=null,this.loadingContent=!1,this.autoscaleEnabled=!0,this.autoscalingNow=!1,this.mapOpen=!1,this.cacheBustValue=null,this.mapHasOpened=!1,this.pinsShown=!1,this.openMap=function(t){t?n.initialOpenMapOptions=Object.assign({},n.initialOpenMapOptions,t):t=e.extend({},n.initialOpenMapOptions),n.mapHasOpened||(n.mapHasOpened=!0,t.refreshPrices=!0,n.emit(O.LOADING_START,t)),n.emit(O.PRERENDER,t),n.emit(O.RENDER,t),n.mapOpen=!0,n.emit(O.POSTRENDER,t)},this.closeMap=function(t){n.emit(O.BEFORE_CLOSE,t),n.emit(O.CLOSE,t),n.emit(O.AFTER_CLOSE,t),n.mapOpen=!1},this.toggleMap=function(t,e){“undefined”==typeof e&&(e=!n.mapOpen),e?n.openMap(t):n.closeMap(t)},this.on(O.LOAD_CONTENT_START,function(t,e){a[o(t,e)]=!0,n.loadingContent||(n.loadingContent=!0,n.emit(O.LOADING_START))}),this.on(O.LOAD_CONTENT_END,function(t,e){delete a[o(t,e)],n.loadingContent&&s(a)&&(n.loadingContent=!1,n.emit(O.LOADING_END,t,e))})}var O=i.state,l=e.deepFreeze({MAP_INIT:”mapInit”,DEMAND_LOAD_ON_INIT:”demandLoadOnInit”,PINS:”pins”,ROUTE:”route”}),r={},m=[];e.each(O,function(){m.push(this)});var u={forMap:function(n){if(r[n])return r[n];var t=new p;return r[n]=t}};return u.EVENT=O,u.CONTENT_TYPE=l,a.resolve(u),u}); define(“utils/HistoryManager”,[],function(){“use strict”;function t(){function t(){return(new Date).getTime()+””+Math.random()}function i(t){var i=t.state;if(!a&&i&&i.id){var e=i.id,s=n[e];s&&s(i.data)}}var n={},e={},a=!1;this.pushState=function(i,e,a,s){var r=t();n[r]=s,i.id=r,history.pushState(i,e,a)},this.replaceState=function(i,e,a,s){var r=t();n[r]=s,i.id=r,history.replaceState(i,e,a)},this.addCallback=function(t,i){e[t]||(e[t]=[]),e[t].push(i)},this.removeCallback=function(t,i){if(e[t]){var n=e[t].indexOf(i);n>=0&&e[t].splice(n,1)}},this.doCallbacks=function(t){e[t]&&e[t].each(function(t){t()})},this.isSupported=function(){return”undefined”!=typeof history&&”pushState”in history},this.disableCallbacks=function(t){a=t},window.addEventListener(“popstate”,i)}return t}); require([“ta/p13n/placements”],function(e){var t=e.define.bind(e,”dh_sort_filter_entry”,”handlers”,[“handlers”,”tablet/tablet”,”trcss!tablet/tablet”]);t([“babel/babel-helpers”,”placement”,”ta/page”,”ta/Core/TA.FireEvent”,”common/trackingStreams”,”common/page-filters”,”common/Radio”,”ta/prwidgets”,”utils/classnameUtils”,”maps/v3/map-loader”,”maps/v3/mapStateController”,”utils/HistoryManager”],function(e,t,r,o,l,a,n,i,s,c,d,u){function p(e){e&&(A.innerHTML=e.innerHTML,i.initWidgets(A),R=null)}function v(e,t){e&&t&&(t.innerHTML=e.innerHTML)}function m(e,t){var r=t&&t.querySelectorAll(“.toggle:checked”);v(e,t),r&&r.forEach(function(e){var t=document.getElementById(e.id);t&&(t.checked=!0)})}function b(e,t){if(!t||t.className.match(D))return!1;var r=t.getAttribute(“data-sortOrder”);if(r){f(r);var o=A.querySelector(“.sort-summary”),l=t.getAttribute(“data-label”);o&&l&&(o.innerHTML=l),x&&x.hide()}}function f(e){if(e){var t=window.location.pathname;t&&t.indexOf(L)>0&&(T.replaceState({},document.title,t.replace(L,””)),r.setRepollPageUrl(window.location.href)),r.setSortOrder(e);var o=A.querySelector(“.sort_dropdown”);if(o){var a=o.getAttribute(“data-url”);a&&window.location.href.indexOf(a)<0&&T.pushState({data:0},"",a)}l.trackEvent("sort_h","click",e);var n=Array.prototype.slice.call(A.querySelectorAll(".sort_option")),i=Array.prototype.slice.call(N.querySelectorAll(".sort_option"));n.concat(i).forEach(function(t){var r=t.className,o=r.replace(D,"");t.getAttribute("data-sortOrder")===e&&(o+=" active"),r!==o&&(t.className=o)})}}function h(e,t){var r=t.className;if(!r.match(I))return l.trackEvent("List_sort","click_open"),t.className=r+" loading",j.emit("openSort"),H?void require(["babel/babel-helpers","lib/jquery-amd","overlays/Overlay","overlays/position/fullscreen","overlays/styles/windowshade","overlays/styles/tray","overlays/options/closeOnWindowshadeClick","overlays/options/slideInOut"],function(e,o,l,a,n,i,s,c){t.className=r,x||(x=new l(E,a(),new i(null,null,"",null,null,N),n("dark",null,"fade_short"),c("from_bottom",500,100),s)),x.show(),o(N).find(".sort_option .toggle:checked").prop("checked",!1)}):void require(["babel/babel-helpers","lib/jquery-amd","utils/responsive","utils/ResponsiveEvents","overlays/Overlay","overlays/position/fullside","overlays/styles/windowshade","overlays/options/keepInDom","overlays/styles/modal","overlays/options/closeOnWindowshadeClick","overlays/options/slideInOut"],function(e,o,l,a,n,i,s,c,d,u,p){t.className=r,x||(x=new n(E,i.right(),new d(null,null,"collapsed_content",null,null,N),s("dark"),p("from_right"),u)),x.show()})}function y(e,t,r){var o=t.className;o.match(I)||(j.emit("openFilters"),t.className=o+" loading",require(["babel/babel-helpers","trjs!responsive/collapsibleLayout"],function(e,l){t.className=o,l.toggle(r).then(function(e){return e&&O.trigger("resize")})}),l.trackEvent("Filter_overall","in_view"))}function w(e,t){var r=t.getAttribute("data-param"),o=t.getAttribute("data-value"),l=t.getAttribute("data-tracker"),n=t.getAttribute("data-index");return r&&o&&(a.clear(r,o),C.trigger("externalClear",{paramName:r,value:o}),l&&require(["babel/babel-helpers","trjs!common/track-filter","trjs!common/filters-helper"],function(e,t,o){t(o.getFilterNameFromParam(r),"unselect_cloud",l,n)}),t.parentNode.removeChild(t)),!1}function g(e,t,r,o){if(l.trackEvent("sort_h",o?"hover_dropdown":"hover",r),H&&o){if(F[r])return void F[r].show();require(["babel/babel-helpers","trjs!overlays/Overlay","trjs!overlays/position","trjs!overlays/styles/tooltip","trjs!overlays/options/closeOnMouseAway","trjs!overlays/options/maxWidth"],function(e,o,l,a,n,i){var s=t&&t.querySelector(".content");s&&(F[r]=new o(t,[a(t,"left","light",s.innerHTML),l.left([t.parentElement]),i(200),n]),F[r].show())})}else require(["babel/babel-helpers","trjs!overlays/uiOverlay"],function(r,o){o(e,t)})}function _(e){require(["babel/babel-helpers","overlays/uiOverlay"],function(t,r){r(null,e)})}function k(e,t){R||require(["babel/babel-helpers","forms/select"],function(e,r){R=new r.Select,R.on("change",function(e){f(e)}),R.on("open",function(){F={},l.trackEvent("sort_h","dropdown_click","")}),R.init(t,!1,"div",!0)})}function q(e){"clear"===e.target.className&&(require(["babel/babel-helpers","trjs!common/track-filter"],function(e,t){t("overall_clear","unselect_link","clear_all",0)}),a.clearAll(),C.trigger("externalClearAll"))}function S(e,t,r,o){l.trackEvent("sort_h",o?"hover_dropdown":"hover",r)}var E=document.querySelector("#"+t.id),A=document.querySelector("#"+t.id+" .sort_filter_bar"),N=document.querySelector("#"+t.id+" .sort-flyout"),O=new n("web-component-price-slider"),C=new n("web-component-data-bridge"),j=new n("hotels-sort-filter-entry"),M="withDescHeaders",T=new u,H=!!document.querySelector("[data-sort-redesign]"),L="-jdistLow",F={},x=void 0,R=void 0,D=/ *bactiveb/,I=/ *bloadingb/;return o.on("update-"+t.name,p),o.on("update-"+t.name+"-mw-header",function(e){return v(e,document.querySelector("#"+t.id+" .mobile-header"))}),o.on("update-"+t.name+"-flyout",function(e){return m(e,N)}),s.hasClass(A,M)&&c.waitForMap().then(function(e){var r=d.forMap(e),o=".sort_filter_bar.withDescHeaders",l=".mobile-header .descriptive_header_text";r.on(d.EVENT.RENDER,function(){var e=document.querySelector("#"+t.id+" "+o),r=document.querySelector("#"+t.id+" "+l);s.addClass(e,"is-hidden-desktop"),s.addClass(r,"is-hidden")}),r.on(d.EVENT.CLOSE,function(){var e=document.querySelector("#"+t.id+" "+o),r=document.querySelector("#"+t.id+" "+l);s.removeClass(e,"is-hidden-desktop"),s.removeClass(r,"is-hidden")})}),{clickSort:b,openSort:h,removeFilter:w,openFilters:y,hoverTooltip:g,trackClickMobileTooltip:S,showMobileOptionModal:_,initSelect:k,descriptiveHeaderClick:q}})}); require(["ta/p13n/placements"],function(e){var t=e.define.bind(e,"dh_sort_filter_entry_wc_bridge","handlers",["handlers"]);t(["babel/babel-helpers","placement","ta/page","common/Radio","ta/Core/TA.Event"],function(e,t,r,a,n){var i=document.getElementById(t.id),u=a("web-component-data-bridge"),l="data-descriptive-header",o="data-empty-list-alert",s="data-highlight-all",c="data-sort-options",d="data-current-sort",g="data-urgency-messaging",p="data-urgency-messaging-variant",y="data-is-small-geo",b="data-availability-rate",m=function(){var e=i.querySelector("["+l+"]").innerHTML,t="true"===i.querySelector("["+o+"]").getAttribute(o),r="true"===i.querySelector("["+s+"]").getAttribute(s),a=i.querySelector("["+c+"]").getAttribute(c),n=i.querySelector("["+d+"]").getAttribute(d),m=a&&JSON.parse(a),S=n&&JSON.parse(n),_=i.querySelector("["+g+"]").innerHTML,f=parseInt(i.querySelector("["+g+"]").getAttribute(p),10)||0,h="true"===i.querySelector("["+g+"]").getAttribute(y),q=parseInt(i.querySelector("["+g+"]").getAttribute(b),10)||0;u.reply("desc_header_text",function(){return{descHeaderText:e,emptyListAlert:t,highlightAll:r}}),u.reply("sort_options_ext",function(){return m}),u.reply("cur_sort_ext",function(){return S&&S.sortOrder}),u.reply("urgency_message_info",function(){return{urgencyMessagingVariant:f,geoName:_,isSmallGeo:h,availabilityRate:q}})},S=function(e){e&&e.innerHTML&&(i.querySelector(".update").innerHTML=e.innerHTML,m(),e.classList.contains("filters-update-speedup")||u.trigger("update"))};return m(),u.trigger("update"),n.on("update-"+t.name,S),{}})}); require(["ta/prwidgets"],function(e){var t=e.define.bind(e,"common_standard_pagination_resp","handlers",["handlers"]);t(["widget","ta/page","common/trackingStreams","utils/HistoryManager"],function(e,t,r,a){function n(t){return t=t||e.element.querySelector(".standard_pagination"),t&&t.getAttribute("data-trackingString")||"UNKNOWN_PAGINATION"}function i(e,t,r){s&&s.isSupported()&&e&&t&&s.pushState({data:r},"",t,l)}function o(a,o,d,u,c,l,s){r.trackEvent(n(),u,c,0);var f=0,g=e.element.querySelector("[data-scrollToTop]");if(!g&&require.defined("lib/jquery-amd")){var m=require("lib/jquery-amd")("#MAIN");f=m&&m.offset()?m.offset().top:f}return t.setPageOffset(d,f),i(l,s,d),!1}function d(t,a,i){if(a&&a.href){var o=e.element.querySelectorAll("[data-trackingString]")[0];o&&r.setEvtCookie(n(o),"click_pagination",i,0,a.href)}}function u(){var t=e.element.querySelector(".standard_pagination");if(t){var r=Number(t.getAttribute("data-numPages")),a=n(t),i=a+"_loaded",o=!f.tracked[i];o&&r&&(f.tracked[i]=!0,require(["trjs!ta/util/Element"],function(e){e.trackWhenScrolledIntoView(t,[a+"_VISIBLE","numPages",r,0])})),document.addEventListener("modalClosingEvent",function(){g=!0}),c()}}function c(){var t=e.element.querySelector(".standard_pagination");if(t&&t.getAttribute("data-updateHistory")&&"true"===t.getAttribute("data-updateHistory")&&(s=new a,s.isSupported())){var r=t.querySelector(".current")&&t.querySelector(".current").getAttribute("data-offset");r&&s.replaceState({data:r},document.title,window.location.href,l)}}function l(e){return g?void(g=!1):e?void t.setPageOffset(e):void t.setPageOffset(0)}var s,f=this,g=!1;return f.tracked=f.tracked||{},u(),{"changeMainPage":o,"trackPageClick":d}}.bind({}))}); require(["ta/p13n/placements"],function(e){var t=e.define.bind(e,"hotels_leaf_geo_list","handlers",["handlers"]);t(["placement","common/trackingStreams","common/Radio"],function(e,t,a){function n(e,a){if(a&&a.href){var n=a.getAttribute("data-geoId");t.setEvtCookie("hotels_leaf_geo_list_broad","click",n,0,a.href),l&&t.trackEvent("vp_broad_geo","click",n)}}function o(e){r.classList.toggle("is-hidden-mobile",e)}var i=document.getElementById(e.id),r=i.querySelector(".leaf_geo_list_wrapper"),c=r.hasAttribute("data-hide-on-map-open"),l=r.hasAttribute("data-is-vacation-package-servlet");if(c){var s=new a("h-map");s.on("hide-bg-leaf-placement",function(){o(!0)}),s.on("show-bg-leaf-placement",function(){o(!1)})}return l&&t.trackEvent("vp_broad_geo","seen"),{trackGeoLinkClick:n}})}); define("hotels/monitoring/listHealth",["babel/babel-helpers"],function(e){"use strict";function t(e){var t=document.querySelector(e);return t&&t.dataset||require(["babel/babel-helpers","trjs!ta/util/Error"],function(t,r){r.record(null,"list health monitoring failed due to no placement data for selector: "+e)}),t}function r(e,t,r){var o="true"===r.dataset.is_ajax?"ajax":"pageload",l=r.dataset.hotel_page_type;require(["babel/babel-helpers","trjs!common/metric-recorder"],function(r,n){n([{name:e,value:1,labels:[t,o,l].concat(a)}])})}var a=["","",""];return{getMonitorModelFromSelector:t,recordMetric:r}}); require(["ta/p13n/placements"],function(e){var t=e.define.bind(e,"hotels_list_monitoring","handlers",["handlers"]);t(["babel/babel-helpers","placement","ta/Core/TA.FireEvent","hotels/monitoring/listHealth"],function(e,t,n,r){"use strict";function o(){var e=r.getMonitorModelFromSelector("#hotel_list_monitoring_data");e&&e.dataset&&r.recordMetric(l,i(e.dataset.empty_expected),e)}function i(e){var t=document.querySelectorAll("[data-mlv]");return(!t||t.length<=0)&&"empty_expected"!==e?"empty_error":"list_healthy"}function a(e){var n=document.getElementById(t.id);n.innerHTML=e.outerHTML,setTimeout(o,200)}var l="hotel_listing_state";o(),n.on("update-"+t.name,a)})}); define("utils/resize-invalidated-cache",["babel/babel-helpers"],function(e){"use strict";var t="__resize-cache",n=Date.now();return window.addEventListener("resize",function(){return n=Date.now()}),function(e){var a=e[t];return(null==a||a.timestamp0){var t={},l=n.querySelectorAll(".ajax_preserve, .ajax_preserve_noreplace");Array.prototype.forEach.call(l,function(e){var n=e.getAttribute("data-ajax-preserve");n&&(t[n]=e)}),Array.prototype.forEach.call(a,function(n){var r=t[n.getAttribute("data-ajax-preserve")];r&&e(r,n)})}}}var n={};return n.copy=e.bind(null,function(e,n){n.parentNode&&n.parentNode.replaceChild(e,n)}),n.innerCopy=e.bind(null,function(e,n){n.innerHTML=e.innerHTML}),n.replaceContent=function(e,r){for(n.copy(r,e),r.innerHTML="";e.childNodes.length>0;)r.appendChild(e.childNodes[0])},n.setContentElement=function(e,r,a){n.copy(e,r),a?e.parentNode&&e.parentNode.replaceChild(r,e):(e.innerHTML=””,e.appendChild(r))},n}); define(“utils/nodePreserve”,[“ta/util/ajaxPreserves”,”utils/to-array”],function(e,r){“use strict”;function t(e,r){if(e)for(e.innerHTML=””;r.firstChild;)e.appendChild(r.firstChild)}function a(e,r){r&&Array.prototype.forEach.call(r.querySelectorAll(“.node-preserve, .ajax_preserve”),function(r){var t=r.getAttribute(“data-ajax-preserve”);t&&(e[t]=r,r.parentNode&&r.parentNode.removeChild(r))})}function n(e,r){var a=r.getAttribute(“data-ajax-preserve”),n=e[a];n&&(r.parentNode&&r.parentNode.replaceChild(n,r),t(n,r),delete e[a])}function i(i,o,l){if(i&&o){var d={};l&&e.innerCopy(i,o),a(d,i),t(i,o),r(i.querySelectorAll(“[data-ajax-preserve]”)).forEach(n.bind(null,d))}}var o={};return o.nodePreserve=function(e,r){i(e,r,!1)},o.treePreserve=function(e,r){i(e,r,!0)},o}); define(“hotels/SpecialMessageUtil”,[“babel/babel-helpers”,”ta/util/SessionStorage”,”utils/responsive”,”utils/classnameUtils”],function(e,s,t,a){function r(e,s){var t=o();return!!t[e]&&(!s||!!t[e][s])}function i(e,s){a.removeClass(e,d),”BRAND_MESSAGING_DEFAULT”!==s&&”BRAND_MESSAGING_MULTIPLE_SITES”!==s||!t.mobile()||l(s)}function n(e,s,t,r){a.addClass(e,d),t&&!r||l(s,r)}function c(e){var s=e.querySelector(“[“+S+”]”);return s?s.getAttribute(S):””}function u(e){var s=e.querySelector(“[“+b+”]”);return!(!s||!s.getAttribute(b))}function l(e,t){var a=o();a[e]=a[e]||{},t&&(a[e][t]=!0);try{s.setObject(g,a)}catch(e){}}function o(){try{return s.getObject(g)||{}}catch(e){}return{}}var g=”dismissedMessages”,d=”collapsed”,S=”data-messageType”,b=”data-persist-once-per-geo”;return{displayMessage:i,dismissMessage:n,wasMessageDismissed:r,getMessageType:c,isMessagePersistableOncePerGeo:u}}); require([“ta/p13n/placements”],function(e){var s=e.define.bind(e,”hsx_special_messaging”,”handlers”,[“handlers”]);s([“placement”,”page-model”,”ta/Core/TA.FireEvent”,”ta/prwidgets”,”utils/nodePreserve”,”hotels/SpecialMessageUtil”,”common/Radio”],function(e,s,a,t,i,n,r){function l(e){if(e&&!n.wasMessageDismissed(e,p&&g)){var s=m.querySelector(“.hsx_special_messaging > .collapsed”);n.displayMessage(s,e)}}function c(e){var s=n.getMessageType(e);s&&s!==o&&!n.wasMessageDismissed(s,p&&g)&&(o=s,e&&e.getAttribute(“data-targetEvent”)!=d&&(e=e.querySelector(‘[data-targetEvent=”‘+d+'”]’)),e&&m&&(i.treePreserve(m,e),t.initWidgets(m),l(o)))}var d=”update-“+e.name,g=s.GEO_ID,m=document.getElementById(e.id),o=n.getMessageType(m),p=n.isMessagePersistableOncePerGeo(m);a.on(d,c),l(o);var u=/ *bhiddenb/;return r(“hsx_special_message”).on(“temporaryHide”,function(e){e?m.className.match(u)||(m.className=m.className+” hidden”):m.className=m.className.replace(u,””)}),{}})}); require([“ta/p13n/placements”],function(e){var n=e.define.bind(e,”masthead_h1″,”handlers”,[“handlers”]);n([“placement”,”ta/Core/TA.FireEvent”],function(e,n){“use strict”;function t(n){var t=document.getElementById(e.id);t&&(t.innerHTML=n.innerHTML)}var r=”true”===e.params.trackInView;return r&&require([“trjs!ta/util/Element”],function(n){n.trackWhenScrolledIntoView(“#”+e.id,[“masthead”,”in_view”])}),n.on(“update-“+e.name,t),{}})}); ]]>

    • “).helper(“range”,c,{“block”:b2},{“begin”:c.get([“min”],!1),”end”:c.get([“max”],!1)}).write(“”);}function b1(h,c){return h.write(“”);}function b2(h,c){return h.write(“
    • “);}b0.__dustBody=b1.__dustBody=b2.__dustBody=!0;return b0;}(); !function(){dust.register(“en_USrooms-guests_desktop_checkmark_dropdown”,b0);function b0(h,c){return h.write(“”).exists(c.get([“titleClass”],!1),c,{“block”:b1},{}).write(“
        • “).helper(“range”,c,{“block”:b2},{“begin”:c.get([“min”],!1),”end”:c.get([“max”],!1)}).write(“”);}function b1(h,c){return h.write(“”);}function b2(h,c){return h.write(“
        • “);}b0.__dustBody=b1.__dustBody=b2.__dustBody=!0;return b0;}(); !function(){dust.register(“en_USrooms-guests_desktop_ticker”,b0);function b0(h,c){return h.write(“”);}b0.__dustBody=!0;return b0;}(); !function(){dust.register(“en_USrooms-guests_desktop_count_ticker”,b0);function b0(h,c){return h.write(“”).reference(c.get([“label”],!1),c,”h”).write(“”);}b0.__dustBody=!0;return b0;}(); ;});]]>
  • {TripName}u003c/b> created!”,”stat_modal_saved_to_tripname_with_bold”:”Saved to u003cb>{TripName}u003c/b>”,”stat_modal_undo”:”Undo”,”stat_modal_removed_from_tripname_with_bold_v3″:”Removed from u003ca href=”{TripLink}” class=”{TripClass}”>u003cb>{TripName}u003c/b>u003c/a>”,”stat_modal_change”:”Change”,”stat_modal_saved_to_tripname_with_bold_v3″:”Saved to u003ca href=”{TripLink}” class=”{TripClass}”>u003cb>{TripName}u003c/b>u003c/a>”,”m1_trips_my_saves_header”:”My Saves”,”stat_modal_removed_from_tripname”:”Removed from {sTripName}”,”m1_trips_save_success_stat_d2″:”Saved! Next, organize it in a Trip.”,”trips_inline_profanity_check”:”Public Trips cannot contain profanity”,”linkify_url_error”:”You have entered an inappropriate URL”,”trips_error_default_add_item_comment_v2″:”There was a problem adding a note to this Trip item. Please try again.”,”trips_error_default_add_note”:”There was a problem adding a note to this Trip. Please try again.”,”trip_note_update_error”:”There was a problem updating your Trip note. Please try again.”,”trips_error_default_update_comment”:”There was a problem updating this comment. Please try again.”,”trips_error_duplicate”:”You already have a Trip with this name.”,”trips_stat_modal_profanity_check_native”:”Your Trip could not be created because public Trips cannot contain profanity. Please try again.”,”create_trip_general_error_v2″:”There was a problem creating this Trip. Please try again.”,”trip_contains_profanity”:”Your Trip contains profanity and cannot be made public. Please modify your Trip and try again. Questions? View Tripadvisor’s u003ca href=”https://www.tripadvisorsupport.com/hc/articles/360008133913-Tripadvisor-s-Content-Policy”>Content Guidelinesu003c/a>.”,”trips_error_default_edit_privacy”:”There was a problem updating the privacy of this Trip. Please try again.”,”trips_error_default_edit_trip”:”There was a problem editing this Trip. Please try again.”,”new_trip_name_error_msg”:”Please select a new name for your Trip.”,”social_no_permission”:”You don’t have permission to take this action.”,”trips_error_save_trip_full”:”Oh no! Your Trip has too many items in it. Please remove some items and try saving again.”,”trips_error_default_add_item_to_trip”:”There was a problem adding the item to this Trip. Please try again.”,”trips_error_default_move_item”:”There was a problem moving this Trip item. Please try again.”,”trips_error_unsave”:”There was a problem removing this item from your Trip. Please try again.”,”stat_modal_general_error”:”There was a problem saving this item. Please try again.”,”m1_trips_unsave_error”:”There was a problem removing this item. Please try again.”,”trips_error_general_default”:”There was a problem with this Trip. Please try again.”,”social_loading_error_1″:”Whoops, something went wrong.”,”soical_loading_error_2″:”Give it another try, please.”,”mobile_try_again”:”Try again”,”ds_date_picker_with_selection_aria_label”:”Enter the date. The selected date is {date}.”,”ds_date_picker_aria_label”:”Enter the date.”,”fusion_date_picker_enter_date”:”Enter date”,”ds_date_range_picker_with_selection_aria_label”:”Enter the date range. The selected date range is {from} to {to}.”,”ds_date_range_picker_aria_label”:”Enter the date range.”,”fusion_date_range_picker_button”:”{from} u2192 {to}”,”fusion_date_picker_enter_dates”:”Enter dates”,”fusion_guests_picker_label_with_guests”:”Enter the number of guests. The selected number of guests is {guests}.”,”fusion_guests_picker_default_label”:”Enter the number of guests.”,”fusion_rooms_picker_label”:”Enter the number of rooms and then enter the number of guests. The selected number of rooms is {rooms} and the selected number of guests is {guests}.”,”ds_time_picker_with_selection_aria_label”:”Enter the time. The selected time is {time}.”,”ds_time_picker_aria_label”:”Enter the time.”,”sunday_52″:”Sunday”,”monday_52″:”Monday”,”tuesday_52″:”Tuesday”,”wednesday_52″:”Wednesday”,”thursday_52″:”Thursday”,”friday_52″:”Friday”,”saturday_52″:”Saturday”,”common_day_sun_abbr”:”Sun”,”common_day_mon_abbr”:”Mon”,”common_day_tue_abbr”:”Tue”,”common_day_wed_abbr”:”Wed”,”common_day_thu_abbr”:”Thu”,”common_day_fri_abbr”:”Fri”,”common_day_sat_abbr”:”Sat”,”common_month_year1″:”January {0}”,”common_month_year2″:”February {0}”,”common_month_year3″:”March {0}”,”common_month_year4″:”April {0}”,”common_month_year5″:”May {0}”,”common_month_year6″:”June {0}”,”common_month_year7″:”July {0}”,”common_month_year8″:”August {0}”,”common_month_year9″:”September {0}”,”common_month_year10″:”October {0}”,”common_month_year11″:”November {0}”,”common_month_year12″:”December {0}”,”common_month_year”:”Month Year”,”hotels_price_heatmap_cheaper”:”Cheaper”,”hotels_price_heatmap_cheaper_than_average”:”Cheaper than average”,”hotels_price_heatmap_average”:”Average”,”hotels_price_heatmap_higher”:”Higher”,”select_from_pop_dates”:”Select from popular dates:”,”oracle_date_range”:”{checkIn} – {checkOut}”,”hsx_heatmap_improvements_based_average”:”Based on average prices”,”hotels_average_prices_for_one_night_stay”:”Average prices for 1-night stay”,”price_heatmap_avg_daily_rates_range”:”Average daily rates: {0} – {1}”,”hsx_popular_dates_datepicker_message”:”Select dates to see the best prices”,”mob_popped_calendar_cta”:”Select a date to continue”,”price_heatmap_lowest_prices_2″:”Lowest priced dates”,”price_heatmap_lowest_prices_explanation”:”Hotel prices for these dates are the cheapest to book from our partners and fall within the lowest 33% of dates shown.”,”mem_pf_928″:”Age”,”airm_child_ba9″:”Child {0}”,”mobile_sherpa_rooms_ffffeaf4″:”Rooms”,”mobile_sherpa_guests_ffffeaf4″:”Adults”,”common_children”:”Children”,”com_mc_update”:”Update”,”em_dash_date_format”:”— / — / —”,”trip_search_traveler_info_text”:”u003cspan class=”{sRoomInfoClass}”>{nNumRooms, plural, one{# room} other{# rooms}}u003c/span>, u003cspan class=”{sAdultInfoClass}”>{nNumAdults, plural, one{# adult} other{# adults}}u003c/span>, u003cspan class=”{sChildInfoClass}”>{nNumChildren, plural, one{# child} other{# children}}u003c/span>”,”plus_account_cancellation_reason_better_rates_elsewhere”:”Better rates elsewhere”,”plus_account_cancellation_reason_cannot_find_required_hotel”:”Can’t find hotel I want”,”plus_account_cancellation_reason_covid19_pandemic_uncertainty”:”Pandemic uncertainty”,”plus_account_cancellation_reason_customer_service_experience”:”Customer service experience”,”plus_account_cancellation_reason_issue_with_booking”:”Issue with the booking”,”plus_account_cancellation_reason_subscribed_by_mistake”:”Subscribed in error”,”plus_account_cancellation_reason_travel_plans_changed”:”Travel plans changed”,”plus_checkout_billing_info_field”:”Billing information”,”plus_checkout_country_field”:”Country”,”plus_checkout_select_country”:”Select Country”,”plus_checkout_address_1_field”:”Address line 1″,”plus_checkout_error_state_address”:”Invalid address”,”plus_checkout_address_2_field”:”Address line 2″,”plus_checkout_city_field”:”City”,”plus_checkout_error_state_city”:”Invalid city”,”plus_checkout_select_state_error”:”Select state”,”plus_checkout_state_field”:”State”,”plus_checkout_select_state”:”Select State”,”plus_checkout_zip_code_field”:”Zip code”,”plus_checkout_error_state_zip_code”:”Invalid zip code”,”plus_checkout_add_card”:”Add this card to your account for faster booking”,”plus_checkout_cardholder_name_field”:”Cardholder name”,”plus_checkout_error_state_cardholder_name”:”Enter a valid cardholder name”,”plus_checkout_security_info”:”This form is encrypted and your information is always guaranteed secure.”,”plus_checkout_security_view_details”:”View Details”,”plus_checkout_security_tooltip”:”This form is secured with 256-bit SSL encryption”,”plus_checkout_billing_address”:”Billing address:”,”plus_checkout_default_payment_method”:”Default payment method”,”plus_payment_type_pp”:”Paypal”,”plus_payment_type_cc”:”Credit Card”,”plus_checkout_payment_details_heading”:”Payment details”,”plus_checkout_change_payment_method_cta”:”Change payment method”,”common.design_system.notification”:”Notification”,”airm_loadingDotDotDot”:”Loading…”,”ds_textarea_minimum_characters”:”{numCount}/{numLimit} min characters”,”ds_textarea_maximum_characters”:”{numCount}/{numLimit} max characters”,”text_input_show_password_icon”:”Show password”,”trip_planner_clear”:”Clear”,”plus_checkout_cards_modal_ending_in”:”ending in”,”plus_checkout_cards_modal_expires_space_date”:”Expires {date}”,”plus_checkout_cards_modal_new_card”:”Add a new card”,”plus_checkout_cards_modal_expires_colon_date”:”Expires: {date}”,”plus_checkout_cards_modal_new_provided_account”:”Add a new {sProviderName} account”,”plus_checkout_cards_modal_your_stored_payment_methods”:”Your stored payment methods”,”plus_checkout_cards_modal_name_on_card”:”Name on card”,”plus_checkout_cards_modal_expires”:”Expires”,”plus_checkout_cards_modal_select_payment_method”:”Select a payment method”,”plus_checkout_cards_modal_continue”:”Continue”,”reg_back”:”Back”,”phoenix_maps_accessibility_toggle_list”:”View list”,”rd_hd_viewMap”:”View map”,”phoenix_accessibility_list_label”:”List”,”common_Map”:”Map”,”common_Read_more”:”Read more”,”common_Readless”:”Read less”,”tabs_photos_fffff660″:”Photos”,”tabs_reviews_fffff660″:”Reviews”,”tabs_nearby_title_2_fffff660″:”Location”,”native_poidetails_jumpbar_safety”:”Safety”,”hr_btf_about_header”:”About”,”q_and_a_title”:”Q+A”,”covid19_safety_tab”:”COVID-19″,”hr_tabs_overview_tab_fffff660″:”Overview”,”hr_deals_link”:”Deals”,”hotel_detail_pivot_to_hotel_bb”:”See all B&Bs in {0}”,”mobile_detail_header_bar_seeall_speciality_lodging”:”See all Specialty Lodging in {0}”,”mobile_see_all_x_hotels_in_y”:”See all {0} hotels in {1}”,”hotelshortlist_see_all_in_geo_ffffedfd”:”See all hotels in {0}”,”relative_dates_today_fffff175″:”today”,”relative_dates_yesterday_fffff175″:”yesterday”,”relative_dates_days_fffff175″:”{0} days ago”,”relative_dates_one_week_fffff175″:”1 week ago”,”relative_dates_weeks_fffff175″:”{0} weeks ago”,”hsx_popular_dates_tonight”:”Tonight”,”hsx_popular_dates_this_weekend”:”This weekend”,”hsx_popular_dates_next_weekend”:”Next weekend”,”common_Previous”:”Previous”,”common_Next”:”Next”,”meta_visit_site”:”Visit Site”,”view_deal_button_cta”:”View deal”,”plus_paywall_header_perk_v2″:”Get member-only perks on your stay at {hotelName} with Tripadvisor Plus.”,”plus_paywall_header_v2″:”Nice Pick.”,”plus_paywall_subheader_v2″:”Only members can see this hotel rate. Join Tripadvisor Plus to get this exclusive rate and savings on all Plus hotels instantly.”,”plus_paywall_join_now”:”Join now”,”plus_paywall_benefits_header_v2″:”Endless travel savings, {subPrice} a year:”,”plus_paywall_benefits_1″:”Member-only prices on {numHotels}+ hotels.”,”plus_paywall_benefits_2″:”Savings on experiences, flights, and rental cars.”,”plus_paywall_benefits_cancellation_3_v2″:”Cancel your membership within the first {numDays, plural, one{# day} other{# days}} if you don’t make a Tripadvisor Plus hotel or experience booking.”,”plus_paywall_learn_more”:”Learn more”,”plus_new_subscriber_price_spotlight”:”Check out your member-only nightly rate”,”plus_cashback_infocard_earn_on_your_travel_v5″:”Get cash back on 300,000+ hotels.u003cbr />Spend it on your trip.u003cbr />Join risk-free for 90 days.”,”plus_cashback_card_with_perks_title”:”Get {0} back on this stay + perks”,”plus_cashback_card_no_perks_title”:”Get {0} back on this stay”,”plus_cashback_card_not_member_info”:”Join for $99 a year & get cash after check-in.”,”plus_cashback_card_is_member_info_with_perks”:”See the member perks youu2019ll get on this stay.”,”plus_cashback_card_is_member_info”:”This is one of your member benefits!”,”plus_cashback_card_extra_perks”:”Extra perks”,”plus_cashback_card_not_member_info_expand_a”:”Youu2019ve picked a Tripadvisor Plus hotel, which comes with cash back on your stay.”,”plus_cashback_card_not_member_info_expand_b”:”To get cash back, book your room on Tripadvisor and become a member at checkout. “,”plus_cashback_card_learn_more”:”Learn more”,”plus_cashback_card_is_member_info_with_perks_expand”:”Book this hotel to enjoy your member perks and extra cash. Youu2019ll receive your cash 24-48 hours and itu2019s sent to your Paypal, Venmo, or bank account.”,”plus_cashback_card_is_member_info_expand”:”Book this hotel and youu2019ll receive your cash 24-48 hours after check-in, sent to your Paypal, Venmo, or bank account.”,”common_more_capital_ffffe27f”:”More”,”room_urgency_messaging_only_x_left_at_v2″:”Only {0, plural, one{# left} other{# left}} at”,”base_daily_price_per_night”:”per night”,”base_daily_price_taxes_and_fees_v2″:”+{avgDailyTaxesAndFees} taxes & fees”,”base_daily_total_price”:”{allInTotalStayPrice} total”,”hsx_all_in_price_total_for_nights”:”{totalPrice} for {lengthOfStay} nights”,”hsx_all_in_price_per_night”:”{nightlyPrice} per night”,”meta_ui_taxes_and_fees_14f6″:”taxes & fees”,”hotels_save_money”:”SAVE {0}”,”plus_list_saving_tooltip_2″:”Member savings include taxes and fees.”,”rebrand_see_all”:”See all”,”plus_hotels_cta_choose_your_room”:”Choose your room”,”plus_perks_included”:”Perks included”,”affiliate_cta_book_get_rewards_v1″:”Book & Get Rewards”,”affiliate_merchandise_message_v1″:”Eligible for shopping rewards from loyalty sites”,”plus_hotels_cta_book_now”:”Book Now”,”show_prices_29d”:”Show Prices”,”b2bh_so_special_offer”:”Special offer”,”meta_hotel_website_c9a”:”Hotel website”,”visit_hotel_website”:”Visit hotel website”,”SO_recat_headline_specialOfferHeader_e1f”:”Special Offer”,”SO_recat_headline_specialPrice_e1f”:”Special Price”,”SO_recat_headline_specialRateHeader_e1f”:”Special Rate”,”SO_recat_specialDealHeader_e1f”:”Special Deal”,”mw_common_seeOnMap_ffffec3e”:”See on map”,”localnameandaddress_1″:”Name/address in local language”,”local-name-and-address_localname”:”Local name”,”common_colon”:”:”,”local-name-and-address_localaddress”:”Local address”,”meta_interstitial_connecting”:”Connecting you to our partner's website”,”flights_app_return_to_tripadvisor”:”Return to Tripadvisor”,”ODCTest_email_link_ffffea3f”:”E-mail hotel”,”bl_flex_url_deals”:”Hotel deals”,”bl_flex_url_packages”:”Hotel packages”,”bl_flex_url_tour”:”Hotel virtual tour”,”bl_flex_url_affiliate_fffff20a”:”Affiliate website”,”b4o_book_your_stay”:”Book your stay”,”b2b_ba_whatsapp”:”WhatsApp”,”contact_section_website”:”Website”,”ODCTest_emailsubject2_404″:”An inquiry from a Tripadvisor user for {0}”,”contact_section_email”:”Email”,”contact_section_call”:”Call”,”hr_about_call”:”Call”,”ds_award_michelin_one_star_label”:”One MICHELIN Star”,”ds_award_michelin_two_star_label”:”Two MICHELIN Stars”,”ds_award_michelin_three_star_label”:”Three MICHELIN Stars”,”sng_award_michelin_bib”:”Michelin Bib Gourmand”,”ds_award_michelin_text”:”MICHELIN”,”blcoupons_valid_every_day”:”every day of the week”,”blcoupons_valid_on_given_days”:”Valid on the following days: {translatedDays}”,”b2bh_so_lightbox_redeem_online”:”Redeem on hotel website”,”b2bh_so_lightbox_call_to_redeem”:”Call to redeem”,”b2b_special_offers_code_and_value”:”CODE: {code_value}”,”hsx_mobile_rate”:”Mobile rate”,”hsx_mobile_rate_tooltip”:”Youu2019re getting a reduced rate because this partner is offering a discount when you book from a mobile device”,”plus_checkout_dates_range”:”{0} u2192 {1}”,”checkout_modal_terms_and_conditions_sign_up”:”By clicking u201CComplete sign-upu201D below I agree to u003ca href=”{href1}” target=”_blank” class=”{className1}”>Tripadvisor’s Terms, Conditions and Noticesu003c/a>; u003ca href=”{href2}” target=”_blank” class=”{className2}”>Privacy and Cookie Statementu003c/a>; and the u003ca href=”{href3}” target=”_blank” class=”{className3}”>Tripadvisor Plus Subscription Terms and Conditionsu003c/a>.”,”checkout_modal_start_free_trial_terms_and_conditions”:”By clicking u201CStart Free Trialu201D below I agree to u003ca href=”{href1}” target=”_blank” class=”{className1}”>Tripadvisor’s Terms, Conditions and Noticesu003c/a>; u003ca href=”{href2}” target=”_blank” class=”{className2}”>Privacy and Cookie Statementu003c/a>; and the u003ca href=”{href3}” target=”_blank” class=”{className3}”>Tripadvisor Plus Subscription Terms and Conditionsu003c/a>.”,”checkout_modal_terms_and_conditions”:”By clicking u201CComplete Purchaseu201D below I agree to u003ca href=”{href1}” target=”_blank” class=”{className1}”>Tripadvisor’s Terms, Conditions and Noticesu003c/a>; u003ca href=”{href2}” target=”_blank” class=”{className2}”>Privacy and Cookie Statementu003c/a>; and the u003ca href=”{href3}” target=”_blank” class=”{className3}”>Tripadvisor Plus Subscription Terms and Conditionsu003c/a>.”,”checkout_modal_sign_up”:”Complete sign-up”,”checkout_modal_continue”:”Continue”,”checkout_modal_start_free_trial”:”Start Free Trial”,”checkout_modal_complete_purchase”:”Complete purchase”,”checkout_modal_free_trial_you_will_not_be_charged_label”:”You wonu2019t be charged today.”,”plus_trial_product_marketing_earn_vacation_funds”:”Earn Vacation Funds at 700,000+ hotels and experiences”,”plus_trial_product_marketing_save_perks”:”Save even more with member-only perks”,”plus_trial_product_marketing_get_travel_guidance”:”Get travel guidance from the pros”,”plus_trial_product_marketing_risk_free”:”Try it risk-free”,”plus_trial_modal_subscription_title”:”Tripadvisor Plus Membership”,”plus_checkout_trial_membership_v3″:”{numMonths, plural, one{# month} other{# month}} free trial ({start} – {end})”,”checkout_modal_free_year_membership”:”Free 1 year membership”,”plus_checkout_trial_membership_v2″:”{numMonths, plural, one{# month} other{# month}} free trial”,”plus_checkout_trial_membership_days”:”{numDays, plural, one{# day} other{# day}} free trial”,”plus_checkout_annual_membership”:”{0, plural, one{# Annual Membership} other{# Annual Memberships}}”,”plus_checkout_free_membership_cancel_policy_v3″:”Your Tripadvisor Plus membership is free for one year and will not auto-renew.”,”plus_trial_membership_info_v3″:”*$99/year after trial. Open to users who haven't tried Tripadvisor Plus before. Valid only in United States. u003ca class=”{0}” href=”{1}” target=”{2}”>Terms apply.u003c/a>”,”plus_trial_membership_info_v4″:”Your free trial will end on {date} and your membership will auto-renew for {price}/year. You can choose to opt out of auto-renew in your Member Center.”,”plus_trial_membership_info”:”Your free trial will end on {date} and your membership will auto-renew for $99/year. You can choose to opt out of auto-renew in your Member Center.”,”plus_checkout_membership_cancel_policy_v4″:”Cancel your membership and get a full refund within the first 90 days, if you donu2019t make a Tripadvisor Plus hotel or experience booking. u003ca href=”{href1}” class=”{className1}” target=”_blank”>See full termsu003c/a>”,”plus_trial_product_marketing_info”:”Save 10% on tickets, tours, and attractions, plus get member-only hotel rates and upgrades.”,”plus_checkout_date_range”:”{start} – {end}”,”checkout_modal_learn_more_link”:”Learn more”,”checkout_modal_details”:”Details”,”checkout_modal_payment”:”Payment”,”checkout_modal_checkout”:”Checkout”,”plus_trial_membership_breadcrumb_confirmation”:”Confirmation”,”checkout_modal_booking_confirmation”:”Booking confirmation”,”plus_404_credit_card_sign_up”:”Sign up for your free 1-year membership to Tripadvisor Plus”,”plus_trial_checkout_modal_join_tripadvisor_plus_v2″:”Try Tripadvisor u003cspan class=”{0}”>Plusu003c/span> free for one month”,”plus_account_resubscribe_checkout_title”:”Resubscribe to Tripadvisor Plus”,”checkout_modal_join_tripadvisor_plus”:”Join Tripadvisor Plus”,”plus_cashback_on_exp_checkout_sign_in_perk_earn”:”Earn Vacation Funds at 300,000+ hotels and experiences”,”plus_cashback_on_exp_checkout_sign_in_perk_save”:”Save even more with member-only perks”,”plus_cashback_on_exp_checkout_sign_in_perk_get”:”Get travel guidance from the pros”,”plus_cashback_sign_in_book_hotel_experience”:”Book a Tripadvisor Plus hotel or experience.”,”plus_cashback_sign_in_connect_payment_system”:”Connect your bank account, Venmo, or Paypal.”,”plus_cashback_sign_in_get_cash”:”Get cash on your trip.”,”plus_sign_in_members_only”:”Member-only hotel rates.”,”plus_sign_in_hotel_perks”:”Hotel perks and upgrades.”,”plus_sign_in_savings”:”Savings on tours, tickets, and more.”,”plus_cashback_on_exp_checkout_sign_in_title”:”Welcome back!”,”plus_sign_in_start_saving_free”:”Sign in to start saving with your Tripadvisor Plus free trial”,”plus_404_credit_card_sign_in”:”Sign in or create an account to get your free Tripadvisor Plus offer”,”plus_sign_in_start_earning”:”Sign in to start earning with Tripadvisor Plus”,”plus_sign_in_start_saving”:”Sign in to start saving with Tripadvisor Plus”,”plus_sign_in_limited_time_offer”:”LIMITED TIME OFFER”,”plus_cashback_on_exp_checkout_sign_in_text”:”Sign into your Tripadvisor Plus account to get 10% Vacation Funds on all your Experience bookings.”,”vf_exp_checkout_sign_in_content”:”We noticed that you have an existing Tripadvisor account associated with u003cb>{email}u003c/b>. Please sign in to your account to complete your checkout.”,”plus_cashback_earn_amt_and_get_perks_on_this_stay_v2″:”Get {sAmount} back and perks with this stay”,”plus_cashback_earn_amt_on_this_stay_v2″:”Get {sAmount} back on this stay”,”save_card_copy_d”:”Save {savings} and get perks with this stay”,”save_card_copy_c”:”Save {savings} on this stay”,”save_card_copy_percentage_at_least_with_perks”:”Save {savings}% or more and get perks with this stay”,”save_card_copy_percentage_at_least”:”Save {savings}% or more on this stay”,”save_card_copy_percentage_up_to_with_perks”:”Save up to {savings}% and get perks with this stay”,”save_card_copy_percentage_up_to”:”Save up to {savings}% on this stay”,”save_card_copy_b”:”Save {savings} or more and get perks with this stay”,”save_card_copy_a”:”Save {savings} or more on this stay”,”plus_hotels_callout_member_saving_taxes”:”Members save {saving} on this stay (including taxes and fees)”,”plus_hotels_callout_member_saving_percent_taxes”:”Members save {saving}% or more on this stay (including taxes and fees)”,”plus_hotels_callout_member_saving_up_to_percent_taxes”:”Members save up to {saving}% on this stay (including taxes and fees)”,”plus_hotels_callout_member_saving_more_taxes”:”Members save {saving} or more on this stay (including taxes and fees)”,”plus_paywall_header_discount_percent_v2″:”Members save {savingsDisplayValue}% or more on {hotelName} with Tripadvisor Plus.”,”plus_paywall_header_discount_percent_up_to_v2″:”Members save up to {savingsDisplayValue}% on {hotelName} with Tripadvisor Plus.”,”plus_paywall_header_discount_v2″:”Members save {savingsPrice} or more on {hotelName} with Tripadvisor Plus.”,”plus_hotels_callout_up_your_travel_v2″:”Up your travel with member discounts and perks for $99/year. u003ca href=”{0}”>Learn moreu003c/a>”,”plus_trial_confirmation_explore_experiences”:”Explore experiences”,”plus_trial_confirmation_manage_membership”:”Manage membership”,”plus_paywall_hr_confirmation_manage_subscription”:”Manage subscription”,”plus_paywall_hr_confirmation_continue_to_hotel”:”Continue to hotel”,”plus_trial_confirmation_title”:”Youu2019re in!”,”plus_paywall_confirmation_title_v2″:”Thank you! Your Tripadvisor Plus membership is all set.”,”plus_trial_confirmation_message_v2″:”Book your next trip with 10% off experiences and member-only hotel deals for a limited time.”,”plus_paywall_hr_confirmation_member_only_message”:”You now have access to member-only rates at 100,000+ hotels worldwide.”,”plus_trial_confirmation_membership_details_subtitle”:”Keep an eye outu2014a confirmation has been sent to {email}.”,”plus_confirmation_price_section”:”Price”,”plus_trial_account_management_price_today_v2″:”{0} ({numMonths, plural, one{# month} other{# month}} free trial)”,”plus_confirmation_membership_number_section”:”Membership number”,”plus_confirmation_payment_section”:”Payment”,”plus_confirmation_date_purchased_section”:”Date purchased”,”plus_confirmation_start_date_section”:”Membership start date”,”plus_confirmation_date_renews_section_v2″:”Membership renewal date”,”plus_trial_confirmation_message_v3″:”Get paid to travel: Earn 10% back in Vacation Funds on experiences and score member-only hotel deals, too.”,”plus_management_center_non_renewing_member”:”Your subscription isn’t set up to auto-renew and will end on {0}.”,”plus_paywall_hr_confirmation_membership_details_title”:”Membership details”,”plus_paywall_hr_confirmation_membership_details_subtitle”:”A confirmation with this information has been sent to {email}”,”plus_account_management_price_per_year”:”{0}/year”,”plus_account_management_price_discounted”:”Discount applied for the first year”,”plus_confirmation_subscription_number_section”:”Subscription number”,”plus_confirmation_date_renews_section”:”Subscription renewal date”,”plus_what_is_interstitial_title”:”Join Tripadvisor Plus to get cash back, perks, and travel benefits”,”get_cashback_and_perks_at_hotel”:”Get cash back + perks at this hotel”,”get_cashback_at_this_hotel”:”Get cash back at this hotel”,”plus_what_is_perks_benefits_title”:”Other perks & benefits”,”special_hotel_perks”:”Special hotel perks”,”plus_what_is_perks_benefits_body_v2″:”Special perks from our hotel partners. Free travel advice from the pros via SMS. Status upgrades for rental cars with Hertz.”,”plus_what_is_risk_free_title”:”Try it risk-free, $99 a year”,”plus_what_is_risk_free_body”:”Just book your hotel on Tripadvisor and join at checkout. Itu2019s $99 a year and you have 90 days to love it (or get your money back). Terms apply.”,”plus_99_year_90_days_money_back”:”It’s $99 a year and you have 90 days to love it (or get your money back). Terms apply.”,”plus_what_is_how_works_title”:”How it works”,”plus_what_is_book_hotel_point”:”Book a Tripadvisor Plus hotel on Tripadvisor.”,”plus_what_is_cash_back_point”:”Youu2019ll get cash back 24-48 hours after check-in.”,”plus_what_is_payal_venmo_point”:”Your cash is sent to your Paypal, Venmo, or bank account.”,”plus_education_gets_you_v2″:”For $99/year, Tripadvisor Plus gets you access to:”,”plus_education_hotel_savings_message”:”Hotel savings of at least {minSavings}, on average, per trip”,”plus_education_deals_message”:”Deals on experiences, flights, and rental cars”,”plus_education_trip_insiders_message”:”Personalized service from trip insiders”,”plus_educational_modal_summary_v3″:”u003cb>Tripadvisor Plusu003c/b> is a travel membership with endless savings on hotels, experiences, flights, and rental cars, for $99 a year.”,”plus_educational_modal_summary_earn”:”u003cb>Tripadvisor Plusu003c/b> is a travel membership that lets you earn every time you travel. Try it risk-free for 90 days.”,”plus_get_cashback_and_perks_with_tripadvisor_plus_v2″:”Get {cashbackDisplayAmount} back and perks with Tripadvisor Plus”,”cash_fund_educational_modal_header”:”How you earn with Tripadvisor Plus”,”steps_title_educational_modal_header”:”How you earn”,”perks_title_educational_modal_header”:”Perks for this Tripadvisor Plus hotel”,”plus_got_it”:”Got it”,”member_login_prompt_already_ta_member”:”Already a Tripadvisor member?”,”member_login_prompt_already_plus_member”:”Already a Plus member?”,”member_login_prompt_sign_in”:”Sign in”,”plus_checkout_promo_code_expired”:”This promo code has expired”,”plus_checkout_promo_code_error”:”Something went wrong. Please try again”,”plus_checkout_promo_code_unauthorized”:”Unauthorized promo code”,”plus_checkout_promo_code_used”:”This promo code has been used”,”plus_checkout_promo_code_invalid”:”Invalid promo code”,”plus_checkout_promo_code_placeholder”:”Enter promo code”,”plus_checkout_promo_code_apply”:”Apply”,”plus_checkout_promo_code”:”Promo code”,”plus_partner_discount_tooltip”:”{0} discount”,”plus_first_year_discount_title”:”First year subscription discount”,”plus_first_year_discount_body”:”This discount only applies to the first year of your subscription. Youu2019ll be charged {originalPrice} to renew next year.”,”plus_discount_expire_date”:”This discount is valid through {expireDate}.”,”cash_fund_educational_modal_step_join”:”Join Tripadvisor Plus.”,”cash_fund_educational_modal_step_book”:”Book a Tripadvisor Plus hotel or experience.”,”cash_fund_educational_modal_step_book_v2″:”Book a Tripadvisor Plus hotel.”,”cash_fund_educational_modal_step_connect”:”Connect your bank account, Venmo, or Paypal.”,”cash_fund_educational_modal_step_get_v2″:”Get cash to spend on your trip.”,”common_Terrible”:”Terrible”,”common_Poor”:”Poor”,”common_Average”:”Average”,”common_Verygood_fffffabd”:”Very good”,”common_Excellent”:”Excellent”,”mobile_reviews_plural”:”{0, plural, one{# review} other{# reviews}}”,”common_VeryGood”:”Very Good”,”common_Xof5stars”:”{0} of 5 stars”,”common_Xof5bubbles”:”{0} of 5 bubbles”,”plus_layout_go_back”:”Back”,”sponsored_articles_sponsored_by”:”Sponsored by {sponsorName}”,”plus_confirmation_manage_membership_cta”:”Manage membership”,”plus_already_member”:”You're already a member!”,”optimus_payment_alert_auto_renewal”:”We will securely store your payment details for your convenience, and your payment details will only be used if you book a hotel, experience, or other deal through Tripadvisor. Your Tripadvisor Plus subscription will auto-renew at {price}/year u003cspan class=”{0}”>{date}u003c/span>, unless you cancel auto-renewal.”,”plus_trial_payment_alert_v3″:”Donu2019t worry, youu2019re not being charged right now. Weu2019ll securely store your payment details so you can check out more easily the next time you book with Tripadvisor. You wonu2019t be charged for your Tripadvisor Plus membership until {endDate}.”,”zip_code_not_allowed_for_trial”:”Zip Code 00000 is not allowed.”,”plus_checkout_trial_membership_item”:”Free Trial”,”plus_checkout_total”:”Total”,”plus_checkout_plus_membership_item”:”Tripadvisor Plus Membership”,”plus_checkout_inline_error_heading”:”Something went wrong”,”plus_checkout_inline_error_subheading”:”There was a problem processing your card. Please try again.”,”plus_error_checkout_account_exists_for_email”:”We’ve noticed that you have an existing Tripadvisor Plus account associated with {email}. Please sign in to your account to continue.”,”plus_checkout_charge_schedule_disclaimer_plus_free_and_hotel”:”Your payment details will only be used for hotel bookings. You won’t be charged for your Tripadvisor Plus subscription.”,”ib_update_account_info”:”Update my account with this information”,”plus_paypal_standalone_description”:”Sign up for Tripadvisor Plus for $99/year”,”plus_checkout_first_name_field”:”First name”,”plus_checkout_last_name_field”:”Last name”,”plus_checkout_phone_number_field”:”Phone Number”,”plus_checkout_email_field”:”Email”,”plus_checkout_error_country”:”Please select a country”,”createlisting_phone_country_label”:”Country Code”,”plus_checkout_error_message_valid_cc”:”Please enter valid card information.”,”plus_error_checkout_unable”:”We're unable to process your request.”,”plus_checkout_fix_form_errors”:”To continue, please fix the errors in the following fields:”,”plus_error_checkout_account_sign_in”:”Please sign in to your Tripadvisor Plus account to continue.”,”plus_checkout_hotel_email_disclaimer_text”:”Booking confirmation will be sent to {email}”,”plus_free_trial_checkout_membership_email_disclaimer_text”:”Membership confirmation will be sent to {email}”,”plus_checkout_subscription_email_disclaimer_text”:”Subscription confirmation will be sent to {email}”,”plus_checkout_traveler_details_heading”:”Traveler details”,”plus_checkout_error_state_first_name_v2″:”Enter a valid first name”,”plus_checkout_error_state_last_name_v2″:”Enter a valid last name”,”plus_checkout_error_state_phone_number”:”Enter a valid phone number”,”optimus.checkout.vf_sms_opt_in_checkbox”:”Receive text message updates about your booking. Message rates may apply.”,”plus_checkout_error_state_email”:”Enter a valid email”,”createlisting_phone_placeholder”:”enter telephone number”,”plus_something_went_wrong”:”Something went wrong!”,”plus_please_try_again_later”:”Please try again later”,”a11y_skip_link”:”Skip to main content”,”Accessibility_Statement”:”Accessibility Statement”,”mobile_sort_8e0″:”Sort”,”poi_sort_by”:”Sort by”,”airm_sortBy”:”Sort by:”,”hsx_cf_no_results_message”:”Showing results based on your filters”,”fusion_list_clear_all_filters_button_text”:”Clear all filters”,”cma_disclaimer_teaser_msg”:”How payments to us impact the order of prices displayed. Room types may vary.”,”cma_disclaimer_message”:”The listings of booking offers for each property take into account the compensation paid to us by our partners. Prices shown may be for varying room types. Prices displayed are the lowest available, corresponding to the least expensive room type available, as provided from our partners as of the time of the useru2019s search.”,”payments_partners_impact_order_accoms_room_types_vary”:”Payments made by partners impact the order of the accommodations listed and the order of prices displayed. Room types may vary.”,”hamon_law_more_info”:”More information”,”Disclaimer_Hotel_Sort_Hamon_FR_v2″:”Listing of accommodations on Tripadvisor is free and may not be exhaustive. Accommodations cannot pay for a better organic ranking. Advertised listings are listed for a fee and marked as u201CSponsoredu201D.u003cbr>- u201CTraveler Rankingu201D ranks the results on the basis of the u2018Popularity Indexu2019 based on the quality, date and quantity of reviews an establishment receives from users. u003cbr> – u201CBest Valueu201D ranks the results using Tripadvisor data, including traveler ratings, rates, availability, frequency of booking, location and user preferences. u003cbr> – u201CLowest pricesu201D ranks the results according to the prices offered by our partners. u003cbr> – u201CDistanceu201D ranks results based on their distance from the city center and availability. u003cbr> – u201CJust for youu201D ranks results that best match user preferences and browsing history on Tripadvisor. u003cbr> When price offers are displayed, they are based on data provided by our participating partners and may not be exhaustive. The order of the price offers may depend in part on our participating partnersu2019 bids in the u201Ccost-per-clicku201D auction system.u003cbr>Room prices can vary.”,”hotel_info_about_service”:”Information about your service”,”mw_sort_Filter”:”Filter”,”common_price_range_currency_plus_v3″:”{0}u2013{1}+”,”common_price_range_v3″:”{0}u2013{1}”,”hsx_any_distance”:”Any distance”,”common_dist_mi”:”{0} mi”,”common_dist_km”:”{0} km”,”distance_from_poi”:”{0} from {1}”,”h_walkability_filter_pill_v2″:”walkability: {nMinWalkability} to {nMaxWalkability}”,”hotels_only”:”Hotels only”,”list”:”List”,”map”:”Map”,”view_on_map_list_card”:”View on map”,”plus_cashback_h_banner_item_earn_v2″:”Get cash back on 300,000+ hotels.”,”plus_cashback_h_banner_item_spend_v2″:”Spend it on your trip.”,”plus_cashback_h_banner_item_try_v2″:”Join risk-free for 90 days.”,”plus_cashback_h_banner_title_v2″:”Get cash back when you travel.”,”plus_educational_banner_learn_more”:”Learn more”,”plus_banner_messaging_dated_savings”:”Fun fact: Tripadvisor Plus members save, on average, {savings} per stay. Browse and book yours to start saving.”,”plus_h_merchandising_message”:”Pro tip: Enter your dates to see qualifying Tripadvisor Plus savings and perks”,”hotels_small_geo_urgency_messaging_text”:”Only {0}% of properties are left for your dates. We recommend booking soon.”,”hotels_large_geo_urgency_messaging_text”:”Book soon to secure a place to stay.”,”hotels_small_geo_urgency_messaging_header”:”Low Availability in {geoName}”,”hotels_geo_urgency_messaging_header”:”These {0} dates are popular.”,”hotels_conversational_filter_next”:”Next”,”hotels_conversational_filter_finish”:”Finish”,”hotels_conversational_filter_skip”:”Skip”,”hsx_cf_traveler_answer_solo”:”Solo”,”hsx_cf_traveler_answer_group”:”Group”,”hsx_cf_traveler_answer_family”:”Family”,”hsx_cf_traveler_answer_couple”:”Couple”,”price_slider_plus_short”:”{0} +”,”sng_a11y_min_price”:”Minimum price”,”sng_a11y_max_price”:”Maximum price”,”hsx_cf_spend_no_budget”:”Haven’t settled on a budget”,”conversational_filter_entry_card_title_complete_v2″:”Here’s what we found”,”conversational_filter_entry_card_title”:”Find the right hotel for you”,”conversational_filter_retake_quiz”:”retake the quiz”,”conversational_filter_entry_card_subtext_complete”:”To see new results, change the filters or {sRetakeTheQuizComponent}”,”conversational_filter_entry_card_subtext”:”Answer a few questions to start.”,”conversational_filter_entry_card_button_text”:”Take the quiz”,”conversational_filter_inline_quiz_propmt_text”:”Find the right hotel for you, answer a few questions to start.”,”conversational_filter_inline_quiz_text”:”u003cspan class=”{0}”>Whou003c/span> are you traveling with?”,”omnibus_disclaimer_hotels_payments_impact_prices_displayed”:”Partner payments determine which prices are displayed. Room types may vary, u003ca href={link} class={styles} target={target}>learn moreu003c/a>.”,”omnibus_disclaimer_hotels_payments_impact_prices_order_v2″:”Payments made by partners impact the order of accommodations listed and prices displayed. Room types may vary. u003ca href={link} class={styles} target={target}>Learn more about these resultsu003c/a>.”,”legal_omnibus_revenue_impact_recommendations”:”Revenue impacts these recommendations, u003ca href={link} class={styles} target={target}>learn moreu003c/a>.”,”top_attractions_selected_disclaimer_1″:”u003ca href={link} class={styles} target={target}>Learn how recommendations are madeu003c/a>.”,”legal_omnibus_learn_more”:”u003ca href={link} class={styles} target={target}>Learn more about how we organize and highlight experiencesu003c/a>.”,”legal_omnibus_revenue_impact”:”Revenue impacts the experiences featured on this page. u003ca href={link} class={styles} target={target}>Learn more about how we organize and highlight experiencesu003c/a>.”,”omnibus_disclaimer_restaurants_relevance_user_reviews_impacts_selection”:”Selections are displayed based on relevance and user reviews. u003ca href={link} class={styles} target={target}>Learn more hereu003c/a>.”,”omnibus_disclaimer_restaurants_relevance_user_reviews_trips_impact_selection”:”Selections are displayed based on relevance, user reviews, and popular trips. Table reservations, and chef experiences are only featured through our partners. u003ca href={link} class={styles} target={target}>Learn more hereu003c/a>.”,”legal_omnibus_short_revenue_impact”:”Revenue impacts the experiences featured on this page, u003ca href={link} class={styles} target={target}>learn moreu003c/a>.”,”About_TC_Winner”:”Travelers’ Choice {0} Winner”,”vr_aria_next_photo”:”Next Photo”,”vr_aria_previous_photo”:”Previous Photo”,”common_carousel_aria_label”:”Carousel of images”,”full_view”:”Full view”,”mv_photos_from_everyone”:”everyone”,”mv_photos_from_travelers”:”travelers”,”mv_photos_from_professionals”:”professionals”,”mv_photos_from_management”:”management”,”plus_hotels_banner_sign_in_is”:”Sign in to see hotel savings with Tripadvisor Plus.”,”plus_hotels_banner_cta”:”Sign in now”,”plus_hotels_banner_sign_in_vf”:”Sign in to see cash back offers on hotel bookings with Tripadvisor Plus.”,”I_live_in”:”I live in…”,”home_location_things_near_you”:”Tell us where you live to get great ideas for things to do near you.”,”mobile_no_results_found_8e0″:”No results found”,”common_Search”:”Search”,”post_video_typeahead_placeholder_text_search”:”Search”,”post_video_location_typeahead_add_location”:”Add another location “,”dual_search_worldwide”:”Worldwide”,”memx_mw_gating_cta”:”Continue with:”,”open_in_the_app”:”Open in the app”,”hard_gate_hybrid_header”:”Sign in or open in our app”,”hard_gate_subheader”:”Read traveler reviews, plus save and compare your favorite picks.”,”hard_gate_onetap_header”:”Sign in to unlock your free membership”,”typeahead_articles_read_more”:”Read More”,”see_all_results_for”:”See all results for “{query}””,”common_Hotels”:”Hotels”,”common_Restaurants”:”Restaurants”,”common_Thingstodo”:”Things to do”,”common_Forums”:”Forums”,”m2_trips_detail_date_display”:”{0} u2022 {1}”,”social_mobile_reason_for_sponsored”:”Sponsored”,”add_a_missing_place_cta”:”Add a missing place”,”mobile_search_prompt”:”Search Tripadvisor”,”mobile_back_8e0″:”Back”,”mobile_search_filter_clear_26e8″:”Clear”,”mw_js_positionPermissionDenied”:”Tripadvisor was denied permission to access your location. Give your browser and Tripadvisor permission to use your current location and try again.”,”mx_nearby”:”Nearby”,”sponsored_search_sponsored_label”:”Sponsored”,”dual_search_recently_viewed_all_caps”:”RECENTLY VIEWED”,”dual_search_popular_destinations”:”POPULAR DESTINATIONS”,”content_widget_sponsored_by_low”:”Sponsored by {name}”,”content_widget_sponsored_by”:”SPONSORED BY {name}”,”content_widget_discover_geo”:”Discover {geo}”,”content_widget_travelers_like”:”Find out why travelers like you are raving about {geo}”,”content_widget_explore”:”Explore now”,”content_widget_view_now”:”View now”,”content_widget_read_now”:”Read now”,”hotels_retargeting_meta_h1_v1″:”Take another look”,”hot_retarg_base_pricing_disclaimer”:”Partners pay to appear. Price is nightly average & may not include all taxes/fees or be lowest option. Taxes/fees shown = estimates. Room types vary.”,”experiences_retargeting_social_proof_title”:”Check back on this popular choice”,”experiences_retargeting_urgency_title”:”Spots are going quick”,”last_viewed_hotels_interstitial_title”:”Pick up where you left off”,”attractions.booking.flag.special_offer”:”Special Offer”,”phoenix_likely_to_sell_out_label”:”LIKELY TO SELL OUT*”,”attractions.booking.reserve.now.pay.later”:”Reserve Now & Pay Later”,”attractions.booking.flag.best_seller”:”Best Seller”,”reco.evergreen_promo.footer.cta”:”Hire a Trip Designer”,”reco.evergreen_promo.footer.title_geo”:”Travel u003cb>{sLocation}u003c/b> like a local. Hire an expert to plan and book your trip for $200″,”reco.evergreen_promo.footer.mw.title_geo.1″:”Travel u003cb>{sLocation}u003c/b> like a local.”,”reco.evergreen_promo.footer.mw.title_geo.2″:”Hire an expert to plan and book your trip for $200″,”reco.evergreen_promo.footer.title”:”Travel like a local. Hire an expert to plan and book your trip for $200″,”reco.evergreen_promo.footer.mw.title.1″:”Travel like a local.”,”reco.evergreen_promo.footer.mw.title.2″:”Hire an expert to plan and book your trip for $200″,”article_sponsored_label”:”SPONSORED”,”p13n_username_location”:”{username}, {location}”,”attractions.booking.flag.likely_to_sell_out”:”Likely To Sell Out”,”comma_and_space”:”, “,”restaurant_filter_price_label.0_fffffb7e”:”$”,”restaurant_filter_price_label.1_2_combined”:”$$ – $$$”,”restaurant_filter_price_label.3_fffffb7e”:”$$$$”,”vr_srp_sleeps”:”Sleeps {numGuests}”,”vr_srp_bedrooms_plural”:”{numBedrooms, plural, one{# bedroom} other{# bedrooms}}”,”vr_srp_bathrooms_plural”:”{numBathrooms, plural, one{# bathroom} other{# bathrooms}}”,”distance_from_poi_miles”:”{0} mi from {1}”,”distance_from_poi_kilometer”:”{0} km from {1}”,”location_note_temporarily_closed”:”Temporarily closed”,”phoenix_list_attractions_from_price_per_group_txt_v2″:”from {price} per group”,”cx_feed_attraction_price”:”from {price} per adult”,”cx_feed_hotel_price”:”from {price}/night”,”common_Readmore”:”Read more”,”trips_day_header_item_count”:”{nItems, plural, one{# item} other{# items}}”,”cx_feed_rental_price_with_count”:”{rentalCount} rentals from {price}/night”,”cx_feed_rental_count_no_pricing”:”{rentalCount} rentals”,”vr_rentals_in_geo_329″:”Rentals in {0}”,”phoenix_poi_open_now”:”Open now”,”fusion_list_attractions_tickets_from”:”Admission tickets from {sPrice}”,”articles_keep_exploring”:”Keep exploring”,”articles_keep_exploring_load_more”:”Load more”,”ds_contributor_sponsors_one”:”Sponsored by {sponsorName}”,”social_see_more”:”See all”,”good_to_know_shelf_best_time_to_visit_link”:”Best time to visit”,”good_to_know_shelf_getting_around_link”:”Getting around”,”good_to_know_shelf_local_customs_link”:”Local customs”,”good_to_know_shelf_tips_from_the_pros_link”:”Tips from the pros”,”Travelers_Choice_Botb_POI_Name_undated”:”Travelers’ Choice Best of the Best”,”Travelers_Choice_Homepage_Banner_Text”:”Our top 1% of places, stays, eats, and experiencesu2014decided by you.”,”cx_feed_tc_see_winners”:”See the winners”,”attractions_nearby_header”:”Best nearby attractions”,”accommodations_nearby_header”:”Best nearby hotels”,”restaurants_nearby_header”:”Best nearby restaurants”,”common_Attractions”:”Attractions”,”tf_web_pagination_previous”:”Previous page”,”tf_web_pagination_next”:”Next page”,”ds_pagination_result_text_v2″:”Showing results {pageStart}-{pageEnd} of {limit}”,”insp_sponby”:”Sponsored by”,”linkpost_attribution”:”From {displayName}”,”trips_byline”:”By {UserNames}”,”ar_page_forum_content_X_replies_plural”:”{0, plural, one{# reply} other{# replies}}”,”mob_ads_sponsored”:”Sponsored”,”ds_contributor_author_one”:”By {authorName}”,”trip_detail_remove_from_trip”:”Remove from Trip”,”trips_save_to_a_trip”:”Save to a trip”,”common_TripAdvisor”:”Tripadvisor”,”maps_zoom_in”:”Zoom in”,”maps_zoom_out”:”Zoom out”,”ad_related_stories_feature_in_content_widget”:”Related Stories”,”sponsored_story_content_widget”:”Sponsored Story”,”as_feature_in_content_widget”:”As Featured In”,”trips_gai_modal_powered_by_ai”:”Powered by AI”,”trips_gai_modal_warning_leave”:”Leave”,”trips_gai_modal_warning_go_back”:”Go back”,”trips_gai_modal_save_trip_title”:”{sLocation} for {duration, plural, one{# day} other{# days}}{travelingWith, select, FAMILY { for a Family} FRIENDS { for a Group of Friends} SPOUSE { with Your Partner} other {}}{includeChildren, select, Y { with Children} other {}}.”,”trips_gai_modal_title_geo_itinerary”:”{geoName} Itinerary”,”tag_beta”:”BETA”,”triplist_itineraryday_ffffe73c”:”Day {0}”,”phoenix_accessibility_back_label”:”Go back”,”trips_gai_modal_save_itinerary_cta”:”Save itinerary”,”trips_gai_modal_traveling_with_solo”:”Going solo”,”trips_gai_modal_traveling_with_partner”:”Partner”,”trips_gai_modal_traveling_with_friends”:”Friends”,”trips_gai_modal_traveling_with_family”:”Family”,”sng_fusion_list_filters_modal_reset”:”Reset”,”filters_show_more”:”Show more”,”filters_show_less”:”Show less”,”sng_fusion_list_filters_modal_apply”:”Apply”,”filters_show_all”:”Show all”,”sng_a11y_max_distance”:”Maximum distance”,”filter.chip.name.count”:”{text} • {count}”,”calendar_heatmap_low_priced_date_aria_label_suffix”:”(low priced date)”,”tf_web_DHPDate_pagination_previous”:”Previous month”,”tf_web_DHPDate_pagination_next”:”Next month”,”trips_v2_category_food_and_drink”:”Food & Drink”,”trips_v2_category_forums”:”Forums”,”trips_v2_category_notes”:”Notes”,”trips_v2_category_photos_and_videos”:”Photos/Videos”,”trips_v2_category_places_to_see”:”Places to see”,”trips_v2_category_places_to_go”:”Places to go”,”trips_v2_category_places_to_stay”:”Places to stay”,”trips_v2_category_reviews”:”Reviews”,”trips_v2_category_things_to_do”:”Things to Do”,”attractions.booking.section.mdtitinerary.day”:”Day {0}”,”common_Restaurant_3dd”:”Restaurant”,”common_Attraction_3dd”:”Attraction”,”common_Hotel”:”Hotel”,”attractions.tickets_and_tours”:”Tickets & Tours”,”attractiontype.name.v3.34″:”Neighborhoods”,”phoenix_product_attractions_from_price_per_person_txt_v2″:”from {price} per adult”,”fusion_attractions_from_price_per_group_up_to_strikethrough_txt”:”from {strikeThroughPrice} {price} per group (up to {groupSize})”,”fusion_attractions_from_price_per_group_strikethrough_txt”:”from {strikeThroughPrice} {price} per group”,”phoenix_poi_attractions_from_price_per_group_txt_v2″:”from {price} per group (up to {groupSize})”,”attractions_from_price_price_varies_by_group_size_strikethrough_txt”:”from {strikeThroughPrice} {price} (price varies by group size)”,”fusion_attractions_from_price_per_adult_price_varies_by_group_size_strikethrough_txt”:”from {strikeThroughPrice} {price} per adult (price varies by group size)”,”phoenix_poi_attractions_from_price_price_varies_by_group_size_txt”:”from {price} (price varies by group size)”,”phoenix_poi_attractions_from_price_per_adult_price_varies_by_group_size_txt”:”from {price} per adult (price varies by group size)”,”attractions_from_price_strikethrough_txt”:”from {strikethroughPrice} {price}”,”fusion_attractions_from_price_per_adult_strikethrough_txt”:”from {strikethroughPrice} {price} per adult”,”phoenix_product_attractions_from_price_txt”:”from {price}”,”fusion_strikethrough_start”:”strikethrough”,”fusion_strikethrough_end”:”end strikethrough”,”exp_web_aph_from_price”:”from”,”fusion_attractions_price_per_group”:”{price} per group”,”fusion_attractions_price_per_adult”:”{price} per adult”,”trips_general_error”:”There was an issue completing this action. Please try again later.”,”mw_common_menu_fffffd37″:”Menu”,”common_n_of_n_lodgingtype_in_geo_pl”:”#{1,number,integer} of {2,number,integer} {3, select, 1 {hotels} 2 {B&Bs / Inns} 3 {Specialty lodging} 6 {Vacation rentals} other {}} in {4}”,”attraction_product_duration_days_plus_v2″:”{num}+ days”,”attraction_product_duration_days_range_v1″:”{numFrom}u2013{numTo} days”,”attraction_product_duration_days_round_v1″:”{num, plural, one{# day} other{# days}}”,”attraction_product_duration_hours_plus_v2″:”{num}+ hours”,”attraction_product_duration_hours_range_v1″:”{numFrom}u2013{numTo} hours”,”attraction_product_duration_hours_round_v2″:”{num, plural, one{# hour} other{# hours}}”,”attraction_product_duration_minutes_round_v1″:”{num, plural, one{# minute} other{# minutes}}”,”experiences_duration_in_days”:”Duration: {0, plural, one {# day} other {# days}}”,”TAFlights_itinerary_shared_duration_hours_minutes”:”Duration: {hours}h {minutes}m”,”TAFlights_itinerary_shared_duration_hours”:”Duration: {hours}h”,”TAFlights_itinerary_shared_duration_minutes”:”Duration: {minutes}m”,”attraction_product_duration_minutes_range_v1″:”{numFrom}u2013{numTo} minutes”,”phoenix_poi_duration_days_range_with_prefix”:”Duration: {numfrom}-{numTo, plural, one{# day} other{# days}}”,”phoenix_poi_duration_hours_range_with_prefix”:”Duration: {numfrom}-{numTo, plural, one{# hour} other{# hours}}”,”phoenix_poi_duration_minutes_range_with_prefix”:”Duration: {numfrom}-{numTo, plural, one{# minute} other{# minutes}}”,”common_Loading”:”Loading …”,”notifications_ffffec6c”:”Notifications”,”orion.article.reading_time.min_read.v2″:”{0} min read”,”article_by_author”:”By {authorName}”,”ds_contributor_authors_one_plus”:”By {authorName} +{numOtherAuthors}”,”ds_contributor_authors_two”:”By {authorName1} and {authorName2}”,”ds_contributor_authors_three”:”By {authorName1}, {authorName2}, and {authorName3}”,”ds_contributor_authors_three_plus”:”By {authorName1}, {authorName2}, {authorName3} +{numOtherAuthors}”,”mobile_collapse”:”Collapse”,”backfill_articles_lander_headline”:”Keep on planning”,”backfill_articles_lander_cta”:”See more”,”tc_2023_fallback_ad_destinations_headline”:”Travelersu2019 Choice Best of the Best Destinations”,”tc_2023_fallback_ad_subheading”:”Our top 1%, powered by real reviews.”,”fallback_ad_cta_4″:”See the list”,”tc_2023_fallback_ad_experiences_headline”:”Travelersu2019 Choice Best of the Best Experiences”,”fallback_ad_helpcenter_headline”:”Find answers to all of your questions about Tripadvisor”,”fallback_ad_helpcenter_subheading”:”Visit the Help Center today”,”fallback_ad_cta_3″:”Get Started”,”fallback_ad_phx_headline”:”The both of you could use a trip.”,”fallback_ad_cta_2″:”Download the app”,”fallback_ad_phx_subheading”:”Plan the vacation you deserve with our app.”,”home_rentals_vacation”:”Rent a home for your next vacation”,”tc_2023_fallback_ad_hotels_headline”:”Travelersu2019 Choice Best of the Best Hotels”,”fallback_ad_trips_headline”:”See something you love? Click the heart to save it”,”fallback_ad_trips_subheading”:”And see all your saved travel ideas on a map”,”plus_cashback_h_education_banner_title”:”Join today, get cash back on hotels”,”plus_cashback_h_education_footer_text”:”Cash, perks, and more – all for {subscriptionPrice} a year.”,”plus_cta_learn_more”:”Learn more”,”TAFlights_filter_title_reset”:”Reset”,”ta_filters”:”Filters”,”show_n_results”:”Show {0, plural, one{# result} other{# results}}”,”h_show_results”:”Show results”,”res_view_details_done”:”Done”,”h_filters_apply”:”Apply”,”plus_x_more_symbol_only”:”+{0}”,”popular_brands”:”Popular brands”,”popular_hotels”:”Popular hotels”,”hotel_class_filter_updated_label_plural”:”{nStar, plural, one{#-star} other{#-star}}”,”plus_filter_show_only_stays_v2″:”Show all stays with member offers”,”walkability_explanation2″:”Places to stay are graded on a 0-100 scale. The higher the grade, the easier it is for travelers to find restaurants and things to do within walking distance.”,”ts_hotel_filter_tooltip”:”Shows hotels and stays actively taking safety measures like added sanitation procedures, mask-wearing guidelines, and more. Learn more at our u003ca target=”_blank” href=”https://www.tripadvisor.com/travel-safe”>Travel Safe hubu003c/a>.”,”UkraineBanner_Hotels_InfoBox_Text”:”Hotels that are offering free or discounted accommodations to those displaced by the war in Ukraine.”,”UkraineBanner_Hotels_CTA”:”Learn more”,”ampersand_up”:”& up”,”select_all_filters”:”Select all”,”deselect_all_filters”:”Deselect all”,”mobile_kilometers_short_form”:”km”,”mobile_miles_short_form”:”mi”,”h_distance_filter_search_placeholder”:”Search for more locations”,”hotels_popular_locations”:”Popular locations”,”plus_educational_member_tooltip_title”:”You get cash back when you book this hotel on Tripadvisor.”,”plus_educational_member_tooltip_body_v2″:”Itu2019s one of your member benefits!”,”plus_educational_non_member_tooltip_title”:”This hotel is part of our new Tripadvisor Plus membership”,”plus_educational_non_member_tooltip_body”:”Book this hotel on Tripadvisor and become a member at checkout to get cash back on your stay. Itu2019s $99 a year (which is typically covered by the first hotel booking).”,”plus_educational_non_member_tooltip_lean_more”:”Learn More”,”seo_empty_photo_prompt”:”Have you been to {0}?”,”common_Postphotos”:”Post photos”,”ur_rd_WriteReview”:”Write Review”,”hsx_remove_commerce_enter_dates_button”:”Enter dates”,”hsx_remove_commerce_enter_dates_subheader”:”Add dates to see prices”,”hsx_remove_commerce_show_prices_button”:”Show prices”,”hsx_remove_commerce_show_prices_subheader”:”Enter dates to see prices”,”destination_driver_title_2″:”Heading to {geoName}?”,”destination_driver_description_2″:”Get the scoop from other travelers on the canu2019t-miss food, drinks, stays, and sights.”,”destination_driver_cta”:”Start exploring”,”common_Cookie_consent_14f6″:”Cookie consent”,”footer_disclaimer_line1″:”This is the version of our website addressed to speakers of {language} in {country}. If you are a resident of another country or region, please select the appropriate version of Tripadvisor for your country or region in the drop-down menu.”,”footer_disclaimer_line1_no_country”:”This version of our website is addressed to speakers of {language} generally, except for when a specific version of our website exists for their country or region. You may use the drop-down menu to access other versions of Tripadvisor addressed to specific countries and regions.”,”footer_disclaimer_line2″:”TripAdvisor LLC makes no guarantees for availability of prices advertised on our sites and applications. Listed prices may require a stay of a particular length or have blackout dates, qualifications or other applicable restrictions. TripAdvisor LLC is not responsible for any content on external web sites that are not owned or operated by Tripadvisor.”,”footer_disclaimer_line2_estimates”:”Indicative hotel prices displayed on our u201CExploreu201D pages are estimates extrapolated from historic pricing data.”,”footer_disclaimer_line3″:”TripAdvisor LLC is not a booking agent or tour operator. When you book with one of our partners, please be sure to check their site for a full disclosure of all applicable fees.”,”common_26ec”:”u00A9 {0} Tripadvisor LLC”,”common_Allrightsreserved”:”All rights reserved.”,”photos_provided_by_2_1bed”:”Some photos provided by {0}.”,”common_more_ffffe87d”:”more”,”common_9bc”:”Currency”,”footer_region”:”Region”,”footer_about_ta_v2″:”About Tripadvisor”,”footer_explore_v2″:”Explore”,”footer_do_business_v2″:”Do Business With Us”,”footer_get_app_v2″:”Get The App”,”footer_ta_sites_v2″:”Tripadvisor Sites”,”plus_membership_menu_label”:”My Membership”,”plus_membership_resubscribe_now”:”Resubscribe now”,”mixer_home_about”:”About”,”homepage_war_button”:”Write a review”,”ugc_uploader_photo_v3″:”Post photos”,”global_nav_profile_my_business”:”My business”,”dmo_hdr_alerts”:”Alerts”,”trips_product_name”:”Trips”,”my_bookings_headtext_fffff9b3″:”Bookings”,”common_Signin”:”Sign in”,”mem_settings”:”Settings”,”common_Signout”:”Sign out”,”review_dropdown_label”:”Review”,”ip_view_profile_1cf1″:”View profile”,”mob_apn_notifications_ffffdfce”:”Notifications”,”mem_account_info”:”Account info”,”utility_nav_profile”:”Profile”,”cart_with_number_items”:”Cart with {0} items.”,”attractions.cart_button_acc”:”Cart”,”sng_review_options”:”Review Options”,”sng_close_options_menu”:”Close Options Menu”,”sng_open_options_menu”:”Open Options Menu”,”user_review_found_this_helpful”:”{number} people found this helpful”,”airm_mobile_show_more”:”Show more”,”activity_selection_modal_title”:”Write a review”,”activity_selection_modal_subtitle”:”Which tour did you do?”,”tour_selector_placeholder”:”Select a tour”,”tour_selector_placeholder_desktop”:”Search or select from dropdown”,”tour_selector_other_checkbox_label”:”I donu2019t remember/my tour is not listed.”,”button_continue”:”Continue”,”ur_search_your_drafts_all_caps”:”YOUR DRAFTS”,”user_review_add_photos_limit_title”:”Oops!”,”aw_done_ffffe1e5″:”Done”,”user_review_add_photos_limit_secondary_cta”:”Reselect photos”,”user_review_add_photos_rate_limited_text”:”You have surpassed the maximum allowed amount of photos you can upload. You can add photos separately later.”,”user_review_add_photos_limit_reached_text”:”You have surpassed the maximum allowed amount of {limit} photos to be attached to a review. Try again with less photos.”,”user_review_crop_photo”:”Crop photo”,”user_review_reset_crop”:”Reset crop”,”btn_save”:”Save”,”user_review_crop_photo_remove”:”Remove photo”,”war_hotel_photo_category_dining”:”Dining”,”war_hotel_photo_category_hotel_and_ground”:”Hotel & Grounds”,”war_hotel_photo_category_room”:”Room/Suite”,”war_hotel_photo_category_bathroom”:”Bathroom”,”war_hotel_photo_category_pool”:”Pool/Beach Area”,”war_hotel_photo_category_view”:”View from Room”,”war_hotel_photo_category_family_area”:”Family/Play Areas”,”war_hotel_photo_category_buisness_center”:”Business Center/Function Rooms”,”war_hotel_photo_category_other”:”Other”,”phoenix_war_profanity_error_message”:”Sorry, we can’t accept reviews that use profanity”,”user_review_add_caption_title”:”Add caption”,”user_review_add_captions_title”:”Add captions ({index}/{count})”,”tavrs_common_save”:”Save”,”war_photos_category_selection_placeholder”:”Select a category”,”war_photos_category_selection_chooseone”:”Choose one”,”user_review_add_caption_label”:”Tell us about this photo”,”user_review_add_caption”:”What’s this of? Why’s it special?”,”user_review_add_photos”:”Add photos”,”user_review_add_more_photos”:”Add more photos”,”user_review_attach_photo”:”Attach 1 photo”,”user_review_attach_photos”:”Attach {number} photos”,”user_review_photo_upload_terms_with_url”:”By uploading this photo, I verify that I am the owner of this content and accept Tripadvisor’s u003ca href={link} class={class} target={target}>Terms of Useu003c/a>.”,”b2b_delete_photo”:”Delete Photo”,”user_review_uploading_photos”:”Uploading your picsu2026″,”post_video_file_type_error”:”This file type is not supported. Please try a .mov, .mp4 or m4v file”,”post_photo_unsupported_file”:”This file type is not supported. Please refer to Tripadvisor’s photo posting guidelines. “,”post_video_size_error”:”This file size is not supported. Please make sure your file is less than 500MB “,”mobile_offline_megabyte_ffffec6c”:”{0} MB”,”file_size_too_big_photo_oops_message”:”This file size is not supported. Please make sure your file is less than {0}”,”video_upload_max_number”:”You can upload a maximum of {nVideos} videos at a time”,”post_photo_tips_guidelines”:”You can upload a maximum of 10 photos at a time”,”video_upload_fail”:”Oops! One or more of your videos failed to upload.”,”post_photo_upload_failed”:”Your photo upload failed. Please try again. “,”post_photo_upload_photos_button”:”Upload photos”,”confirmed_booker_upload_photo”:”Upload a photo”,”post_video_upload_another_video”:”Drag and drop or u003c/> u003cspan class=”{sColorClass1}”>upload another video u003c/span>”,”post_photo_upload_another_video”:”Drag and drop or u003c/> u003cspan class=”{sColorClass1}”>upload another photo u003c/span>”,”add_more_videos_mw_uploader”:”Add more videos”,”add_more_photos_mw_uploader”:”Add more photos”,”post_photo_or_just_text”:”or”,”post_photo_drag_and_drop_from_desktop”:”Drag and drop a file from your desktop “,”new_videos_terms_of_use”:”By uploading these videos,u00A0I verify that I am the owner of this content and I accept Tripadvisor’s u003ca href={link} target=’_blank’>Terms of Useu003c/a>”,”new_photos_terms_of_use”:”By uploading these photos,u00A0I verify that I am the owner of this content and I accept Tripadvisor’s u003ca href={link} target=’_blank’>Terms of Useu003c/a>”,”new_video_terms_of_use”:”By uploading this video,u00A0I verify that I am the owner of this content and I accept Tripadvisor’s u003ca href={link} target=’_blank’>Terms of Useu003c/a>”,”new_photo_terms_of_use”:”By uploading this photo,u00A0I verify that I am the owner of this content and I accept Tripadvisor’s u003ca href={link} target=’_blank’>Terms of Useu003c/a>”,”mobile_help_center_url”:”https://www.tripadvisorsupport.com/hc/en-us”,”flash_uploader_tips_and_guidelines_10d8″:”Tips & guidelines”,”video_upload_video_formats_accepted”:”Accepted video formats include {sFileExtentions}”,”post_photo_accepted_formats”:”Accepted photo formats include .jpg .jpeg .gif and .png”,”file_size_limit_photo”:”File size should be less than {0}MB.”,”video_upload_more_info_guidelines_link”:”For more information see our u003cspan>video uploader guidelinesu003c/span>”,”post_photo_more_info_2″:”For more information see our u003cspan>photo uploader guidelinesu003c/span>”,”uploader_error_required_field”:”This field is required”,”post_video_video_count_text”:”Video {nCurrentVideoCount} of {nTotalVideoCount}”,”post_photo_video_count_text”:”Photo {nCurrentphotoCount} of {nTotalphotoCount}”,”mobile_delete”:”Delete”,”post_photo_add_description_v2_part_1″:”Add a description “,”post_video_add_description_v2_part_2”:”Tell other travelers about your video “,”post_photo_add_description_v2_part_2”:”Tell other travelers about your photo “,”photo_uploader_add_a_location_tag”:”Add a location tag”,”remove_location_cf6″:”Remove location”,”success_repost_photo”:”Your photo was posted!”,”ugc_uploader_photo_v2″:”Post photo”,”b2b_media_upload_text”:”Upload”,”mc_plus_cancel”:”Cancel”,”success_repost_video”:”Your video was posted!”},”features”:{“link_to_cars”:true,”attractions_filtered_modernization”:true,”forums”:true,”shopping_cart_desktop”:true,”menu_connect_menu_ingestion_api”:true,”safety_section_tooltip”:true,”rubicon_header_bidding”:true,”vr_responsive_search_page_map”:true,”distance_filter_without_search”:true,”tc_1l_logo”:true,”b2c_dining_club”:true,”hotels_filters_reskin”:true,”h_defer_facebook_sdk”:true,”housekeeping_ux_updates”:true,”search_engine_referrer”:true,”hr_ib_exclude_taxes_and_fees”:true,”b2b_paypal”:true,”accommodation_prices_in_shelves”:true,”plus_onsite_education_footer_load”:true,”pricing_mode_filter”:true,”cruise_meta”:true,”rs_support_chat”:true,”restaurant_listing_management”:true,”optimus_discount_interstitial”:true,”attractions_animal_button”:true,”oracle_geo_heatmap”:true,”mc_selfid_diversity_tags_h”:true,”hotels_media_mas_carousels_render_when_almost_visible”:true,”rental_cars”:true,”queryparser_nearby”:true,”optimus_paywall”:true,”hr_partial_filter_match”:true,”t4b_hr_xsell_sponsored_slot_0_display”:true,”hr_dataapi_to_hps_migration_meta_enabled”:true,”value_proposition_banner_frictionless_browsing”:true},”urqlCache”:{“results”:{“46149943”:{“data”:”{“award”:[null]}”},”124394010″:{“data”:”{“locations”:[{“parents”:[{“locationId”:21},{“locationId”:1}]}]}”},”258430230″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”267420712″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”290379863″:{“data”:”{“award”:[{“year”:2023,”awardType”:”BOTB”}]}”},”453835375″:{“data”:”{“award”:[{“year”:2023,”awardType”:”BOTB”}]}”},”460163988″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”570127441″:{“data”:”{“award”:[null]}”},”671652151″:{“data”:”{“footerLinks”:{“aboutUsLinks”:[{“preLocalizedAnchorText”:”About Us”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”about_us”,”url”:”https://tripadvisor.mediaroom.com/us-about-us”},{“preLocalizedAnchorText”:”Press”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”press”,”url”:”https://tripadvisor.mediaroom.com/us-contact-us”},{“preLocalizedAnchorText”:”Resources and Policies”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”resources_and_policies”,”url”:”https://tripadvisor.mediaroom.com/us-resources”},{“preLocalizedAnchorText”:”Trust & Safety”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”trust_and_safety”,”url”:”/Trust”},{“preLocalizedAnchorText”:”Contact us”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”contact_us”,”url”:”https://tripadvisor.mediaroom.com/US-contact-us”},{“preLocalizedAnchorText”:”Accessibility Statement”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”accessibility_statement”,”url”:”Trust-lgF5hKLTqw3U-Accessibility_statement.html”}],”businessLinks”:[{“preLocalizedAnchorText”:”Owners”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”claim_listing_click”,”url”:”/Owners?m=58397″},{“preLocalizedAnchorText”:”Business Advantage”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”business_advantage_click”,”url”:”/business/businessadvantage?args=-m57398″},{“preLocalizedAnchorText”:”Sponsored Placements”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”sponsored_placements_click”,”url”:”/business/sponsored-placements?args=-m58399″},{“preLocalizedAnchorText”:”Advertise with Us”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”advertise”,”url”:”/MediaKit”},{“preLocalizedAnchorText”:”Access our Content API”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”content_licensing_click”,”url”:”/developers”},{“preLocalizedAnchorText”:”Become an Affiliate”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”affiliate”,”url”:”/affiliates”}],”restaurantLinks”:[{“preLocalizedAnchorText”:”Manage Your Business”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”rs_footer_manage_your_business_click”,”url”:”/Owners”},{“preLocalizedAnchorText”:”Advertise Your Restaurant”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”rs_footer_click_advertise_your_restaurant”,”url”:”/Restaurant_Ads”},{“preLocalizedAnchorText”:”Tripadvisor Premium”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”rs_footer_click_ta_premium”,”url”:”/Premium”},{“preLocalizedAnchorText”:”More Resources”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”rs_footer_click_more_resources”,”url”:”/ForRestaurants”}],”exploreLinks”:[{“preLocalizedAnchorText”:”About Us”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”about_us”,”url”:”https://tripadvisor.mediaroom.com/us-about-us”,”isObfuscated”:null},{“preLocalizedAnchorText”:”Help Center”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”help_center”,”url”:”https://www.tripadvisorsupport.com/hc/en-us”,”isObfuscated”:null},{“preLocalizedAnchorText”:”Tripadvisor Plus”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”ta_plus”,”url”:”/Plus”,”isObfuscated”:null}],”legalLinks”:[{“preLocalizedAnchorText”:”Terms of Use”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”terms_of_use”,”url”:”https://tripadvisor.mediaroom.com/us-terms-of-use”,”isObfuscated”:null},{“preLocalizedAnchorText”:”Privacy and Cookies Statement”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”privacy_policy”,”url”:”https://tripadvisor.mediaroom.com/us-privacy-policy”,”isObfuscated”:null},{“preLocalizedAnchorText”:”Cookie consent”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”cookie_consent”,”url”:”modal://cookie-consent”,”isObfuscated”:null},{“preLocalizedAnchorText”:”Site Map”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”site_map”,”url”:”/SiteIndex-g294012-United_Arab_Emirates.html”,”isObfuscated”:null},{“preLocalizedAnchorText”:”How the site works”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”hamon_law”,”url”:”/pages/service_en.html”,”isObfuscated”:null},{“preLocalizedAnchorText”:”Contact us”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”contact_us”,”url”:”https://tripadvisor.mediaroom.com/US-contact-us”,”isObfuscated”:null}],”appLinks”:[{“preLocalizedAnchorText”:”iPhone App”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”ios_app”,”url”:”/ShowUrl-a_partnerKey.1-a_url.http%3A__2F____2F__itunes__2E__apple__2E__com__2F__us__2F__app__2F__tripadvisor__2F__id284876795__3F__mt%3D8__26__pt%3D14124__26__ct%3DBrand__5F__AppPage__5F__0__5F__63742-a_urlKey.f72bae0add77e606d.html”},{“preLocalizedAnchorText”:”Android App”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”android_app”,”url”:”/ShowUrl-a_partnerKey.1-a_url.https%3A__2F____2F__play__2E__google__2E__com__2F__store__2F__apps__2F__details__3F__id%3Dcom__2E__tripadvisor__2E__tripadvisor__26__hl%3Den__26__referrer%3Dutm__5F__download__5F__tracking%253DBrand__5F__AppPage__5F__0__5F__63742-a_urlKey.70bb05c81415ae292.html”}],”socialLinks”:[{“preLocalizedAnchorText”:”Facebook”,”localizedAnchorText”:null,”iconUrl”:”/img2/social/icons/facebook_20x20.png”,”trackAction”:”facebook”,”url”:”/ShowUrl-a_partnerKey.1-a_url.http%3A__2F____2F__www__2E__facebook__2E__com__2F__TripAdvisor-a_urlKey.15090f72418302936.html”},{“preLocalizedAnchorText”:”Twitter”,”localizedAnchorText”:null,”iconUrl”:”/img2/social/icons/twitter_20x20.png”,”trackAction”:”twitter”,”url”:”/ShowUrl-a_partnerKey.1-a_url.https%3A__2F____2F__twitter__2E__com__2F__TripAdvisor-a_urlKey.44b19b8408425e091.html”},{“preLocalizedAnchorText”:”Pinterest”,”localizedAnchorText”:null,”iconUrl”:”/img2/social/icons/pinterest_20x20.png”,”trackAction”:”pinterest”,”url”:”/ShowUrl-a_partnerKey.1-a_url.https%3A__2F____2F__www__2E__pinterest__2E__com__2F__tripadvisor__2F__-a_urlKey.37f0c4f6234c37ed3.html”},{“preLocalizedAnchorText”:”Instagram”,”localizedAnchorText”:null,”iconUrl”:”/img2/social/icons/instagram_20x20.png”,”trackAction”:”instagram”,”url”:”/ShowUrl-a_partnerKey.1-a_url.https%3A__2F____2F__instagram__2E__com__2F__tripadvisor__2F__-a_urlKey.95e728d4c18d14f29.html”}],”partnerLinks”:[{“preLocalizedLink”:”Discover your dream destination with u003ca target=\”_blank\” class=\”inlineLink\” href=\”https://www.jetsetter.com/\”>Jetsetteru003c/a>”,”localizedLink”:null,”trackAction”:”sites_jetsetter”},{“preLocalizedLink”:”Book the best restaurants with u003ca target=\”_blank\” class=\”inlineLink\” href=\”https://www.thefork.com/\”>TheForku003c/a>”,”localizedLink”:null,”trackAction”:”sites_thefork”},{“preLocalizedLink”:”Book tours and attraction tickets on u003ca target=\”_blank\” class=\”inlineLink\” href=\”https://www.viator.com/\”>Viatoru003c/a>”,”localizedLink”:null,”trackAction”:”sites_viator”},{“preLocalizedLink”:”Read cruise reviews on u003ca target=\”_blank\” class=\”inlineLink\” href=\”https://www.cruisecritic.com/\”>Cruise Criticu003c/a>”,”localizedLink”:null,”trackAction”:”sites_cruisecritic”},{“preLocalizedLink”:”Get airline seating charts on u003ca target=\”_blank\” class=\”inlineLink\” href=\”https://www.seatguru.com/\”>Seat Guruu003c/a>”,”localizedLink”:null,”trackAction”:”sites_seatguru”},{“preLocalizedLink”:”Find vacation rentals on u003ca target=\”_blank\” class=\”inlineLink\” href=\”https://www.flipkey.com/\”>FlipKeyu003c/a>”,”localizedLink”:null,”trackAction”:”sites_flipkey”},{“preLocalizedLink”:”Search for holiday rentals on u003ca target=\”_blank\” class=\”inlineLink\” href=\”https://www.holidaylettings.co.uk/\”>Holiday Lettingsu003c/a>”,”localizedLink”:null,”trackAction”:”sites_holidaylettings”},{“preLocalizedLink”:”Plan and book your next trip with u003ca target=\”_blank\” class=\”inlineLink\” href=\”https://www.helloreco.com/\”>Reco Trip Designersu003c/a>”,”localizedLink”:null,”trackAction”:”sites_reco”}]}}”},”691099204″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”735794334″:{“data”:”{“locations”:[{“locationTimezoneId”:”Asia/Dubai”}]}”},”900549151″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”922395323″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”1256997168″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”1295615919″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”1386878546″:{“data”:”{“gptInfo”:[{“adBase”:”/5349/ta.ta.com.s/me.united_arab_emirates”,”ppid”:null,”pageLevelTargeting”:[{“key”:”browser”,”value”:[“chrome”]},{“key”:”country”,”value”:[“294012”]},{“key”:”detail”,”value”:[“0”]},{“key”:”d”,”value”:[“AUH”]},{“key”:”dregion”,”value”:[“294013”]},{“key”:”o”,”value”:[“NYC”]},{“key”:”oregion”,”value”:[“60763”]},{“key”:”geo”,”value”:[“294012”]},{“key”:”geo_ctx”,”value”:[“21827″,”21828″,”21830″,”21831″,”21847”]},{“key”:”loctype”,”value”:[“lodging”]},{“key”:”PageType”,”value”:[“SmartDeals”]},{“key”:”platform”,”value”:[“desktop”]},{“key”:”premium_category”,”value”:[“rail2:premium/rail1:premium/rail3:premium/rail4:premium/footer:premium/inlinenova:sufficient/inline5:sufficient/inline4:sufficient/inline3:sufficient/inline2:sufficient/inline1:sufficient”]},{“key”:”rd”,”value”:[“com”]}]}]}”},”1411591660″:{“data”:”{“canViewOptimusFeatures”:true}”},”1430113874″:{“data”:”{“feed”:{“sectionGroups”:[{“__typename”:”Mixer_SingleSection”,”section”:{“__typename”:”Mixer_InterstitialSection”,”sectionId”:”5d5ceab6-7486-41b1-bc26-c2a8a6782713_0″,”sectionType”:”InterstitialSection”,”curatedShelfId”:4392,”interstitialType”:”RECO_EVERGREEN_PROMO”,”displayType”:null,”displayCount”:null,”variant”:null,”triggerAction”:null,”triggerActionSeconds”:null,”tier”:null}}],”status”:{“partial”:false}}}”},”1458955425″:{“data”:”{“mediaAlbum”:{“status”:200,”statusMessage”:”OK”,”album”:{“albumId”:-125,”subAlbumId”:null,”translationKey”:”photos_module_carousel_view_all_photos_plain”,”dataStrategy”:”a”,”offset”:0,”totalMediaCount”:3667,”mediaList”:[{“type”:”p”,”mediaId”:560316487,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/21/65/c0/47/exterior.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/21/65/c0/47/exterior.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/21/65/c0/47/exterior.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/21/65/c0/47/exterior.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/21/65/c0/47/exterior.jpg”,”width”:250,”height”:167},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/21/65/c0/47/exterior.jpg”,”width”:550,”height”:367},{“url”:”https://media-cdn.tripadvisor.com/media/photo-o/21/65/c0/47/exterior.jpg”,”width”:1023,”height”:682}]},{“type”:”p”,”mediaId”:256472626,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/0f/49/76/32/ramada-downtown-dubai.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/0f/49/76/32/ramada-downtown-dubai.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/0f/49/76/32/ramada-downtown-dubai.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/0f/49/76/32/ramada-downtown-dubai.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/0f/49/76/32/ramada-downtown-dubai.jpg”,”width”:250,”height”:167},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/0f/49/76/32/ramada-downtown-dubai.jpg”,”width”:550,”height”:367},{“url”:”https://media-cdn.tripadvisor.com/media/photo-w/0f/49/76/32/ramada-downtown-dubai.jpg”,”width”:1024,”height”:682},{“url”:”https://media-cdn.tripadvisor.com/media/photo-o/0f/49/76/32/ramada-downtown-dubai.jpg”,”width”:2000,”height”:1333}]}]}}}”},”1501041247″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”1656079472″:{“data”:”{“OptimusBenefits_getOptimusEligibility”:{“eligible”:true,”subscribed”:false}}”},”1656081302″:{“data”:”{“award”:[null]}”},”1753894965″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”1756411578″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”1774238478″:{“data”:”{“award”:[{“year”:2023,”awardType”:”BOTB”}]}”},”1897999435″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”1898138794″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”1898139718″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”1902955276″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”2047721097″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”2213925168″:{“data”:”{“award”:[null]}”},”2221853096″:{“data”:”{“mediaAlbum”:{“status”:200,”statusMessage”:”OK”,”album”:{“albumId”:-125,”subAlbumId”:null,”translationKey”:”photos_module_carousel_view_all_photos_plain”,”dataStrategy”:”a”,”offset”:0,”totalMediaCount”:6204,”mediaList”:[{“type”:”p”,”mediaId”:598879844,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/23/b2/2e/64/atlantis-the-palm.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/23/b2/2e/64/atlantis-the-palm.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/23/b2/2e/64/atlantis-the-palm.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/23/b2/2e/64/atlantis-the-palm.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/23/b2/2e/64/atlantis-the-palm.jpg”,”width”:250,”height”:149},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/23/b2/2e/64/atlantis-the-palm.jpg”,”width”:550,”height”:328},{“url”:”https://media-cdn.tripadvisor.com/media/photo-o/23/b2/2e/64/atlantis-the-palm.jpg”,”width”:1000,”height”:596}]},{“type”:”p”,”mediaId”:700315010,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/29/bd/f5/82/view-from-guest-room.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/29/bd/f5/82/view-from-guest-room.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/29/bd/f5/82/view-from-guest-room.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/29/bd/f5/82/view-from-guest-room.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/29/bd/f5/82/view-from-guest-room.jpg”,”width”:250,”height”:164},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/29/bd/f5/82/view-from-guest-room.jpg”,”width”:550,”height”:361},{“url”:”https://media-cdn.tripadvisor.com/media/photo-o/29/bd/f5/82/view-from-guest-room.jpg”,”width”:1024,”height”:672},{“url”:”https://media-cdn.tripadvisor.com/media/photo-w/29/bd/f5/82/view-from-guest-room.jpg”,”width”:1024,”height”:672}]}]}}}”},”2273686650″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”2364755160″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”2365834524″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”2379679849″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”2406296088″:{“data”:”{“award”:[null]}”},”2476052607″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”2514568622″:{“data”:”{“mediaAlbum”:{“status”:200,”statusMessage”:”OK”,”album”:{“albumId”:-125,”subAlbumId”:null,”translationKey”:”photos_module_carousel_view_all_photos_plain”,”dataStrategy”:”a”,”offset”:0,”totalMediaCount”:10694,”mediaList”:[{“type”:”p”,”mediaId”:690592782,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/29/29/9c/0e/exterior.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/29/29/9c/0e/exterior.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/29/29/9c/0e/exterior.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/29/29/9c/0e/exterior.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/29/29/9c/0e/exterior.jpg”,”width”:250,”height”:167},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/29/29/9c/0e/exterior.jpg”,”width”:550,”height”:367},{“url”:”https://media-cdn.tripadvisor.com/media/photo-w/29/29/9c/0e/exterior.jpg”,”width”:1024,”height”:683},{“url”:”https://media-cdn.tripadvisor.com/media/photo-m/1280/29/29/9c/0e/exterior.jpg”,”width”:1280,”height”:853}]},{“type”:”p”,”mediaId”:284973324,”photoSizes”:[{“url”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/10/fc/59/0c/jw-marriott-marquis-hotel.jpg?w=100&h=100&s=1″,”width”:0,”height”:0},{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/10/fc/59/0c/jw-marriott-marquis-hotel.jpg”,”width”:50,”height”:50},{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/10/fc/59/0c/jw-marriott-marquis-hotel.jpg”,”width”:150,”height”:150},{“url”:”https://media-cdn.tripadvisor.com/media/photo-i/10/fc/59/0c/jw-marriott-marquis-hotel.jpg”,”width”:180,”height”:200},{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/10/fc/59/0c/jw-marriott-marquis-hotel.jpg”,”width”:250,”height”:167},{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/10/fc/59/0c/jw-marriott-marquis-hotel.jpg”,”width”:550,”height”:367},{“url”:”https://media-cdn.tripadvisor.com/media/photo-w/10/fc/59/0c/jw-marriott-marquis-hotel.jpg”,”width”:1024,”height”:683},{“url”:”https://media-cdn.tripadvisor.com/media/photo-o/10/fc/59/0c/jw-marriott-marquis-hotel.jpg”,”width”:1299,”height”:867}]}]}}}”},”2706891691″:{“data”:”{“currency”:{“code”:”USD”,”name”:”U.S. Dollars”,”symbol”:”$”}}”},”3106868348″:{“data”:”{“AdMissionControl_getPageSlotSettings”:[{“slots”:[{“slot”:”rail2″,”overrides”:[]},{“slot”:”footer”,”overrides”:[]},{“slot”:”rail1″,”overrides”:[]},{“slot”:”inline1″,”overrides”:[]}]}]}”},”3133363382″:{“data”:”{“award”:[null]}”},”3169193759″:{“data”:”{“award”:[null]}”},”3461909285″:{“data”:”{“award”:[{“year”:2023,”awardType”:”BOTB”}]}”},”3558101153″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”3636415800″:{“data”:”{“award”:[null]}”},”3647387268″:{“data”:”{“currentLocale”:{“pointOfSaleName”:”United States”,”ietfLocale”:”en”,”languageName”:”English”,”country”:{“locationId”:191,”name”:”United States”}}}”},”3790518012″:{“data”:”{“award”:[{“year”:2023,”awardType”:”BOTB”}]}”},”3802495987″:{“data”:”{“alertSection”:{“alerts”:[]}}”},”3857729549″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”3950547981″:{“data”:”{“AbTesting_evaluateTests”:[null]}”},”4218152787″:{“data”:”{“award”:[{“year”:2023,”awardType”:”COE”}]}”},”4249105090″:{“data”:”{“award”:[{“year”:2023,”awardType”:”BOTB”}]}”},”4257663893″:{“data”:”{“AbTesting_evaluateTests”:[null]}”}}},”redux”:{“i18n”:{“locale”:”en_US”,”language”:”en”,”ietfLocale”:”en-US”,”isRtl”:false,”distanceUnit”:”MILES”,”firstDayOfWeek”:0},”api”:{“requests”:{“_data_1_0_hotelOracle_294012_heatMap”:{“loading”:false,”result”:[“/data/1.0/hotelOracle/294012/heatMap”],”url”:”/data/1.0/hotelOracle/294012/heatMap”},”_data_1_0_brand_header_servlet_SmartDeals_viewportCategory_DESKTOP_geoId_294012_pageName_SmartDeals_isTaReferrer_false”:{“loading”:false,”result”:[“/data/1.0/brand/header?servlet=SmartDeals&viewportCategory=DESKTOP&geoId=294012&pageName=SmartDeals&isTaReferrer=false”],”url”:”/data/1.0/brand/header?servlet=SmartDeals&viewportCategory=DESKTOP&geoId=294012&pageName=SmartDeals&isTaReferrer=false”}},”responses”:{“/data/1.0/hotelOracle/294012/heatMap”:{“data”:{“hotelId”:null,”items”:[],”percentiles”:[{“percentileType”:”CALENDAR_MONTH”,”startDate”:”2023-07-01″,”endDate”:”2023-08-01″,”pricesUSD”:{},”pricesDisplay”:{}},{“percentileType”:”CALENDAR_MONTH”,”startDate”:”2023-08-01″,”endDate”:”2023-09-01″,”pricesUSD”:{},”pricesDisplay”:{}},{“percentileType”:”CALENDAR_MONTH”,”startDate”:”2023-09-01″,”endDate”:”2023-10-01″,”pricesUSD”:{},”pricesDisplay”:{}},{“percentileType”:”CALENDAR_MONTH”,”startDate”:”2023-10-01″,”endDate”:”2023-11-01″,”pricesUSD”:{},”pricesDisplay”:{}},{“percentileType”:”CALENDAR_MONTH”,”startDate”:”2023-11-01″,”endDate”:”2023-12-01″,”pricesUSD”:{},”pricesDisplay”:{}},{“percentileType”:”CALENDAR_MONTH”,”startDate”:”2023-12-01″,”endDate”:”2024-01-01″,”pricesUSD”:{},”pricesDisplay”:{}},{“percentileType”:”CALENDAR_MONTH”,”startDate”:”2024-01-01″,”endDate”:”2024-02-01″,”pricesUSD”:{},”pricesDisplay”:{}}],”popularDates”:null},”error”:null},”/data/1.0/brand/header?servlet=SmartDeals&viewportCategory=DESKTOP&geoId=294012&pageName=SmartDeals&isTaReferrer=false”:{“data”:{“adjustForSmartBanner”:false,”showGeopill”:true,”numLines”:2,”isPersistentHeader”:false,”usePersistentIcons”:true,”hideLogo”:false,”liteHeader”:false},”error”:null}}},”page”:{“name”:”DEFAULT”,”geoId”:294012,”detailId”:0,”geoPoint”:null},”travelerInfo”:{“preferences”:{“currency”:”USD”},”hotels”:{“stayDates”:”2023_7_23_2023_7_24″,”guests”:”1_2″,”defaultDates”:true,”travelerType”:null},”vr”:{“start”:”2023/07/23″,”end”:”2023/07/24″,”adults”:2,”children”:0},”attractions”:{“singleDate”:””,”fromDate”:””,”toDate”:””,”attractionPaxAdults”:0,”attractionPaxChildren”:0},”restaurants”:{“date”:”2023-07-14″,”time”:”8:00 PM”,”partySize”:”2″,”isDefault”:false,”displayDate”:”Fri, 7/14″},”home”:{“fromDate”:”2023-07-23″,”toDate”:”2023-07-24″,”defaultDates”:true,”fuzzyDates”:false},”flights”:{“oneWayDate”:”2023-07-27″,”departureDate”:”2023-07-27″,”returnDate”:”2023-08-03″,”originAirportCode”:null,”destinationAirportCode”:null}},”auth”:{“isMember”:false,”csrfToken”:”TNI1625!AMVC4lArGmIi0gdIuxQXksJVgWCO3kIgQYHMovBqPqsMiEZXH6UjE84S34jrh6lK9nnX6cN31eZSgrbTpHc9DNNF4GOpFNRRzYx43cD7NBvFFTGkk52dxSQJUe8SiSSYLFSak2FyFPDsOzxr+PgwZ2CbDZvebHiyoIQWbWZKQ1W/”,”altSessId”:”9C73E247F8671EE7DC7578DB9509073F”,”loggedInUserId”:null,”captcha”:null,”fbApi”:{“apiVersion”:”v15.0″,”facebookConnectApiKey”:”162729813767876″,”facebookConnectAppId”:”162729813767876″,”facebookConnectAppName”:”tripadvisor”,”taServerTime”:1689304505,”skipFacebookSessionCheck”:false,”sdkUrl”:”//connect.facebook.net/en_US/sdk.js”,”facebookPermissions”:”email,user_friends”}},”route”:{“geo”:”294012″,”supkw”:”uae”,”supcm”:”295006783″,”supti”:”kwd-79646230278464:loc-190″,”supdv”:”c”,”page”:”SmartDeals”,”msclkid”:”67533e90f5fb1858ed315a2048438fac”,”supai”:”79645998483911″,”supag”:”1274334163554013″,”supnt”:”o”},”lithiumRoute”:[{“page”:”SmartDeals”,”params”:{“geoId”:294012},”path”:”/SmartDeals-g294012-United_Arab_Emirates-Hotel-Deals.html”,”fragment”:””},{“uid”:”e43a4ffa-d13b-4844-921d-36b94b1a9bec”}],”overlays”:{“global”:null,”fab”:null,”locals”:{},”toasts”:[]},”meta”:{“initialServletName”:”SmartDeals”,”device”:{“viewportCategory”:”DESKTOP”,”userAgentCategory”:”DESKTOP”,”os”:{“family”:”UNKNOWN”,”majorVersion”:-1},”browser”:{“family”:”CHROME”,”majorVersion”:60},”securityToken”:”83fdad59872320c02a39c1084405af99a39fb0d806f34a59b95a07b2651332f9″},”readonlyMode”:false,”initialRelativeUrl”:”/SmartDeals-g294012-United_Arab_Emirates-Hotel-Deals.html”,”initialAbsoluteUrl”:”https://www.tripadvisor.com/SmartDeals-g294012-United_Arab_Emirates-Hotel-Deals.html”,”baseUrl”:”https://www.tripadvisor.com”,”imageCdnUrl”:”https://static.tacdn.com”,”cookieDomain”:”.tripadvisor.com”,”taUnique”:”web116a.198.54.125.232.18952651AAC”,”isTaReferrer”:false,”referrerUrl”:”http://www.bing.com/”,”forceFullSite”:false,”environment”:”Live”,”isNativeWebview”:false,”commerceCountryId”:191,”impressionData”:{“pageLoadUid”:”e43a4ffa-d13b-4844-921d-36b94b1a9bec”},”lineItemsByLoc”:{}},”tracking”:{“mcid”:11004,”uid”:”e43a4ffa-d13b-4844-921d-36b94b1a9bec”,”analytics”:{“cv”:[[“_deleteCustomVar”,1],[“_deleteCustomVar”,47],[“_setCustomVar”,12,”Country”,”United Arab Emirates-294012″,3],[“_setCustomVar”,25,”Continent”,”Middle East-21″,3],[“_setCustomVar”,20,”PP”,”–“,3],[“_deleteCustomVar”,11],[“_deleteCustomVar”,13],[“_deleteCustomVar”,19],[“_deleteCustomVar”,14],[“_deleteCustomVar”,8],[“_deleteCustomVar”,10]],”url”:”/SmartDeals”},”searchSessionId”:”EEA44D609E804877BED003847F2810EB1689304505329ssid”,”sessionId”:”EEA44D609E804877BED003847F2810EB”,”uniqueId”:”web116a.198.54.125.232.18952651AAC”,”serverName”:”www.tripadvisor.com”,”hostName”:”web518a.a.tripadvisor.com”,”vcsRevision”:1584432,”vcsBranch”:”releases/PRODUCTION_1584431_20230710_0401″,”uvmScore”:””,”retargetingUrl”:”www.tamgrt.com/RT”,”domainName”:”www.tripadvisor.com”}},”assets”:[“/assets/dyfdn5.1f156897.css”,”/assets/1qndsd.6e0ec404.css”,”/assets/jppfwt.d7c1a1d6.css”,”/assets/buj4sn.2c454d30.css”,”/assets/gw8uw6.57dc0155.css”,”/assets/12r4qu.62492ad6.css”,”/assets/frf6ac.3c4dacf7.css”,”/assets/1essqv.0d486b10.css”,”/assets/lr6tb6.d080b000.css”,”/assets/1uvk21.55f1d8b3.css”,”/assets/vjlqzu.78628c9b.css”,”/assets/hxluky.e41dbfa3.css”,”/assets/1l9qeu.edbd6659.css”,”/assets/1q13wd.097a7935.css”,”/assets/1uzmmz.84e0224b.css”,”/assets/d8oes5.33ab72f5.css”,”/assets/iog21h.1a9d6da8.css”,”/assets/vpo3wt.f5cfed4d.css”,”/assets/10of6q.17774332.css”,”/assets/14q9l4.57f8a843.css”,”/assets/79a2um.18a19d60.css”,”/assets/1ybxsm.decab08e.css”,”/assets/tr3542.5b72b7d5.css”,”/assets/183pm0.3c508438.css”,”/assets/1973cc.1b07a575.css”,”/assets/5xz9bl.10decbf4.js”,”/assets/121h32.1fd0e99d.js”,”/assets/1teh9f.3e4565fb.js”,”/assets/ifbjcg.baf1ab81.js”,”/assets/1bt3bv.e13a50bf.js”,”/assets/ltllz9.5e380a3c.js”,”/assets/1xo1is.ce039b0c.js”,”/assets/gugp1d.240af6d0.js”,”/assets/1mqwhq.f0499ad5.js”,”/assets/198810.b34a4fd3.js”,”/assets/qlcuu5.94bfba14.js”,”/assets/16nmgr.5246a0a1.js”,”/assets/4x6ber.1df60277.js”,”/assets/17thqz.b23af3b1.js”,”/assets/1ys6v1.5587de6e.js”,”/assets/1nnprh.98bec075.js”,”/assets/dyfdn5.1f156897.js”,”/assets/19b9b1.d057cbfd.js”,”/assets/1qndsd.6e0ec404.js”,”/assets/fkji80.9d0fa5f2.js”,”/assets/jppfwt.d7c1a1d6.js”,”/assets/qrkpoi.5a391fdb.js”,”/assets/buj4sn.2c454d30.js”,”/assets/1m49sy.c75e80dc.js”,”/assets/1u9jlw.8d929e40.js”,”/assets/1gjtat.bec1fd0e.js”,”/assets/10b0fm.9dfba551.js”,”/assets/190bo0.92e5ef4e.js”,”/assets/1evvug.6f99fd23.js”,”/assets/gw8uw6.57dc0155.js”,”/assets/12r4qu.62492ad6.js”,”/assets/1mb2nz.8f2fa7af.js”,”/assets/frf6ac.3c4dacf7.js”,”/assets/1kq4q2.8a619353.js”,”/assets/zq967r.46d0c586.js”,”/assets/1essqv.0d486b10.js”,”/assets/lr6tb6.d080b000.js”,”/assets/1904jn.40553ba9.js”,”/assets/b5nukb.95f53499.js”,”/assets/1etaac.a4695929.js”,”/assets/1bxkng.fd6ec0ad.js”,”/assets/gbnboa.ca38678a.js”,”/assets/ltf8dz.1d3508da.js”,”/assets/1btbaw.278b9f9c.js”,”/assets/1nexzi.fa7bc0bb.js”,”/assets/52far5.a8fd33eb.js”,”/assets/18pymb.bf3ddb5d.js”,”/assets/qjohxf.01ff329d.js”,”/assets/1uvk21.55f1d8b3.js”,”/assets/14euae.b9d72d24.js”,”/assets/1nnmev.4e2b1369.js”,”/assets/1olf6x.d6d026db.js”,”/assets/bvz1zl.5f642b6e.js”,”/assets/vjlqzu.78628c9b.js”,”/assets/rdycz1.61004173.js”,”/assets/z2lnv4.395da3a6.js”,”/assets/hxluky.e41dbfa3.js”,”/assets/1l9qeu.edbd6659.js”,”/assets/17u7gi.20481688.js”,”/assets/1q13wd.097a7935.js”,”/assets/1uzmmz.84e0224b.js”,”/assets/1qkjm8.ec8b5f21.js”,”/assets/1gttbj.85bb5c64.js”,”/assets/65rb8q.6b6673da.js”,”/assets/d8oes5.33ab72f5.js”,”/assets/iog21h.1a9d6da8.js”,”/assets/1eww82.c145c997.js”,”/assets/tp1g68.dd67710b.js”,”/assets/tbkd43.bf135af5.js”,”/assets/lchj5q.8d971dad.js”,”/assets/1emwhd.dca7b8e3.js”,”/assets/xj2t7q.9fac8d9e.js”,”/assets/3dy54m.9ee0b44e.js”,”/assets/1vumu0.34ded6a5.js”,”/assets/1gyzem.ea654b8b.js”,”/assets/dsbyen.11029b9a.js”,”/assets/1c3xck.59e0de0a.js”,”/assets/u5g3tb.5b398c29.js”,”/assets/1t9nvq.93db7c04.js”,”/assets/vbk5jk.a41ebee6.js”,”/assets/1g05ql.472e456a.js”,”/assets/xg719z.f62cb5fa.js”,”/assets/yau6qy.2d0f6eb7.js”,”/assets/vpo3wt.f5cfed4d.js”,”/assets/1s6q22.59d4f150.js”,”/assets/p5p2yo.90eb8245.js”,”/assets/ahlu9q.268d1ec8.js”,”/assets/1al4vi.4ad59488.js”,”/assets/1fbuhs.feb7d193.js”,”/assets/3cotbs.e8988a4b.js”,”/assets/fgwvq1.1c55571f.js”,”/assets/1j8lyt.ab5a4f06.js”,”/assets/ulejzu.0c91938a.js”,”/assets/mtbtnn.b06f99b2.js”,”/assets/32pwc7.40cf9955.js”,”/assets/promjz.92dab85a.js”,”/assets/1q7wvk.3181b946.js”,”/assets/45ddp0.861da118.js”,”/assets/1bqgab.b49e26a3.js”,”/assets/1txqep.cac37ef6.js”,”/assets/fzzo52.de43c69a.js”,”/assets/bvvaww.987befae.js”,”/assets/4axon3.f0936e4a.js”,”/assets/13btuy.34ac38bd.js”,”/assets/1w0dpw.6e3feed3.js”,”/assets/1w1vb4.fca2f14d.js”,”/assets/1qbn8x.6ca549ce.js”,”/assets/5gpqhx.933a767b.js”,”/assets/1uedfn.dbafe54b.js”,”/assets/1f7mzg.e2fa98a4.js”,”/assets/1lajpg.7f9c11b6.js”,”/assets/7v9w42.1600cdc4.js”,”/assets/10of6q.17774332.js”,”/assets/14q9l4.57f8a843.js”,”/assets/1x9dv9.8de28ec3.js”,”/assets/79a2um.18a19d60.js”,”/assets/1jbz0u.963737b6.js”,”/assets/ja55rt.f56afe6e.js”,”/assets/d6vj30.d7f555d5.js”,”/assets/1ybxsm.decab08e.js”,”/assets/tr3542.5b72b7d5.js”,”/assets/sdpjgr.53f9faf4.js”,”/assets/skjzuv.9d9e87b9.js”,”/assets/183pm0.3c508438.js”,”/assets/1973cc.1b07a575.js”,”/assets/16z5q2.8682628d.js”,”/assets/1t05m6.1cb1a37d.js”,”/assets/12mj4n.66bd07b2.js”,”/assets/wr50cf.e591255e.js”,”/assets/voprus.a10fc6bf.js”,”/assets/1o4yt4.cbb3cb79.js”,”/assets/l2u3je.58cae606.js”,”/assets/1hjmql.2292894f.js”,”/assets/16ugsf.03323f94.css”,”/assets/1q43jk.38b99dfe.css”,”/assets/1hfpjv.b387d367.css”,”/assets/6g4avl.a7ce6246.css”,”/assets/196t94.de5f13c8.css”,”/assets/9rb8bq.b78719fc.css”,”/assets/qhcore.6700dea3.css”,”/assets/cnyhjq.5e521520.css”,”/assets/12wscm.020983e6.css”,”/assets/13bvaw.08fcd9a1.css”,”/assets/1yajq4.1b1d20eb.css”,”/assets/1sivdg.727cb413.css”,”/assets/1i3sz5.6a935da5.css”,”/assets/1xm2jz.b4d7357c.css”,”/assets/u59av4.43c2f7ad.css”,”/assets/1rbxhs.11ecee56.css”,”/assets/1os3i1.2973b1d0.css”,”/assets/covaqn.1651cfb7.css”,”/assets/lt9m20.20c4be5a.css”,”/assets/94v69w.0da76f32.css”,”/assets/1u3aio.bf4b6141.css”,”/assets/0sjlpd.fbca94e6.css”,”/assets/lyyh8d.f3980124.css”,”/assets/1ntn26.e48f00bc.css”,”/assets/1b1clj.dcd2d3ae.css”,”/assets/1n0vfy.efcbcb63.css”,”/assets/q0mame.20e5b569.css”,”/assets/aa8hvr.646316e1.css”,”/assets/1a182z.1133d9bd.css”,”/assets/1bovo2.f9d6fdac.css”,”/assets/1t9pxn.c28871b1.css”,”/assets/ay1l3c.96fc9d49.css”,”/assets/g5mqn8.16f2f531.css”,”/assets/1bqhoe.4c01e4d7.css”,”/assets/oz3g7e.8b2f1ef8.css”,”/assets/1bttvi.28b995ab.css”,”/assets/34bu7w.16526b8c.css”,”/assets/mjqgle.f0b7083d.css”,”/assets/1nzwvr.d218464f.css”,”/assets/36016d.7964003e.css”,”/assets/1bnv3w.4f548bfb.css”,”/assets/1t12gq.4efb8fd4.css”,”/assets/irqvhn.1305922f.css”,”/assets/ddsxom.8d8e4a85.css”,”/assets/1f2fji.23d37ec8.css”,”/assets/zuqoim.95478fb3.css”,”/assets/17yaz6.1ec45095.css”,”/assets/wrg2oq.6a1894d6.css”,”/assets/1bkeq2.a8c9afd6.css”,”/assets/1xqlof.1e799973.css”,”/assets/1l8km3.d351f051.css”,”/assets/ffcg16.8c7ecccd.css”,”/assets/2d98k6.bceb9165.css”,”/assets/wgd5on.95431819.css”,”/assets/wgun1f.e8843a20.css”,”/assets/1i6es4.d35699f5.css”,”/assets/1gnzc4.88ab891f.css”,”/assets/10chm7.975f4356.css”,”/assets/16ugsf.03323f94.js”,”/assets/1q43jk.38b99dfe.js”,”/assets/1hfpjv.b387d367.js”,”/assets/6g4avl.a7ce6246.js”,”/assets/196t94.de5f13c8.js”,”/assets/a2qxj9.befb3c9a.js”,”/assets/1rfo7h.cabd1233.js”,”/assets/b3ve7j.fb3a7a50.js”,”/assets/19n7e2.82d402a6.js”,”/assets/1yc73m.b060390b.js”,”/assets/1r73jw.6bdce4b1.js”,”/assets/1degzg.4da6f8c4.js”,”/assets/1kkqcv.a6db663d.js”,”/assets/13pxm3.943fecf8.js”,”/assets/17yyf6.ae32f002.js”,”/assets/9rb8bq.b78719fc.js”,”/assets/ag9b0s.109799bc.js”,”/assets/qhcore.6700dea3.js”,”/assets/665v5s.9ae4b6ef.js”,”/assets/cnyhjq.5e521520.js”,”/assets/mc5s4b.126c02fe.js”,”/assets/10506z.0e410587.js”,”/assets/1uw9rn.aa64dc3b.js”,”/assets/12wscm.020983e6.js”,”/assets/irfizf.ec4dc9a4.js”,”/assets/1iyqcw.f2fa6be5.js”,”/assets/3309mt.a6ab6711.js”,”/assets/1k7dpq.1ead85ea.js”,”/assets/o3mm96.afbcfb93.js”,”/assets/1c5q3i.8ee64e5f.js”,”/assets/1l75rc.c2b0f27b.js”,”/assets/s1ymgp.93821a36.js”,”/assets/eqoaya.21169153.js”,”/assets/wsk8ra.5e0e2ef5.js”,”/assets/13bvaw.08fcd9a1.js”,”/assets/i9ixrv.e4b9f20b.js”,”/assets/1yajq4.1b1d20eb.js”,”/assets/grnhiw.1b55de1c.js”,”/assets/1sivdg.727cb413.js”,”/assets/1i3sz5.6a935da5.js”,”/assets/17nq86.a7bebe03.js”,”/assets/1xm2jz.b4d7357c.js”,”/assets/conwso.2e8ff6bd.js”,”/assets/an500m.e153bb1e.js”,”/assets/u59av4.43c2f7ad.js”,”/assets/1rbxhs.11ecee56.js”,”/assets/p33mwk.4e48f77a.js”,”/assets/1os3i1.2973b1d0.js”,”/assets/covaqn.1651cfb7.js”,”/assets/lt9m20.20c4be5a.js”,”/assets/94v69w.0da76f32.js”,”/assets/ar967b.e261d91c.js”,”/assets/1u3aio.bf4b6141.js”,”/assets/1qx89h.e711539d.js”,”/assets/14ilds.9612c76c.js”,”/assets/1i0z8n.1e57b815.js”,”/assets/1my7i5.5bebf042.js”,”/assets/a6i9w3.f5d195ac.js”,”/assets/dvcr7s.7aa585af.js”,”/assets/tj4q1a.5f223484.js”,”/assets/0sjlpd.fbca94e6.js”,”/assets/lyyh8d.f3980124.js”,”/assets/1ntn26.e48f00bc.js”,”/assets/1b1clj.dcd2d3ae.js”,”/assets/1bp96i.75c45f85.js”,”/assets/1af72y.21a226c6.js”,”/assets/43er8k.f288fa64.js”,”/assets/l47ri7.a5eba6f2.js”,”/assets/hyvyhv.26a545d6.js”,”/assets/ctn2v9.201125c3.js”,”/assets/1n0vfy.efcbcb63.js”,”/assets/q0mame.20e5b569.js”,”/assets/aa8hvr.646316e1.js”,”/assets/7a7jm3.77de9279.js”,”/assets/pn8thk.d4402f11.js”,”/assets/1y52xs.910acbb6.js”,”/assets/1o5y7t.188709a2.js”,”/assets/4nzso8.676c8c8d.js”,”/assets/r019uv.83629738.js”,”/assets/1a182z.1133d9bd.js”,”/assets/1bovo2.f9d6fdac.js”,”/assets/sw5ax0.c21d7dfc.js”,”/assets/1w5k17.df143a91.js”,”/assets/kyjmg5.1ce311bb.js”,”/assets/162gns.25e9366a.js”,”/assets/1crdfj.0f034f72.js”,”/assets/1t9pxn.c28871b1.js”,”/assets/amsjo9.ba80f85b.js”,”/assets/19l9n4.4a68f499.js”,”/assets/0xaw8s.b670f427.js”,”/assets/1eki1k.71c95f02.js”,”/assets/11417a.a1c40325.js”,”/assets/1e1vyi.7bd87742.js”,”/assets/1rodcq.646a46ae.js”,”/assets/j1i9fl.e55ecd96.js”,”/assets/18ny8v.f56707cb.js”,”/assets/ay1l3c.96fc9d49.js”,”/assets/g5mqn8.16f2f531.js”,”/assets/1bqhoe.4c01e4d7.js”,”/assets/18gzfc.9f590197.js”,”/assets/18m6oj.2848f718.js”,”/assets/1l82a9.84ef117d.js”,”/assets/16ac2e.94e08d1c.js”,”/assets/r5wn4z.0b0467ce.js”,”/assets/oz3g7e.8b2f1ef8.js”,”/assets/r9zz7r.e4e393c3.js”,”/assets/1bttvi.28b995ab.js”,”/assets/34bu7w.16526b8c.js”,”/assets/1inugb.13469852.js”,”/assets/mjqgle.f0b7083d.js”,”/assets/133n48.1a2c2867.js”,”/assets/1nzwvr.d218464f.js”,”/assets/hlafd3.c930f8a9.js”,”/assets/36016d.7964003e.js”,”/assets/h1ennw.9a34850f.js”,”/assets/1d8min.5f74e355.js”,”/assets/17g0c7.675ef6aa.js”,”/assets/1bnv3w.4f548bfb.js”,”/assets/1t12gq.4efb8fd4.js”,”/assets/1c1c0g.d4e71d87.js”,”/assets/6q5g6q.0abe805e.js”,”/assets/2t8e04.fcf37020.js”,”/assets/1wtl2p.c7653dd4.js”,”/assets/1opjn1.f909f4d2.js”,”/assets/irqvhn.1305922f.js”,”/assets/1sp4ry.59f8ecd0.js”,”/assets/1lxsoh.62d81efa.js”,”/assets/ddsxom.8d8e4a85.js”,”/assets/1shvqi.3b66893b.js”,”/assets/14lbe8.d1300bf0.js”,”/assets/14tv4a.c70c9c4f.js”,”/assets/24j2l1.79255e18.js”,”/assets/1f2fji.23d37ec8.js”,”/assets/zuqoim.95478fb3.js”,”/assets/vfymw1.339d4921.js”,”/assets/17yaz6.1ec45095.js”,”/assets/wrg2oq.6a1894d6.js”,”/assets/1bkeq2.a8c9afd6.js”,”/assets/12w744.45600e6f.js”,”/assets/1xqlof.1e799973.js”,”/assets/plus08.a17a257e.js”,”/assets/1g6kun.8a78ad35.js”,”/assets/4vrg0m.5c4c7c75.js”,”/assets/b08kfg.9838e22d.js”,”/assets/1l8km3.d351f051.js”,”/assets/91on7c.fade09ee.js”,”/assets/hfmoib.8535cc9a.js”,”/assets/11lu7r.7c2d6fc2.js”,”/assets/1kkdz8.14c40a17.js”,”/assets/ffcg16.8c7ecccd.js”,”/assets/2d98k6.bceb9165.js”,”/assets/1vszih.45c61f8e.js”,”/assets/axxyag.34d6600a.js”,”/assets/id292i.8414912b.js”,”/assets/1owpbv.f4fd33e3.js”,”/assets/1gyqkr.393ffaf3.js”,”/assets/7x24fg.4e088572.js”,”/assets/ksif4i.24e94801.js”,”/assets/rg7ewf.9434c21c.js”,”/assets/q7jm9a.c9ef3d2a.js”,”/assets/1x3k6y.d8fcbc61.js”,”/assets/14707i.9da22b0b.js”,”/assets/18qb32.2d07de41.js”,”/assets/1l4yhj.e4802dcc.js”,”/assets/10x4jd.96838439.js”,”/assets/10ad67.7d374c28.js”,”/assets/13e3sm.ef58f433.js”,”/assets/wgd5on.95431819.js”,”/assets/1xb8dq.4529d2dc.js”,”/assets/losr6p.0ba44759.js”,”/assets/80hn7v.53e76e17.js”,”/assets/z6c0ez.63fae45d.js”,”/assets/wgun1f.e8843a20.js”,”/assets/1a37wn.00cc9a67.js”,”/assets/1a23m3.f4f2947a.js”,”/assets/1r5lgo.5424218d.js”,”/assets/1i6es4.d35699f5.js”,”/assets/6qmqhw.8cbba5d3.js”,”/assets/yw8i09.36119963.js”,”/assets/100mpx.bcf71e20.js”,”/assets/1gnzc4.88ab891f.js”,”/assets/1w1yg7.1e604610.js”,”/assets/10chm7.975f4356.js”,”/assets/1pg8p6.a93ca198.js”,”/assets/15hcrw.2a07b9cc.css”,”/assets/1ex1xu.b299b730.css”,”/assets/15hcrw.2a07b9cc.js”,”/assets/ku7suo.54e43f11.js”,”/assets/1ex1xu.b299b730.js”,”/assets/5n3iuq.686449b0.css”,”/assets/5n3iuq.686449b0.js”,”/assets/6f9vcd.c67b827c.css”,”/assets/p9ucm8.c1ec1ece.css”,”/assets/12rns1.1784fcca.css”,”/assets/yk7it8.7bd8d15d.css”,”/assets/13yhbd.70ad2eb2.css”,”/assets/wt5b21.0b0cfacc.css”,”/assets/1bxtwp.875f04ac.css”,”/assets/blf4cx.71a63c05.css”,”/assets/bljygq.2cab7f6f.css”,”/assets/1wb3b2.40cfe732.css”,”/assets/qh8bzg.ab7f54d2.css”,”/assets/119754.183dbd0f.css”,”/assets/1wi7w8.90cd0cf7.css”,”/assets/6f9vcd.c67b827c.js”,”/assets/p9ucm8.c1ec1ece.js”,”/assets/joj99y.be7e232d.js”,”/assets/11mwjf.9e168f79.js”,”/assets/tsg6fc.9edacba5.js”,”/assets/12rns1.1784fcca.js”,”/assets/174j83.0445ae5f.js”,”/assets/yk7it8.7bd8d15d.js”,”/assets/13w1vr.7c5e7f14.js”,”/assets/j9pg61.de7dc347.js”,”/assets/14ecb7.6e34f82a.js”,”/assets/2tnrli.c6ca5b4e.js”,”/assets/13yhbd.70ad2eb2.js”,”/assets/qhneqr.3eba0613.js”,”/assets/wt5b21.0b0cfacc.js”,”/assets/1it954.b69c8b4c.js”,”/assets/epp8eq.c79d9c2f.js”,”/assets/1bxtwp.875f04ac.js”,”/assets/1bckih.2659620b.js”,”/assets/blf4cx.71a63c05.js”,”/assets/bljygq.2cab7f6f.js”,”/assets/1m7w66.467bc789.js”,”/assets/1wb3b2.40cfe732.js”,”/assets/qh8bzg.ab7f54d2.js”,”/assets/1notq9.6d638bd8.js”,”/assets/lynjjl.035f9b7d.js”,”/assets/119754.183dbd0f.js”,”/assets/1pl54p.a70ae0a4.js”,”/assets/1u67rh.3ac49ce0.js”,”/assets/1wi7w8.90cd0cf7.js”,”/assets/k5b0kh.49097abf.js”,”/assets/hebw3y.23362b3b.js”,”/assets/12vsg6.7af86cf1.js”,”/assets/9e5nhi.97d791c4.js”,”/assets/ihnof8.39f66ff9.js”,”/assets/16dusp.c0f1f474.js”,”/assets/1n9dkt.ecf52503.css”,”/assets/17oe7i.7120696f.js”,”/assets/1n9dkt.ecf52503.js”,”/assets/sbz3c6.231e94ea.js”,”/assets/yug3zc.f7012da6.css”,”/assets/cjerkd.a1a1a8ab.css”,”/assets/dl4tf4.528123c4.css”,”/assets/76j3t0.518e4e66.css”,”/assets/1uaudg.5ce996f4.css”,”/assets/uovzt8.7813caf0.css”,”/assets/yug3zc.f7012da6.js”,”/assets/cyrz7y.6a588489.js”,”/assets/cjerkd.a1a1a8ab.js”,”/assets/dl4tf4.528123c4.js”,”/assets/76j3t0.518e4e66.js”,”/assets/j56vim.6dfa91b1.js”,”/assets/1uaudg.5ce996f4.js”,”/assets/uovzt8.7813caf0.js”,”/assets/1tf8ft.bdd39f19.js”,”/assets/1xnjg7.b4feef52.js”,”/assets/1gbsde.31e1b59b.js”,”/assets/1jnxuv.bd1e0996.js”,”/assets/19ygz8.f3ee941a.js”,”/assets/1p4adu.87704810.js”,”/assets/b1qg3y.cf75fa2c.js”,”/assets/c5kzk2.6e8a7a76.js”,”/assets/2l7tdf.3c8f06a1.js”,”/assets/do522n.4c1da519.js”,”/assets/kqf4x0.a1ada68d.js”,”/assets/10hkn2.84f83be9.js”,”/assets/5c85y0.998a2428.js”,”/assets/7l5hpv.dfdf6e6f.js”,”/assets/1flcs8.e71f9ffe.js”,”/assets/uc42ar.6bffc118.js”,”/assets/igyuz7.670e45d4.js”,”/assets/11b5l5.9dc6d8e3.css”,”/assets/1ubyuk.ca566468.css”,”/assets/17gmts.fa852838.css”,”/assets/1jk772.61b0aaae.js”,”/assets/11b5l5.9dc6d8e3.js”,”/assets/1ubyuk.ca566468.js”,”/assets/j8mzb2.d2d99d40.js”,”/assets/zb2uaz.66ff3e1c.js”,”/assets/1nc3gm.ce3e4f50.js”,”/assets/17gmts.fa852838.js”,”/assets/y591su.172cc8f9.css”,”/assets/11uzco.28abd8d5.css”,”/assets/1p2jbr.b18c6efb.css”,”/assets/m5f61p.9ce252c1.css”,”/assets/1n6iz1.79d0c73c.css”,”/assets/7oyc3j.9d5a295d.css”,”/assets/9d19kg.acb2d902.css”,”/assets/7s4pzp.27204f7a.css”,”/assets/2mx5e1.afe2ef6f.css”,”/assets/hgn5zt.9e3ce525.css”,”/assets/kq4525.9720560b.css”,”/assets/1d4cn1.37acf86e.css”,”/assets/1gmrl4.fdbf45e4.css”,”/assets/18ec5k.9f03647d.css”,”/assets/1a85j3.8dc4ef9b.css”,”/assets/1227h6.18e4ff21.css”,”/assets/1un0cu.950c2aea.css”,”/assets/15h0me.b9f6c060.css”,”/assets/z2nh2s.7cf90808.css”,”/assets/s2gl90.ba29f42e.css”,”/assets/ec91du.19bb3918.css”,”/assets/19l2zs.e957890c.css”,”/assets/1af5eu.fd080594.css”,”/assets/9f08a0.b68e92a0.css”,”/assets/6m9vgr.b0ebba75.css”,”/assets/1ahn2t.24170792.css”,”/assets/1ndszp.c6450ccc.css”,”/assets/amwhbz.cd81bba8.css”,”/assets/2j5if1.454a0597.css”,”/assets/eozxiw.f50f6f77.css”,”/assets/fm6nx5.a1404a17.css”,”/assets/1us1vw.5208375f.css”,”/assets/49c7br.e1ce665f.css”,”/assets/iwbyl5.9f95d63d.css”,”/assets/1dpzon.af3b0492.css”,”/assets/1asj0s.07d02241.css”,”/assets/1dpmjf.2c7b7810.css”,”/assets/ljqkwp.f21fea27.css”,”/assets/14wi38.b6f3a8a0.css”,”/assets/19m912.fee6e532.css”,”/assets/a3v7hk.a3e95014.css”,”/assets/160mj7.2cdf989a.css”,”/assets/y591su.172cc8f9.js”,”/assets/7ovr7c.cf3981fa.js”,”/assets/1dlfdm.0d3c5f72.js”,”/assets/1t9o39.993d7cfb.js”,”/assets/11uzco.28abd8d5.js”,”/assets/1p2jbr.b18c6efb.js”,”/assets/00m0uy.e413faef.js”,”/assets/m5f61p.9ce252c1.js”,”/assets/1n6iz1.79d0c73c.js”,”/assets/7oyc3j.9d5a295d.js”,”/assets/9pm8i6.d21cda49.js”,”/assets/ibebqy.e454df12.js”,”/assets/9d19kg.acb2d902.js”,”/assets/1qk22a.14ccd401.js”,”/assets/7s4pzp.27204f7a.js”,”/assets/1y0uq3.58b9f108.js”,”/assets/2mx5e1.afe2ef6f.js”,”/assets/hgn5zt.9e3ce525.js”,”/assets/kq4525.9720560b.js”,”/assets/1d4cn1.37acf86e.js”,”/assets/1a55je.ff214ea3.js”,”/assets/1q6pt2.033085a8.js”,”/assets/5zxkkr.134567b0.js”,”/assets/nm5bm4.7eaa6258.js”,”/assets/0792wk.f3053b08.js”,”/assets/fug67i.bbf0371f.js”,”/assets/1u9ykn.95a158cb.js”,”/assets/1mim55.c5e39c0a.js”,”/assets/1vwspd.9c9bb0cb.js”,”/assets/1lzos1.2b567399.js”,”/assets/1gmrl4.fdbf45e4.js”,”/assets/1mxujx.509e0067.js”,”/assets/2wld0u.d8759939.js”,”/assets/l6h0jh.8b71c419.js”,”/assets/18ec5k.9f03647d.js”,”/assets/1mat2n.a43fedd5.js”,”/assets/1a85j3.8dc4ef9b.js”,”/assets/1227h6.18e4ff21.js”,”/assets/1un0cu.950c2aea.js”,”/assets/15h0me.b9f6c060.js”,”/assets/x0lcjw.8b617e0d.js”,”/assets/d5rizv.a9244e90.js”,”/assets/17bjcr.fc9abb2f.js”,”/assets/3aiijo.95a1635a.js”,”/assets/bug23c.eb99d62f.js”,”/assets/155nvb.bb6e58ac.js”,”/assets/z2nh2s.7cf90808.js”,”/assets/p3y1zq.f2ba268c.js”,”/assets/1nute5.5065d681.js”,”/assets/1o80y5.455646fc.js”,”/assets/1obrjv.2cc0e929.js”,”/assets/155gpl.6c9554a2.js”,”/assets/1d3i8k.94cc288c.js”,”/assets/1mvpl5.ffeebc39.js”,”/assets/s2gl90.ba29f42e.js”,”/assets/ec91du.19bb3918.js”,”/assets/1b49gx.49043378.js”,”/assets/19l2zs.e957890c.js”,”/assets/18fue0.50b905e4.js”,”/assets/ljizri.5297ac95.js”,”/assets/135mhg.47831aa5.js”,”/assets/iun8xg.f474fdf9.js”,”/assets/1w9f8i.1fc70f2f.js”,”/assets/ewpu2f.8629a5b1.js”,”/assets/q78r13.ae8dad0a.js”,”/assets/1tochu.6a103fcf.js”,”/assets/1vnfaw.fa72a19f.js”,”/assets/vm25t0.a23c8a13.js”,”/assets/1rz5wu.d3295a23.js”,”/assets/9sov81.531e81ae.js”,”/assets/1wzt33.b769e04e.js”,”/assets/1wiwou.de206b54.js”,”/assets/1t5u5d.b2f54840.js”,”/assets/nnv8q4.5a9985c5.js”,”/assets/arwcu3.65385efe.js”,”/assets/1wud56.ff25b737.js”,”/assets/q1iiul.005ebaf1.js”,”/assets/apap77.4d257287.js”,”/assets/11k892.3e38b0de.js”,”/assets/1r67pl.b04d98dd.js”,”/assets/c38d9g.f272aca5.js”,”/assets/yy6083.a6f007f0.js”,”/assets/l8yt2z.3de6624c.js”,”/assets/1rnfq5.bbb3240c.js”,”/assets/q32oeq.52869419.js”,”/assets/cgyk2p.d54efc58.js”,”/assets/1u6rc4.2d0908ee.js”,”/assets/17dkke.6a3b2517.js”,”/assets/moetoc.140f6b70.js”,”/assets/1wxjzr.ef32d810.js”,”/assets/19d7e9.e1c6b284.js”,”/assets/ecgxx4.c80e9ebb.js”,”/assets/zthkss.fb0cf3a7.js”,”/assets/13r7em.98010ad7.js”,”/assets/df03dz.8862606d.js”,”/assets/5089af.19da9fd1.js”,”/assets/1yr8sh.26fb5f04.js”,”/assets/1n7muc.d4eba38d.js”,”/assets/1ktovr.219afd62.js”,”/assets/chlym8.fc8ee524.js”,”/assets/1bhtf5.0253907a.js”,”/assets/euncuq.88dc5ff6.js”,”/assets/b6uhp2.7fbee318.js”,”/assets/9qbdxh.45cef779.js”,”/assets/1us71h.d955a003.js”,”/assets/cmu52y.9797c3e6.js”,”/assets/1i2c6c.8ceef749.js”,”/assets/1r6ayw.926736dc.js”,”/assets/1af5eu.fd080594.js”,”/assets/w43m8k.721a18dd.js”,”/assets/1u47wj.01b1fa58.js”,”/assets/1n4zdl.0ac3dff8.js”,”/assets/wehxiu.92a84c71.js”,”/assets/9f08a0.b68e92a0.js”,”/assets/6m9vgr.b0ebba75.js”,”/assets/1ahn2t.24170792.js”,”/assets/1ndszp.c6450ccc.js”,”/assets/amwhbz.cd81bba8.js”,”/assets/2j5if1.454a0597.js”,”/assets/eozxiw.f50f6f77.js”,”/assets/1g6hko.0e5866a3.js”,”/assets/ql7kzy.44ea9376.js”,”/assets/1lyah0.33f176bc.js”,”/assets/q6iser.e56f015f.js”,”/assets/196enn.df6b947c.js”,”/assets/fm6nx5.a1404a17.js”,”/assets/1us1vw.5208375f.js”,”/assets/15xqg7.607f2812.js”,”/assets/49c7br.e1ce665f.js”,”/assets/acx4g3.039f10c2.js”,”/assets/gudzb7.37551340.js”,”/assets/1x55bm.7e952fd8.js”,”/assets/zj3q0t.272c4db7.js”,”/assets/iwbyl5.9f95d63d.js”,”/assets/2heyv0.95122852.js”,”/assets/1iwue3.9b1e4cf3.js”,”/assets/1gwwxv.a9b4d7c6.js”,”/assets/1a7906.1d4e9322.js”,”/assets/1cdp6m.8e6410f9.js”,”/assets/1jgmez.b5f2bb61.js”,”/assets/1dpzon.af3b0492.js”,”/assets/1asj0s.07d02241.js”,”/assets/1dpmjf.2c7b7810.js”,”/assets/ljqkwp.f21fea27.js”,”/assets/14wi38.b6f3a8a0.js”,”/assets/19m912.fee6e532.js”,”/assets/a3v7hk.a3e95014.js”,”/assets/160mj7.2cdf989a.js”,”/assets/8urr9n.091bf392.js”,”/assets/17voz2.f4103098.js”,”/assets/1ttyi9.086a7f26.css”,”/assets/cb79np.1fa4984f.css”,”/assets/1ttyi9.086a7f26.js”,”/assets/1l7164.044447da.js”,”/assets/cb79np.1fa4984f.js”,”/assets/v2nizv.71434f0f.js”,”/assets/2dyakj.a9a5b96e.js”,”/assets/1g47yx.3e3e9650.css”,”/assets/180lwt.417fff63.css”,”/assets/1g47yx.3e3e9650.js”,”/assets/180lwt.417fff63.js”,”/assets/1tptm1.0f52ab0c.js”,”/assets/1h29r5.80695dbf.js”,”/assets/1b4296.7b67cb79.js”,”/assets/11ttjq.f5846df4.js”,”/assets/fbf6hg.3f56d054.css”,”/assets/0edm4q.e66ebefd.css”,”/assets/14xiop.01c3c25f.css”,”/assets/1i2ow0.ac997c9f.css”,”/assets/149h9x.dc0ff585.css”,”/assets/swhekj.92cdc7a4.css”,”/assets/k3tmpy.8f46d244.css”,”/assets/ut17gj.f5ea5e75.css”,”/assets/fbf6hg.3f56d054.js”,”/assets/0edm4q.e66ebefd.js”,”/assets/37t68p.d5c7c6c2.js”,”/assets/14xiop.01c3c25f.js”,”/assets/kwymky.6ceaeb5d.js”,”/assets/q3tfvs.8e4c1545.js”,”/assets/1i2ow0.ac997c9f.js”,”/assets/149h9x.dc0ff585.js”,”/assets/yc8qq2.13745955.js”,”/assets/swhekj.92cdc7a4.js”,”/assets/vcz45k.a2c71ebe.js”,”/assets/k3tmpy.8f46d244.js”,”/assets/ut17gj.f5ea5e75.js”,”/assets/qhdojo.d227a399.css”,”/assets/qhdojo.d227a399.js”,”/assets/1k64pu.18a00b8f.js”,”/assets/1ez9d8.3b84fe5b.js”,”/assets/101me6.871781e4.css”,”/assets/0tr9w6.ce15f5c4.css”,”/assets/1mhdyo.4f3f5f52.css”,”/assets/qvt4cl.6040830d.css”,”/assets/101me6.871781e4.js”,”/assets/0tr9w6.ce15f5c4.js”,”/assets/1t73tm.05ea346e.js”,”/assets/1mhdyo.4f3f5f52.js”,”/assets/12ve3z.45b577bf.js”,”/assets/k5n2qt.2dd6e604.js”,”/assets/qvt4cl.6040830d.js”,”/assets/18vod4.152941bf.js”,”/assets/13ky3c.956f8f01.js”,”/assets/151qnr.787eb7cd.css”,”/assets/151qnr.787eb7cd.js”,”/assets/16bxeg.ccd7008e.css”,”/assets/16bxeg.ccd7008e.js”,”/assets/isyms5.5b878996.js”,”/assets/1jlrob.ee608d56.js”,”/assets/ebm7nn.fd88ed93.css”,”/assets/ebm7nn.fd88ed93.js”,”/assets/l5dyd4.485e8750.js”,”/assets/1kgn6u.8b337668.js”,”/assets/a349lq.7a67a5c1.css”,”/assets/n1m6wk.8632350b.css”,”/assets/bj0rkj.b2b4205a.css”,”/assets/cvhtao.1a7db849.css”,”/assets/1lq6xs.40c70e19.css”,”/assets/1tbrqz.25b335b1.css”,”/assets/1iahto.fbfe5dd3.css”,”/assets/132kj4.7051c821.css”,”/assets/gppdva.9bb5227c.css”,”/assets/714tj5.934b3c8f.css”,”/assets/o8gqrw.fbdf7e62.css”,”/assets/a349lq.7a67a5c1.js”,”/assets/6hf0eg.1c6d7889.js”,”/assets/n1m6wk.8632350b.js”,”/assets/1c96qj.91997fbb.js”,”/assets/15hne4.29b845bb.js”,”/assets/12qdz4.9378ed16.js”,”/assets/bj0rkj.b2b4205a.js”,”/assets/z2i5er.377425c0.js”,”/assets/46822j.00b6174a.js”,”/assets/15azdz.3822f92b.js”,”/assets/it6k5j.b09f7546.js”,”/assets/1ue3yk.b002a60f.js”,”/assets/1008v8.60bcb8a7.js”,”/assets/0v7vxf.c2b51aba.js”,”/assets/1ofjh1.7c1f634e.js”,”/assets/cvhtao.1a7db849.js”,”/assets/egodks.398c3001.js”,”/assets/1w2pv0.283b1e82.js”,”/assets/1gu063.fb1d12c0.js”,”/assets/1lq6xs.40c70e19.js”,”/assets/z72bsq.d0703847.js”,”/assets/1a7aw0.02c5cb42.js”,”/assets/0cwc2g.11b7c39c.js”,”/assets/168fm7.4cb7ad18.js”,”/assets/1tbrqz.25b335b1.js”,”/assets/1ypf49.63053bd9.js”,”/assets/1iahto.fbfe5dd3.js”,”/assets/132kj4.7051c821.js”,”/assets/gppdva.9bb5227c.js”,”/assets/27fomg.578543d1.js”,”/assets/714tj5.934b3c8f.js”,”/assets/1v5ce8.f447815c.js”,”/assets/o8gqrw.fbdf7e62.js”,”/assets/dvdzap.03de7311.js”,”/assets/1cbdk2.5ea258c7.js”,”/assets/1kqywg.e80c12ad.js”],”bundles”:[“1hjmql”,”l2u3je”,”5xz9bl”,”1o4yt4″,”voprus”,”12mj4n”,”16z5q2″,”1973cc”,”183pm0″,”skjzuv”,”7v9w42″,”1f7mzg”,”bvvaww”,”45ddp0″,”1q7wvk”,”promjz”,”32pwc7″,”mtbtnn”,”fgwvq1″,”qjohxf”,”18pymb”,”1btbaw”,”1904jn”,”4x6ber”,”1bt3bv”,”121h32″,”ifbjcg”,”1teh9f”,”16nmgr”,”qlcuu5″,”gugp1d”,”1xo1is”,”ltllz9″,”1mqwhq”,”198810″,”dyfdn5″,”1ys6v1″,”17thqz”,”1nnprh”,”lr6tb6″,”1essqv”,”frf6ac”,”jppfwt”,”1qndsd”,”19b9b1″,”fkji80″,”12r4qu”,”gw8uw6″,”1evvug”,”190bo0″,”10b0fm”,”1gjtat”,”1u9jlw”,”1m49sy”,”qrkpoi”,”buj4sn”,”1mb2nz”,”zq967r”,”1kq4q2″,”gbnboa”,”1etaac”,”b5nukb”,”1bxkng”,”ltf8dz”,”52far5″,”1nexzi”,”3cotbs”,”1fbuhs”,”1al4vi”,”ahlu9q”,”p5p2yo”,”1s6q22″,”1g05ql”,”vbk5jk”,”1t9nvq”,”u5g3tb”,”1c3xck”,”dsbyen”,”1gyzem”,”1vumu0″,”xj2t7q”,”1emwhd”,”lchj5q”,”iog21h”,”rdycz1″,”vjlqzu”,”1uvk21″,”14euae”,”1nnmev”,”1olf6x”,”bvz1zl”,”hxluky”,”z2lnv4″,”17u7gi”,”1l9qeu”,”d8oes5″,”1q13wd”,”1uzmmz”,”65rb8q”,”1gttbj”,”1qkjm8″,”tbkd43″,”tp1g68″,”1eww82″,”3dy54m”,”vpo3wt”,”xg719z”,”yau6qy”,”ulejzu”,”1j8lyt”,”fzzo52″,”1txqep”,”1bqgab”,”1uedfn”,”4axon3″,”5gpqhx”,”1w0dpw”,”13btuy”,”1qbn8x”,”1w1vb4″,”1lajpg”,”tr3542″,”10of6q”,”1ybxsm”,”14q9l4″,”1x9dv9″,”ja55rt”,”1jbz0u”,”79a2um”,”d6vj30″,”sdpjgr”,”@ta/features”,”1t05m6″,”wr50cf”,”16ugsf”,”1pg8p6″,”10chm7″,”13bvaw”,”wsk8ra”,”eqoaya”,”1q43jk”,”s1ymgp”,”1l75rc”,”1c5q3i”,”o3mm96″,”9rb8bq”,”1hfpjv”,”17yyf6″,”13pxm3″,”196t94″,”6g4avl”,”1kkqcv”,”1degzg”,”19n7e2″,”1rfo7h”,”a2qxj9″,”b3ve7j”,”1yc73m”,”1r73jw”,”1k7dpq”,”1iyqcw”,”12wscm”,”1uw9rn”,”10506z”,”mc5s4b”,”cnyhjq”,”665v5s”,”qhcore”,”ag9b0s”,”irfizf”,”3309mt”,”1gnzc4″,”100mpx”,”yw8i09″,”6qmqhw”,”1i6es4″,”1n0vfy”,”ctn2v9″,”hyvyhv”,”i9ixrv”,”l47ri7″,”1yajq4″,”1ntn26″,”lyyh8d”,”0sjlpd”,”1u3aio”,”ar967b”,”lt9m20″,”covaqn”,”1os3i1″,”p33mwk”,”1rbxhs”,”u59av4″,”an500m”,”1xm2jz”,”1sivdg”,”grnhiw”,”1i3sz5″,”17nq86″,”conwso”,”94v69w”,”tj4q1a”,”dvcr7s”,”a6i9w3″,”1my7i5″,”1i0z8n”,”14ilds”,”1qx89h”,”43er8k”,”1b1clj”,”1af72y”,”1bp96i”,”1r5lgo”,”1a23m3″,”1a37wn”,”wgun1f”,”80hn7v”,”losr6p”,”1a182z”,”r019uv”,”4nzso8″,”1o5y7t”,”pn8thk”,”q0mame”,”aa8hvr”,”7a7jm3″,”1y52xs”,”1nzwvr”,”133n48″,”mjqgle”,”162gns”,”kyjmg5″,”sw5ax0″,”1bovo2″,”1w5k17″,”g5mqn8″,”1t9pxn”,”1crdfj”,”ay1l3c”,”18ny8v”,”j1i9fl”,”1rodcq”,”1e1vyi”,”11417a”,”1eki1k”,”0xaw8s”,”19l9n4″,”amsjo9″,”r9zz7r”,”oz3g7e”,”1l82a9″,”18m6oj”,”18gzfc”,”1bqhoe”,”16ac2e”,”r5wn4z”,”1inugb”,”1bttvi”,”34bu7w”,”wgd5on”,”13e3sm”,”10ad67″,”ffcg16″,”1kkdz8″,”1l8km3″,”b08kfg”,”4vrg0m”,”1g6kun”,”1xqlof”,”14tv4a”,”ddsxom”,”1lxsoh”,”irqvhn”,”1bnv3w”,”1d8min”,”h1ennw”,”hlafd3″,”36016d”,”17g0c7″,”1opjn1″,”1t12gq”,”1wtl2p”,”2t8e04″,”6q5g6q”,”1c1c0g”,”1sp4ry”,”14lbe8″,”1shvqi”,”24j2l1″,”1f2fji”,”12w744″,”1bkeq2″,”wrg2oq”,”17yaz6″,”vfymw1″,”zuqoim”,”plus08″,”11lu7r”,”hfmoib”,”91on7c”,”7x24fg”,”1gyqkr”,”axxyag”,”1vszih”,”2d98k6″,”1owpbv”,”id292i”,”10x4jd”,”18qb32″,”14707i”,”1x3k6y”,”rg7ewf”,”ksif4i”,”q7jm9a”,”1l4yhj”,”1xb8dq”,”z6c0ez”,”1w1yg7″,”15hcrw”,”1ex1xu”,”ku7suo”,”5n3iuq”,”6f9vcd”,”hebw3y”,”k5b0kh”,”1wi7w8″,”119754″,”lynjjl”,”qh8bzg”,”1wb3b2″,”blf4cx”,”1bxtwp”,”epp8eq”,”wt5b21″,”13yhbd”,”2tnrli”,”11mwjf”,”p9ucm8″,”joj99y”,”13w1vr”,”12rns1″,”tsg6fc”,”yk7it8″,”174j83″,”14ecb7″,”j9pg61″,”qhneqr”,”1it954″,”1bckih”,”1m7w66″,”bljygq”,”1notq9″,”1u67rh”,”1pl54p”,”12vsg6″,”9e5nhi”,”ihnof8″,”16dusp”,”17oe7i”,”1n9dkt”,”sbz3c6″,”yug3zc”,”igyuz7″,”1uaudg”,”dl4tf4″,”cjerkd”,”cyrz7y”,”j56vim”,”76j3t0″,”7l5hpv”,”5c85y0″,”10hkn2″,”kqf4x0″,”do522n”,”2l7tdf”,”c5kzk2″,”b1qg3y”,”1p4adu”,”19ygz8″,”1jnxuv”,”1gbsde”,”1xnjg7″,”1tf8ft”,”uovzt8″,”uc42ar”,”1flcs8″,”1jk772″,”11b5l5″,”17gmts”,”1nc3gm”,”zb2uaz”,”1ubyuk”,”j8mzb2″,”y591su”,”00m0uy”,”1dlfdm”,”7ovr7c”,”11uzco”,”1t9o39″,”1p2jbr”,”m5f61p”,”19m912″,”14wi38″,”ljqkwp”,”1asj0s”,”1dpzon”,”1jgmez”,”1cdp6m”,”1a7906″,”1gwwxv”,”iwbyl5″,”zj3q0t”,”1x55bm”,”gudzb7″,”49c7br”,”15xqg7″,”1us1vw”,”fm6nx5″,”196enn”,”q6iser”,”1lyah0″,”ql7kzy”,”1g6hko”,”2j5if1″,”7oyc3j”,”1n6iz1″,”2mx5e1″,”7s4pzp”,”9d19kg”,”ibebqy”,”9pm8i6″,”1qk22a”,”1y0uq3″,”1a85j3″,”hgn5zt”,”1mat2n”,”l6h0jh”,”1gmrl4″,”1lzos1″,”1vwspd”,”1mim55″,”1u9ykn”,”fug67i”,”0792wk”,”nm5bm4″,”5zxkkr”,”1q6pt2″,”1a55je”,”kq4525″,”1d4cn1″,”2wld0u”,”1mxujx”,”18ec5k”,”amwhbz”,”1ndszp”,”1ahn2t”,”6m9vgr”,”1af5eu”,”1r6ayw”,”19l2zs”,”ec91du”,”1un0cu”,”1227h6″,”s2gl90″,”1mvpl5″,”1d3i8k”,”155gpl”,”1obrjv”,”1o80y5″,”1nute5″,”p3y1zq”,”z2nh2s”,”155nvb”,”bug23c”,”3aiijo”,”17bjcr”,”d5rizv”,”x0lcjw”,”15h0me”,”1b49gx”,”1i2c6c”,”cmu52y”,”1us71h”,”9qbdxh”,”b6uhp2″,”euncuq”,”1bhtf5″,”chlym8″,”1ktovr”,”1n7muc”,”1yr8sh”,”5089af”,”df03dz”,”13r7em”,”zthkss”,”ecgxx4″,”19d7e9″,”1wxjzr”,”moetoc”,”17dkke”,”1u6rc4″,”cgyk2p”,”q32oeq”,”1rnfq5″,”l8yt2z”,”yy6083″,”c38d9g”,”1r67pl”,”11k892″,”apap77″,”q1iiul”,”1wud56″,”arwcu3″,”nnv8q4″,”1t5u5d”,”1wiwou”,”1wzt33″,”9sov81″,”1rz5wu”,”vm25t0″,”1vnfaw”,”1tochu”,”q78r13″,”ewpu2f”,”1w9f8i”,”iun8xg”,”135mhg”,”ljizri”,”18fue0″,”9f08a0″,”wehxiu”,”1n4zdl”,”1u47wj”,”w43m8k”,”eozxiw”,”acx4g3″,”2heyv0″,”1iwue3″,”1dpmjf”,”8urr9n”,”160mj7″,”a3v7hk”,”17voz2″,”1ttyi9″,”cb79np”,”1l7164″,”v2nizv”,”2dyakj”,”1g47yx”,”1tptm1″,”180lwt”,”1h29r5″,”1b4296″,”11ttjq”,”fbf6hg”,”0edm4q”,”swhekj”,”yc8qq2″,”1i2ow0″,”q3tfvs”,”kwymky”,”14xiop”,”37t68p”,”149h9x”,”ut17gj”,”k3tmpy”,”vcz45k”,”qhdojo”,”1k64pu”,”1ez9d8″,”101me6″,”1mhdyo”,”1t73tm”,”0tr9w6″,”13ky3c”,”18vod4″,”qvt4cl”,”k5n2qt”,”12ve3z”,”151qnr”,”16bxeg”,”isyms5″,”1jlrob”,”ebm7nn”,”l5dyd4″,”1kgn6u”,”1ofjh1″,”a349lq”,”0v7vxf”,”1008v8″,”1ue3yk”,”it6k5j”,”15azdz”,”n1m6wk”,”6hf0eg”,”bj0rkj”,”15hne4″,”1c96qj”,”12qdz4″,”z2i5er”,”46822j”,”1lq6xs”,”cvhtao”,”1gu063″,”1w2pv0″,”egodks”,”1kqywg”,”1cbdk2″,”dvdzap”,”o8gqrw”,”1tbrqz”,”168fm7″,”0cwc2g”,”1a7aw0″,”z72bsq”,”1iahto”,”1ypf49″,”1v5ce8″,”714tj5″,”27fomg”,”132kj4″,”gppdva”],”lazyLoadedModules”:[“1ez9d8″,”1ofjh1″,”1jk772″,”16ugsf”,”17voz2″,”1h29r5″,”a349lq”,”2dyakj”,”17oe7i”,”12vsg6″,”1g47yx”,”16bxeg”,”isyms5″,”qhdojo”,”5n3iuq”,”15hcrw”,”11ttjq”,”v2nizv”,”ihnof8″,”151qnr”,”y591su”,”fbf6hg”,”yug3zc”,”1ttyi9″,”6f9vcd”,”1kgn6u”,”101me6″,”1b4296″,”119754″,”ebm7nn”],”renders”:[{“id”:”component_8″,”props”:{},”package”:”yug3zc”},{“id”:”component_12″,”props”:{},”package”:”17voz2″},{“id”:”@ta/trips.save-to-trip:location:3447941_component_26″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:3447941},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:1642600_component_30″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1642600},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:1022759_component_34″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1022759},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:572764_component_38″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:572764},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:12349800_component_42″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:12349800},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:1015046_component_46″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1015046},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:7309237_component_50″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:7309237},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:2154485_component_54″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2154485},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:1630522_component_58″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1630522},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:20326652_component_62″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:20326652},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:674456_component_66″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:674456},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:20355850_component_70″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:20355850},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:10263885_component_74″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:10263885},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:676864_component_78″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:676864},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:8698388_component_82″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:8698388},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:302098_component_86″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:302098},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:5890945_component_90″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:5890945},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:1236752_component_94″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1236752},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:23039049_component_98″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:23039049},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:23862400_component_102″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:23862400},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:2445260_component_106″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2445260},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:302462_component_110″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:302462},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:12301346_component_114″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:12301346},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:13513876_component_118″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:13513876},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:9853524_component_122″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:9853524},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:1631237_component_126″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1631237},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:306662_component_130″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:306662},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:5600443_component_134″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:5600443},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:2407420_component_138″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2407420},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”@ta/trips.save-to-trip:location:302457_component_142″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:302457},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”151qnr”},{“id”:”hotel-list-promo-banner_component_145″,”props”:{“position”:”InlineNova”},”package”:”ebm7nn”}],”hydrations”:[{“id”:”component_1″,”props”:{“isCupidExperience”:”false”},”package”:”16ugsf”},{“id”:”component_9″,”props”:{},”package”:”15hcrw”},{“id”:”component_2″,”props”:{“locationId”:294012},”package”:”5n3iuq”},{“id”:”component_3″,”props”:{“initialSelectedFilters”:[{“param”:”amen”,”trackingName”:”amenities”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”trating”,”trackingName”:”ta_rating”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”pop”,”trackingName”:”popular”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfc”,”trackingName”:”hotel_class”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfn”,”trackingName”:”neighborhood”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zff”,”trackingName”:”style”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”rrf”,”trackingName”:”refugee_resource”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”blender_tag”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfd”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”ns”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”bs”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfb”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”distFrom”,”trackingName”:”Filters_location”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”distFromPnt”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”catTag”,”trackingName”:”accommodation”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”hsf”,”trackingName”:”safety_measures”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}}],”initialSortName”:”Best Value”,”doCupidTransition”:false,”hotels”:[{“longitude”:55.30189,”latitude”:25.260635},{“longitude”:55.49151,”latitude”:25.39637},{“longitude”:55.48271,”latitude”:25.401768},{“longitude”:55.438953,”latitude”:25.413116},{“longitude”:55.462234,”latitude”:25.389723},{“longitude”:55.485577,”latitude”:25.394466},{“longitude”:55.46729,”latitude”:25.389387},{“longitude”:55.45016,”latitude”:25.3885},{“longitude”:55.55853,”latitude”:25.37092},{“longitude”:55.433,”latitude”:25.4084}],”initialDescHeader”:”u003cspan class=’highlight’>2,109 propertiesu003c/span> in United Arab Emirates”,”geoPoint”:{“longitude”:54.55481,”latitude”:24.275707},”initialAvailableFilters”:[{“choices”:[{“value”:”1″,”label”:”Properties offering help”,”tracker”:”RefugeeAssistance”,”count”:0,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false}],”filterType”:”checkbox”,”index”:0,”paramName”:”rrf”,”showCounts”:false,”title”:”Ukraine Crisis Assistance”,”trackingName”:”refugee_resource”,”visible”:true},{“choices”:[{“value”:”zfc_9572″,”label”:”5 stars”,”tracker”:”5 Star”,”count”:289,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”5starsF”},{“value”:”trating_4″,”label”:”4 bubbles & up”,”tracker”:”4 Bubbles and Up”,”count”:1032,”disabled”:false,”bubbleRating”:4,”displayRatingAsBubbles”:true,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”4stars&UpF”},{“value”:”amen_6217″,”label”:”Pool”,”tracker”:”Pool”,”count”:869,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”zff_9654″,”label”:”Mid-range”,”tracker”:”Mid-range”,”count”:687,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false}],”filterType”:”checkbox”,”index”:1,”paramName”:”pop”,”previewText”:””,”showCounts”:false,”title”:”Popular”,”trackingName”:”popular”,”visible”:true},{“choices”:[{“value”:”21371″,”label”:”Hotels”,”tracker”:”Hotels & Motels – Lodging Type”,”displayLink”:”/Hotels-g294012-United_Arab_Emirates-Hotels.html”,”count”:835,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”hotelsF”},{“value”:”9250″,”label”:”Condos”,”tracker”:”Condo”,”displayLink”:”/Hotels-g294012-c3-zff28-United_Arab_Emirates-Hotels.html”,”count”:239,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9200″,”label”:”Lodges”,”tracker”:”Lodge”,”displayLink”:”/Hotels-g294012-c3-zff17-United_Arab_Emirates-Hotels.html”,”count”:200,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”21372″,”label”:”B&Bs & Inns”,”tracker”:”B&Bs & Inns – Lodging Type”,”displayLink”:”/Hotels-g294012-c2-United_Arab_Emirates-Hotels.html”,”count”:190,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”21373″,”label”:”Specialty lodgings”,”tracker”:”Specialty Lodging – Lodging Type”,”displayLink”:”/Hotels-g294012-c3-United_Arab_Emirates-Hotels.html”,”count”:121,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9672″,”label”:”Resorts”,”tracker”:”Resort”,”displayLink”:”/Hotels-g294012-zff8-United_Arab_Emirates-Hotels.html”,”count”:103,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9261″,”label”:”Hostels”,”tracker”:”Hostel”,”displayLink”:”/Hotels-g294012-c3-zff26-United_Arab_Emirates-Hotels.html”,”count”:101,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”16545″,”label”:”All-inclusives”,”tracker”:”All Inclusive – Parent”,”displayLink”:”/Hotels-g294012-zft16545-United_Arab_Emirates-Hotels.html”,”count”:49,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9235″,”label”:”Campgrounds”,”tracker”:”Campground”,”displayLink”:”/Hotels-g294012-c3-zff29-United_Arab_Emirates-Hotels.html”,”count”:22,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9256″,”label”:”Villas”,”tracker”:”Villa”,”displayLink”:”/Hotels-g294012-c3-zff22-United_Arab_Emirates-Hotels.html”,”count”:13,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9469″,”label”:”Capsule hotels”,”tracker”:”Capsule Hotel”,”displayLink”:”/Hotels-g294012-c3-zff31-United_Arab_Emirates-Hotels.html”,”count”:2,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9383″,”label”:”Farmhouses”,”tracker”:”Farmhouse”,”displayLink”:”/Hotels-g294012-c3-zff39-United_Arab_Emirates-Hotels.html”,”count”:2,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9193″,”label”:”Motels”,”tracker”:”Motel”,”displayLink”:”/Hotels-g294012-zfd2-United_Arab_Emirates-Hotels.html”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9400″,”label”:”Pensions”,”tracker”:”Pension”,”displayLink”:”/Hotels-g294012-zft9400-United_Arab_Emirates-Hotels.html”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false}],”filterType”:”checkbox”,”index”:2,”paramName”:”catTag”,”showCounts”:true,”title”:”Property types”,”trackingName”:”accommodation”,”visible”:true},{“choices”:[{“value”:”9176″,”label”:”Free Wifi”,”tracker”:”Free Wifi”,”count”:955,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”freeWifiF”},{“value”:”9179″,”label”:”Breakfast included”,”tracker”:”Free Breakfast”,”count”:170,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”breakfastIncludedAmenF”},{“value”:”6217″,”label”:”Pool”,”tracker”:”Pool”,”count”:869,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9163″,”label”:”Free parking”,”tracker”:”Free Parking”,”count”:902,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11290″,”label”:”Adult pool”,”tracker”:”Adult Pool”,”count”:107,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18884″,”label”:”Adults Only”,”tracker”:”Adults Only – Amenities”,”count”:8,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9658″,”label”:”Air conditioning”,”tracker”:”Air Conditioning”,”count”:1082,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9170″,”label”:”Airport transportation”,”tracker”:”Airport Transportation”,”count”:759,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18891″,”label”:”Archery”,”tracker”:”Archery”,”count”:15,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18895″,”label”:”Badminton”,”tracker”:”Badminton”,”count”:13,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9166″,”label”:”Bar/Lounge”,”tracker”:”Bar/Lounge”,”count”:581,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”21778″,”label”:”Beach Access”,”tracker”:”Beach Access – Amenities”,”count”:285,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9156″,”label”:”Beachfront”,”tracker”:”Beach”,”count”:192,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18900″,”label”:”Bicycle Rental”,”tracker”:”Bicycle Rental”,”count”:59,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18903″,”label”:”Bicycles Available”,”tracker”:”Bicycles Available”,”count”:26,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18907″,”label”:”Boating”,”tracker”:”Boating”,”count”:29,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18912″,”label”:”Bowling”,”tracker”:”Bowling”,”count”:7,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18915″,”label”:”Bridal Suite”,”tracker”:”Bridal Suite”,”count”:72,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9187″,”label”:”Business center”,”tracker”:”Business Center”,”count”:714,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18918″,”label”:”Cable / Satellite TV”,”tracker”:”Cable / Satellite TV”,”count”:274,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18919″,”label”:”Canoeing”,”tracker”:”Canoeing – Amenities”,”count”:17,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18932″,”label”:”Coffee / Tea Maker”,”tracker”:”Coffee / Tea Maker”,”count”:366,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18931″,”label”:”Coffee Shop”,”tracker”:”Coffee Shop – Amenities”,”count”:392,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9667″,”label”:”Conference Facilities”,”tracker”:”Conference Facilities”,”count”:544,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18944″,”label”:”Diving”,”tracker”:”Diving”,”count”:15,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”16305″,”label”:”Electric vehicle charging station”,”tracker”:”Electric Vehicle Charging Station”,”count”:84,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9188″,”label”:”Fitness center”,”tracker”:”Fitness Center”,”count”:905,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9162″,”label”:”Free Internet”,”tracker”:”Free Internet”,”count”:913,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”12118″,”label”:”Free Shuttle or Taxi Services”,”tracker”:”Free Shuttle or Taxi Services”,”count”:90,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18979″,”label”:”Game Room”,”tracker”:”Game Room”,”count”:33,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9183″,”label”:”Golf course”,”tracker”:”Golf Course”,”count”:30,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18991″,”label”:”Hiking”,”tracker”:”Hiking – Amenities”,”count”:14,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”18993″,”label”:”Horseback Riding”,”tracker”:”Horseback Riding – Amenities”,”count”:16,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9182″,”label”:”Hot Tub”,”tracker”:”Hot tub”,”count”:345,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11285″,”label”:”Indoor pool”,”tracker”:”Indoor Pool”,”count”:70,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11289″,”label”:”Infinity Pool”,”tracker”:”Infinity Pool”,”count”:92,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”12122″,”label”:”Kids Stay Free”,”tracker”:”Kids Stay Free”,”count”:297,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9168″,”label”:”Kitchenette”,”tracker”:”Kitchenette”,”count”:447,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11274″,”label”:”Lazy River”,”tracker”:”Lazy River”,”count”:3,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19024″,”label”:”Mini Golf”,”tracker”:”Mini Golf”,”count”:14,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19026″,”label”:”Mountain View”,”tracker”:”Mountain View – Amenities”,”count”:22,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11259″,”label”:”Ocean View”,”tracker”:”Ocean View”,”count”:177,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9167″,”label”:”Pet friendly”,”tracker”:”Pets Allowed”,”count”:60,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19047″,”label”:”Pool with View”,”tracker”:”Pool with View”,”count”:248,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11282″,”label”:”Poolside Bar”,”tracker”:”Poolside Bar”,”count”:327,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11441″,”label”:”Private Beaches”,”tracker”:”Private Beach”,”count”:110,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19055″,”label”:”Raquetball”,”tracker”:”Raquetball”,”count”:2,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9165″,”label”:”Restaurant”,”tracker”:”Restaurant”,”count”:1008,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11257″,”label”:”Rooftop Bar”,”tracker”:”Rooftop Bar”,”count”:123,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11267″,”label”:”Rooftop Pool”,”tracker”:”Rooftop Pool”,”count”:310,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11275″,”label”:”Rooftop Terrace”,”tracker”:”Rooftop Terrace”,”count”:172,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9157″,”label”:”Shuttle Bus Service”,”tracker”:”Shuttle Bus Service”,”count”:358,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19076″,”label”:”Ski Rentals”,”tracker”:”Ski Rentals”,”count”:4,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9158″,”label”:”Ski-In / Ski-Out”,”tracker”:”Ski In/Ski Out”,”count”:2,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19075″,”label”:”Skiing”,”tracker”:”Skiing”,”count”:5,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19081″,”label”:”Snorkeling”,”tracker”:”Snorkeling – Amenities”,”count”:19,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9169″,”label”:”Spa”,”tracker”:”Spa”,”count”:584,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19088″,”label”:”Squash”,”tracker”:”Squash”,”count”:23,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9160″,”label”:”Suites”,”tracker”:”Suites”,”count”:744,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11261″,”label”:”Swimup Bar”,”tracker”:”Swimup Bar”,”count”:119,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9185″,”label”:”Tennis Court”,”tracker”:”Tennis Court”,”count”:93,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”11276″,”label”:”Water Park”,”tracker”:”Water Park”,”count”:20,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19124″,”label”:”Water Sport Equipment Rentals”,”tracker”:”Water Sport Equipment Rentals”,”count”:48,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9164″,”label”:”Wheelchair access”,”tracker”:”Wheelchair access”,”count”:827,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19127″,”label”:”Windsurfing”,”tracker”:”Windsurfing – Amenities”,”count”:11,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19131″,”label”:”Yoga Classes”,”tracker”:”Yoga Classes – Amenities”,”count”:63,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”19132″,”label”:”Yoga Room”,”tracker”:”Yoga Room”,”count”:37,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false}],”filterType”:”checkbox”,”index”:3,”paramName”:”amen”,”placeholderText”:”e.g., free WiFi, breakfast included”,”previewText”:””,”showCounts”:false,”title”:”Amenities”,”trackingName”:”amenities”,”visible”:true},{“choices”:[{“value”:”5″,”label”:”5 bubbles “,”tracker”:”5 Bubbles”,”count”:239},{“value”:”4″,”label”:”4 bubbles & up”,”tracker”:”4 Bubbles and Up”,”count”:1032},{“value”:”3″,”label”:”3 bubbles & up”,”tracker”:”3 Bubbles and Up”,”count”:1324},{“value”:”2″,”label”:”2 bubbles & up”,”tracker”:”2 Bubbles and Up”,”count”:1408}],”filterType”:”trating”,”index”:4,”paramName”:”trating”,”previewText”:null,”title”:”Traveler rating”,”trackingName”:”ta_rating”,”visible”:true},{“choices”:[{“value”:”9572″,”label”:”5 stars”,”tracker”:”5″,”count”:289,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”5starsHotelClassF”},{“value”:”9566″,”label”:”4 stars”,”tracker”:”4″,”count”:405,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”4starsHotelClassF”},{“value”:”9568″,”label”:”3 stars”,”tracker”:”3″,”count”:242,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9569″,”label”:”2 stars”,”tracker”:”2″,”count”:57,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false}],”filterType”:”checkbox”,”index”:5,”paramName”:”zfc”,”showCounts”:false,”title”:”Hotel class”,”trackingName”:”hotel_class”,”visible”:true},{“choices”:[{“value”:”5184″,”label”:”Budget”,”tracker”:”Budget”,”count”:214,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9654″,”label”:”Mid-range”,”tracker”:”Mid-range”,”count”:687,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9650″,”label”:”Luxury”,”tracker”:”Luxury”,”count”:276,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”6216″,”label”:”Family-friendly”,”tracker”:”Family”,”count”:571,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”6296″,”label”:”Business”,”tracker”:”Business”,”count”:597,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”5951″,”label”:”Modern”,”tracker”:”Modern”,”count”:402,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false},{“value”:”9624″,”label”:”Romantic”,”tracker”:”Romantic”,”count”:223,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false}],”filterType”:”checkbox”,”index”:6,”paramName”:”zff”,”showCounts”:false,”title”:”Style”,”trackingName”:”style”,”visible”:true},{“filterType”:”hotelBrandSearch”,”index”:7,”modalText”:”Brands and Properties”,”paramName”:”bs”,”placeholderText”:”Search brand or property name”,”poiTypes”:[“hotel”],”presetBrands”:[{“scope”:”brands”,”name”:”OYO”,”count”:60,”details”:{“name”:”OYO”,”id”:”11779″},”type”:”BRAND”,”value”:”11779″},{“scope”:”brands”,”name”:”Rotana”,”count”:35,”details”:{“name”:”Rotana”,”id”:”9402″},”type”:”BRAND”,”value”:”9402″},{“scope”:”brands”,”name”:”Millennium”,”count”:16,”details”:{“name”:”Millennium”,”id”:”9243″},”type”:”BRAND”,”value”:”9243″},{“scope”:”brands”,”name”:”Jumeirah”,”count”:15,”details”:{“name”:”Jumeirah”,”id”:”9611″},”type”:”BRAND”,”value”:”9611″},{“scope”:”brands”,”name”:”Accor Live Limitless (ALL)”,”count”:14,”details”:{“name”:”Accor Live Limitless (ALL)”,”id”:”16149″},”type”:”BRAND”,”value”:”16149″},{“scope”:”brands”,”name”:”The Address Hotels + Resorts”,”count”:12,”details”:{“name”:”The Address Hotels + Resorts”,”id”:”11351″},”type”:”BRAND”,”value”:”11351″},{“scope”:”brands”,”name”:”Marriott”,”count”:11,”details”:{“name”:”Marriott”,”id”:”9231″},”type”:”BRAND”,”value”:”9231″},{“scope”:”brands”,”name”:”DoubleTree by Hilton”,”count”:11,”details”:{“name”:”DoubleTree by Hilton”,”id”:”9214″},”type”:”BRAND”,”value”:”9214″},{“scope”:”brands”,”name”:”Ramada”,”count”:11,”details”:{“name”:”Ramada”,”id”:”9215″},”type”:”BRAND”,”value”:”9215″},{“scope”:”brands”,”name”:”Novotel”,”count”:10,”details”:{“name”:”Novotel”,”id”:”9321″},”type”:”BRAND”,”value”:”9321″},{“scope”:”brands”,”name”:”Rove Hotels”,”count”:9,”details”:{“name”:”Rove Hotels”,”id”:”21417″},”type”:”BRAND”,”value”:”21417″},{“scope”:”brands”,”name”:”Premier Inn”,”count”:9,”details”:{“name”:”Premier Inn”,”id”:”9328″},”type”:”BRAND”,”value”:”9328″},{“scope”:”brands”,”name”:”Aloft”,”count”:8,”details”:{“name”:”Aloft”,”id”:”9355″},”type”:”BRAND”,”value”:”9355″},{“scope”:”brands”,”name”:”Le Meridien”,”count”:8,”details”:{“name”:”Le Meridien”,”id”:”9293″},”type”:”BRAND”,”value”:”9293″},{“scope”:”brands”,”name”:”Sheraton”,”count”:7,”details”:{“name”:”Sheraton”,”id”:”9219″},”type”:”BRAND”,”value”:”9219″},{“scope”:”brands”,”name”:”Radisson”,”count”:7,”details”:{“name”:”Radisson”,”id”:”9234″},”type”:”BRAND”,”value”:”9234″},{“scope”:”brands”,”name”:”Radisson Blu”,”count”:7,”details”:{“name”:”Radisson Blu”,”id”:”10707″},”type”:”BRAND”,”value”:”10707″},{“scope”:”brands”,”name”:”Movenpick”,”count”:7,”details”:{“name”:”Movenpick”,”id”:”9378″},”type”:”BRAND”,”value”:”9378″},{“scope”:”brands”,”name”:”Hyatt Place”,”count”:7,”details”:{“name”:”Hyatt Place”,”id”:”9252″},”type”:”BRAND”,”value”:”9252″},{“scope”:”brands”,”name”:”Ritz-Carlton”,”count”:7,”details”:{“name”:”Ritz-Carlton”,”id”:”9267″},”type”:”BRAND”,”value”:”9267″},{“scope”:”brands”,”name”:”Golden Tulip”,”count”:7,”details”:{“name”:”Golden Tulip”,”id”:”9323″},”type”:”BRAND”,”value”:”9323″},{“scope”:”brands”,”name”:”InterContinental”,”count”:6,”details”:{“name”:”InterContinental”,”id”:”9295″},”type”:”BRAND”,”value”:”9295″},{“scope”:”brands”,”name”:”Hilton Hotels & Resorts”,”count”:5,”details”:{“name”:”Hilton Hotels & Resorts”,”id”:”9220″},”type”:”BRAND”,”value”:”9220″},{“scope”:”brands”,”name”:”Anantara Resort & Spa”,”count”:5,”details”:{“name”:”Anantara Resort & Spa”,”id”:”9651″},”type”:”BRAND”,”value”:”9651″},{“scope”:”brands”,”name”:”Crowne Plaza”,”count”:5,”details”:{“name”:”Crowne Plaza”,”id”:”9265″},”type”:”BRAND”,”value”:”9265″},{“scope”:”brands”,”name”:”Holiday Inn”,”count”:5,”details”:{“name”:”Holiday Inn”,”id”:”9206″},”type”:”BRAND”,”value”:”9206″},{“scope”:”brands”,”name”:”JA Resorts & Hotels”,”count”:5,”details”:{“name”:”JA Resorts & Hotels”,”id”:”10448″},”type”:”BRAND”,”value”:”10448″},{“scope”:”brands”,”name”:”Ibis Styles”,”count”:5,”details”:{“name”:”Ibis Styles”,”id”:”9329″},”type”:”BRAND”,”value”:”9329″},{“scope”:”brands”,”name”:”Mercure”,”count”:4,”details”:{“name”:”Mercure”,”id”:”9349″},”type”:”BRAND”,”value”:”9349″},{“scope”:”brands”,”name”:”Hampton by Hilton”,”count”:4,”details”:{“name”:”Hampton by Hilton”,”id”:”9226″},”type”:”BRAND”,”value”:”9226″},{“scope”:”brands”,”name”:”Hilton Garden Inn”,”count”:4,”details”:{“name”:”Hilton Garden Inn”,”id”:”9236″},”type”:”BRAND”,”value”:”9236″},{“scope”:”brands”,”name”:”Vida Hotels and Resorts”,”count”:4,”details”:{“name”:”Vida Hotels and Resorts”,”id”:”11352″},”type”:”BRAND”,”value”:”11352″},{“scope”:”brands”,”name”:”Pullman”,”count”:4,”details”:{“name”:”Pullman”,”id”:”9367″},”type”:”BRAND”,”value”:”9367″},{“scope”:”brands”,”name”:”Element”,”count”:4,”details”:{“name”:”Element”,”id”:”9401″},”type”:”BRAND”,”value”:”9401″},{“scope”:”brands”,”name”:”ibis”,”count”:4,”details”:{“name”:”ibis”,”id”:”9375″},”type”:”BRAND”,”value”:”9375″},{“scope”:”brands”,”name”:”Sofitel”,”count”:4,”details”:{“name”:”Sofitel”,”id”:”9276″},”type”:”BRAND”,”value”:”9276″},{“scope”:”brands”,”name”:”Rixos”,”count”:4,”details”:{“name”:”Rixos”,”id”:”9677″},”type”:”BRAND”,”value”:”9677″},{“scope”:”brands”,”name”:”Four Points by Sheraton”,”count”:4,”details”:{“name”:”Four Points by Sheraton”,”id”:”9307″},”type”:”BRAND”,”value”:”9307″},{“scope”:”brands”,”name”:”St. Regis”,”count”:4,”details”:{“name”:”St. Regis”,”id”:”9322″},”type”:”BRAND”,”value”:”9322″},{“scope”:”brands”,”name”:”Hyatt Regency”,”count”:4,”details”:{“name”:”Hyatt Regency”,”id”:”9285″},”type”:”BRAND”,”value”:”9285″},{“scope”:”brands”,”name”:”Swissu00F4tel Hotels & Resorts”,”count”:4,”details”:{“name”:”Swissu00F4tel Hotels & Resorts”,”id”:”9333″},”type”:”BRAND”,”value”:”9333″},{“scope”:”brands”,”name”:”Holiday Inn Express”,”count”:4,”details”:{“name”:”Holiday Inn Express”,”id”:”9290″},”type”:”BRAND”,”value”:”9290″},{“scope”:”brands”,”name”:”Barcelo Hotels & Resorts”,”count”:4,”details”:{“name”:”Barcelo Hotels & Resorts”,”id”:”9294″},”type”:”BRAND”,”value”:”9294″},{“scope”:”brands”,”name”:”Grand Hyatt”,”count”:3,”details”:{“name”:”Grand Hyatt”,”id”:”9615″},”type”:”BRAND”,”value”:”9615″},{“scope”:”brands”,”name”:”Wyndham”,”count”:3,”details”:{“name”:”Wyndham”,”id”:”9229″},”type”:”BRAND”,”value”:”9229″},{“scope”:”brands”,”name”:”Waldorf Astoria Hotels & Resorts”,”count”:3,”details”:{“name”:”Waldorf Astoria Hotels & Resorts”,”id”:”9249″},”type”:”BRAND”,”value”:”9249″},{“scope”:”brands”,”name”:”Shangri-La”,”count”:3,”details”:{“name”:”Shangri-La”,”id”:”9404″},”type”:”BRAND”,”value”:”9404″},{“scope”:”brands”,”name”:”One&Only”,”count”:3,”details”:{“name”:”One&Only”,”id”:”10481″},”type”:”BRAND”,”value”:”10481″},{“scope”:”brands”,”name”:”Fairmont”,”count”:3,”details”:{“name”:”Fairmont”,”id”:”9259″},”type”:”BRAND”,”value”:”9259″},{“scope”:”brands”,”name”:”Luxury Collection”,”count”:3,”details”:{“name”:”Luxury Collection”,”id”:”9260″},”type”:”BRAND”,”value”:”9260″},{“scope”:”brands”,”name”:”Marriott Autograph Collection”,”count”:3,”details”:{“name”:”Marriott Autograph Collection”,”id”:”9279″},”type”:”BRAND”,”value”:”9279″},{“scope”:”brands”,”name”:”Park Regis”,”count”:3,”details”:{“name”:”Park Regis”,”id”:”19395″},”type”:”BRAND”,”value”:”19395″},{“scope”:”brands”,”name”:”Four Seasons”,”count”:3,”details”:{“name”:”Four Seasons”,”id”:”9275″},”type”:”BRAND”,”value”:”9275″},{“scope”:”brands”,”name”:”W Hotels”,”count”:3,”details”:{“name”:”W Hotels”,”id”:”9287″},”type”:”BRAND”,”value”:”9287″},{“scope”:”brands”,”name”:”Staybridge Suites”,”count”:3,”details”:{“name”:”Staybridge Suites”,”id”:”9280″},”type”:”BRAND”,”value”:”9280″},{“scope”:”brands”,”name”:”Voco Hotels”,”count”:3,”details”:{“name”:”Voco Hotels”,”id”:”20193″},”type”:”BRAND”,”value”:”20193″},{“scope”:”brands”,”name”:”MGallery Hotel Collection”,”count”:2,”details”:{“name”:”MGallery Hotel Collection”,”id”:”9344″},”type”:”BRAND”,”value”:”9344″},{“scope”:”brands”,”name”:”Howard Johnson”,”count”:2,”details”:{“name”:”Howard Johnson”,”id”:”9221″},”type”:”BRAND”,”value”:”9221″},{“scope”:”brands”,”name”:”Courtyard”,”count”:2,”details”:{“name”:”Courtyard”,”id”:”9228″},”type”:”BRAND”,”value”:”9228″},{“scope”:”brands”,”name”:”RIXOS HOTELS”,”count”:2,”details”:{“name”:”RIXOS HOTELS”,”id”:”21825″},”type”:”BRAND”,”value”:”21825″},{“scope”:”brands”,”name”:”Dusit Hotels And Resorts”,”count”:2,”details”:{“name”:”Dusit Hotels And Resorts”,”id”:”10416″},”type”:”BRAND”,”value”:”10416″},{“scope”:”brands”,”name”:”Dusit Thani”,”count”:2,”details”:{“name”:”Dusit Thani”,”id”:”10418″},”type”:”BRAND”,”value”:”10418″},{“scope”:”brands”,”name”:”Andaz”,”count”:2,”details”:{“name”:”Andaz”,”id”:”9619″},”type”:”BRAND”,”value”:”9619″},{“scope”:”brands”,”name”:”Delta Hotels And Resorts”,”count”:2,”details”:{“name”:”Delta Hotels And Resorts”,”id”:”9354″},”type”:”BRAND”,”value”:”9354″},{“scope”:”brands”,”name”:”Kempinski”,”count”:2,”details”:{“name”:”Kempinski”,”id”:”9359″},”type”:”BRAND”,”value”:”9359″},{“scope”:”brands”,”name”:”TRYP”,”count”:2,”details”:{“name”:”TRYP”,”id”:”9357″},”type”:”BRAND”,”value”:”9357″},{“scope”:”brands”,”name”:”Preferred Hotels & Resorts”,”count”:2,”details”:{“name”:”Preferred Hotels & Resorts”,”id”:”9645″},”type”:”BRAND”,”value”:”9645″},{“scope”:”brands”,”name”:”Citadines Apart Hotel”,”count”:2,”details”:{“name”:”Citadines Apart Hotel”,”id”:”9522″},”type”:”BRAND”,”value”:”9522″},{“scope”:”brands”,”name”:”Adagio”,”count”:2,”details”:{“name”:”Adagio”,”id”:”9377″},”type”:”BRAND”,”value”:”9377″},{“scope”:”brands”,”name”:”Hyatt”,”count”:2,”details”:{“name”:”Hyatt”,”id”:”9254″},”type”:”BRAND”,”value”:”9254″},{“scope”:”brands”,”name”:”Raffles”,”count”:2,”details”:{“name”:”Raffles”,”id”:”9376″},”type”:”BRAND”,”value”:”9376″},{“scope”:”brands”,”name”:”NH Collection”,”count”:2,”details”:{“name”:”NH Collection”,”id”:”9420″},”type”:”BRAND”,”value”:”9420″},{“scope”:”brands”,”name”:”Grand Mercure”,”count”:2,”details”:{“name”:”Grand Mercure”,”id”:”9426″},”type”:”BRAND”,”value”:”9426″},{“scope”:”brands”,”name”:”Best Western Plus”,”count”:2,”details”:{“name”:”Best Western Plus”,”id”:”9264″},”type”:”BRAND”,”value”:”9264″},{“scope”:”brands”,”name”:”Conrad Hotels & Resorts”,”count”:2,”details”:{“name”:”Conrad Hotels & Resorts”,”id”:”9382″},”type”:”BRAND”,”value”:”9382″},{“scope”:”brands”,”name”:”Canopy by Hilton”,”count”:2,”details”:{“name”:”Canopy by Hilton”,”id”:”16169″},”type”:”BRAND”,”value”:”16169″},{“scope”:”brands”,”name”:”Avani Hotels & Resorts”,”count”:2,”details”:{“name”:”Avani Hotels & Resorts”,”id”:”9679″},”type”:”BRAND”,”value”:”9679″},{“scope”:”brands”,”name”:”Curio Collection by Hilton”,”count”:2,”details”:{“name”:”Curio Collection by Hilton”,”id”:”16047″},”type”:”BRAND”,”value”:”16047″},{“scope”:”brands”,”name”:”Westin”,”count”:2,”details”:{“name”:”Westin”,”id”:”9272″},”type”:”BRAND”,”value”:”9272″},{“scope”:”brands”,”name”:”Adagio Premium”,”count”:2,”details”:{“name”:”Adagio Premium”,”id”:”16609″},”type”:”BRAND”,”value”:”16609″},{“scope”:”brands”,”name”:”Shaza”,”count”:2,”details”:{“name”:”Shaza”,”id”:”10504″},”type”:”BRAND”,”value”:”10504″},{“scope”:”brands”,”name”:”Taj”,”count”:2,”details”:{“name”:”Taj”,”id”:”11003″},”type”:”BRAND”,”value”:”11003″},{“scope”:”brands”,”name”:”Mandarin Oriental”,”count”:2,”details”:{“name”:”Mandarin Oriental”,”id”:”9292″},”type”:”BRAND”,”value”:”9292″},{“scope”:”brands”,”name”:”Central Hotels”,”count”:2,”details”:{“name”:”Central Hotels”,”id”:”16269″},”type”:”BRAND”,”value”:”16269″},{“scope”:”brands”,”name”:”Bulgari Hotels & Resorts”,”count”:1,”details”:{“name”:”Bulgari Hotels & Resorts”,”id”:”9465″},”type”:”BRAND”,”value”:”9465″},{“scope”:”brands”,”name”:”RIU Hotels & Resorts”,”count”:1,”details”:{“name”:”RIU Hotels & Resorts”,”id”:”9348″},”type”:”BRAND”,”value”:”9348″},{“scope”:”brands”,”name”:”La Quinta Inn & Suites”,”count”:1,”details”:{“name”:”La Quinta Inn & Suites”,”id”:”9225″},”type”:”BRAND”,”value”:”9225″},{“scope”:”brands”,”name”:”HYDE”,”count”:1,”details”:{“name”:”HYDE”,”id”:”21818″},”type”:”BRAND”,”value”:”21818″},{“scope”:”brands”,”name”:”Saffron”,”count”:1,”details”:{“name”:”Saffron”,”id”:”10499″},”type”:”BRAND”,”value”:”10499″},{“scope”:”brands”,”name”:”Residence Inn”,”count”:1,”details”:{“name”:”Residence Inn”,”id”:”9239″},”type”:”BRAND”,”value”:”9239″},{“scope”:”brands”,”name”:”ME By Melia”,”count”:1,”details”:{“name”:”ME By Melia”,”id”:”9352″},”type”:”BRAND”,”value”:”9352″},{“scope”:”brands”,”name”:”Hotel Metropolitan”,”count”:1,”details”:{“name”:”Hotel Metropolitan”,”id”:”10546″},”type”:”BRAND”,”value”:”10546″},{“scope”:”brands”,”name”:”IntercityHotel”,”count”:1,”details”:{“name”:”IntercityHotel”,”id”:”9521″},”type”:”BRAND”,”value”:”9521″},{“scope”:”brands”,”name”:”Best Western Premier”,”count”:1,”details”:{“name”:”Best Western Premier”,”id”:”9369″},”type”:”BRAND”,”value”:”9369″},{“scope”:”brands”,”name”:”Hyatt Centric”,”count”:1,”details”:{“name”:”Hyatt Centric”,”id”:”16187″},”type”:”BRAND”,”value”:”16187″},{“scope”:”brands”,”name”:”Ascott The Residence”,”count”:1,”details”:{“name”:”Ascott The Residence”,”id”:”9371″},”type”:”BRAND”,”value”:”9371″},{“scope”:”brands”,”name”:”Southern Sun Hotels”,”count”:1,”details”:{“name”:”Southern Sun Hotels”,”id”:”11855″},”type”:”BRAND”,”value”:”11855″},{“scope”:”brands”,”name”:”Paramount”,”count”:1,”details”:{“name”:”Paramount”,”id”:”10483″},”type”:”BRAND”,”value”:”10483″},{“scope”:”brands”,”name”:”Hawthorn Suites”,”count”:1,”details”:{“name”:”Hawthorn Suites”,”id”:”9266″},”type”:”BRAND”,”value”:”9266″},{“scope”:”brands”,”name”:”Design Hotels”,”count”:1,”details”:{“name”:”Design Hotels”,”id”:”16277″},”type”:”BRAND”,”value”:”16277″},{“scope”:”brands”,”name”:”Wyndham Garden”,”count”:1,”details”:{“name”:”Wyndham Garden”,”id”:”9384″},”type”:”BRAND”,”value”:”9384″},{“scope”:”brands”,”name”:”25hours Hotels”,”count”:1,”details”:{“name”:”25hours Hotels”,”id”:”16677″},”type”:”BRAND”,”value”:”16677″},{“scope”:”brands”,”name”:”The Luxury Collection”,”count”:1,”details”:{“name”:”The Luxury Collection”,”id”:”9675″},”type”:”BRAND”,”value”:”9675″},{“scope”:”brands”,”name”:”Oberoi”,”count”:1,”details”:{“name”:”Oberoi”,”id”:”9437″},”type”:”BRAND”,”value”:”9437″},{“scope”:”brands”,”name”:”Lemon Tree”,”count”:1,”details”:{“name”:”Lemon Tree”,”id”:”10460″},”type”:”BRAND”,”value”:”10460″},{“scope”:”brands”,”name”:”Hotel Indigo”,”count”:1,”details”:{“name”:”Hotel Indigo”,”id”:”9270″},”type”:”BRAND”,”value”:”9270″},{“scope”:”brands”,”name”:”Melia Collection”,”count”:1,”details”:{“name”:”Melia Collection”,”id”:”22166″},”type”:”BRAND”,”value”:”22166″},{“scope”:”brands”,”name”:”Tulip Inn”,”count”:1,”details”:{“name”:”Tulip Inn”,”id”:”9393″},”type”:”BRAND”,”value”:”9393″},{“scope”:”brands”,”name”:”JW Marriott”,”count”:1,”details”:{“name”:”JW Marriott”,”id”:”9429″},”type”:”BRAND”,”value”:”9429″},{“scope”:”brands”,”name”:”Marriott Executive Apartments”,”count”:1,”details”:{“name”:”Marriott Executive Apartments”,”id”:”9428″},”type”:”BRAND”,”value”:”9428″},{“scope”:”brands”,”name”:”Atlantis”,”count”:1,”details”:{“name”:”Atlantis”,”id”:”10390″},”type”:”BRAND”,”value”:”10390″},{“scope”:”brands”,”name”:”Radisson Red”,”count”:1,”details”:{“name”:”Radisson Red”,”id”:”10708″},”type”:”BRAND”,”value”:”10708″},{“scope”:”brands”,”name”:”Park Inn”,”count”:1,”details”:{“name”:”Park Inn”,”id”:”9282″},”type”:”BRAND”,”value”:”9282″},{“scope”:”brands”,”name”:”LXR Hotels & Resorts”,”count”:1,”details”:{“name”:”LXR Hotels & Resorts”,”id”:”22013″},”type”:”BRAND”,”value”:”22013″},{“scope”:”brands”,”name”:”Caesars”,”count”:1,”details”:{“name”:”Caesars”,”id”:”9319″},”type”:”BRAND”,”value”:”9319″},{“scope”:”brands”,”name”:”Taj Exotica”,”count”:1,”details”:{“name”:”Taj Exotica”,”id”:”11004″},”type”:”BRAND”,”value”:”11004″},{“scope”:”brands”,”name”:”Grand Millennium Hotels”,”count”:1,”details”:{“name”:”Grand Millennium Hotels”,”id”:”10434″},”type”:”BRAND”,”value”:”10434″},{“scope”:”brands”,”name”:”Rosewood”,”count”:1,”details”:{“name”:”Rosewood”,”id”:”9695″},”type”:”BRAND”,”value”:”9695″},{“scope”:”brands”,”name”:”Comfort Inn”,”count”:1,”details”:{“name”:”Comfort Inn”,”id”:”9216″},”type”:”BRAND”,”value”:”9216″},{“scope”:”brands”,”name”:”BlueBay Hotels & Resorts”,”count”:1,”details”:{“name”:”BlueBay Hotels & Resorts”,”id”:”16662″},”type”:”BRAND”,”value”:”16662″},{“scope”:”brands”,”name”:”Centara Hotel & Resort”,”count”:1,”details”:{“name”:”Centara Hotel & Resort”,”id”:”9693″},”type”:”BRAND”,”value”:”9693″},{“scope”:”brands”,”name”:”Cristal”,”count”:1,”details”:{“name”:”Cristal”,”id”:”18848″},”type”:”BRAND”,”value”:”18848″},{“scope”:”brands”,”name”:”Park Hyatt Hotels”,”count”:1,”details”:{“name”:”Park Hyatt Hotels”,”id”:”9608″},”type”:”BRAND”,”value”:”9608″}],”presetPOI”:null,”previewText”:null,”title”:”Brands”,”trackingName”:”brand”,”visible”:true}],”conversationalFilterComplete”:false},”package”:”6f9vcd”},{“id”:”component_4″,”props”:{“geoName”:”United Arab Emirates”},”package”:”12vsg6″},{“id”:”component_6″,”props”:{},”package”:”ihnof8″},{“id”:”component_7″,”props”:{},”package”:”17oe7i”},{“id”:”component_10″,”props”:{“initialQuery”:””},”package”:”1jk772″},{“id”:”component_11″,”props”:{},”package”:”y591su”},{“id”:”component_13″,”props”:{},”package”:”1ttyi9″},{“id”:”iis-tracking-bridge_component_14″,”props”:null,”package”:”v2nizv”},{“id”:”component_15″,”props”:{},”package”:”2dyakj”},{“id”:”iis-tracking-bridge_component_16″,”props”:null,”package”:”v2nizv”},{“id”:”component_17″,”props”:{},”package”:”1g47yx”},{“id”:”component_18″,”props”:{},”package”:”1h29r5″},{“id”:”component_19″,”props”:{},”package”:”1b4296″},{“id”:”component_20″,”props”:{},”package”:”11ttjq”},{“id”:”component_21″,”props”:{“hotels”:[{“longitude”:55.30189,”latitude”:25.260635},{“longitude”:55.49151,”latitude”:25.39637},{“longitude”:55.48271,”latitude”:25.401768},{“longitude”:55.438953,”latitude”:25.413116},{“longitude”:55.462234,”latitude”:25.389723},{“longitude”:55.485577,”latitude”:25.394466},{“longitude”:55.46729,”latitude”:25.389387},{“longitude”:55.45016,”latitude”:25.3885},{“longitude”:55.55853,”latitude”:25.37092},{“longitude”:55.433,”latitude”:25.4084},{“longitude”:55.452644,”latitude”:25.417768},{“longitude”:55.43239,”latitude”:25.40643},{“longitude”:55.432888,”latitude”:25.408443},{“longitude”:55.44117,”latitude”:25.421215},{“longitude”:55.58752,”latitude”:25.42779},{“longitude”:55.510857,”latitude”:25.406925},{“longitude”:55.43658,”latitude”:25.39695},{“longitude”:55.4326,”latitude”:25.4083},{“longitude”:55.44034,”latitude”:25.41648},{“longitude”:55.436817,”latitude”:25.41302}],”map_toggle_type”:”STATIC_MAP”,”zoom”:5,”geoPoint”:{“longitude”:54.55481,”latitude”:24.275707},”disableWhileLoading”:false,”toggleType”:”STATIC_MAP”},”package”:”119754″},{“id”:”component_22″,”props”:{“initialSelectedFilters”:[{“param”:”amen”,”trackingName”:”amenities”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”trating”,”trackingName”:”ta_rating”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”pop”,”trackingName”:”popular”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfc”,”trackingName”:”hotel_class”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfn”,”trackingName”:”neighborhood”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zff”,”trackingName”:”style”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”rrf”,”trackingName”:”refugee_resource”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”blender_tag”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfd”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”ns”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”bs”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”zfb”,”trackingName”:”brand”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”distFrom”,”trackingName”:”Filters_location”,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”distFromPnt”,”trackingName”:null,”excludeFromClearAll”:false,”filterType”:”single”,”value”:””,”displayValues”:{}},{“param”:”catTag”,”trackingName”:”accommodation”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}},{“param”:”hsf”,”trackingName”:”safety_measures”,”excludeFromClearAll”:false,”filterType”:”multi”,”value”:””,”displayValues”:{}}],”filterCountsEnabled”:true,”geoId”:294012,”initialAvailableFilters”:[{“choices”:[{“value”:”zfc_9572″,”label”:”5 stars”,”tracker”:”5 Star”,”count”:289,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”5starsF”,”selected”:false,”additiveCounts”:false},{“value”:”trating_4″,”label”:”4 bubbles & up”,”tracker”:”4 Bubbles and Up”,”count”:1032,”disabled”:false,”bubbleRating”:4,”displayRatingAsBubbles”:true,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”4stars&UpF”,”selected”:false,”additiveCounts”:false},{“value”:”amen_6217″,”label”:”Pool”,”tracker”:”Pool”,”count”:869,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”zff_9654″,”label”:”Mid-range”,”tracker”:”Mid-range”,”count”:687,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false}],”filterType”:”checkbox”,”index”:0,”paramName”:”pop”,”previewText”:””,”showCounts”:false,”title”:”Popular”,”trackingName”:”popular”,”visible”:true},{“choices”:[{“value”:”9176″,”label”:”Free Wifi”,”tracker”:”Free Wifi”,”count”:955,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”freeWifiF”,”selected”:false,”additiveCounts”:false},{“value”:”9179″,”label”:”Breakfast included”,”tracker”:”Free Breakfast”,”count”:170,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”breakfastIncludedAmenF”,”selected”:false,”additiveCounts”:false},{“value”:”6217″,”label”:”Pool”,”tracker”:”Pool”,”count”:869,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9163″,”label”:”Free parking”,”tracker”:”Free Parking”,”count”:902,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11290″,”label”:”Adult pool”,”tracker”:”Adult Pool”,”count”:107,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18884″,”label”:”Adults Only”,”tracker”:”Adults Only – Amenities”,”count”:8,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9658″,”label”:”Air conditioning”,”tracker”:”Air Conditioning”,”count”:1082,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9170″,”label”:”Airport transportation”,”tracker”:”Airport Transportation”,”count”:759,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18891″,”label”:”Archery”,”tracker”:”Archery”,”count”:15,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18895″,”label”:”Badminton”,”tracker”:”Badminton”,”count”:13,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9166″,”label”:”Bar/Lounge”,”tracker”:”Bar/Lounge”,”count”:581,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”21778″,”label”:”Beach Access”,”tracker”:”Beach Access – Amenities”,”count”:285,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9156″,”label”:”Beachfront”,”tracker”:”Beach”,”count”:192,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18900″,”label”:”Bicycle Rental”,”tracker”:”Bicycle Rental”,”count”:59,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18903″,”label”:”Bicycles Available”,”tracker”:”Bicycles Available”,”count”:26,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18907″,”label”:”Boating”,”tracker”:”Boating”,”count”:29,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18912″,”label”:”Bowling”,”tracker”:”Bowling”,”count”:7,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18915″,”label”:”Bridal Suite”,”tracker”:”Bridal Suite”,”count”:72,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9187″,”label”:”Business center”,”tracker”:”Business Center”,”count”:714,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18918″,”label”:”Cable / Satellite TV”,”tracker”:”Cable / Satellite TV”,”count”:274,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18919″,”label”:”Canoeing”,”tracker”:”Canoeing – Amenities”,”count”:17,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18932″,”label”:”Coffee / Tea Maker”,”tracker”:”Coffee / Tea Maker”,”count”:366,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18931″,”label”:”Coffee Shop”,”tracker”:”Coffee Shop – Amenities”,”count”:392,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9667″,”label”:”Conference Facilities”,”tracker”:”Conference Facilities”,”count”:544,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18944″,”label”:”Diving”,”tracker”:”Diving”,”count”:15,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”16305″,”label”:”Electric vehicle charging station”,”tracker”:”Electric Vehicle Charging Station”,”count”:84,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9188″,”label”:”Fitness center”,”tracker”:”Fitness Center”,”count”:905,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9162″,”label”:”Free Internet”,”tracker”:”Free Internet”,”count”:913,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”12118″,”label”:”Free Shuttle or Taxi Services”,”tracker”:”Free Shuttle or Taxi Services”,”count”:90,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18979″,”label”:”Game Room”,”tracker”:”Game Room”,”count”:33,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9183″,”label”:”Golf course”,”tracker”:”Golf Course”,”count”:30,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18991″,”label”:”Hiking”,”tracker”:”Hiking – Amenities”,”count”:14,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”18993″,”label”:”Horseback Riding”,”tracker”:”Horseback Riding – Amenities”,”count”:16,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9182″,”label”:”Hot Tub”,”tracker”:”Hot tub”,”count”:345,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11285″,”label”:”Indoor pool”,”tracker”:”Indoor Pool”,”count”:70,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11289″,”label”:”Infinity Pool”,”tracker”:”Infinity Pool”,”count”:92,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”12122″,”label”:”Kids Stay Free”,”tracker”:”Kids Stay Free”,”count”:297,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9168″,”label”:”Kitchenette”,”tracker”:”Kitchenette”,”count”:447,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11274″,”label”:”Lazy River”,”tracker”:”Lazy River”,”count”:3,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19024″,”label”:”Mini Golf”,”tracker”:”Mini Golf”,”count”:14,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19026″,”label”:”Mountain View”,”tracker”:”Mountain View – Amenities”,”count”:22,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11259″,”label”:”Ocean View”,”tracker”:”Ocean View”,”count”:177,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9167″,”label”:”Pet friendly”,”tracker”:”Pets Allowed”,”count”:60,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19047″,”label”:”Pool with View”,”tracker”:”Pool with View”,”count”:248,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11282″,”label”:”Poolside Bar”,”tracker”:”Poolside Bar”,”count”:327,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11441″,”label”:”Private Beaches”,”tracker”:”Private Beach”,”count”:110,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19055″,”label”:”Raquetball”,”tracker”:”Raquetball”,”count”:2,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9165″,”label”:”Restaurant”,”tracker”:”Restaurant”,”count”:1008,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11257″,”label”:”Rooftop Bar”,”tracker”:”Rooftop Bar”,”count”:123,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11267″,”label”:”Rooftop Pool”,”tracker”:”Rooftop Pool”,”count”:310,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11275″,”label”:”Rooftop Terrace”,”tracker”:”Rooftop Terrace”,”count”:172,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9157″,”label”:”Shuttle Bus Service”,”tracker”:”Shuttle Bus Service”,”count”:358,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19076″,”label”:”Ski Rentals”,”tracker”:”Ski Rentals”,”count”:4,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9158″,”label”:”Ski-In / Ski-Out”,”tracker”:”Ski In/Ski Out”,”count”:2,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19075″,”label”:”Skiing”,”tracker”:”Skiing”,”count”:5,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19081″,”label”:”Snorkeling”,”tracker”:”Snorkeling – Amenities”,”count”:19,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9169″,”label”:”Spa”,”tracker”:”Spa”,”count”:584,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19088″,”label”:”Squash”,”tracker”:”Squash”,”count”:23,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9160″,”label”:”Suites”,”tracker”:”Suites”,”count”:744,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11261″,”label”:”Swimup Bar”,”tracker”:”Swimup Bar”,”count”:119,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9185″,”label”:”Tennis Court”,”tracker”:”Tennis Court”,”count”:93,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”11276″,”label”:”Water Park”,”tracker”:”Water Park”,”count”:20,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19124″,”label”:”Water Sport Equipment Rentals”,”tracker”:”Water Sport Equipment Rentals”,”count”:48,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9164″,”label”:”Wheelchair access”,”tracker”:”Wheelchair access”,”count”:827,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19127″,”label”:”Windsurfing”,”tracker”:”Windsurfing – Amenities”,”count”:11,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19131″,”label”:”Yoga Classes”,”tracker”:”Yoga Classes – Amenities”,”count”:63,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”19132″,”label”:”Yoga Room”,”tracker”:”Yoga Room”,”count”:37,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false}],”filterType”:”checkbox”,”index”:1,”paramName”:”amen”,”placeholderText”:”e.g., free WiFi, breakfast included”,”previewText”:””,”showCounts”:false,”title”:”Amenities”,”trackingName”:”amenities”,”visible”:true},{“choices”:[{“value”:”21371″,”label”:”Hotels”,”tracker”:”Hotels & Motels – Lodging Type”,”displayLink”:”/Hotels-g294012-United_Arab_Emirates-Hotels.html”,”count”:835,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”hotelsF”,”selected”:false,”additiveCounts”:false},{“value”:”9250″,”label”:”Condos”,”tracker”:”Condo”,”displayLink”:”/Hotels-g294012-c3-zff28-United_Arab_Emirates-Hotels.html”,”count”:239,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9200″,”label”:”Lodges”,”tracker”:”Lodge”,”displayLink”:”/Hotels-g294012-c3-zff17-United_Arab_Emirates-Hotels.html”,”count”:200,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”21372″,”label”:”B&Bs & Inns”,”tracker”:”B&Bs & Inns – Lodging Type”,”displayLink”:”/Hotels-g294012-c2-United_Arab_Emirates-Hotels.html”,”count”:190,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”21373″,”label”:”Specialty lodgings”,”tracker”:”Specialty Lodging – Lodging Type”,”displayLink”:”/Hotels-g294012-c3-United_Arab_Emirates-Hotels.html”,”count”:121,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9672″,”label”:”Resorts”,”tracker”:”Resort”,”displayLink”:”/Hotels-g294012-zff8-United_Arab_Emirates-Hotels.html”,”count”:103,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9261″,”label”:”Hostels”,”tracker”:”Hostel”,”displayLink”:”/Hotels-g294012-c3-zff26-United_Arab_Emirates-Hotels.html”,”count”:101,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”16545″,”label”:”All-inclusives”,”tracker”:”All Inclusive – Parent”,”displayLink”:”/Hotels-g294012-zft16545-United_Arab_Emirates-Hotels.html”,”count”:49,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9235″,”label”:”Campgrounds”,”tracker”:”Campground”,”displayLink”:”/Hotels-g294012-c3-zff29-United_Arab_Emirates-Hotels.html”,”count”:22,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9256″,”label”:”Villas”,”tracker”:”Villa”,”displayLink”:”/Hotels-g294012-c3-zff22-United_Arab_Emirates-Hotels.html”,”count”:13,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9469″,”label”:”Capsule hotels”,”tracker”:”Capsule Hotel”,”displayLink”:”/Hotels-g294012-c3-zff31-United_Arab_Emirates-Hotels.html”,”count”:2,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9383″,”label”:”Farmhouses”,”tracker”:”Farmhouse”,”displayLink”:”/Hotels-g294012-c3-zff39-United_Arab_Emirates-Hotels.html”,”count”:2,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9193″,”label”:”Motels”,”tracker”:”Motel”,”displayLink”:”/Hotels-g294012-zfd2-United_Arab_Emirates-Hotels.html”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9400″,”label”:”Pensions”,”tracker”:”Pension”,”displayLink”:”/Hotels-g294012-zft9400-United_Arab_Emirates-Hotels.html”,”count”:1,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false}],”filterType”:”checkbox”,”index”:2,”paramName”:”catTag”,”showCounts”:true,”title”:”Property types”,”trackingName”:”accommodation”,”visible”:true},{“choices”:[{“value”:”5″,”label”:”5 bubbles “,”tracker”:”5 Bubbles”,”count”:239,”selected”:false,”additiveCounts”:false,”disabled”:false},{“value”:”4″,”label”:”4 bubbles & up”,”tracker”:”4 Bubbles and Up”,”count”:1032,”selected”:false,”additiveCounts”:false,”disabled”:false},{“value”:”3″,”label”:”3 bubbles & up”,”tracker”:”3 Bubbles and Up”,”count”:1324,”selected”:false,”additiveCounts”:false,”disabled”:false},{“value”:”2″,”label”:”2 bubbles & up”,”tracker”:”2 Bubbles and Up”,”count”:1408,”selected”:false,”additiveCounts”:false,”disabled”:false}],”filterType”:”trating”,”index”:3,”paramName”:”trating”,”previewText”:null,”title”:”Traveler rating”,”trackingName”:”ta_rating”,”visible”:true},{“choices”:[{“value”:”9572″,”label”:”5 stars”,”tracker”:”5″,”count”:289,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”5starsHotelClassF”,”selected”:false,”additiveCounts”:false},{“value”:”9566″,”label”:”4 stars”,”tracker”:”4″,”count”:405,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”dataAutomationTag”:”4starsHotelClassF”,”selected”:false,”additiveCounts”:false},{“value”:”9568″,”label”:”3 stars”,”tracker”:”3″,”count”:242,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9569″,”label”:”2 stars”,”tracker”:”2″,”count”:57,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false}],”filterType”:”checkbox”,”index”:4,”paramName”:”zfc”,”showCounts”:false,”title”:”Hotel class”,”trackingName”:”hotel_class”,”visible”:true},{“choices”:[{“value”:”5184″,”label”:”Budget”,”tracker”:”Budget”,”count”:214,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9654″,”label”:”Mid-range”,”tracker”:”Mid-range”,”count”:687,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9650″,”label”:”Luxury”,”tracker”:”Luxury”,”count”:276,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”6216″,”label”:”Family-friendly”,”tracker”:”Family”,”count”:571,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”6296″,”label”:”Business”,”tracker”:”Business”,”count”:597,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”5951″,”label”:”Modern”,”tracker”:”Modern”,”count”:402,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false},{“value”:”9624″,”label”:”Romantic”,”tracker”:”Romantic”,”count”:223,”disabled”:false,”bubbleRating”:0,”displayRatingAsBubbles”:false,”starRating”:0,”displayRatingAsStars”:false,”highlighted”:false,”displayOptimusLogo”:false,”selected”:false,”additiveCounts”:false}],”filterType”:”checkbox”,”index”:5,”paramName”:”zff”,”showCounts”:false,”title”:”Style”,”trackingName”:”style”,”visible”:true},{“filterType”:”hotelBrandSearch”,”index”:6,”modalText”:”Brands and Properties”,”paramName”:”bs”,”placeholderText”:”Search brand or property name”,”poiTypes”:[“hotel”],”presetBrands”:[{“scope”:”brands”,”name”:”OYO”,”count”:60,”details”:{“name”:”OYO”,”id”:”11779″},”type”:”BRAND”,”value”:”11779″},{“scope”:”brands”,”name”:”Rotana”,”count”:35,”details”:{“name”:”Rotana”,”id”:”9402″},”type”:”BRAND”,”value”:”9402″},{“scope”:”brands”,”name”:”Millennium”,”count”:16,”details”:{“name”:”Millennium”,”id”:”9243″},”type”:”BRAND”,”value”:”9243″},{“scope”:”brands”,”name”:”Jumeirah”,”count”:15,”details”:{“name”:”Jumeirah”,”id”:”9611″},”type”:”BRAND”,”value”:”9611″},{“scope”:”brands”,”name”:”Accor Live Limitless (ALL)”,”count”:14,”details”:{“name”:”Accor Live Limitless (ALL)”,”id”:”16149″},”type”:”BRAND”,”value”:”16149″},{“scope”:”brands”,”name”:”The Address Hotels + Resorts”,”count”:12,”details”:{“name”:”The Address Hotels + Resorts”,”id”:”11351″},”type”:”BRAND”,”value”:”11351″},{“scope”:”brands”,”name”:”Marriott”,”count”:11,”details”:{“name”:”Marriott”,”id”:”9231″},”type”:”BRAND”,”value”:”9231″},{“scope”:”brands”,”name”:”DoubleTree by Hilton”,”count”:11,”details”:{“name”:”DoubleTree by Hilton”,”id”:”9214″},”type”:”BRAND”,”value”:”9214″},{“scope”:”brands”,”name”:”Ramada”,”count”:11,”details”:{“name”:”Ramada”,”id”:”9215″},”type”:”BRAND”,”value”:”9215″},{“scope”:”brands”,”name”:”Novotel”,”count”:10,”details”:{“name”:”Novotel”,”id”:”9321″},”type”:”BRAND”,”value”:”9321″},{“scope”:”brands”,”name”:”Rove Hotels”,”count”:9,”details”:{“name”:”Rove Hotels”,”id”:”21417″},”type”:”BRAND”,”value”:”21417″},{“scope”:”brands”,”name”:”Premier Inn”,”count”:9,”details”:{“name”:”Premier Inn”,”id”:”9328″},”type”:”BRAND”,”value”:”9328″},{“scope”:”brands”,”name”:”Aloft”,”count”:8,”details”:{“name”:”Aloft”,”id”:”9355″},”type”:”BRAND”,”value”:”9355″},{“scope”:”brands”,”name”:”Le Meridien”,”count”:8,”details”:{“name”:”Le Meridien”,”id”:”9293″},”type”:”BRAND”,”value”:”9293″},{“scope”:”brands”,”name”:”Sheraton”,”count”:7,”details”:{“name”:”Sheraton”,”id”:”9219″},”type”:”BRAND”,”value”:”9219″},{“scope”:”brands”,”name”:”Radisson”,”count”:7,”details”:{“name”:”Radisson”,”id”:”9234″},”type”:”BRAND”,”value”:”9234″},{“scope”:”brands”,”name”:”Radisson Blu”,”count”:7,”details”:{“name”:”Radisson Blu”,”id”:”10707″},”type”:”BRAND”,”value”:”10707″},{“scope”:”brands”,”name”:”Movenpick”,”count”:7,”details”:{“name”:”Movenpick”,”id”:”9378″},”type”:”BRAND”,”value”:”9378″},{“scope”:”brands”,”name”:”Hyatt Place”,”count”:7,”details”:{“name”:”Hyatt Place”,”id”:”9252″},”type”:”BRAND”,”value”:”9252″},{“scope”:”brands”,”name”:”Ritz-Carlton”,”count”:7,”details”:{“name”:”Ritz-Carlton”,”id”:”9267″},”type”:”BRAND”,”value”:”9267″},{“scope”:”brands”,”name”:”Golden Tulip”,”count”:7,”details”:{“name”:”Golden Tulip”,”id”:”9323″},”type”:”BRAND”,”value”:”9323″},{“scope”:”brands”,”name”:”InterContinental”,”count”:6,”details”:{“name”:”InterContinental”,”id”:”9295″},”type”:”BRAND”,”value”:”9295″},{“scope”:”brands”,”name”:”Hilton Hotels & Resorts”,”count”:5,”details”:{“name”:”Hilton Hotels & Resorts”,”id”:”9220″},”type”:”BRAND”,”value”:”9220″},{“scope”:”brands”,”name”:”Anantara Resort & Spa”,”count”:5,”details”:{“name”:”Anantara Resort & Spa”,”id”:”9651″},”type”:”BRAND”,”value”:”9651″},{“scope”:”brands”,”name”:”Crowne Plaza”,”count”:5,”details”:{“name”:”Crowne Plaza”,”id”:”9265″},”type”:”BRAND”,”value”:”9265″},{“scope”:”brands”,”name”:”Holiday Inn”,”count”:5,”details”:{“name”:”Holiday Inn”,”id”:”9206″},”type”:”BRAND”,”value”:”9206″},{“scope”:”brands”,”name”:”JA Resorts & Hotels”,”count”:5,”details”:{“name”:”JA Resorts & Hotels”,”id”:”10448″},”type”:”BRAND”,”value”:”10448″},{“scope”:”brands”,”name”:”Ibis Styles”,”count”:5,”details”:{“name”:”Ibis Styles”,”id”:”9329″},”type”:”BRAND”,”value”:”9329″},{“scope”:”brands”,”name”:”Mercure”,”count”:4,”details”:{“name”:”Mercure”,”id”:”9349″},”type”:”BRAND”,”value”:”9349″},{“scope”:”brands”,”name”:”Hampton by Hilton”,”count”:4,”details”:{“name”:”Hampton by Hilton”,”id”:”9226″},”type”:”BRAND”,”value”:”9226″},{“scope”:”brands”,”name”:”Hilton Garden Inn”,”count”:4,”details”:{“name”:”Hilton Garden Inn”,”id”:”9236″},”type”:”BRAND”,”value”:”9236″},{“scope”:”brands”,”name”:”Vida Hotels and Resorts”,”count”:4,”details”:{“name”:”Vida Hotels and Resorts”,”id”:”11352″},”type”:”BRAND”,”value”:”11352″},{“scope”:”brands”,”name”:”Pullman”,”count”:4,”details”:{“name”:”Pullman”,”id”:”9367″},”type”:”BRAND”,”value”:”9367″},{“scope”:”brands”,”name”:”Element”,”count”:4,”details”:{“name”:”Element”,”id”:”9401″},”type”:”BRAND”,”value”:”9401″},{“scope”:”brands”,”name”:”ibis”,”count”:4,”details”:{“name”:”ibis”,”id”:”9375″},”type”:”BRAND”,”value”:”9375″},{“scope”:”brands”,”name”:”Sofitel”,”count”:4,”details”:{“name”:”Sofitel”,”id”:”9276″},”type”:”BRAND”,”value”:”9276″},{“scope”:”brands”,”name”:”Rixos”,”count”:4,”details”:{“name”:”Rixos”,”id”:”9677″},”type”:”BRAND”,”value”:”9677″},{“scope”:”brands”,”name”:”Four Points by Sheraton”,”count”:4,”details”:{“name”:”Four Points by Sheraton”,”id”:”9307″},”type”:”BRAND”,”value”:”9307″},{“scope”:”brands”,”name”:”St. Regis”,”count”:4,”details”:{“name”:”St. Regis”,”id”:”9322″},”type”:”BRAND”,”value”:”9322″},{“scope”:”brands”,”name”:”Hyatt Regency”,”count”:4,”details”:{“name”:”Hyatt Regency”,”id”:”9285″},”type”:”BRAND”,”value”:”9285″},{“scope”:”brands”,”name”:”Swissu00F4tel Hotels & Resorts”,”count”:4,”details”:{“name”:”Swissu00F4tel Hotels & Resorts”,”id”:”9333″},”type”:”BRAND”,”value”:”9333″},{“scope”:”brands”,”name”:”Holiday Inn Express”,”count”:4,”details”:{“name”:”Holiday Inn Express”,”id”:”9290″},”type”:”BRAND”,”value”:”9290″},{“scope”:”brands”,”name”:”Barcelo Hotels & Resorts”,”count”:4,”details”:{“name”:”Barcelo Hotels & Resorts”,”id”:”9294″},”type”:”BRAND”,”value”:”9294″},{“scope”:”brands”,”name”:”Grand Hyatt”,”count”:3,”details”:{“name”:”Grand Hyatt”,”id”:”9615″},”type”:”BRAND”,”value”:”9615″},{“scope”:”brands”,”name”:”Wyndham”,”count”:3,”details”:{“name”:”Wyndham”,”id”:”9229″},”type”:”BRAND”,”value”:”9229″},{“scope”:”brands”,”name”:”Waldorf Astoria Hotels & Resorts”,”count”:3,”details”:{“name”:”Waldorf Astoria Hotels & Resorts”,”id”:”9249″},”type”:”BRAND”,”value”:”9249″},{“scope”:”brands”,”name”:”Shangri-La”,”count”:3,”details”:{“name”:”Shangri-La”,”id”:”9404″},”type”:”BRAND”,”value”:”9404″},{“scope”:”brands”,”name”:”One&Only”,”count”:3,”details”:{“name”:”One&Only”,”id”:”10481″},”type”:”BRAND”,”value”:”10481″},{“scope”:”brands”,”name”:”Fairmont”,”count”:3,”details”:{“name”:”Fairmont”,”id”:”9259″},”type”:”BRAND”,”value”:”9259″},{“scope”:”brands”,”name”:”Luxury Collection”,”count”:3,”details”:{“name”:”Luxury Collection”,”id”:”9260″},”type”:”BRAND”,”value”:”9260″},{“scope”:”brands”,”name”:”Marriott Autograph Collection”,”count”:3,”details”:{“name”:”Marriott Autograph Collection”,”id”:”9279″},”type”:”BRAND”,”value”:”9279″},{“scope”:”brands”,”name”:”Park Regis”,”count”:3,”details”:{“name”:”Park Regis”,”id”:”19395″},”type”:”BRAND”,”value”:”19395″},{“scope”:”brands”,”name”:”Four Seasons”,”count”:3,”details”:{“name”:”Four Seasons”,”id”:”9275″},”type”:”BRAND”,”value”:”9275″},{“scope”:”brands”,”name”:”W Hotels”,”count”:3,”details”:{“name”:”W Hotels”,”id”:”9287″},”type”:”BRAND”,”value”:”9287″},{“scope”:”brands”,”name”:”Staybridge Suites”,”count”:3,”details”:{“name”:”Staybridge Suites”,”id”:”9280″},”type”:”BRAND”,”value”:”9280″},{“scope”:”brands”,”name”:”Voco Hotels”,”count”:3,”details”:{“name”:”Voco Hotels”,”id”:”20193″},”type”:”BRAND”,”value”:”20193″},{“scope”:”brands”,”name”:”MGallery Hotel Collection”,”count”:2,”details”:{“name”:”MGallery Hotel Collection”,”id”:”9344″},”type”:”BRAND”,”value”:”9344″},{“scope”:”brands”,”name”:”Howard Johnson”,”count”:2,”details”:{“name”:”Howard Johnson”,”id”:”9221″},”type”:”BRAND”,”value”:”9221″},{“scope”:”brands”,”name”:”Courtyard”,”count”:2,”details”:{“name”:”Courtyard”,”id”:”9228″},”type”:”BRAND”,”value”:”9228″},{“scope”:”brands”,”name”:”RIXOS HOTELS”,”count”:2,”details”:{“name”:”RIXOS HOTELS”,”id”:”21825″},”type”:”BRAND”,”value”:”21825″},{“scope”:”brands”,”name”:”Dusit Hotels And Resorts”,”count”:2,”details”:{“name”:”Dusit Hotels And Resorts”,”id”:”10416″},”type”:”BRAND”,”value”:”10416″},{“scope”:”brands”,”name”:”Dusit Thani”,”count”:2,”details”:{“name”:”Dusit Thani”,”id”:”10418″},”type”:”BRAND”,”value”:”10418″},{“scope”:”brands”,”name”:”Andaz”,”count”:2,”details”:{“name”:”Andaz”,”id”:”9619″},”type”:”BRAND”,”value”:”9619″},{“scope”:”brands”,”name”:”Delta Hotels And Resorts”,”count”:2,”details”:{“name”:”Delta Hotels And Resorts”,”id”:”9354″},”type”:”BRAND”,”value”:”9354″},{“scope”:”brands”,”name”:”Kempinski”,”count”:2,”details”:{“name”:”Kempinski”,”id”:”9359″},”type”:”BRAND”,”value”:”9359″},{“scope”:”brands”,”name”:”TRYP”,”count”:2,”details”:{“name”:”TRYP”,”id”:”9357″},”type”:”BRAND”,”value”:”9357″},{“scope”:”brands”,”name”:”Preferred Hotels & Resorts”,”count”:2,”details”:{“name”:”Preferred Hotels & Resorts”,”id”:”9645″},”type”:”BRAND”,”value”:”9645″},{“scope”:”brands”,”name”:”Citadines Apart Hotel”,”count”:2,”details”:{“name”:”Citadines Apart Hotel”,”id”:”9522″},”type”:”BRAND”,”value”:”9522″},{“scope”:”brands”,”name”:”Adagio”,”count”:2,”details”:{“name”:”Adagio”,”id”:”9377″},”type”:”BRAND”,”value”:”9377″},{“scope”:”brands”,”name”:”Hyatt”,”count”:2,”details”:{“name”:”Hyatt”,”id”:”9254″},”type”:”BRAND”,”value”:”9254″},{“scope”:”brands”,”name”:”Raffles”,”count”:2,”details”:{“name”:”Raffles”,”id”:”9376″},”type”:”BRAND”,”value”:”9376″},{“scope”:”brands”,”name”:”NH Collection”,”count”:2,”details”:{“name”:”NH Collection”,”id”:”9420″},”type”:”BRAND”,”value”:”9420″},{“scope”:”brands”,”name”:”Grand Mercure”,”count”:2,”details”:{“name”:”Grand Mercure”,”id”:”9426″},”type”:”BRAND”,”value”:”9426″},{“scope”:”brands”,”name”:”Best Western Plus”,”count”:2,”details”:{“name”:”Best Western Plus”,”id”:”9264″},”type”:”BRAND”,”value”:”9264″},{“scope”:”brands”,”name”:”Conrad Hotels & Resorts”,”count”:2,”details”:{“name”:”Conrad Hotels & Resorts”,”id”:”9382″},”type”:”BRAND”,”value”:”9382″},{“scope”:”brands”,”name”:”Canopy by Hilton”,”count”:2,”details”:{“name”:”Canopy by Hilton”,”id”:”16169″},”type”:”BRAND”,”value”:”16169″},{“scope”:”brands”,”name”:”Avani Hotels & Resorts”,”count”:2,”details”:{“name”:”Avani Hotels & Resorts”,”id”:”9679″},”type”:”BRAND”,”value”:”9679″},{“scope”:”brands”,”name”:”Curio Collection by Hilton”,”count”:2,”details”:{“name”:”Curio Collection by Hilton”,”id”:”16047″},”type”:”BRAND”,”value”:”16047″},{“scope”:”brands”,”name”:”Westin”,”count”:2,”details”:{“name”:”Westin”,”id”:”9272″},”type”:”BRAND”,”value”:”9272″},{“scope”:”brands”,”name”:”Adagio Premium”,”count”:2,”details”:{“name”:”Adagio Premium”,”id”:”16609″},”type”:”BRAND”,”value”:”16609″},{“scope”:”brands”,”name”:”Shaza”,”count”:2,”details”:{“name”:”Shaza”,”id”:”10504″},”type”:”BRAND”,”value”:”10504″},{“scope”:”brands”,”name”:”Taj”,”count”:2,”details”:{“name”:”Taj”,”id”:”11003″},”type”:”BRAND”,”value”:”11003″},{“scope”:”brands”,”name”:”Mandarin Oriental”,”count”:2,”details”:{“name”:”Mandarin Oriental”,”id”:”9292″},”type”:”BRAND”,”value”:”9292″},{“scope”:”brands”,”name”:”Central Hotels”,”count”:2,”details”:{“name”:”Central Hotels”,”id”:”16269″},”type”:”BRAND”,”value”:”16269″},{“scope”:”brands”,”name”:”Bulgari Hotels & Resorts”,”count”:1,”details”:{“name”:”Bulgari Hotels & Resorts”,”id”:”9465″},”type”:”BRAND”,”value”:”9465″},{“scope”:”brands”,”name”:”RIU Hotels & Resorts”,”count”:1,”details”:{“name”:”RIU Hotels & Resorts”,”id”:”9348″},”type”:”BRAND”,”value”:”9348″},{“scope”:”brands”,”name”:”La Quinta Inn & Suites”,”count”:1,”details”:{“name”:”La Quinta Inn & Suites”,”id”:”9225″},”type”:”BRAND”,”value”:”9225″},{“scope”:”brands”,”name”:”HYDE”,”count”:1,”details”:{“name”:”HYDE”,”id”:”21818″},”type”:”BRAND”,”value”:”21818″},{“scope”:”brands”,”name”:”Saffron”,”count”:1,”details”:{“name”:”Saffron”,”id”:”10499″},”type”:”BRAND”,”value”:”10499″},{“scope”:”brands”,”name”:”Residence Inn”,”count”:1,”details”:{“name”:”Residence Inn”,”id”:”9239″},”type”:”BRAND”,”value”:”9239″},{“scope”:”brands”,”name”:”ME By Melia”,”count”:1,”details”:{“name”:”ME By Melia”,”id”:”9352″},”type”:”BRAND”,”value”:”9352″},{“scope”:”brands”,”name”:”Hotel Metropolitan”,”count”:1,”details”:{“name”:”Hotel Metropolitan”,”id”:”10546″},”type”:”BRAND”,”value”:”10546″},{“scope”:”brands”,”name”:”IntercityHotel”,”count”:1,”details”:{“name”:”IntercityHotel”,”id”:”9521″},”type”:”BRAND”,”value”:”9521″},{“scope”:”brands”,”name”:”Best Western Premier”,”count”:1,”details”:{“name”:”Best Western Premier”,”id”:”9369″},”type”:”BRAND”,”value”:”9369″},{“scope”:”brands”,”name”:”Hyatt Centric”,”count”:1,”details”:{“name”:”Hyatt Centric”,”id”:”16187″},”type”:”BRAND”,”value”:”16187″},{“scope”:”brands”,”name”:”Ascott The Residence”,”count”:1,”details”:{“name”:”Ascott The Residence”,”id”:”9371″},”type”:”BRAND”,”value”:”9371″},{“scope”:”brands”,”name”:”Southern Sun Hotels”,”count”:1,”details”:{“name”:”Southern Sun Hotels”,”id”:”11855″},”type”:”BRAND”,”value”:”11855″},{“scope”:”brands”,”name”:”Paramount”,”count”:1,”details”:{“name”:”Paramount”,”id”:”10483″},”type”:”BRAND”,”value”:”10483″},{“scope”:”brands”,”name”:”Hawthorn Suites”,”count”:1,”details”:{“name”:”Hawthorn Suites”,”id”:”9266″},”type”:”BRAND”,”value”:”9266″},{“scope”:”brands”,”name”:”Design Hotels”,”count”:1,”details”:{“name”:”Design Hotels”,”id”:”16277″},”type”:”BRAND”,”value”:”16277″},{“scope”:”brands”,”name”:”Wyndham Garden”,”count”:1,”details”:{“name”:”Wyndham Garden”,”id”:”9384″},”type”:”BRAND”,”value”:”9384″},{“scope”:”brands”,”name”:”25hours Hotels”,”count”:1,”details”:{“name”:”25hours Hotels”,”id”:”16677″},”type”:”BRAND”,”value”:”16677″},{“scope”:”brands”,”name”:”The Luxury Collection”,”count”:1,”details”:{“name”:”The Luxury Collection”,”id”:”9675″},”type”:”BRAND”,”value”:”9675″},{“scope”:”brands”,”name”:”Oberoi”,”count”:1,”details”:{“name”:”Oberoi”,”id”:”9437″},”type”:”BRAND”,”value”:”9437″},{“scope”:”brands”,”name”:”Lemon Tree”,”count”:1,”details”:{“name”:”Lemon Tree”,”id”:”10460″},”type”:”BRAND”,”value”:”10460″},{“scope”:”brands”,”name”:”Hotel Indigo”,”count”:1,”details”:{“name”:”Hotel Indigo”,”id”:”9270″},”type”:”BRAND”,”value”:”9270″},{“scope”:”brands”,”name”:”Melia Collection”,”count”:1,”details”:{“name”:”Melia Collection”,”id”:”22166″},”type”:”BRAND”,”value”:”22166″},{“scope”:”brands”,”name”:”Tulip Inn”,”count”:1,”details”:{“name”:”Tulip Inn”,”id”:”9393″},”type”:”BRAND”,”value”:”9393″},{“scope”:”brands”,”name”:”JW Marriott”,”count”:1,”details”:{“name”:”JW Marriott”,”id”:”9429″},”type”:”BRAND”,”value”:”9429″},{“scope”:”brands”,”name”:”Marriott Executive Apartments”,”count”:1,”details”:{“name”:”Marriott Executive Apartments”,”id”:”9428″},”type”:”BRAND”,”value”:”9428″},{“scope”:”brands”,”name”:”Atlantis”,”count”:1,”details”:{“name”:”Atlantis”,”id”:”10390″},”type”:”BRAND”,”value”:”10390″},{“scope”:”brands”,”name”:”Radisson Red”,”count”:1,”details”:{“name”:”Radisson Red”,”id”:”10708″},”type”:”BRAND”,”value”:”10708″},{“scope”:”brands”,”name”:”Park Inn”,”count”:1,”details”:{“name”:”Park Inn”,”id”:”9282″},”type”:”BRAND”,”value”:”9282″},{“scope”:”brands”,”name”:”LXR Hotels & Resorts”,”count”:1,”details”:{“name”:”LXR Hotels & Resorts”,”id”:”22013″},”type”:”BRAND”,”value”:”22013″},{“scope”:”brands”,”name”:”Caesars”,”count”:1,”details”:{“name”:”Caesars”,”id”:”9319″},”type”:”BRAND”,”value”:”9319″},{“scope”:”brands”,”name”:”Taj Exotica”,”count”:1,”details”:{“name”:”Taj Exotica”,”id”:”11004″},”type”:”BRAND”,”value”:”11004″},{“scope”:”brands”,”name”:”Grand Millennium Hotels”,”count”:1,”details”:{“name”:”Grand Millennium Hotels”,”id”:”10434″},”type”:”BRAND”,”value”:”10434″},{“scope”:”brands”,”name”:”Rosewood”,”count”:1,”details”:{“name”:”Rosewood”,”id”:”9695″},”type”:”BRAND”,”value”:”9695″},{“scope”:”brands”,”name”:”Comfort Inn”,”count”:1,”details”:{“name”:”Comfort Inn”,”id”:”9216″},”type”:”BRAND”,”value”:”9216″},{“scope”:”brands”,”name”:”BlueBay Hotels & Resorts”,”count”:1,”details”:{“name”:”BlueBay Hotels & Resorts”,”id”:”16662″},”type”:”BRAND”,”value”:”16662″},{“scope”:”brands”,”name”:”Centara Hotel & Resort”,”count”:1,”details”:{“name”:”Centara Hotel & Resort”,”id”:”9693″},”type”:”BRAND”,”value”:”9693″},{“scope”:”brands”,”name”:”Cristal”,”count”:1,”details”:{“name”:”Cristal”,”id”:”18848″},”type”:”BRAND”,”value”:”18848″},{“scope”:”brands”,”name”:”Park Hyatt Hotels”,”count”:1,”details”:{“name”:”Park Hyatt Hotels”,”id”:”9608″},”type”:”BRAND”,”value”:”9608″}],”presetPOI”:null,”previewText”:null,”title”:”Brands”,”trackingName”:”brand”,”visible”:true}],”initialMainListMatchCount”:2109},”package”:”fbf6hg”},{“id”:”component_23″,”props”:{“offsetTop”:”106″,”size”:”300×250|300×600|160×600″},”package”:”qhdojo”},{“id”:”@ta/hotels.list-card-map-entry:3447941_component_24″,”props”:{“locationId”:3447941},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_25″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:1,”locationId”:3447941,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”96610da2-5858-4276-a414-b4386329ee83″,”ribbons”:[{“text”:”2023″,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:”YELLOW”,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”tc”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce3447941_component_27″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:3447941,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d3447941-Reviews-JW_Marriott_Marquis_Hotel_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:1642600_component_28″,”props”:{“locationId”:1642600},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_29″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:2,”locationId”:1642600,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”f706e7eb-74ec-4d5a-8e0b-0a2c81b4007a”,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce1642600_component_31″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:1642600,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d1642600-Reviews-Ramada_by_Wyndham_Downtown_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:1022759_component_32″,”props”:{“locationId”:1022759},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_33″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:3,”locationId”:1022759,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”ffcb6e5a-0691-40f9-b4e2-5c09a210a7a4″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce1022759_component_35″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:1022759,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d1022759-Reviews-Atlantis_The_Palm-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:572764_component_36″,”props”:{“locationId”:572764},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_37″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:4,”locationId”:572764,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”9fd41c55-9cf4-4133-b016-93c0fc3f1683″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce572764_component_39″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:572764,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d572764-Reviews-Swissotel_Al_Murooj_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:12349800_component_40″,”props”:{“locationId”:12349800},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_41″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:5,”locationId”:12349800,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”6721f8e7-8f9a-4970-a8dc-6dbd1a758aa9″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce12349800_component_43″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:12349800,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d12349800-Reviews-Rixos_Premium_Dubai_JBR-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:1015046_component_44″,”props”:{“locationId”:1015046},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_45″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:6,”locationId”:1015046,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”108ff7c5-38e3-42ac-851e-89b3ee44f409″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce1015046_component_47″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:1015046,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d1015046-Reviews-Sofitel_Dubai_The_Palm-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:7309237_component_48″,”props”:{“locationId”:7309237},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_49″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:7,”locationId”:7309237,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”e5b7c883-3acd-4e29-ab20-e94ed0108550″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce7309237_component_51″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:7309237,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d7309237-Reviews-Taj_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:2154485_component_52″,”props”:{“locationId”:2154485},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_53″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:8,”locationId”:2154485,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”aa6280d6-a812-41d8-97aa-05f8d34b4915″,”ribbons”:[{“text”:”2023″,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:”YELLOW”,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”tc”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce2154485_component_55″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:2154485,”isSP”:false,”geoId”:294013,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g294013-d2154485-Reviews-Conrad_Abu_Dhabi_Etihad_Towers-Abu_Dhabi_Emirate_of_Abu_Dhabi.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:1630522_component_56″,”props”:{“locationId”:1630522},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_57″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:9,”locationId”:1630522,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”038e013a-b67a-4f33-8b5a-11d2dc91aa95″,”ribbons”:[{“text”:”Breakfast included”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce1630522_component_59″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:1630522,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d1630522-Reviews-Anantara_Dubai_The_Palm_Resort_Spa-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:20326652_component_60″,”props”:{“locationId”:20326652},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_61″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:10,”locationId”:20326652,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”d711127a-7d1f-4e77-844c-31fee001f5fa”,”ribbons”:[{“text”:”2023″,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:”YELLOW”,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”tc”},{“text”:”All Inclusive”,”tooltip”:”This accommodation offers all inclusive options. Availability and additional pricing details can be found on our partner sites.”,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”ai”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce20326652_component_63″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:20326652,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d20326652-Reviews-Centara_Mirage_Beach_Resort_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:674456_component_64″,”props”:{“locationId”:674456},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_65″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:11,”locationId”:674456,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”f00e9349-55c0-4c66-a014-d52b2c82c17c”,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce674456_component_67″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:674456,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d674456-Reviews-Palace_Downtown-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:20355850_component_68″,”props”:{“locationId”:20355850},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_69″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:12,”locationId”:20355850,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”dfecf7d6-c0a5-4360-8d24-834febda9e14″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce20355850_component_71″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:20355850,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d20355850-Reviews-Grand_Cosmopolitan_Hotel_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:10263885_component_72″,”props”:{“locationId”:10263885},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_73″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:13,”locationId”:10263885,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”3989e9d0-b08e-4e0f-82d8-3f32725943e2″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce10263885_component_75″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:10263885,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d10263885-Reviews-FIVE_Palm_Jumeirah_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:676864_component_76″,”props”:{“locationId”:676864},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_77″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:14,”locationId”:676864,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”9e2254ff-2f9d-4235-b514-d7f4ba1de3af”,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce676864_component_79″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:676864,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d676864-Reviews-Four_Points_by_Sheraton_Downtown_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:8698388_component_80″,”props”:{“locationId”:8698388},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_81″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:15,”locationId”:8698388,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”513b3e7e-0910-4e8d-9e16-4b12986fb2f1″,”ribbons”:[{“text”:”Top Rated”,”tooltip”:”This is one of the highest rated properties in United Arab Emirates”,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”tr”},{“text”:”2023″,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:”YELLOW”,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”tc”},{“text”:”Breakfast included”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce8698388_component_83″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:8698388,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d8698388-Reviews-Nikki_Beach_Resort_Spa_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:302098_component_84″,”props”:{“locationId”:302098},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_85″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:16,”locationId”:302098,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”d1ef5c37-2af8-4bcc-a8d2-5107efdf151f”,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce302098_component_87″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:302098,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d302098-Reviews-Shangri_La_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:5890945_component_88″,”props”:{“locationId”:5890945},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_89″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:17,”locationId”:5890945,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”f22f586b-884d-4172-bf26-0bf638df7c5a”,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce5890945_component_91″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:5890945,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d5890945-Reviews-Waldorf_Astoria_Dubai_Palm_Jumeirah-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:1236752_component_92″,”props”:{“locationId”:1236752},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_93″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:18,”locationId”:1236752,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”20c8eedb-e7c0-4f5a-9c31-e77085a9d5e0″,”ribbons”:[{“text”:”All Inclusive”,”tooltip”:”This accommodation offers all inclusive options. Availability and additional pricing details can be found on our partner sites.”,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”ai”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce1236752_component_95″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:1236752,”isSP”:false,”geoId”:298063,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g298063-d1236752-Reviews-The_Cove_Rotana_Resort-Ras_Al_Khaimah_Emirate_of_Ras_Al_Khaimah.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:23039049_component_96″,”props”:{“locationId”:23039049},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_97″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:19,”locationId”:23039049,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”1de6ffff-96f3-4227-be72-04b1db53dcfd”,”ribbons”:[{“text”:”Breakfast included”,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”bi”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce23039049_component_99″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:23039049,”isSP”:false,”geoId”:294013,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g294013-d23039049-Reviews-Hilton_Abu_Dhabi_Yas_Island-Abu_Dhabi_Emirate_of_Abu_Dhabi.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:23862400_component_100″,”props”:{“locationId”:23862400},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_101″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:20,”locationId”:23862400,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”63ea6fcd-63a3-4b98-ae9b-1fb5956b2e5a”,”ribbons”:[{“text”:”2023″,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:”YELLOW”,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”tc”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce23862400_component_103″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:23862400,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d23862400-Reviews-Paramount_Hotel_Midtown-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:2445260_component_104″,”props”:{“locationId”:2445260},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_105″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:21,”locationId”:2445260,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”34dbb71a-622b-4e68-9830-9393a858dd97″,”ribbons”:[{“text”:”2023″,”tooltip”:null,”showIcon”:false,”showOnMobile”:true,”color”:”YELLOW”,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”tc”},{“text”:”All Inclusive”,”tooltip”:”This accommodation offers all inclusive options. Availability and additional pricing details can be found on our partner sites.”,”showIcon”:false,”showOnMobile”:true,”color”:null,”icon”:null,”snippet”:null,”idmSURUrl”:null,”idmAspectTrackingText”:null,”type”:”ai”}],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce2445260_component_107″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:2445260,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d2445260-Reviews-Rixos_The_Palm_Hotel_Suites-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:302462_component_108″,”props”:{“locationId”:302462},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_109″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:22,”locationId”:302462,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”7f878506-968d-4930-a929-405d0db32624″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce302462_component_111″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:302462,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d302462-Reviews-Jumeirah_Beach_Hotel-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:12301346_component_112″,”props”:{“locationId”:12301346},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_113″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:23,”locationId”:12301346,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”aeddec6c-3cc3-4065-bce4-1d05d383f2aa”,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce12301346_component_115″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:12301346,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d12301346-Reviews-Dukes_The_Palm_a_Royal_Hideaway_Hotel-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:13513876_component_116″,”props”:{“locationId”:13513876},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_117″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:24,”locationId”:13513876,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”c7cbf2f6-d0f8-43e4-846f-4ef51f854bb5″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce13513876_component_119″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:13513876,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d13513876-Reviews-Gevora_Hotel-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:9853524_component_120″,”props”:{“locationId”:9853524},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_121″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:25,”locationId”:9853524,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”8ccd12f4-ad01-49f6-a3d7-6a2ee07539a1″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce9853524_component_123″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:9853524,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d9853524-Reviews-Rove_Downtown-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:1631237_component_124″,”props”:{“locationId”:1631237},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_125″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:26,”locationId”:1631237,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”efa002a6-8db5-4255-be86-2c11f80ce826″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce1631237_component_127″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:1631237,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d1631237-Reviews-Premier_Inn_Dubai_International_Airport_Hotel-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:306662_component_128″,”props”:{“locationId”:306662},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_129″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:27,”locationId”:306662,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”092a92b8-746e-4c2b-9e82-710140d507b1″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce306662_component_131″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:306662,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d306662-Reviews-Hilton_Dubai_Jumeirah-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:5600443_component_132″,”props”:{“locationId”:5600443},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_133″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:28,”locationId”:5600443,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”2201f7de-f0a0-4421-b466-1b74e2745d79″,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce5600443_component_135″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:5600443,”isSP”:false,”geoId”:294013,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g294013-d5600443-Reviews-Premier_Inn_Abu_Dhabi_International_Airport_Hotel-Abu_Dhabi_Emirate_of_Abu_Dhabi.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:2407420_component_136″,”props”:{“locationId”:2407420},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_137″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:29,”locationId”:2407420,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”a57caef0-f218-45ee-95a2-5afae2007aae”,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce2407420_component_139″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:2407420,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d2407420-Reviews-The_Tower_Plaza_Hotel_Dubai-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”@ta/hotels.list-card-map-entry:302457_component_140″,”props”:{“locationId”:302457},”package”:”1ez9d8″},{“id”:”photo-carousel-with-ribbon_component_141″,”props”:{“isPageLoad”:true,”thumbnailOnly”:false,”isLargerListCard”:false,”shadowTrackRibbons”:[],”impressionKey”:”ee78292eac7b4d61bb630cdc95621b6a”,”listIndex”:30,”locationId”:302457,”dataStrategy”:”a”,”maxRibbonCount”:2,”listingKey”:”9b566e94-1914-4ef4-98be-1d8d872efa4d”,”ribbons”:[],”isSponsored”:false},”package”:”101me6″},{“id”:”@ta/hotels.hotels-meta-listing-remove-commerce302457_component_143″,”props”:{“removeCommerceVariant”:”test_show_prices”,”dividerPosition”:”right”,”locationId”:302457,”isSP”:false,”geoId”:295424,”isRemoveCommerceEnabledForServlet”:true,”url”:”/Hotel_Review-g295424-d302457-Reviews-Burj_Al_Arab-Dubai_Emirate_of_Dubai.html”},”package”:”16bxeg”},{“id”:”component_144″,”props”:{“pos”:”inline1″},”package”:”isyms5″},{“id”:”component_5″,”props”:{},”package”:”1kgn6u”}]}};(this.$WP=this.$WP||[]).push([‘@ta/features’,function(e){return [function(){e(‘default’,__WEB_CONTEXT__.pageManifest.features);},[]]},[]]);]]> 2 && arguments[2] !== undefined ? arguments[2] : new Date().getTime() + DEFAULT_TTL_HOUR; var store = _getStore() || {}; _setDataByCallbackWithStore(key, processCallback, ttl, store); _saveStore(store); } function _setDataByCallbackWithStore(uefKey, processCallback, ttl, store) { if (!_isFunction(processCallback)) { return; } var data = processCallback.call(null, store.hasOwnProperty(uefKey) && store[uefKey] || {}); if (!data) { return; } data.ttl = ttl; store[uefKey] = data; } function findDataWithCallback(key, dataConsumer) { var deleteKeyAfterReading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var store = _getStore(); if (!store) { return; } _consumeDataWithStore(key, dataConsumer, deleteKeyAfterReading, store); _saveStore(store); } function _consumeDataWithStore(uefKey, dataConsumer, deleteEventTracking, store) { if (!_isFunction(dataConsumer)) { return; } var data = store.hasOwnProperty(uefKey) && store[uefKey]; if (!data) { return; } dataConsumer.call(null, data); if (deleteEventTracking) { delete store[uefKey]; } } function _getStore() { if (!taLocalStorage || !taLocalStorage.enabled) { return null; } var store = taLocalStorage.getObject(STORE_KEY); _cleanDeadKeysFromStore(store); return store; } function _cleanDeadKeysFromStore(storeRef) { if (storeRef) { var dateTimeNow = new Date().getTime(); for (var key in storeRef) { if (storeRef.hasOwnProperty(key)) { var data = storeRef[key]; if (data && data.ttl && data.ttl 3 && arguments[3] !== undefined ? arguments[3] : null; if (!locationId || !eventDestinationImpressionKey) { return; } if (_trackOnServlet) { var currentServlet = window.pageServlet; if (currentServlet && currentServlet.indexOf(_trackOnServlet) = 0; } function _sendGARecord( overrideTrkFn, locationId, url, eventDestinationImpressionKey, usrEventObjContainingListImpression) { if (!eventDestinationImpressionKey || !usrEventObjContainingListImpression || !usrEventObjContainingListImpression.ik) { return; } if (_isFunction(overrideTrkFn)) { overrideTrkFn.call(null, eventDestinationImpressionKey, _pageAction, usrEventObjContainingListImpression.ik, locationId); } else if (_trackingFn) { _trackingFn.call(null, eventDestinationImpressionKey, _pageAction, usrEventObjContainingListImpression.ik, locationId, url); } else { require([‘babel/babel-helpers’, ‘trjs!ta/Core/TA.Record’], function (babelHelpers, taRecord) { taRecord.addGARecordMevt(eventDestinationImpressionKey, _pageAction, usrEventObjContainingListImpression.ik, locationId, url); }); } } function _buildUEFKey(locationId) { if (!locationId) { return; } var dateArray = ta && ta.page && ta.page.getDates && ta.page.getDates(‘STAYDATES’); if (dateArray && !Array.isArray(dateArray)) { return; } var dates = dateArray.filter(function (e) { return e instanceof Date; }); if (!dates || dates.length !== 2) { return null; } var localCheckIn = dates[0]; var localCheckOut = dates[1]; var ciString = ” + localCheckIn.getYear() + localCheckIn.getMonth() + localCheckIn.getDate(); var coString = ” + localCheckOut.getYear() + localCheckOut.getMonth() + localCheckOut.getDate(); return ” + _pageAction + ciString + coString + locationId; } return { shouldTrackForIBClickThru: shouldTrackForIBClickThru, processEvent: processEvent, processAndTrackClickThrough: processAndTrackClickThrough, trackEvent: trackEvent }; } function _isFunction(func) { return func instanceof Function; } function _buildClickThruUEFData(impressionKey, dataInStoreRef) { if (!dataInStoreRef) { dataInStoreRef = {}; } dataInStoreRef[EVT_DATA_KEY] = impressionKey; return dataInStoreRef; } return LocationDateSpecificClickThru; }); define(‘hotels/listingKeyPlugin’, [‘babel/babel-helpers’, ‘utils/cookieutils’], function (babelHelpers, cookieUtils) { var LISTING_KEY_COOKIE_NAME = ‘hotelListingKey’; var _setListingKeyCookie = function _setListingKeyCookie(listingKey) { return cookieUtils.setCookieInSeconds(LISTING_KEY_COOKIE_NAME, listingKey, { duration: 10, ignoreVersion: true }); }; return { setListingKeyCookie: _setListingKeyCookie }; }); define(‘hotels/listingClick’, [‘vanillajs’, ‘utils/waiton’, ‘ta/Core/TA.FireEvent’, ‘hotels/listingKeyPlugin’], function(vanillajs, waitOn, taFireEvent, listingKeyPlugin) { var ASYNC_ACTIONS_TIMEOUT = 250; var LISTING_CLICK_EVENT = ‘hotels.listing_click’; var _preclickActions = []; var registerAsyncPreclick = function(action) { if (typeof action === ‘function’) { _preclickActions.push(action); } }; var clickEvent = function(elem, listingKey, redirectAction, isNewTab) { taFireEvent.fireEvent(LISTING_CLICK_EVENT, elem, listingKey); listingKeyPlugin.setListingKeyCookie(listingKey); if (isNewTab) { redirectAction(); _preclickActions.forEach(function (action) { action(elem, listingKey, function() {}); }); } else { var boundActions = _preclickActions.map(function(action) { return action.bind(null, elem, listingKey); }); waitOn(boundActions, redirectAction, ASYNC_ACTIONS_TIMEOUT); } }; return { LISTING_CLICK_EVENT: LISTING_CLICK_EVENT, registerAsyncPreclick: registerAsyncPreclick, clickEvent: clickEvent }; }); define(‘hotels/hotelinfocard/Events’, [‘mixins/Events’], function(Events) { ‘use strict’; return new Events( ‘toggleButtonClicked’, ‘infoCardToggled’, ‘infoCardExpanded’, ‘tabActivated’, ‘twoColumnTabDataLoaded’, ‘dealsTabDataLoaded’, ‘deferredContentLoaded’ ); }); define(‘hotels/tracking/clickthrough’, [‘babel/babel-helpers’, ‘common/trackingStreams’], function (babelHelpers, tracking) { var TRACK_SERVLETS = { “Hotels”: “H”, “SmartDeals”: “SD”, “MobileSmartDeals”: “MSD”, “HotelHighlight”: “HH”, “MobileHotelHighlight”: “MHH”, “HotelsNear”: “HN”, “HotelsList”: “HL” }; function track(elmtType, listingKey, impressionKey, locationId, trackingTreePlacementName, isNewTab) { var pageServlet = window.pageServlet; var source = TRACK_SERVLETS[pageServlet]; if (!listingKey) { tracking.error(‘Missing listing key on click through to Hotel Review. This is a major data concern and should not be ignored.’); return; } if (!source || !impressionKey || !locationId) { return; } var elmtKeys = { “lk”: listingKey, “ik”: impressionKey, “lid”: locationId, “et”: elmtType, “ttpn”: trackingTreePlacementName }; require([‘babel/babel-helpers’, ‘trjs!ta/Core/TA.Record’], function (babelHelpers, taRecord) { if (isNewTab) { taRecord.trackInteractions(pageServlet, elmtKeys, “LISTING_TO_HR_CLICK”); } else { taRecord.addInteractionsMEVT(source, elmtKeys, “LHR”); } }); } return { track: track }; }); define(‘ta/util/openNewTab’, [‘utils/browserutils’, ‘ta/Browser’, ‘ta/util/Cookie’], function(Browser, taBrowser, taCookie) { return function(url) { var win; if (!taBrowser.isIE10Metro()) { if (Browser.ie && !taBrowser.isIE9orHigher()) { win = window.open(url, ‘_blank’, ‘location=yes,resizable=yes,menubar=yes,scrollbars=yes,toolbar=yes,width=’ + document.documentElement.clientWidth + ‘,height=’ + document.documentElement.clientHeight); } else { win = window.open(url, ‘_blank’); } } if (!win || win.closed || typeof win.closed===’undefined’) { taCookie.setPIDCookie(38821); window.location = url; return false; } return win; } }); require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’meta_hsx_responsive_listing’,’handlers’,[‘handlers’]); /*jshint nonew: false, unused: vars */ define([“widget”, “common/trackingStreams”, “utils/throttle”, “utils/debounce”, “utils/VisibilityChecker”, “hotels/tracking/UEF-LocationDateSpecificClickThru”, “hotels/listingClick”, ‘utils/responsive’, ‘hotels/hotelinfocard/Events’, ‘hotels/tracking/clickthrough’, ‘hotels/recentlyViewedHotels’, ‘hotels/ClickSourceTracking’, ‘widget/components’, ‘ta/Core/TA.FireEvent’, ‘ta/util/openNewTab’, ‘common/trackingStreams’, ‘ta/Core/TA.LocalStorage’, ‘common/Radio’], function (globalContext, widget, tracking, throttle, debounce, VisibilityChecker, UEFClickThruTracker, hotelListingClick, Responsive, infoCardEvents, clickthrough, recentlyViewedHotels, clickSourceTracking, Components, taFireEvent, openNewTab, trackingStreams, localStorage, Radio) { var isLBInterstitialCurrentlyDisplayedKey = ‘isLBInterstitialCurrentlyDisplayed’; var clickThruTracker = new UEFClickThruTracker({ pageAction: “ct_l2hr” // click thru list to hr }); var EVENT_NAME_BEST_SELLER_SEEN = ‘bestSellerSeen’; var EVENT_NAME_BEST_SELLER_EXISTS = ‘bestSellerExists’; var PAGE_PROPERTY_BEST_SELLER_SEEN = ‘in_view’; var PAGE_PROPERTY_BEST_SELLER_EXISTS = ‘loaded’; var CLASSNAME_RECENTLY_VIEWED = “recently_viewed”; var _listing = widget.element.querySelector(“.listing”); var _listingIdElmt = widget.element.querySelector(“[data-locationId]”); var _locId = _listingIdElmt && _listingIdElmt.getAttribute(‘data-locationId’) || 0; var _index = _listingIdElmt && parseInt(_listingIdElmt.getAttribute(‘data-index’)) || -1; var _trackRecentlyViewed = _listing.hasAttribute(“data-show-recently-viewed”); var _showRecentlyViewed = _listing.getAttribute(“data-show-recently-viewed”) === “true”; var _isRecentlyViewedOnPageload = !!_listing.getAttribute(“data-is-recently-viewed”); var sojernRadio = Radio(‘sojern-tracking-bridge’); // names of click sources that direct to #REVIEWS var REVIEW_LINK_SOURCES = [‘ReviewCount’, ‘BubbleRating’]; function _generateTrackingList() { if (!globalContext.trackedIndices[_index]) { return [“.prw_” + widget.name + ” [data-index=”” + _index + “”]”]; } return []; } function listingClick(event, elem) { var info = {}; var isHotelsMetaListingContent = Components.contains(event.target, elem, ‘@ta/hotels.hotels-meta-listing-content’); // This is a fairly meh hack as we shouldn’t be relying on data-attributes for tracking webcomponents. if (Components.contains(event.target, elem, ‘@ta/trips.save-to-trip’)) { info = { source: ‘SaveToTripBookmark’ }; } else if (Components.contains(event.target, elem, ‘@ta/hotels.list-optimus-offer’)) { info = { source: ‘ListOptimusOffer’ }; } else if (isHotelsMetaListingContent) { info = { source: ‘HotelsMetaListingContent’ }; } else { info = clickSourceTracking.findClickInfo(event.target); } var listing = widget.element.querySelector(“.meta_listing”); var detailUrl = listing && listing.getAttribute(‘data-url’); // HOT-33322 for feature clickable_hotel_cells_white_space – we want clickable whitespace for the whole cell if ((!info.source || info.source === ‘PopIndex’) && listing.hasAttribute(‘data-clickableWhitespaceDT’) && detailUrl) { var _listingKey = listing.getAttribute(‘data-listingKey’); hotelListingClick.clickEvent(event.target, _listingKey, function () { tracking.trackEvent(‘hotel_cell_white_space’, ‘click’, ”); openNewTab(detailUrl); }, true); return; } if (!info.source) { clickSourceTracking.trackSource(“HotelListing”); //do not use the data-clicksource=”HotelListing” on DW since it will make the whole cell clickable. if (event.target.href) { window.open(event.target.href, event.target.target || “_blank”); } return; } else if (info.source === ‘HotelInfoCardToggle’) { // HotelInfoCardToggle has its own handler return; } var url = detailUrl; if (!url) { return false; } var locid = listing.getAttribute(‘data-locationId’); var index = listing.getAttribute(‘data-index’); var impressionKey = listing.getAttribute(‘data-impKey’); var listingKey = listing.getAttribute(‘data-listingKey’); var trackingTreePlacementName = listing.getAttribute(‘data-ttpn’); var amenityRibbonTrackingProperties = listing.getAttribute(‘data-amenityRibbonTrackingProperties’); if (!isHotelsMetaListingContent) { clickSourceTracking.trackSource(info.source, locid, info.label); } var shouldTrack = !listing.hasAttribute(‘data-noClickTrack’); if (shouldTrack && clickSourceTracking.clickThrough(info.source)) { clickthrough.track(info.source, listingKey, impressionKey, locid, trackingTreePlacementName, true); } if (REVIEW_LINK_SOURCES.indexOf(info.source) >= 0) { url += “#REVIEWS”; } else if (Responsive.mobile() && (info.source === “ViewAllDealsClickThrough” || info.source === “PriceMessageOpenTextLinks”)) { // Adding this hash to the url shows all deals on HR clickthrough. // Not sure why poiHeading was the naming choice here. url += “#poiHeading”; } else if (Responsive.mobile() && info.source === “PriceMessageCheckRatesExpand” && url.indexOf(‘?’) === -1 && url.indexOf(‘#’) === -1) { url += “?expandDeals#CHECK_RATES_CONT”; } else if (info.source === “ViewAllDeals” || info.source === “ViewAllDealsClose”) { return; } if (!clickSourceTracking.clickThrough(info.source) && !Responsive.mobile()) { return; } // Bookmark clicks should not be tracked as a listing click or navigate away from the page if (Components.contains(event.target, elem, ‘@ta/trips.save-to-trip’)) { return; } // Mobile rate label should not be tracked as a listing click or navigate away from the page if (Components.contains(event.target, elem, ‘@ta/hotels.mobile-rate-label’)) { return; } // Do not track a listing click or navigate to /HR since optimus offer clicks go to the Optimus hotel checkout page if (Components.contains(event.target, elem, ‘@ta/hotels.list-optimus-offer’)) { return; } // The fully React-based listing content component needs to be in full control of its own click behavior if (isHotelsMetaListingContent) { return; } // record user interaction with the listing cell for recently viewed tracking (HOT-23280) _trackRecentlyViewedClick(info); // HOT-31902 test an above widget indicating a top property based on tag if (listing.hasAttribute(‘data-highScoredTagComparisons’)) { var above = widget.element.querySelector(‘.highest-scored-hotel-with-tag’); var comparisonType = above && above.getAttribute(‘data-type’); tracking.trackEvent(comparisonType, ‘click’, ‘HR’); } // HOT-35460 – track HR clicks on properties with amenity flags if (amenityRibbonTrackingProperties) { amenityRibbonTrackingProperties.split(‘,’).forEach(function (trackingProperty) { tracking.trackEvent(trackingProperty, ‘click’); }); } hotelListingClick.clickEvent(event.target, listingKey, function () { clickThruTracker.processAndTrackClickThrough(locid, impressionKey, url); tracking.setEvtCookie(‘Reviews’, info.source, locid, index, url); window.open(url, “_blank”); }, true); return false; } ta.queueForReady(initializeIdmTracking); ta.queueForReady(prepareLeaveBehindXSell); if (localStorage.enabled) { localStorage.remove(isLBInterstitialCurrentlyDisplayedKey); } // (SEO-9567) – Fire tracking events when IDM-eligible hotels are loaded, in-view, and clicked (even in control, when the IDM isn’t visible) function initializeIdmTracking() { if (widget.element.classList.contains(‘idm_eligible’)) { var pageProperty = widget.element.getAttribute(‘data-idm-pageProperty’); var rankText = widget.element.getAttribute(‘data-idm-rankText’); var mainText = widget.element.getAttribute(‘data-idm-text’); trackIdm(pageProperty, rankText, mainText); } if (widget.element.getAttribute(‘data-idm2-pageProperty’)) { var _pageProperty = widget.element.getAttribute(‘data-idm2-pageProperty’); var _rankText = widget.element.getAttribute(‘data-idm2-rankText’); var _mainText = widget.element.getAttribute(‘data-idm2-text’); trackIdm(_pageProperty, _rankText, _mainText); } var aspectTrackingText = widget.element.getAttribute(‘data-idm-badge-aspect-tracking-text’); if (aspectTrackingText) { trackIdmBadge(aspectTrackingText); } } function trackIdm(pageProperty, rankText, mainText) { // Track that the IDM has loaded ta.trackEventOnPage(pageProperty, ‘load_’ + rankText, mainText); // Fire a tracking event when the IDM is in view require([“babel/babel-helpers”, ‘trjs!ta/util/Element’], function (babelHelpers, taElement) { taElement.trackWhenScrolledIntoView(widget.element, [pageProperty, ‘in_view_’ + rankText, mainText]); }); // Fire a tracking event if any of the links within the IDM-eligible hotel is clicked var clicksToTrack = widget.element.querySelectorAll(‘a, .metaOffer’); if (clicksToTrack) { Array.prototype.forEach.call(clicksToTrack, function (clickable) { var clickType = clickable.classList.contains(“idm_link”) ? ‘link_click_’ : ‘click_’; clickable.addEventListener(“click”, function (e) { ta.trackEventOnPage(pageProperty, clickType + rankText, mainText); }); }); } } function trackIdmBadge(aspectTrackingText) { // Fire a tracking event when the IDM is in view require([“babel/babel-helpers”, ‘trjs!ta/util/Element’], function (babelHelpers, taElement) { taElement.trackWhenScrolledIntoView(widget.element, [‘idm-absa’, ‘in_view’, aspectTrackingText]); }); // Fire a tracking event if any of the links within the IDM-eligible hotel is clicked var clicksToTrack = widget.element.querySelectorAll(‘a, .metaOffer’); if (clicksToTrack) { Array.prototype.forEach.call(clicksToTrack, function (clickable) { clickable.addEventListener(“click”, function (e) { ta.trackEventOnPage(‘idm-absa’, ‘click’, aspectTrackingText); }); }); } } function localStorageIncludesLocId(localStorageKey) { var obj = localStorage.getObject(localStorageKey); return !!(obj && obj.includes && obj.includes(_locId)); } function prepareLeaveBehindXSell() { var xsellId = “xsell-lb-” + _locId; var bridgeElm = document.getElementById(“lb-xsell-wc-bridge”); var localStorageClickedId = ‘lb-clicked-id’; var activeXsellsHRKey = ‘activeXsellsHR’; var activeXsellsMetaKey = ‘activeXsellsMeta’; if (localStorage.enabled && !widget.element.querySelector(“#” + xsellId)) { // If the user is returning to the page, check local storage for the most recently clicked hotel to potentially display a cross-sell if (Responsive.mobile() && localStorage.get(localStorageClickedId) === _locId) { createLeaveBehindXSell(xsellId, bridgeElm, true); localStorage.remove(localStorageClickedId); } if (localStorage.has(activeXsellsHRKey) && localStorageIncludesLocId(activeXsellsHRKey)) { createLeaveBehindXSell(xsellId, bridgeElm, false); } if (localStorage.has(activeXsellsMetaKey) && localStorageIncludesLocId(activeXsellsMetaKey)) { createLeaveBehindXSell(xsellId, bridgeElm, true); } } // If the user is returning to the page, check local storage for the most recently clicked hotel to potentially display a cross-sell if (Responsive.mobile() && localStorage.enabled && localStorage.get(localStorageClickedId) === _locId) { createLeaveBehindXSell(xsellId, bridgeElm, true); localStorage.remove(localStorageClickedId); } var clicksToTrack = widget.element.querySelectorAll(‘a, .metaOffer, .external_website_link_v1 .isLink’); if (clicksToTrack && bridgeElm) { Array.prototype.forEach.call(clicksToTrack, function (clickable) { clickable.addEventListener(“click”, function (e) { var clickElement = e.toElement || e.srcElement; if (clickElement && clickElement.dataset && clickElement.dataset.clicksource === “CarouselArrow”) { return; } var isMetaClick = clickable.classList.contains(“metaOffer”) || clickable.classList.contains(“isLink”); var xsellElm = widget.element.querySelector(“#” + xsellId); if (!xsellElm) { if (localStorage.enabled) { // Store the list of active Xsells in local storage so that they persist if the page continues to update with new results var activeXsellsKey = isMetaClick ? activeXsellsMetaKey : activeXsellsHRKey; var activeXsells = localStorage.has(activeXsellsKey) ? localStorage.getObject(activeXsellsKey) : []; activeXsells.push(_locId); localStorage.set(activeXsellsKey, activeXsells); if (Responsive.mobile()) { // If the user navigates away via a meta link, store the ID of the clicked hotel in local storage // in order to display the cross-sell once they return (within 1 hour) localStorage.set(localStorageClickedId, _locId, 3600000); } } createLeaveBehindXSell(xsellId, bridgeElm, isMetaClick); } }); }); } } function createLeaveBehindXSell(xsellId, bridgeElm, isMetaClick) { require([“babel/babel-helpers”, ‘@ta/platform.runtime’], function (babelHelpers, runtime) { runtime.importBundle(‘@ta/cross-sells.leave-behind-component’).then(function () { var titleWrapElm = widget.element.getElementsByClassName(“title_wrap”)[0]; var listingTitleElm = widget.element.getElementsByClassName(“listing_title”)[0]; var hotelName = titleWrapElm ? titleWrapElm.innerText : listingTitleElm ? listingTitleElm.innerText : null; if (!hotelName) { return; } var _widget$element$getEl = widget.element.getElementsByClassName(“meta_listing”), _widget$element$getEl2 = babelHelpers.slicedToArray(_widget$element$getEl, 1), belowListingEm = _widget$element$getEl2[0]; var elm = document.createElement(‘div’); elm.id = xsellId; belowListingEm.parentNode.insertBefore(elm, belowListingEm.nextSibling); var trackingPrefix = isMetaClick ? “meta” : “hr”; var xsellIndex = document.querySelectorAll(‘[id^=”xsell-lb-“]’).length; var position = _listingIdElmt.getAttribute(“data-index”); var display = bridgeElm.getAttribute(“data-showxsell”); var leaveBehindXsellUIType = bridgeElm.getAttribute(“data-leaveBehindXsellUIType”); var shouldShowUI = true; if (leaveBehindXsellUIType !== ‘SHELF’ && window && window.event) { shouldShowUI = !(window.event.ctrlKey || window.event.metaKey) && !localStorage.has(isLBInterstitialCurrentlyDisplayedKey); } if (leaveBehindXsellUIType && shouldShowUI) { var pageAttr = getPageAttribute(leaveBehindXsellUIType, trackingPrefix, xsellIndex, position); localStorage.set(isLBInterstitialCurrentlyDisplayedKey, true); runtime.createRoot(xsellId, ‘@ta/cross-sells.leave-behind-component’, { locationId: _locId, hotelName: hotelName, blenderTag: bridgeElm.getAttribute(“data-pagetagname”), blenderTagIds: bridgeElm.getAttribute(“data-blenderTagIds”), pageAttr: pageAttr, display: display, displayMessages: bridgeElm.getAttribute(“data-showxsellmsgs”), poiId: bridgeElm.getAttribute(“data-poiid”), poiName: bridgeElm.getAttribute(“data-poiname”), milesFromPoi: bridgeElm.getAttribute(“data-maxxselldist”), leaveBehindXsellUIType: leaveBehindXsellUIType, onClose: function onClose(event) { closeLeaveBehindXsell(runtime, xsellId, elm, pageAttr, leaveBehindXsellUIType); } }); if (display) { _listingIdElmt.parentNode.parentNode.classList.add(“boxShadow”); } } }); }); } function getPageAttribute(leaveBehindXsellUIType, trackingPrefix, xsellIndex, position) { if (leaveBehindXsellUIType && leaveBehindXsellUIType !== ‘SHELF’) { if (leaveBehindXsellUIType === ‘INTERSTITIAL’) { return trackingPrefix + “-lb-interstitial-” + xsellIndex + “-position-” + position; } else if (leaveBehindXsellUIType === ‘INTERSTITIAL_WITH_COMPARISON_GRID’) { return trackingPrefix + “-lb-interstitial-comparison-grid-” + xsellIndex + “-position-” + position; } else if (leaveBehindXsellUIType === ‘INTERSTITIAL_WITH_BRAND_MESSAGING_LIGHTBOX’) { return trackingPrefix + “-lb-interstitial-brand-messaging-” + xsellIndex + “-position-” + position; } } else if (leaveBehindXsellUIType === ‘SHELF’) { return trackingPrefix + “-shelf-” + xsellIndex + “-position-” + position; } } function closeLeaveBehindXsell(runtime, xsellId, elm, pageAttr, leaveBehindXsellUIType) { runtime.destroyRoot(xsellId); elm.remove(); tracking.trackEvent(leaveBehindXsellUIType === ‘SHELF’ ? ‘osm-pc-leave-behind’ : ‘osm-pc-interstitial’, ‘closed’, pageAttr); if (leaveBehindXsellUIType !== ‘SHELF’) { localStorage.remove(isLBInterstitialCurrentlyDisplayedKey); } var viewTrackedXsellsKey = ‘viewTrackedXsells’; var viewTrackedXsells = localStorage.getObject(viewTrackedXsellsKey) || []; viewTrackedXsells = viewTrackedXsells.filter(function (value, index, arr) { value != _locId; }); localStorage.set(viewTrackedXsellsKey, viewTrackedXsells); } function recordBestSellerEvent( /*String*/eventName, /*String*/pageAction) { var metaListingElement = widget.element.querySelector(‘.meta_listing’); if (metaListingElement && metaListingElement.hasAttribute(‘data-index’)) { tracking.trackEvent(eventName, pageAction, metaListingElement.getAttribute(‘data-index’)); } } function setBestSellerEventListener( /*String*/eventName, /*String*/pageAction) { widget.element.addEventListener(eventName, function () { recordBestSellerEvent(eventName, pageAction); }, false); } /** * HOT-23280: Fire a tracking event iff click to HR on a recently-viewed listing * **/ function _trackRecentlyViewedClick(clickInfo) { if (!clickInfo || !_trackRecentlyViewed) { return; } recentlyViewedHotels.interactedWithLocation(_locId); recentlyViewedHotels.trackEventIfRecentlyViewed(_locId, ‘CLICK_’ + clickInfo.source, _locId); } var _scrollOffset = 0; var _scrollRequestThrottled = debounce(function (target, offset) { if (!document.body.contains(widget.element)) { infoCardEvents.off(‘infoCardExpanded’, _scrollRequestThrottled); return; } if (widget.element.contains(target) && window.innerHeight > widget.element.clientHeight) { _scrollOffset = offset; require([“babel/babel-helpers”, ‘trjs!ta/util/Element’], function (babelHelpers, taElement) { taElement.scrollIntoView(widget.element, -1 * _scrollOffset, true); }); } }, 500, true); infoCardEvents.on(‘infoCardExpanded’, _scrollRequestThrottled); function _initTracking() { var checker = throttle(VisibilityChecker({ elements: _generateTrackingList(), callback: function callback(nodes) { if (!globalContext.trackedIndices[_index]) { globalContext.trackedIndices[_index] = true; if (!(_index % 5)) { tracking.trackEvent(‘hotelcell’, ‘in_view’, _index); } sojernRadio.emit(‘sojernImpression’, { locationId: parseInt(nodes[0].getAttribute(‘data-locationId’)) }); } newList = _generateTrackingList(); if (newList.length === 0) { window.removeEventListener(‘scroll’, checker); globalContext.registeredTrackingListeners[_index] = false; } return newList; } }), 200); window.addEventListener(‘scroll’, checker); globalContext.registeredTrackingListeners[_index] = true; } // Initialize scroll tracking if (!globalContext.registeredTrackingListeners[_index]) { globalContext.trackedIndices[_index] = false; _initTracking(); } //I initially had this with one shared listener for all instances, but this meant only the first instantiation // of the widget would add the litener, which calls widget.element. The result was that every widget //used the widget.element from that first one, preventing us from accessing the data-index attribute we actually wanted setBestSellerEventListener(EVENT_NAME_BEST_SELLER_SEEN, PAGE_PROPERTY_BEST_SELLER_SEEN); setBestSellerEventListener(EVENT_NAME_BEST_SELLER_EXISTS, PAGE_PROPERTY_BEST_SELLER_EXISTS); if (_trackRecentlyViewed) { if (_isRecentlyViewedOnPageload) { recentlyViewedHotels.registerVisitedLocation(_locId, _listing); } else { recentlyViewedHotels.registerUnvisitedLocation(_locId, _listing, _showRecentlyViewed ? CLASSNAME_RECENTLY_VIEWED : “”); } } return { listingClick: listingClick }; }.bind(null, { trackedIndices: {}, registeredTrackingListeners: {} }));}); define(‘hotels/baLinkClick’, [‘vanillajs’, ‘utils/waiton’, ‘ta/Core/TA.FireEvent’, ‘commerce/cookieSetter’, ‘utils/urlutils’], function(vanillajs, waitOn, taFireEvent, cookieSetter, UrlUtils) { var ASYNC_ACTIONS_TIMEOUT = 250; var WEB_LINK_CLICK_EVENT = ‘hotels.ba_web_click’; var _preclickActions = []; var registerAsyncPreclick = function(action) { if (typeof action === ‘function’) { _preclickActions.push(action); } }; var clickEvent = function(elem, commURL, redirectAction, isNewTab) { taFireEvent.fireEvent(WEB_LINK_CLICK_EVENT, elem); cookieSetter(); var token = UrlUtils.getUrlQueryArgs(commURL); token.url = commURL; if (isNewTab) { redirectAction(); _preclickActions.forEach(function (action) { action(elem, token, function() {}); }); } else { var boundActions = _preclickActions.map(function(action) { return action.bind(null, elem, token); }); waitOn(boundActions, redirectAction, ASYNC_ACTIONS_TIMEOUT); } }; return { WEB_LINK_CLICK_EVENT: WEB_LINK_CLICK_EVENT, registerAsyncPreclick: registerAsyncPreclick, clickEvent: clickEvent }; });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_hotel_icons_list’,’handlers’,[‘handlers’]); define([‘babel/babel-helpers’, ‘widget’, ‘hotels/baLinkClick’, ‘ta/util/openNewTab’, ‘t4b/tracking/b2bClickTracking’, ‘common/trackingStreams’, ‘utils/urlDecoder’, ‘hotels/listingClick’, ‘common/Radio’], function (babelHelpers, widget, baLinkClick, openNewTab, b2bClickTracking, tracking, urlDecoder, hotelListingClick, radio) { var sojernRadio = radio(‘sojern-tracking-bridge’); function webLinkClick(e, element) { e.stopPropagation(); var locationId = element.getAttribute(‘data-locid’); var isCommerce = element.hasAttribute(‘data-curl’) && element.getAttribute(‘data-curl’) === ‘true’; var urlRedir = element.getAttribute(‘data-link’); var contactColumn = element.getAttribute(‘data-number’); var redirectCallback = function redirectCallback() { openNewTab(urlRedir); }; var commerceURL = isCommerce && urlRedir || ”; baLinkClick.clickEvent(element, commerceURL, redirectCallback, true); b2bClickTracking.trackContactClick({ locationId: locationId, contactType: ‘URL_HOTEL’, contactColumn: contactColumn, isCommerce: isCommerce }); sojernRadio.emit(‘sojernClick’, { locationId: parseInt(locationId, 10), clickType: ‘website’ }); } // handle clicks on email/phone number icons function handleContactClick(event, contactDetails, element) { // email var locationId = element.getAttribute(‘data-locid’); var contactColumn = element.getAttribute(‘data-number’); var contactType = void 0; if (contactDetails.includes(‘@’)) { window.location = ‘mailto: ‘ + contactDetails; contactType = ‘EMAIL’; } else { // phone window.location = ‘tel: ‘ + contactDetails; contactType = ‘PHONE’; } b2bClickTracking.trackContactClick({ locationId: locationId, contactType: contactType, contactColumn: contactColumn }); sojernRadio.emit(‘sojernClick’, { locationId: parseInt(locationId, 10), clickType: contactType.toLowerCase() }); } /* * This will track clicks on the amenities in the Hotel Cell and bring the user into the /HR page */ function clickToHR(e, element, url, amenityName) { if (url) { var listing = widget.element; while (listing && !listing.classList.contains(‘meta_listing’)) { listing = listing.parentElement; } var listingKey = listing && listing.getAttribute(‘data-listingKey’); hotelListingClick.clickEvent(e.target, listingKey, function () { tracking.trackEvent(‘hotel_cell_amenity’, ‘click’, amenityName); openNewTab(url); }, true); } } return { webLinkClick: webLinkClick, clickToHR: clickToHR, handleContactClick: handleContactClick }; });}); define(‘tracking/BestSellerTracking’, [‘utils/VisibilityChecker’, ‘utils/throttle’, ‘ta/Core/TA.Event’, ‘common/trackingStreams’], function(VisibilityChecker, throttle, taEvent, trackingStreams) { ‘use strict’; var ALREADY_SEEN_ATTRIBUTE = ‘data-alreadySeen’; var EXISTENCE_LOGGED_ATTRIBUTE = ‘data-logged’; var EVENT_NAME_RIBBON_IN_VIEW = ‘bestSellerSeen’; var EVENT_NAME_RIBBON_EXISTS = ‘bestSellerExists’; var PAGE_POLLING_COMPLETE = ‘page-polling-complete’; function _generateEventFiringFunction( selectorArray, sharedContext) { var eventFiringFunction = VisibilityChecker({ elements: selectorArray, callback: function(elements) { if (sharedContext.isPollingComplete) { if (elements && Array.isArray(elements)) { for (var i = 0; i 0) { _dispatchExistenceGARecords(elements); } else { setTimeout(function() { var elementsSecondAttempt = document.querySelectorAll(selector); if (elementsSecondAttempt && elementsSecondAttempt.length > 0) { _dispatchExistenceGARecords(elementsSecondAttempt) } }, 350); } } function _dispatchExistenceGARecords( elements) { for (var i = 0; i 0 && !!selectors[0]) { _initVisibilityCheckFunction(selectors, sharedContext); _initPollingCompleteListener(selectors[0], sharedContext); } else { trackingStreams.error(“Non-array or empty array passed to BestSellerTracking. Cannot track: ” + JSON.stringify(selectors)); } } return {initBestSellerTracking : initBestSellerTracking}; }); define(‘overlays/BestSellerTooltipOverlay’, [‘overlays/Overlay’, ‘overlays/position’, ‘overlays/styles/tooltip’, ‘overlays/options/closeOnMouseAway’, ‘overlays/styles/popover’, ‘overlays/options/repositionOnEvent’, ‘common/trackingStreams’], function(Overlay, Position, Tooltip, CloseOnMouseAway, Popover, RepositionOnEvent, trackingStreams) { ‘use strict’; function createOverlay( evnt, source, widget, contentSelector, isMobile) { var overlay = null; var contents = widget.element.querySelector(contentSelector); if (contents) { if (window.isTabletOnFullSite) { overlay = new Overlay(source, [ Popover && Popover(source, ‘below’, widget.element.className, null, widget.element.outerHTML), Position.below(), RepositionOnEvent(window, [‘resize’, ‘date_bar_docked’, ‘date_bar_undocked’]) ]); } else { if (!isMobile) { overlay = new Overlay(source, [ Tooltip && Tooltip(source, ‘below’, widget.element.className, widget.element.outerHTML), Position.below(), CloseOnMouseAway ]); } } return overlay; } else { trackingStreams.error(“No contents found for selector ” + contentSelector + “. Cannot create tooltip overlay.”); } } return {createOverlay : createOverlay}; }); require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_ribbon_badge_resp’,’handlers’,[‘handlers’]); /** * Created by amiller-smith on 06.27.18 */ define([‘widget’, ‘utils/VisibilityChecker’, ‘utils/throttle’, ‘ta/Core/TA.Event’, ‘tracking/BestSellerTracking’, ‘utils/responsive’, ‘trjs!overlays/BestSellerTooltipOverlay’], (function(widget, VisibilityChecker, throttle, taEvent, BestSellerTracking, Responsive, BestSellerOverlay) { ‘use strict’; widget._shared = this; var _shared = this; var WIDGET_DIV_IDENTIFIER = “div[class='” + widget.element.className + “‘] div.”; var MOBILE_CLASS_SELECTOR = WIDGET_DIV_IDENTIFIER + ‘ribbonBadgeMobile’; var TABLET_PLUS_CLASS_SELECTOR = WIDGET_DIV_IDENTIFIER + ‘ribbonBadgeTablet’; var TOOLTIP_TEXT_SELECTOR = ‘.overlay_contents.hidden’; BestSellerTracking.initBestSellerTracking(_shared, [MOBILE_CLASS_SELECTOR, TABLET_PLUS_CLASS_SELECTOR]); var _overlay = null; function _showOverlay(evnt, source) { //otherwise the parent hotel card will catch this and open an /HR tab evnt.stopPropagation(); if (_overlay) { _overlay.show(); } else { _createAndShowOverlay(BestSellerOverlay, evnt, source); } } function _createAndShowOverlay(/*Object*/ BestSellerOverlay, /*Event*/ evnt, /*Element*/ source) { _overlay = BestSellerOverlay.createOverlay(evnt, source, widget, TOOLTIP_TEXT_SELECTOR, Responsive.mobile()); if (_overlay) { _overlay.show(); } } return { overlay: _showOverlay }; }).bind({})); }); define(‘remoteModule’, [‘vanillajs’], function() { ‘use strict’; var pending = {}; function _data(el, key) { return el == null ? null : el.getAttribute(‘data-‘ + key); } function _parentWithAttr(el, attribute) { while (el && el !== document.body) { if (el.getAttribute(attribute)) { return el; } el = el.parentNode; } return null; } function _buildDeps(elt, param, plcn, prwn, prefixes) { var val = _data(elt, param); if (!val) { return []; } return val .replace(/$plc:/g, ‘$prp/’+plcn+’/’) .replace(/$prw:/g, ‘$prw/’+prwn+’/’) .split(‘,’) .filter(function(s) { return !!s.length }) .reduce(function(ret, key) { return ret.concat(prefixes.map(function(prefix) { var appendDust = prefix === ‘trdust!’ && key.indexOf(‘/’) = 0){ return; } if (require.defined(modl)){ var obj = require(modl); (fn ? obj[fn] : obj).apply(obj, args); return; } (pending[modl] || (pending[modl] = [])).push(elt); var plc = _parentWithAttr(elt, ‘data-placement-name’) , prw = _parentWithAttr(elt, ‘data-prwidget-name’) , plcn = _data(plc, ‘placement-name’) , prwn = _data(prw, ‘prwidget-name’) , deps = [].concat( _buildDeps(elt, ‘load-all’, plcn, prwn, [‘trjs!’, ‘trcss!’, ‘trdust!’]), _buildDeps(elt, ‘load-js’, plcn, prwn, [‘trjs!’]), _buildDeps(elt, ‘load-css’, plcn, prwn, [‘trcss!’]), _buildDeps(elt, ‘load-dust’, plcn, prwn, [‘trdust!’]) ); if (/^$plc:/.test(modl)){ args.unshift(deps); args.unshift(modl.substr(5) + ‘.’ + fn); args.unshift(plc.getAttribute(‘id’)); args.unshift(‘evCall’); args.unshift(‘ta/p13n/placements’); requireCallLast.apply(window, args); } else if (/^$prw:/.test(modl)){ args.unshift(modl.substr(5) + ‘.’ + fn); args.unshift(‘call’); args.unshift(‘ta/prwidgets’); requireCallLast.apply(window, args); } else { require(deps, function(){ pending[modl] = pending[modl].filter(function(e){ return e != elt; }); var obj = require(modl); (fn ? obj[fn] : obj).apply(obj, args); }); } }; }); define(“hotels/TrackingServletHelper”, [‘vanillajs’], function () { function getTrackingServlet() { var servlet = window && window.pageServlet; switch (servlet) { case “Hotels”: return “h”; case “SmartDeals”: return “sd”; case “HotelHighlight”: return “hh”; case “Hotel_Review”: return “hr”; case “HotelsList”: return “hl”; default: return “_unknown”; } } return { getTrackingServlet: getTrackingServlet }; });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’meta_hsx_saves_badge’,’handlers’,[‘handlers’]); /*jshint nonew: false, unused: vars */ define([“widget”, “remoteModule”, “common/trackingStreams”, “hotels/TrackingServletHelper”], function(widget, remoteModule, tracking, TrackingServletHelper) { return { track: function(event) { event && event.stopPropagation(); var trackingServlet = TrackingServletHelper.getTrackingServlet(); tracking.trackEvent(‘saves_’ + trackingServlet, ‘click’); } }; }); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_location_pop_index’,’handlers’,[‘handlers’]); define([‘widget’, ‘ta/util/openNewTab’], function(widget, openNewTab) { ‘use strict’; function _clickPopIndex(event, element) { var target = event.target || event.srcElement; if (target.tagName === ‘A’ && target.href) { openNewTab(target.href); event.stopPropagation(); } } return { clickPopIndex: _clickPopIndex }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’bl_h_special_offer’,’handlers’,[‘handlers’,’tablet/tablet’]); /** * ta.servlet.blcoupons.couponAnnouncementViewWithOpen is needed by the inline click handler for special offers, * so any page containing this widget must include ta/servlet/BLCoupons. * * @author tclark * @since February 2018 */ define([], function () { require([‘trjs!ta/servlet/BLCoupons’], function () {}); }); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’bl_h_special_offer’,’tablet/tablet’,[‘handlers’,’tablet/tablet’]); define([ ‘widget’, ‘overlays/Overlay’, ‘overlays/position’, ‘overlays/styles/tooltip’, ‘overlays/options/closeOnMouseAway’, ‘overlays/styles/popover’, ‘overlays/options/repositionOnEvent’, ‘common/trackingStreams’ ], function( widget, Overlay, Position, /* desktop */ Tooltip, CloseOnMouseAway, /* tablet */ Popover, RepositionOnEvent, Tracking ) { var HOVER_DELAY = 2000, CLICK_DELAY = 0, _overlay = null, _position = null, _direction = null, _arrowPos = null, _useDelay, _timeout; function _showOverlay(event, source, listPosition, delay) { clearTimeout(_timeout); var contents = widget.element.querySelector(‘.overlay_contents’); var useLeft = contents && contents.getAttribute(‘data-position’) === ‘left’; if (!_overlay) { _useDelay = contents && contents.getAttribute(‘data-delay’); _position = useLeft ? Position.left() : Position.above([0, 8]), _direction = useLeft ? ‘left’ : ‘top’, _arrowPos = useLeft ? ‘arrow_right ‘ : ‘arrow_bottom ‘; if (contents) { if (window.isTabletOnFullSite) { _overlay = new Overlay(source, [ Popover && Popover(source, _direction, _arrowPos + widget.element.className, null, contents), _position, RepositionOnEvent(window, [‘resize’, ‘date_bar_docked’, ‘date_bar_undocked’]) ]); } else { _overlay = new Overlay(source, [ Tooltip && Tooltip(source, _direction, _arrowPos + widget.element.className, contents), _position, CloseOnMouseAway ]); } } } if (_overlay) { _timeout = setTimeout(_overlay.show, _useDelay && event.type === “mouseover” ? HOVER_DELAY : CLICK_DELAY); Tracking.trackEvent(‘specialoffer_seen’, ‘hover’, listPosition); } } return { overlay: _showOverlay }; }); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’hotels_h_savings_alert’,’tablet/tablet’,[‘tablet/tablet’]); define([ ‘widget’, ‘overlays/Overlay’, ‘overlays/position’, ‘overlays/styles/tooltip’, ‘overlays/options/closeOnMouseAway’, ‘overlays/styles/popover’, ‘overlays/options/repositionOnEvent’ ], function( widget, Overlay, Position, /* desktop */ Tooltip, CloseOnMouseAway, /* tablet */ Popover, RepositionOnEvent ) { var _overlay = null; function _showOverlay(evnt, source) { if (!_overlay) { var contents = widget.element.querySelector(‘.overlay_contents’); if (contents) { if (window.isTabletOnFullSite) { _overlay = new Overlay(source, [ Popover && Popover(source, ‘left’, widget.element.className, null, widget.element.outerHTML), Position.left(), RepositionOnEvent(window, [‘resize’, ‘date_bar_docked’, ‘date_bar_undocked’]) ]); } else { _overlay = new Overlay(source, [ Tooltip && Tooltip(source, ‘left’, widget.element.className, widget.element.outerHTML), Position.left(), CloseOnMouseAway ]); } } } if (_overlay) { _overlay.show(); } } return { overlay: _showOverlay }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_hsx_hd_review_snippets_center_commerce’,’handlers’,[‘handlers’]); /*jshint nonew: false, unused: vars */ define([“widget”, “ta/util/openNewTab”, “common/trackingStreams”], function(widget, openNewTab, trackingStreams) { /* * Warning: do NOT demand load js in here. Chrome will think you are loading a pop-up * and block us from opening a new tab. */ function _snippetClick(event, elem) { trackingStreams.setEvtCookie(‘Reviews’, ‘Snippet’, elem.getAttribute(‘data-reviewId’), elem.getAttribute(‘data-pos’), elem.href); elem.href && openNewTab(elem.href); event.stopPropagation(); return false; } function _toggleSnippets() { var moreSnippets = widget.element.querySelector(“.moreSnippets”); if (moreSnippets) { moreSnippets.classList.toggle(“collapsed”); } } return { snippetClick: _snippetClick, toggleSnippets: _toggleSnippets }; } ); }); define(‘common/EventBus’, [‘babel/babel-helpers’], function (babelHelpers) { var checkEventName = function checkEventName(event) { if (!event.match(/^[a-z_.-]+[/][a-z_.-]+$/i)) { throw Error(‘Event “‘ + event + ‘” must namespaced by using the format of “[a-z_.-]+/[a-z_.-]+”‘); } }; var webComponentsReady = void 0; var webComponentsEvent = ‘EventBus/WEB-ACK’; var listenerEventName = ‘EventBus/TRTOP-ACK’; var webComponentsReadyListener = function webComponentsReadyListener() { webComponentsReady = true; document.removeEventListener(listenerEventName, webComponentsReadyListener); }; var callWhenWebComponentsReady = function callWhenWebComponentsReady(callback, timeout) { var iterations = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; var isFirstIteration = ++iterations === 1; setTimeout(function () { if (IsWebComponentsReady()) { return callback(); } else if (iterations 2 && arguments[2] !== undefined ? arguments[2] : true; checkEventName(event); var webComponentDispatchOptions = normalizeWebComponentDispatchOptions(dependsOnWebComponents); if (webComponentDispatchOptions.dependsOnWebComponents) { return callWhenWebComponentsReady(function () { return document.dispatchEvent(new CustomEvent(event, { detail: data })); }, webComponentDispatchOptions.timeoutMs); } return document.dispatchEvent(new CustomEvent(event, { detail: data })); }, remove: function remove(event, callback) { checkEventName(event); document.removeEventListener(event, callback); } }; }); require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’meta_h_responsive_commerce_tvg_multi_larger_thumbnail’,’handlers’,[‘handlers’,’tablet/tablet’]); /*jshint nonew: false */ /*jshint unused:false */ define([“lib/jquery-amd”, “widget”, “commerce/offerclick”, “responsive/text-resizer”, “common/trackingStreams”, ‘ta/Core/TA.Event’, “hotels/recentlyViewedHotels”, ‘common/EventBus’,’ta/util/Element’,’ta/Core/TA.Store’, ‘page-model’, ‘common/Radio’], (function($, widget, offerclick, resizer, trackingStreams, taEvent, recentlyViewedHotels, EventBus, taElement, taStore, pageModel, Radio) { //shared state between all instances of this widget. //defining it this way lets us pick it up in tablet/tablet.js widget._shared = this; var _shared = this; var commerceElem = widget.element.querySelector(“.comblock”); var locId = Number((commerceElem && commerceElem.getAttribute(“data-locationId”)) || “0”); var listPos = Number((commerceElem && commerceElem.getAttribute(“data-listPos”)) || “0”); _shared.clickableWhiteSpace = Boolean((commerceElem && commerceElem.getAttribute(“data-clickablewhitespacedt”))); var priceDisplayExperimentVariant = commerceElem && commerceElem.getAttribute(“data-priceDisplayExperimentVariant”); var roomsUrgencyElem = widget.element.querySelector(“.roomUrgencyMessaging”); var offerContentId = roomsUrgencyElem && roomsUrgencyElem.getAttribute(“data-offerContentId”); var roomsUrgencyMessage = roomsUrgencyElem && roomsUrgencyElem.getAttribute(“data-roomsUrgencyMessage”); var IMPRESSION_EVENT = “iis/impression”; var gtmRadio = Radio(‘gtm-bridge’); function _findClickElement(el) { while (el && el.getAttribute) { if (el.getAttribute(‘data-clickPart’)) { return el; } el = el.parentNode; if (el === widget.element) { break; } } return null; } function _track(event, elem) { var clickElem = _findClickElement(event && event.srcElement); var part = clickElem ? clickElem.getAttribute(‘data-clickPart’) : ‘other’; var index = clickElem ? clickElem.getAttribute(‘data-index’) : ”; trackingStreams.trackEvent(‘hotelcell_h_meta’, part + “_” + index); } /** * HOT-24629: track commerce click on best seller hotel * */ function _trackCommerceClickOnBestSeller() { var isBestSeller = commerceElem.getAttribute(‘data-bestseller’); if (isBestSeller) { trackingStreams.trackEvent(‘best_seller_click’, locId, listPos); } } /** * HOT-35460: track commerce clicks on properties with preferred amenities * */ function _trackCommerceClickOnAmenityRibbon() { var amenityRibbonTrackingProperties = commerceElem.getAttribute(‘data-amenityRibbonTrackingProperties’); if (amenityRibbonTrackingProperties) { amenityRibbonTrackingProperties.split(‘,’).forEach( function (trackingProperty) { trackingStreams.trackEvent(trackingProperty, ‘click’); }); } } /** * HOT-31902: track commerce click on a high scoring tag compared hotel * */ function _trackCommerceClickOnHighScoringHotel() { var compare = commerceElem.getAttribute(‘data-comparisonType’); if (compare) { trackingStreams.trackEvent(compare, ‘click’, ‘commerce’); } } function _trackCugClick(elem) { var specialRateTracking = elem.querySelector(‘.special_rate_tracking’); if (specialRateTracking) { var provider = elem ? elem.getAttribute(‘data-provider’) : ‘Unknown’; var type = elem ? elem.getAttribute(‘data-specialratetype’) : ‘None’; trackingStreams.trackEvent(‘Hotels_Loyalty_HR_click’, provider + “|” + type, specialRateTracking.getAttribute(‘productattribute’)); } } function clickOffer(event, elem) { if (_shared.clickableWhiteSpace) { event.stopPropagation(); } var hotelDetailUrl = elem.getAttribute(“data-hotelDetailUrl”); var hotelDetailTextLinkUrl = elem.getAttribute(“data-hotelDetailTextLinkUrl”); if (hotelDetailTextLinkUrl) { _trackOnIIS(elem.getAttribute(“data-contentid”)) window.open(hotelDetailTextLinkUrl, ‘_blank’); return; } if (hotelDetailUrl) { // Avoid having users go directly from /H to /RoomGrid for plus offers when the paywall feature is on. // Tracking through IIS // Hotel Detail Url is only filled in for Optimus Offers when Paywall feature is on _trackOnIIS(elem.getAttribute(“data-contentid”)) window.open(hotelDetailUrl, ‘_blank’); return; } _track(event, elem); var token = elem.getAttribute(“data-clickToken”); if (token) { // HOT-23280: Recently viewed tracking for commerce clicks recentlyViewedHotels.trackCommerceClick(locId); offerclick.clickEvent(event, elem, token, false); _trackCommerceClickOnBestSeller(); _trackCommerceClickOnHighScoringHotel(); _trackCommerceClickOnAmenityRibbon(); } _trackCugClick(elem); // Google Tag Manager radio gtmRadio.emit(‘clickOffer’) } /** * Method to trigger tracking mechanism through “@ta/optimus.tracking-bridge” * @param contentId – value used as unique identifier of the invisible triggering element id * @private */ function _trackOnIIS(contentId) { if (contentId) { var elem = $(‘#’ + contentId)[0]; if (elem) { elem.click(); } } } function _processOverlayOnUpdateWidget() { // if there is an overlay already open, and we get new widget as of ajax update, we need to re-process the overlay if(_shared.dropDown && _shared.dropDownListPos == listPos ) { var newSrc = widget.element.querySelector(“.moreLink”); if (_shared.dropDownLocId != locId || !newSrc) { // if the widget at the same position is of different property, close the dropdown _shared.dropDown.destroy(); _shared.dropDown=null; }else { _shared.dropDown.sourceElement = newSrc; // if the new widget is of the same property and same location, update the src element for the dropdwon } } } function _trackPriceDisplay(name) { EventBus.dispatch(IMPRESSION_EVENT, { itemName: name, itemType: ‘price_display_msg’, locationId: locId, team: ‘Hotels’, customData: JSON.stringify({ ‘experimentVariant’: priceDisplayExperimentVariant }), }); } function _trackRoomUrgencyMessaging() { EventBus.dispatch(IMPRESSION_EVENT, { itemId: offerContentId, itemName: roomsUrgencyMessage, itemType: ‘room_urgency_msg’, locationId: locId, page: pageModel.session.pageServlet, }); } function _createAlreadyTrackedMap(alreadyTrackedMapName) { var alreadyTracked; // ta.store/retrieve is not available on mobile // so use the mobile version if (“object” === typeof ta && ta.m && ta.m.store) { alreadyTracked = ta.m.store.get(alreadyTrackedMapName); } else { alreadyTracked = taStore.retrieve(alreadyTrackedMapName); } if ( !alreadyTracked ) { alreadyTracked = {}; if (“object” === typeof ta && ta.m && ta.m.store) { ta.m.store.add(alreadyTrackedMapName, alreadyTracked); } else { taStore.store(alreadyTrackedMapName, alreadyTracked); } } return alreadyTracked; } function _iisTrackingOnPageOnce(name) { var alreadyTracked = _createAlreadyTrackedMap(‘iisImpressionAlreadyTracked’); var eventKey = name + ‘|’ + locId + ‘|’ + priceDisplayExperimentVariant; if (!alreadyTracked[eventKey]) { _trackPriceDisplay(name); alreadyTracked[eventKey] = true; } } function _iisRoomUrgencyMessagingTrackingOnPageOnce() { var alreadyTracked = _createAlreadyTrackedMap(‘iisRoomUrgencyMessagingAlreadyTracked’); var eventKey = String(offerContentId) + ‘|’ + String(locId) + ‘|’ + roomsUrgencyMessage; if (!alreadyTracked[eventKey]) { _trackRoomUrgencyMessaging(); alreadyTracked[eventKey] = true; } } function _impressionTracking() { // for price display test variant 1 var pricePerNight = widget.element.querySelector(‘.pricePerNight_’ + locId); // for price display test variant 2, 3 var priceDisplayMsg = widget.element.querySelector(‘.priceDisplayMsg’); if (pricePerNight && priceDisplayMsg) { taElement.doIfElementIsVisible(pricePerNight, _iisTrackingOnPageOnce, [pricePerNight.innerHTML + ” ” + priceDisplayMsg.innerHTML]); } else if (pricePerNight) { taElement.doIfElementIsVisible(pricePerNight, _iisTrackingOnPageOnce, [pricePerNight.innerHTML]); } else if (priceDisplayMsg) { taElement.doIfElementIsVisible(pricePerNight, _iisTrackingOnPageOnce, [priceDisplayMsg.innerHTML]); } } function _roomUrgencyMessagingImpressionTracking() { var roomUrgencyMessaging = widget.element.querySelector(‘.roomUrgencyMessaging’); if (roomUrgencyMessaging) { taElement.doIfElementIsVisible(roomUrgencyMessaging, _iisRoomUrgencyMessagingTrackingOnPageOnce); } } function _trackCug() { var trackingEl = widget.element.querySelector(‘.special_rate_tracking’); if (trackingEl) { var guests = ta.page.guests.toQueryJson().uguests; var checkin = ta.page.hasDates(‘CHECKIN’) ? ta.page.getDates(‘CHECKIN’)[0].toLocaleDateString() : ‘default’; var checkout = ta.page.hasDates(‘CHECKOUT’) ? ta.page.getDates(‘CHECKOUT’)[0].toLocaleDateString() : ‘default’; var dates = checkin + ‘_’ + checkout; var label = [trackingEl.getAttribute(‘pageaction’), locId, checkin, checkout, guests].join(‘_’); trackingStreams.trackEventOnPageOnce(trackingEl.getAttribute(‘pageproperty’), label, trackingEl.getAttribute(‘productattribute’) ); } } taEvent.on(“page-polling-complete”, _trackCug); _processOverlayOnUpdateWidget(); resizer.init(widget.element); _impressionTracking(); _roomUrgencyMessagingImpressionTracking(); return { clickOffer: clickOffer }; }).bind({})); }); define(‘overlays/options/fade’, [‘lib/jquery-amd’], function($){ ‘use strict’; var NOOP = function(){}; var fadeInClass = ‘fade_in’; var fadeOutClass = ‘fade_out’; function addClass(cl){ $(this.container).addClass(cl); $(this.shade).addClass(cl); } function removeClass(cl){ $(this.container).removeClass(cl); $(this.shade).removeClass(cl); } var BOTH = [ function(fadeType){ addClass.call(this, fadeType.cl); }, function(fadeType){ addClass.call(this, fadeInClass); }, NOOP, function(fadeType){ removeClass.call(this, fadeInClass); }, NOOP ]; var ONLY_IN = [ NOOP, function(fadeType){ addClass.call(this, fadeType.cl); addClass.call(this, fadeInClass); }, function(fadeType){ removeClass.call(this, fadeType.cl); removeClass.call(this, fadeInClass); }, NOOP, NOOP ]; var ONLY_OUT = [ NOOP, NOOP, NOOP, function(fadeType){ addClass.call(this, fadeType.out); addClass.call(this, fadeOutClass); }, function(fadeType){ removeClass.call(this, fadeType.out); removeClass.call(this, fadeOutClass); } ]; var Fade = function(fadeType, onShow, onHide){ return function() { if (!fadeType) { return; } onShow = onShow !== false; onHide = onHide !== false; var oldShow = this.show; var oldHide = this.hide; var fns = onShow && onHide ? BOTH : onShow ? ONLY_IN : ONLY_OUT; fns[0].call(this, fadeType); onShow && (this.show = function() { var args = arguments; oldShow && oldShow.apply(this, args); fns[1].call(this, fadeType); setTimeout(function(){ fns[2].call(this, fadeType); }.bind(this), fadeType.len); }.bind(this)); onHide && (this.hide = function() { var args = arguments; fns[3].call(this, fadeType); setTimeout(function() { fns[4].call(this, fadeType); oldHide && oldHide.apply(this, args); }.bind(this), fadeType.len); }.bind(this)); }; }; Fade.NONE = {cl: ‘fade_none’, out: ‘fade_out_none’, len: 0}; Fade.SHORT = {cl: ‘fade_short’, out: ‘fade_out_short’, len: 250}; Fade.NORMAL = {cl: ‘fade_normal’, out: ‘fade_out_normal’, len: 500}; Fade.LONG = {cl: ‘fade_long’, out: ‘fade_out_long’, len: 1000}; return Fade; }); require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’meta_h_responsive_commerce_tvg_multi_larger_thumbnail’,’tablet/tablet’,[‘handlers’,’tablet/tablet’]); define([ ‘widget’, ‘page-model’, ‘api-mod’, ‘overlays/Overlay’, ‘overlays/position’, ‘overlays/styles/tooltip’, ‘overlays/styles/popover’, ‘overlays/styles/windowshade’, ‘overlays/options/closeOnScrollOutOfView’, ‘overlays/options/closeOnMouseAway’, ‘overlays/options/closeOnSourceClick’, ‘overlays/options/closeOnDocClick’, ‘overlays/options/autoReposition’, ‘overlays/options/maxWidth’, ‘overlays/options/fade’, ‘overlays/options/ajax’, ‘common/trackingStreams’, ‘utils/responsive’ ], function( widget, pageModel, api, Overlay, Position, Tooltip, Popover, Windowshade, CloseOnScrollOutOfView, CloseOnMouseAway, CloseOnSourceClick, CloseOnDocClick, AutoReposition, maxWidth, Fade, Ajax, tracking, Responsive ) { var _shared=widget._shared; //handlers.js sets this up var _overlayComponent; function strikeThroughOverlay(event, source){ if ( !_overlayComponent) { var overlayContent = source && source.querySelector(“.overlay_contents”); if(overlayContent) { _overlayComponent = new Overlay(source, [ Tooltip(source, ‘above’, “dark”, overlayContent.innerHTML), Position.above(), maxWidth(200), CloseOnMouseAway, Fade(Fade.SHORT, true, true) ]); } } if(_overlayComponent){ _overlayComponent.show(); } } function _track(source) { return tracking.trackEvent.bind(null, source); } function dropDown(event, elmt, locId, listPos, pageOffset, ttPlc) { if (_shared.clickableWhiteSpace) { event.stopPropagation(); } var isCloseClick = false; var isMobile = Responsive.mobile(); locId = Number(locId); listPos = Number(listPos); pageOffset = Number(pageOffset); if (_shared.dropDown) { //one already exists isCloseClick = _shared.dropDown.isOpen() && _shared.dropDownLocId == locId && _shared.dropDownListPos == listPos; _shared.dropDown.destroy(); _shared.dropDown=null; } if (isCloseClick) { elmt.setAttribute(‘data-clicksource’, “ViewAllDealsClose”); return false; } else { elmt.setAttribute(‘data-clicksource’, “ViewAllDeals”); } var url = “/OverlayWidgetAjax?Mode=HOTELS_VIEW_ALL_OFFERS&metaReferer=” + encodeURIComponent(pageModel.session.pageServlet); var ajaxOptions={ sendTravelInfo: true, reqParams: { locationId: String(locId), listPos: String(listPos+pageOffset), ttPlc: ttPlc }, inlineResourceId: ‘HOTELS_VIEW_ALL_OFFERS’, isWidget: true }; var sponsoredListingJson = elmt.getAttribute(‘data-sponsoredListing’); if (sponsoredListingJson) { ajaxOptions.reqParams.sponsoredListingJson = sponsoredListingJson; } // this pins the click catching backdrop to right below the view all text // so that users can tap out of the dropdown on mobile var windowshadeTop = function() { var scrollTop = window.pageYOffset || document.documentElement.scrollTop; return elmt && elmt.getBoundingClientRect().bottom + scrollTop; }; var mixins=[ Popover(elmt, “below”, “light mobile_x small”), Position.below([0, -8]), CloseOnSourceClick, AutoReposition, CloseOnDocClick.withoutTouchEvents, isMobile && CloseOnScrollOutOfView, Ajax(url, ajaxOptions), isMobile && Windowshade(“popover-backdrop”, windowshadeTop), ]; var overlay = new Overlay(elmt, mixins); _shared.dropDown = overlay; _shared.dropDownLocId = locId; _shared.dropDownListPos = listPos; overlay.show(); overlay.on(‘hide’, function(e) { if (e && e.trigger) { _track(“hotelcell_h_otherclose”)(); } }); return false; } function closeDropdown() { if (_shared.dropDown) { _shared.dropDown.destroy(); _shared.dropDown=null; } } if (!_shared.tabletInitDone) { _shared.tabletInitDone = true; api.addEvent(document.body, “closeDropdown”, closeDropdown); } return { strikeThroughOverlay : strikeThroughOverlay, dropDown: dropDown }; }); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’hotels_merchandise_messages’,’handlers’,[‘handlers’]); /** * @created 01/31/2018 * @author qle */ define([‘babel/babel-helpers’, ‘widget’, ‘vanillajs’, ‘common/trackingStreams’, “ta/Core/TA.Event”, ‘utils/throttle’, ‘utils/VisibilityChecker’], function (babelHelpers, widget, vanilajs, trackingStream, taEvent, throttle, visibilityChecker) { var merchandiseMessages = widget.element && widget.element.querySelectorAll(‘.merchandise_message’); /** callback function get invoked after we see the message */ function _callBackAfterSeenMessage(merchandiseMessage) { if (merchandiseMessage) { var pageAction = merchandiseMessage.getAttribute(“data-pageAction”); if (pageAction) { trackingStream.trackEvent(“MERCHANDISE_MESSAGE”, pageAction); taEvent.fireEvent(pageAction); // fire event for other listing widget to stop listening for scroll } var servletName = merchandiseMessage.getAttribute(“data-servletName”); var type = merchandiseMessage.getAttribute(“data-type”); if (servletName && type === “FREE_CANCELLATION”) { trackingStream.trackEvent(“osm-free-cancellation”, “shown”, servletName); } } } if (merchandiseMessages) { var _loop = function _loop(i) { if (merchandiseMessages[i]) { var pageAction = merchandiseMessages[i].getAttribute(“data-pageAction”); if (pageAction) { var merchandiseMessageChecker = visibilityChecker({ elements: [merchandiseMessages[i]], callback: function callback() { return _callBackAfterSeenMessage(merchandiseMessages[i]); } }); if (merchandiseMessageChecker) { var _throttleTrackMessage = throttle(merchandiseMessageChecker, 300); window.addEventListener(‘scroll’, _throttleTrackMessage); // throttle because this message widget is small, so scrolling and check if the widget is in view will fire a lot of events taEvent.on(pageAction, function () { window.removeEventListener(‘scroll’, _throttleTrackMessage); // because there are several instances of this widget, if one instance trackEvent, we want other widget to not track it }); } } } }; // There can be multiple merchandise messages tied to a single offer. Need to independently track each type of merchandise message. for (var i = 0; i < merchandiseMessages.length; i++) { _loop(i); } } return {}; });});require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'sponsoredListings_hotels_sponsored_owner_cta_listing','handlers',['handlers']); /** * Handler methods for the CTA ad * * @author aozturk * @since Nov 2018 */ define(['widget', 'common/trackingStreams'], function(widget, trackingStreams) { var LOCATION_ID_DATA_ATTR = 'data-locationId'; var IS_NEW_LISTING = 'data-isNewListing' var _sponsoredListing = widget.element.querySelector('.sponsoredListingAdCTA') function _init() { var locationId = parseInt(_sponsoredListing.getAttribute(LOCATION_ID_DATA_ATTR), 10); trackingStreams.trackUnifiedEvent('user_saw_cta_ad', 'impression', { locationId: locationId }); } if (_sponsoredListing.getAttribute(IS_NEW_LISTING)) { _init(); } }.bind({}));}); define('sponsoredlisting/HotelSponsoredListingStates', ['vanillajs'], function(vanillajs) { return { LISTING_CREATED: 'listing_created', LOCATION_REQUESTED: 'location_requested', LOCATION_CHOSEN: 'location_chosen', LOCATION_SHOWN: 'location_shown', RESET: 'reset', TIMED_OUT: 'timed_out', LOCATION_FORECASTING: 'location_forecasting' }; }); define('sponsoredlisting/HotelStaticListing', ['vanillajs', 'sponsoredlisting/HotelSponsoredListingStates'], function(vanillajs, SponsoredListingStates) { var LISTING_KEY_DATA_ATTR = 'data-listingKey'; var StaticListing = function (sponsoredListingData, listingWrapper, enableTrackingService, enableTrackingServiceShadowMode) { var _data = sponsoredListingData; var _currentState = SponsoredListingStates.LISTING_CREATED; var _listingWrapper = listingWrapper; var _hasImpressionFired = false; var _enableTrackingService = enableTrackingService; var _enableTrackingServiceShadowMode = enableTrackingServiceShadowMode; var updateState = function (newState) { _currentState = newState; }; var getState = function () { return _currentState; }; var getSlotIndex = function () { return _data.slotIndex; }; var getSponsoredType = function () { return _data.sponsoredType; }; var getSponsoredLocationSource = function () { return _data.sponsoredLocationSource; }; var getSponsoredSlot = function () { return _data.sponsoredPlacementSlot; }; var isSlotAny = function() { return _data.sponsoredPlacementSlot.isSlotAny; }; var getAdOpportunityId = function () { return _data.adOpportunityId; }; var getSlLineItemId = function () { return _data.slLineItemId; }; var getTripAdsId = function () { return _data.tripAdsId; }; var getTripAdsSelectRequestGuid = function () { return _data.tripAdsSelectRequestGuid; }; var hasImpressionFired = function () { return _hasImpressionFired; }; var getDisplayedLocationId = function () { return _data.locationId; }; var getListingWrapper = function () { return _listingWrapper; }; var listingMaintainedByPoll = function (listingWrapper, sponsoredListingData) { _listingWrapper = listingWrapper; _data = sponsoredListingData; }; var impressionFired = function() { _hasImpressionFired = true; }; var getPollingParam = function () { return { slotIndex: _data.slotIndex, displayedLocationId: _data.locationId, sponsoredType: _data.sponsoredType, adOpportunityId: _data.adOpportunityId, slLineItemId: _data.slLineItemId } }; var getTrackingContext = function () { var listingKey = _listingWrapper.getAttribute(LISTING_KEY_DATA_ATTR); var trackingContext = { has_valid_candidate: true, placement_slot_name: _data.sponsoredPlacementSlot.name, slot_index: _data.slotIndex, location_id: _data.locationId, sponsored_type: _data.sponsoredType, opportunity_uid: _data.adOpportunityId, sl_line_item_id: getSlLineItemId(), page_geo_id: (require.defined('page-model') ? require('page-model').GEO_ID : -1), is_dynamic_listing: false, candidate_location_ids: [_data.locationId], chosen_location_id: _data.locationId, current_state: _currentState, listing_key: listingKey, trip_ads_select_guid: _data.tripAdsSelectRequestGuid, unique_request_id: _data.uniqueRequestId }; var tripAdsId = getTripAdsId(); if (!!tripAdsId) { trackingContext.trip_ads_id = tripAdsId; } return trackingContext; }; var refresh = function () { _currentState = SponsoredListingStates.RESET; }; var isLocationPaidBackfill = function () { return true; }; var isShowingLocation = function () { return true; }; var getImpressionKey = function () { return _data.impressionKey; }; var getTrackingTreePlacementName = function () { return _data.trackingTreePlacementName; }; var getUniqueRequestId = function() { return _data.uniqueRequestId; }; var getPartnerNotificationURL = function () { return _data.partnerNotificationURL; }; var getPartnerImpressionNotificationURL = function () { return _data.partnerImpressionNotificationURL; }; var getGosox = function () { return _data.gosox; }; var getListingKey = function () { return _listingWrapper.getAttribute(LISTING_KEY_DATA_ATTR); } var getTrackingGuid = function () { return _data.trackingGuid; } var getEnableTrackingService = function () { return _enableTrackingService; } var getEnableTrackingServiceShadowMode = function () { return _enableTrackingServiceShadowMode; } return { updateState: updateState, getState: getState, getSlotIndex: getSlotIndex, getSponsoredType: getSponsoredType, getSponsoredLocationSource: getSponsoredLocationSource, getSponsoredSlot: getSponsoredSlot, isSlotAny: isSlotAny, getAdOpportunityId: getAdOpportunityId, getSlLineItemId: getSlLineItemId, getTripAdsId: getTripAdsId, getTripAdsSelectRequestGuid: getTripAdsSelectRequestGuid, getPollingParam: getPollingParam, getTrackingContext: getTrackingContext, getListingWrapper: getListingWrapper, isLocationPaidBackfill: isLocationPaidBackfill, isShowingLocation: isShowingLocation, getDisplayedLocationId: getDisplayedLocationId, getImpressionKey: getImpressionKey, getTrackingTreePlacementName: getTrackingTreePlacementName, getUniqueRequestId: getUniqueRequestId, getPartnerNotificationURL: getPartnerNotificationURL, getPartnerImpressionNotificationURL: getPartnerImpressionNotificationURL, getGosox: getGosox, getListingKey: getListingKey, getTrackingGuid: getTrackingGuid, enableTrackingService: getEnableTrackingService, enableTrackingServiceShadowMode: getEnableTrackingServiceShadowMode, hasImpressionFired: hasImpressionFired, impressionFired: impressionFired, listingMaintainedByPoll: listingMaintainedByPoll, refresh: refresh }; }; return StaticListing; }); define('retargeting/providers/hotels-sp-provider', ['retargeting/util' ], function(rtUtil) { return function(eventType, trackingContext, listingWrapper) { if(!trackingContext) { return; } var isMember = false; var deviceType = ""; if (require.defined('page-model')) { isMember = require('page-model').session.loggedIn; deviceType = require('page-model').DUST_GLOBAL.DEVICE; } var dataToSend = {}; dataToSend.is_member = isMember; dataToSend.device_type = deviceType; dataToSend.locationId = trackingContext["location_id"]; dataToSend.slot = trackingContext["placement_slot_name"]; if(listingWrapper) { var topOffer = listingWrapper.querySelector("div[data-clicktoken]"); if(topOffer) { dataToSend.top_meta_offer = topOffer.getAttribute("data-provider"); dataToSend.pernight = topOffer.getAttribute("data-pernight"); } } rtUtil.getDates(dataToSend); rtUtil.send(eventType, dataToSend); } }); define('retargeting/listeners/hotels-sp-impression', ['retargeting/providers/hotels-sp-provider' ], function(spDataProvider) { return function(options, listingWrapper) { require(['trjs!taevents'], function() { if(typeof spDataProvider === 'function') { spDataProvider("HOTELS_SP_IMPRESSION", options, listingWrapper); } }); }; }); define('sponsoredlisting/HotelSponsoredListingTracker', ['vanillajs', 'common/trackingStreams', 'utils/cookieutils', 'ajax-request', 'page-model', 'commerce/offerclick'], function(vanilla, tracking, cookieUtils, ajaxRequest, pageModel, offerClick) { 'use strict'; var SPONSORED_AD_OPPORTUNITY_ID_COOKIE_NAME = 'sponsOppId'; var SPONSORED_AD_LINE_ITEM_ID_COOKIE_NAME = 'sponsLineItem'; var TRIP_ADS_EVENT_TYPE_CLICKED = 'CLICKED'; var TRIP_ADS_EVENT_TYPE_CLICKED_UNPAID = 'CLICKED_UNPAID'; var TRIP_ADS_EVENT_TYPE_IMPRESSED = 'IMPRESSED'; var SP_PARTNER_NOTIFICATION_IFRAME_ID = 'SP_PARTNER_NOTIFICATION_IFRAME'; function setSponsoredAdCookie(slLineItemId, adOpportunityId) { cookieUtils.setCookieInSeconds(SPONSORED_AD_OPPORTUNITY_ID_COOKIE_NAME, adOpportunityId, { duration: 10, ignoreVersion: true }); cookieUtils.setCookieInSeconds(SPONSORED_AD_LINE_ITEM_ID_COOKIE_NAME, slLineItemId, { duration: 10, ignoreVersion: true }); } function recordSponsoredPlacementCommerceClick(sponsoredListing, destination, isBooking, auctionOfferKey, isMetaPrefClick, callback) { var slotName = sponsoredListing.getSponsoredSlot().name; var servletName = sponsoredListing.getSponsoredSlot().servletName; var trackingContext = sponsoredListing.getTrackingContext(); var slLineItemId = sponsoredListing.getSlLineItemId(); var tripAdsId = sponsoredListing.getTripAdsId(); var slotIndex = sponsoredListing.getSlotIndex(); var impressionKey = sponsoredListing.getImpressionKey(); var trackingTreePlacementName = sponsoredListing.getTrackingTreePlacementName(); var gosox = sponsoredListing.getGosox(); if (sponsoredListing.isLocationPaidBackfill()) { ajaxRequest({ method: 'POST', url: isMetaPrefClick ? '/SponsoredListingCommerce/1.0/increment_click_metric' : '/SponsoredListingCommerce/1.0/click', 'content-type': 'application/json', 'x-requested-by': pageModel.JS_SECURITY_TOKEN, data: JSON.stringify( _assign({}, { 'slot': slotIndex, 'location_id': trackingContext.location_id, 'listing_key': trackingContext.listing_key, 'area': slotName, 'from': servletName, 'dest': destination, 'is_backfill': sponsoredListing.isLocationPaidBackfill(), 'click_type' : destination === 'Hotel_Review' ? 'HR' : (isBooking ? 'IB' : 'META') }, slLineItemId ? {'sl_line_item_id': slLineItemId} : {}, tripAdsId ? {'trip_ads_id': tripAdsId} : {}, impressionKey ? {'impression_key': impressionKey} : {}, auctionOfferKey ? {'auction_offer_key': auctionOfferKey} : {}, trackingTreePlacementName ? {'tt_placement': trackingTreePlacementName} : {}, gosox ? {'gosox' : gosox} : {}) ) }).then(callback, callback); } else { callback(); } } function postTripAdsEvent(selectRequestGuid, externalId, eventType) { return ajaxRequest({ method: 'POST', url: '/data/1.0/tap/recordEvent', 'content-type': 'application/json', 'x-requested-by': pageModel.JS_SECURITY_TOKEN, data: JSON.stringify({ 'eventType': eventType, 'requestGuid': selectRequestGuid, 'externalId': externalId }) }); } function recordTripAdsClick(sponsoredListing, isPaidSponsoredClick, callback) { var selectRequestGuid = sponsoredListing.getTripAdsSelectRequestGuid(); var externalId = sponsoredListing.getAdOpportunityId(); var eventType = isPaidSponsoredClick ? TRIP_ADS_EVENT_TYPE_CLICKED : TRIP_ADS_EVENT_TYPE_CLICKED_UNPAID; if (!!selectRequestGuid) { postTripAdsEvent(selectRequestGuid, externalId, eventType) .then(callback, callback); } else { callback(); } } function recordTripAdsImpression(selectRequestGuid, externalId) { if (!!selectRequestGuid) { postTripAdsEvent(selectRequestGuid, externalId, TRIP_ADS_EVENT_TYPE_IMPRESSED); } } function _assign(target, args) { for (var i = 1; i 0 && rect.height > 0 && ((rect.top >= 0 && rect.top = 0 && rect.bottom <= window.innerHeight)); } catch (e) { return false; } } function fireImpression(listing) { if (!listing || listing.hasImpressionFired()) { return; } if (listing.enableTrackingService()) { _fireTrackingServiceImpression(listing); } if (!listing.enableTrackingService() || listing.enableTrackingServiceShadowMode()) { _fireClientImpression(listing); } listing.impressionFired(); } function _fireClientImpression(listing) { var sponsoredLocationSource = listing.getSponsoredLocationSource(); var trackingContext = listing.getTrackingContext(); var tripAdsSelectRequestGuid = listing.getTripAdsSelectRequestGuid(); var opportunityId = listing.getAdOpportunityId(); if (sponsoredLocationSource === OWNER_AD_CTA_SPONSORED_LOCATION_SOURCE) { tracking.trackUnifiedEvent('sl_owner_cta_displayed', 'impression', trackingContext); } else { htImpTracker(trackingContext, listing.getListingWrapper()); tracking.trackUnifiedEvent('paid_backup_sponsored_listing_displayed', 'impression', trackingContext); if (!!tripAdsSelectRequestGuid) { HotelSponsoredListingTracker.recordTripAdsImpression(tripAdsSelectRequestGuid, opportunityId); } } if (listing.getPartnerImpressionNotificationURL()) { HotelSponsoredListingTracker.notifyPartner(listing.getPartnerImpressionNotificationURL()); } } function _fireTrackingServiceImpression(listing) { HotelSponsoredListingTracker.recordTrackingServiceImpression(listing); } var _updatePollingParameter = function(needsPoll) { var slotKey; var listing; var pollingParam = {}; for (slotKey in _sponsoredListings) { if (_sponsoredListings.hasOwnProperty(slotKey)) { listing = _sponsoredListings[slotKey]; if (listing.getState() !== SponsoredListingStates.RESET && !listing.isSlotAny()) { pollingParam[listing.getSponsoredSlot().name] = listing.getPollingParam(); } } } taFireEvent.fireEvent('hotels.sponsored_listing_updated', pollingParam, needsPoll); }; var getListingByElement = function(elem) { var slotKey; var listing; var foundListing; for (slotKey in _sponsoredListings) { if (_sponsoredListings.hasOwnProperty(slotKey)) { listing = _sponsoredListings[slotKey]; if (listing.getListingWrapper().contains(elem)) { foundListing = listing; break; } } } return foundListing; }; var getSponsoredListing = function(slotKey) { return _sponsoredListings[slotKey]; }; var getListingWrapper = function(slotKey) { var listing = _sponsoredListings[slotKey]; if (listing) { return listing.getListingWrapper(); } return null; }; var getTrackingContextForSlot = function(slotKey) { var listing = _sponsoredListings[slotKey]; if (listing && listing.getTrackingContext) { return listing.getTrackingContext(); } return undefined; }; var isShowingLocation = function(slotKey) { var listing = _sponsoredListings[slotKey]; return !!listing; }; _init(); return { staticListingRendered: staticListingRendered, listingMaintainedByPoll: listingMaintainedByPoll, fireImpression: fireImpression, getSponsoredListing: getSponsoredListing, getListingWrapper: getListingWrapper, getTrackingContextForSlot: getTrackingContextForSlot, isShowingLocation: isShowingLocation, getListingByElement: getListingByElement, updateOrCreateListingOnPoll: updateOrCreateListingOnPoll } }; return HotelsSponsoredListings; }); define('hotels/specialOfferClick', ['babel/babel-helpers', 'utils/waiton', 'ta/Core/TA.FireEvent', 'hotels/listingKeyPlugin', 'common/Radio'], function (babelHelpers, waitOn, taFireEvent, listingKeyPlugin, radio) { var sojernRadio = radio('sojern-tracking-bridge'); var ASYNC_ACTIONS_TIMEOUT = 250; var SPECIAL_OFFER_CLICK_EVENT = 'hotels.special_offer_click'; var _preclickActions = []; var _registerAsyncPreclick = function _registerAsyncPreclick(action) { if (typeof action === 'function') { _preclickActions.push(action); } }; var _clickEvent = function _clickEvent(elem, listingKey, redirectAction, isNewTab, locationId) { taFireEvent.fireEvent(SPECIAL_OFFER_CLICK_EVENT, elem); listingKeyPlugin.setListingKeyCookie(listingKey); if (isNewTab) { redirectAction && redirectAction(); _preclickActions.forEach(function (action) { return action(elem, function () {}); }); } else { var boundActions = _preclickActions.map(function (action) { return action.bind(null, elem); }); waitOn(boundActions, redirectAction, ASYNC_ACTIONS_TIMEOUT); } sojernRadio.emit('sojernClick', { locationId: parseInt(locationId, 10), clickType: 'special_offer_to_hotel_review_page' }); }; return { SPECIAL_OFFER_CLICK_EVENT: SPECIAL_OFFER_CLICK_EVENT, registerAsyncPreclick: _registerAsyncPreclick, clickEvent: _clickEvent }; }); define('retargeting/listeners/hotels-sp-click', ['retargeting/providers/hotels-sp-provider' ], function(spDataProvider) { return function(options, listingWrapper) { require(['trjs!taevents'], function() { if(typeof spDataProvider === 'function') { spDataProvider("HOTELS_SP_CLICK", options, listingWrapper); } }); }; }); require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'sponsoredListings_hotels_sponsored_listing_data','handlers',['handlers']); /** * Basic handlers for a HotelsSponsoredListingDataWidget * * @author yujzhang * @since August 2019 */ define(['widget', 'vanillajs', 'utils/objutils', 'sponsoredlisting/HotelsSponsoredListings', 'sponsoredlisting/HotelSponsoredListingTracker', 'hotels/listingClick', 'hotels/baLinkClick', 'hotels/specialOfferClick', 'commerce/offerclick', 'ta/Core/TA.FireEvent', 'common/trackingStreams', 'retargeting/listeners/hotels-sp-click', 'ta/Core/TA.LocalStorage'], function(widget, vanillajs, objutils, HotelsSponsoredListings, HotelSponsoredListingTracker, listingClick, baWebLinkClick, specialOfferClick, offerClick, taFireEvent, trackingStreams, htClickTracker, localStorage ) { var META_PREFERENCE_SPONSORED_TYPE = 'DISCOVERY_META_PREFERENCE'; var SPONSORED_LISTINGS_DATA_ATTR = 'data-sponsoredListingsData'; // Identify sponsored clicks so we do not subsequently show the user a login gate on an otherwise eligible detail page var SPONSORED_LISTING_ID_CLICKED_KEY = 'sponsoredListingIdClicked'; var SPONSORED_LISTING_ID_CLICKED_EXPIRATION = 1000 * 60 * 5; // 5 minutes in milliseconds var dataElement = widget.element.querySelector('.sponsoredListingsData'); /** * list of sponsored data taken from HotelSponsoredListingDataModel.m_sponsoredListingsData * @type SponsoredListingData[] */ var _sponsoredListingsData = JSON.parse(dataElement.getAttribute(SPONSORED_LISTINGS_DATA_ATTR).trim()); var shouldUngateSponsoredClicks = dataElement.hasAttribute('data-ungateSponsoredClicks'); var useTrackingService = dataElement.hasAttribute('data-useTrackingService'); var shadowMode = dataElement.hasAttribute('data-shadowMode'); var _shared = this; // track state of sponsored listings (shared across all simple sponsored listing widgets) if (!_shared.sponsoredListingStateManager) { _shared.sponsoredListingStateManager = new HotelsSponsoredListings(); // attach a click handler to log impressions for SLOT_ANY SPs, these are special because // they change per poll. We don't want to overshoot each impression on polls, and this is a temporary solution listingClick.registerAsyncPreclick(_logImpressionForClickTemp); // attach click event handlers here since we only want to attach them once across polls, etc // register a callback on click through to /H_R that takes care of passing a click through to UUT listingClick.registerAsyncPreclick(_logClickToHotelReview); // register a callback on click through to /H_R that takes care of passing in our own sponsored placement commerce click listingClick.registerAsyncPreclick(_logSPCommerceClickForHR); // register a callback on click through to /H_R that takes care of logging the click event with TripAds listingClick.registerAsyncPreclick(_logClickToHRWithTripAds); // register a callback on click through to /H_R that notice partner sp click to /HR listingClick.registerAsyncPreclick(_notifyPartnerAboutHRClick); // register a callback on a meta/ib offer click that takes care of passing a click through to UUT offerClick.registerAsyncPreclick(_logIBMetaClick); // register a callback on a meta/ib offer click that takes care of passing in our own sponsored placement commerce click offerClick.registerAsyncPreclick(_logSPCommerceClick); // register a callback on a meta/ib offer click that takes care of logging the click event with TripAds offerClick.registerAsyncPreclick(_logClickWithTripAds); // attach a click handler to log impressions for SLOT_ANY SPs, these are special because // they change per poll. We don't want to overshoot each impression on polls, and this is a temporary solution offerClick.registerAsyncPreclick(_logImpressionForClickTemp); // register a callback on a click on a website click baWebLinkClick.registerAsyncPreclick(_logBAWebsiteClick); // attach a click handler to log impressions for SLOT_ANY SPs, these are special because // they change per poll. We don't want to overshoot each impression on polls, and this is a temporary solution baWebLinkClick.registerAsyncPreclick(_logImpressionForClickTemp); specialOfferClick.registerAsyncPreclick(_logSpecialOfferClick); // attach a click handler to log impressions for SLOT_ANY SPs, these are special because // they change per poll. We don't want to overshoot each impression on polls, and this is a temporary solution specialOfferClick.registerAsyncPreclick(_logImpressionForClickTemp); // Register callbacks for sp-tracking, either shadow mode or real mode listingClick.registerAsyncPreclick(_logTrackingServiceListingClick); listingClick.registerAsyncPreclick(_logTrackingServiceImpressionForClickTemp); offerClick.registerAsyncPreclick(_logTrackingServiceOfferClick); offerClick.registerAsyncPreclick(_logTrackingServiceImpressionForClickTemp); baWebLinkClick.registerAsyncPreclick(_logTrackingServiceBAClick); baWebLinkClick.registerAsyncPreclick(_logTrackingServiceImpressionForClickTemp); // NOTE: We're not logging sp-tracking events for special offer clicks because it's hard to access the commerce // url and not worth refactoring. Note that we log client events for this even if sp-tracking is enabled. taFireEvent.off(listingClick.LISTING_CLICK_EVENT, _setAttributionCookieToHotelReview); taFireEvent.on(listingClick.LISTING_CLICK_EVENT, _setAttributionCookieToHotelReview); taFireEvent.off(specialOfferClick.SPECIAL_OFFER_CLICK_EVENT, _setAttributionCookieToHotelReview); taFireEvent.on(specialOfferClick.SPECIAL_OFFER_CLICK_EVENT, _setAttributionCookieToHotelReview); } _storeSponsoredDataViaQuerySelector(); function _storeSponsoredData(elem, listingKey) { if (!document.body.contains(widget.element)) { return; } var sponsoredListingData = _sponsoredListingsData.find(function(data) { return data.listingKey === listingKey; }); if (!sponsoredListingData) { return; } _init(elem, sponsoredListingData, sponsoredListingData.isNewListing); } /** * For each sponsored listing in the JSON map, check if the manager is already showing a sponsored listing * with the same listing key, and if not, search the DOM for the corresponding listing element and then * register it with the state manager. */ function _storeSponsoredDataViaQuerySelector() { if (_shared.sponsoredListingStateManager) { _sponsoredListingsData.forEach(function(sponsoredListing) { var listingKey = sponsoredListing.listingKey; var metaListing = widget.element.parentElement.querySelector('.meta_listing[data-listingkey="' + listingKey + '"]'); if (metaListing) { _storeSponsoredData(metaListing, listingKey); } else { trackingStreams.error('Could not find corresponding meta listing for sponsored listing with listingKey="' + listingKey + '"!'); } }); } } /** * Initialize sponsored data. * * @param {Element} elem * @param {SponsoredListingData} sponsoredListingData This corresponds to HotelsSponsoredListingDataWidget.HotelsSponsoredData * @param {boolean} isNewListing True if this is the first poll or this listing was not present on the previous poll */ function _init(elem, sponsoredListingData, isNewListing) { // SLOT_ANY types are always new on each poll if (isNewListing) { _shared.sponsoredListingStateManager.staticListingRendered(elem, sponsoredListingData, useTrackingService, shadowMode); } else { _shared.sponsoredListingStateManager.updateOrCreateListingOnPoll(elem, sponsoredListingData, useTrackingService, shadowMode); } } /** * Ensure relevant clicks are recorded in the Unified User Tracking mechanism based on a corresponding Meta/IB click on one of the offers * * @param {Element|null} elem - the listing node (ancestor of the commerce node) * @param {Object} token - a mysterious commerce token * @param {Function} callback - the callback which we must call */ function _logIBMetaClick(elem, token, callback) { var slotKey = _getSlotKey(elem); var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (_enableClientTracking(listing)) { // copy the context to avoid mutating the real token object var commerceContext = objutils.extend({}, offerClick.expandToken(token)); delete commerceContext.url; // remove the super long commerce url to avoid clutter in tracking context if (_isListingClickRelevant(slotKey)) { var baseEventName = commerceContext.isBooking ? 'sponsored_ib_click' : 'sponsored_meta_click'; var trackingContext = _shared.sponsoredListingStateManager.getTrackingContextForSlot(slotKey); trackingContext = objutils.extend(trackingContext, commerceContext); // Unified User Tracking trackingStreams.trackUnifiedEvent('paid_backup_' + baseEventName, 'action', trackingContext); } callback(); } } /** * Post a sponsored placement commerce click on a click to H_R * * @param {Element} elem - the element that was clicked on * @param {String} listingKey - UUID that uniquely identifies a hotel listing * @param {Function} callback - the function to call after the tracking is complete (no params) * @private */ function _logSPCommerceClickForHR(elem, listingKey, callback) { // We could use the given listingKey, but to keep things consistent with meta/ib clicks we get it // from the SP widget's DOM node instead within this function _logSPCommerceClick(elem, null, callback); } /** * If the click is a paid sponsored click, post a sponsored placement commerce click * * null is passed in as the token to log if the destination is /Hotel_Review * * @param {Element|null} elem DOM element that got clicked * @param {Object|null} token A mysterious commerce token, if this was a click on a commerce offer (null otherwise) * @param {String} token.providerName The name of the provider associated with the clicked offer * @param {boolean} token.isBooking True if this is an IB click * @param {String} token.ttAOK Auction Offer Key * @param {Function} callback Function to call on completion. No params. * @private */ function _logSPCommerceClick(elem, token, callback) { _verifySPLoaded(); var listing = _getListing(elem); var slotKey; if (listing) { var slot = listing.getSponsoredSlot(); slotKey = slot.slotKey; } // if token isn't provided, the user is clicking through to Hotel_Review var isClickToHotelReview = !token; var isMetaPrefClick = _isMetaPrefClick(slotKey, isClickToHotelReview, token); if (_isListingClickRelevant(slotKey) && _isPaidSponsoredClick(slotKey, isClickToHotelReview, isMetaPrefClick)) { if (listing && _enableClientTracking(listing)) { HotelSponsoredListingTracker.recordSponsoredPlacementCommerceClick(listing, isClickToHotelReview ? 'Hotel_Review' : token.providerName, isClickToHotelReview ? false : token.isBooking, isClickToHotelReview ? null : token.ttAOK, isMetaPrefClick, callback); } } else { callback(); } } /** * ensure that we fire a Unified User Tracking click event based on a click through to H_R * * @param {Element} elem - the element that was clicked on * @param {String} listingKey - UUID that uniquely identifies a hotel listing * @param {Function} callback - the function to call after the tracking is complete * @private */ function _logClickToHotelReview(elem, listingKey, callback) { var slotKey = _getSlotKey(elem); var listing = _getListing(elem); if (_enableClientTracking(listing)) { if (_isListingClickRelevant(slotKey)) { var trackingContext = _buildTrackingContextForSlot(slotKey); var listingWrapper = _shared.sponsoredListingStateManager.getListingWrapper(slotKey); trackingStreams.trackUnifiedEvent('paid_backup_sponsored_listing_click', 'action', trackingContext); // Holistic tracking for click event htClickTracker(trackingContext, listingWrapper); } callback(); } } /** * Create iframe with partner's URL to notice about click through /HR */ function _notifyPartnerAboutHRClick(elem, listingKey, callback) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey)) { var sl = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (!sl || !sl.getPartnerNotificationURL() || (sl.enableTrackingService() && !sl.enableTrackingServiceShadowMode())) { return; } HotelSponsoredListingTracker.notifyPartner(sl.getPartnerNotificationURL()) } callback(); } /** * Log a click on a special offer within a sponsored listing * @param {Element} elem - the element that was clicked on * @param {Function} callback - the function to call after the tracking is complete * @private */ function _logSpecialOfferClick(elem, callback) { var slotKey = _getSlotKey(elem); // NOTE: We're not logging sp-tracking events for special offer clicks because it's hard to access the commerce // url and not worth refactoring, so log client events even if sp-tracking is enabled. if (_isListingClickRelevant(slotKey)) { var trackingContext = _buildTrackingContextForSlot(slotKey); trackingStreams.trackUnifiedEvent('paid_backup_sp_special_offer_click', 'action', trackingContext); // Update holistic tracking here: https://jira.tripadvisor.com/browse/BIZ-13260 } callback(); } function _buildTrackingContextForSlot(slotKey) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); var impressionKey = listing && listing.getImpressionKey(); var trackingTreePlacementName = listing && listing.getTrackingTreePlacementName(); return objutils.extend(_shared.sponsoredListingStateManager.getTrackingContextForSlot(slotKey), impressionKey ? {'ik': impressionKey} : {}, trackingTreePlacementName ? {'tt_placement': trackingTreePlacementName} : {} ); } /** * Log a impression for the V0 of sponsored hotels integration to the organic list. * Because the list polls and slots can change for each SP, we dont want to over generate * in-view impressions for these hotels. Quick solution: send impressions on clicks * * @param {Element} elem * @private */ function _logImpressionForClickTemp(elem) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey)) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (listing && _enableClientTracking(listing)) { if (listing.isSlotAny() && !listing.hasImpressionFired()) { _shared.sponsoredListingStateManager.fireImpression(listing); } } } } /** * Set a cookie for sponsored listing click-through to /Hotel_Review * so that events on /Hotel_Review can be attributed to this interaction * * @param {Element} elem - the element that was clicked on * @private */ function _setAttributionCookieToHotelReview(elem) { var slotKey = _getSlotKey(elem); if (!_isListingClickRelevant(slotKey)){ return; } var sl =_shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (!sl || !sl.isShowingLocation()) { return; } HotelSponsoredListingTracker.setSponsoredAdCookie(sl.getSlLineItemId(), sl.getAdOpportunityId()); if (shouldUngateSponsoredClicks && localStorage.enabled) { localStorage.set(SPONSORED_LISTING_ID_CLICKED_KEY, sl.getDisplayedLocationId(), SPONSORED_LISTING_ID_CLICKED_EXPIRATION); } } /** * ensure that * - we fire our own Unified User Tracking events based on a click to a BA contact link * * @param {Element} elem - the element that was clicked on * @param {Object|null} token A map of commerce URL params. Note that unlike meta tokens, this is pre-expanded * @param {Function} callback - the function to call after the tracking is complete * @private */ function _logBAWebsiteClick(elem, token, callback) { var slotKey = _getSlotKey(elem); var isCommerce = elem.hasAttribute('data-curl') && elem.getAttribute('data-curl') === 'true'; if (_isListingClickRelevant(slotKey)) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (_enableClientTracking(listing)) { var trackingContext = objutils.extend(_shared.sponsoredListingStateManager.getTrackingContextForSlot(slotKey), { is_commerce : isCommerce, ik : (token && token.ik) } ); trackingStreams.trackUnifiedEvent('paid_backup_sp_ba_website_click', 'action', trackingContext); } } callback(); } /** * ensure that * - we fire the TripAds click event for clicks to H_R on ads that were selected by TripAds * * @param {Element} elem - the element that was clicked on * @param {String} listingKey - UUID that uniquely identifies a hotel listing * @param {Function} callback - the function to call after the tracking is complete (no params) * @private */ function _logClickToHRWithTripAds(elem, listingKey, callback) { _logClickWithTripAds(elem, null, callback); } /** * ensure that * - we fire the TripAds click event for paid clicks on ads that were selected by TripAds * * @param {Element} elem - the element that was clicked on * @param {Object|null} token A mysterious commerce token, if this was a click on a commerce offer (null otherwise) * @param {Function} callback - the function to call after the tracking is complete * @private */ function _logClickWithTripAds(elem, token, callback) { var listing = _getListing(elem); var slotKey; if (listing && _enableClientTracking(listing)) { var slot = listing.getSponsoredSlot(); slotKey = slot.slotKey; if (_isListingClickRelevant(slotKey)) { // if token isn't provided, the user is clicking through to Hotel_Review var isClickToHotelReview = !token; var isMetaPrefClick = _isMetaPrefClick(slotKey, isClickToHotelReview, token); var isPaidSponsoredClick = _isPaidSponsoredClick(slotKey, isClickToHotelReview, isMetaPrefClick); HotelSponsoredListingTracker.recordTripAdsClick(listing, isPaidSponsoredClick, callback); } else { callback(); } } } /** * Determine whether or not we should charge the hotel for a click on the given slot. * * A standard sponsored listing click is always paid. * * A meta preference sponsored listing click is paid if the click goes to /Hotel_Review or if it is a meta pref click. * * @param {String} slotKey The slotKey of the sponsored placement slot in which the listing is rendered _ * @param {boolean} isClickToHotelReview True if this was a click to Hotel_Review, false otherwise * @param isMetaPrefClick True if this was a meta pref click for meta preference lineItem, false otherwise * @returns {boolean} True if we should charge the hotel for this click, false otherwise */ function _isPaidSponsoredClick(slotKey, isClickToHotelReview, isMetaPrefClick) { var sl = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); // Note that we don't charge for clicks on ib/meta for meta preference listings return !!sl && (sl.getSponsoredType() !== META_PREFERENCE_SPONSORED_TYPE || isClickToHotelReview || isMetaPrefClick); } function _isMetaPrefClick(slotKey, isClickToHotelReview, token) { var sl = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); return !!sl && sl.getSponsoredType() === META_PREFERENCE_SPONSORED_TYPE && !isClickToHotelReview && !!token && token.slot === '1'; } /** * Determine if the slot clicked (given by the slot key) is relevant to be tracked * * @param {String} slotKey The slotKey of the sponsored placement slot in which the listing is rendered _ * @returns {boolean} - true if we should track the click for this sponsored listing, false otherwise * @private */ function _isListingClickRelevant(slotKey) { if (slotKey) { return _shared.sponsoredListingStateManager.isShowingLocation(slotKey); } return false; } /** * Given an element, determines the slot name by element (including the case of an offers dropdown overlay element) * @param {Element|null} elem - the clicked element * @returns {String|undefined} slotKey The key of the sponsored placement slot in which the listing is rendered * @private */ function _getSlotKey(elem) { var listing = _getListing(elem); var slotKey; if (listing) { var slot = listing.getSponsoredSlot(); slotKey = slot.slotKey; } return slotKey; } /** * Given an element, determines the listing by element (including the case of an offers dropdown overlay element) * @param {Element|null} elem - the clicked element * @returns {StaticListing|null} listing The listing where the element is rendered or null if it doesn't correspond to any listing * @private */ function _getListing(elem) { var listing = null; if (elem) { listing = _shared.sponsoredListingStateManager.getListingByElement(elem); // In the context of the 'View All Deals' dropdown, we display offers in an overlay that isn't within the listing // element in the DOM, so we need to check that case. if ((!listing) && (_isSponsoredListingOverlayListElement(elem))) { var slotKey = _getSlotKeyFromSponsoredListingOverlayListElement(elem); if (slotKey) { listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); } } } return listing; } /** * In the context of the 'View All Deals' dropdown, we display offers in an overlay that isn't within the listing * element in the DOM. In that case, look for the data attributes on the offer elements themselves. * TODO: We should find a better way to do this. If the unified price drawer rolls out to 100% of traffic, we can remove this special case. * @param {Element|null} elem - the clicked element * @returns {boolean} * @private */ function _isSponsoredListingOverlayListElement(elem) { if (elem && elem.getAttribute('data-sponsoredListing')) { return true; } return false; } /** * Given a sponsored listing overlay list element, returns the slot name * @param {Element|null} elem - the clicked element * @returns {String} slotKey * @private */ function _getSlotKeyFromSponsoredListingOverlayListElement(elem) { var slotKey = ''; var sponsoredListingJson = elem.getAttribute('data-sponsoredListing'); if (!sponsoredListingJson) { return slotKey; } try { var sponsoredListing = JSON.parse(sponsoredListingJson); slotKey = sponsoredListing.slotKey; } catch (error) { trackingStreams.error(error, 'error occurred when parsing sponsored listing json to retrieve a slot name'); } return slotKey; } function _logTrackingServiceListingClick(elem, listingKey, callback) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey)) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (listing && listing.enableTrackingService()) { HotelSponsoredListingTracker.recordTrackingServiceClick(listing, null); } } callback(); } function _logTrackingServiceOfferClick(elem, token, callback) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey)) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (listing && listing.enableTrackingService()) { HotelSponsoredListingTracker.recordTrackingServiceClick(listing, token); } } callback(); } /** * @param {Object|null} token A map of commerce URL params. Note that unlike meta tokens, this is pre-expanded */ function _logTrackingServiceBAClick(elem, token, callback) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey)) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (listing && listing.enableTrackingService()) { HotelSponsoredListingTracker.recordTrackingServiceClick(listing, token); } } callback(); } /** * Copy the same nonsense from _logImpressionForClickTemp because we apparently can't figure out * how to accurately measure impressions in a sane way for Smart Deals Featured Sort. * We should probably fix this eventually * * @param {Element} elem */ function _logTrackingServiceImpressionForClickTemp(elem) { var slotKey = _getSlotKey(elem); if (_isListingClickRelevant(slotKey)) { var listing = _shared.sponsoredListingStateManager.getSponsoredListing(slotKey); if (listing && listing.enableTrackingService()) { if (listing.isSlotAny() && !listing.hasImpressionFired()) { HotelSponsoredListingTracker.recordTrackingServiceImpression(listing); } } } } /** * @return whether to log legacy client-side tracking events (commerce clicks / UUT / TripAds), * either alongside sp-tracking or by themselves * @param {StaticListing?} listing * @private */ function _enableClientTracking(listing) { return listing && (!listing.enableTrackingService() || listing.enableTrackingServiceShadowMode()); } /** * Log an error, both to /JSErrorRecord and UUT, if none of the sponsored listings in this widget's JSON * have been registered with the state manager (which indicates that tracking events won't fire). */ function _verifySPLoaded() { if (_shared.sponsoredListingStateManager && _sponsoredListingsData.length > 0) { if (_sponsoredListingsData.every(function(sponsoredListing) { var slotKey = sponsoredListing.sponsoredPlacementSlot.slotKey; return !_shared.sponsoredListingStateManager.getSponsoredListing(slotKey); })) { trackingStreams.error(‘Sponsored listings were not properly registered in the state manager. Some tracking events may be missing!’); } } } }.bind({})); });require([‘ta/p13n/placements’,’ta/page’,’$prp/background_update_dates/handlers’], function(placements, impl) { window.ta.plc_background_update_dates_handlers = placements.load(‘background_update_dates’,’handlers.js’, { ‘name’: ‘background_update_dates’, ‘id’: ‘taplc_background_update_dates’, ‘location_id’: 294012, ‘servletClass’: ‘com.TripResearch.servlet.hotels.SmartDealsServlet’, ‘servletName’: ‘SmartDeals’, ‘params’: {}, ‘data’: {}});}); require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’hotels_partial_match_header’,’handlers’,[‘handlers’]); /** * Private javascript for partial_match_header widget */ define([“babel/babel-helpers”, “widget”, “common/page-filters”, “common/Radio”], function (babelHelpers, widget, Filters, Radio) { var wcBridgeRadio = Radio(“web-component-data-bridge”); function clearFilters() { require([“babel/babel-helpers”, ‘trjs!common/track-filter’], function (babelHelpers, trackFilters) { trackFilters(‘overall_clear’, ‘unselect_link’, ‘clear_all’, 0); }); Filters.clearAll(); wcBridgeRadio.trigger(“externalClearAll”); window.scrollTo(0, 0); } var clearAllElement = widget.element.querySelector(“.clearAllFilters”); if (clearAllElement) { clearAllElement.addEventListener(“click”, clearFilters); } });});if (require) {require([‘ta/rollupAmdShim’], function(rollupAmdShim) { rollupAmdShim.install([], [“ta”]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],[“ta”]);} }require([‘ta/p13n/placements’,’ta/page’,’$prp/recently_viewed_helper_list/handlers’], function(placements, impl) { window.ta.plc_recently_viewed_helper_list_sem_handlers = placements.load(‘recently_viewed_helper_list’,’handlers.js’, { ‘name’: ‘recently_viewed_helper_list:sem’, ‘id’: ‘taplc_recently_viewed_helper_list_sem’, ‘location_id’: 294012, ‘servletClass’: ‘com.TripResearch.servlet.hotels.SmartDealsServlet’, ‘servletName’: ‘SmartDeals’, ‘params’: {}, ‘data’: {}});}); define(“cpm/AdBlockDetect”, [“lib/jquery-amd”,”utils/browserutils”,”ta/Core/TA.Event”,”ta/Core/TA.Record”,”ta/util/Error”], function( $, Browser, taEvent, taRecord, taError) { ‘use strict’; var exports = {}; var _testImg; var DEFAULT_LABEL = “ab_chk”; var _isPixelLoadError; var _logged = false; var _cdn = window.CDNHOST || “”; var _pixelUrl = “/img2/x.gif?&ads=1&adsize=2&adslot=3&rnd=”; var _generatePixel = function() { var rnd = Math.floor(Math.random() * 100000); return $(‘‘); }; var _getAdCount = function() { var count = document.querySelectorAll(“.gptAd:not(.inactive)”).length; if (screen.width < 768) { count += document.querySelectorAll(".inline_ad_wrapper").length; } return count; }; var _log = function(blocked, trackingLabel, trackUnblocked){ if ((!_logged && trackingLabel === DEFAULT_LABEL) || (trackingLabel && trackingLabel !== DEFAULT_LABEL)){ if (blocked || trackUnblocked) { taRecord.trackEventOnPage(trackingLabel, Browser.name, blocked, _getAdCount(), false); } _logged = true; } }; var _detect = function(onDetectedHandler, trackingLabel, trackUnblocked, isLoadError){ if (typeof isLoadError != undefined) { _isPixelLoadError = isLoadError; } if (_testImg){ var blocked = _isPixelLoadError ? true : !_testImg[0].offsetParent; _log(blocked, trackingLabel, trackUnblocked); if (blocked) { onDetectedHandler(); } } }; exports.runIfDetected = function(onDetectedHandler, trackingLabel, trackUnblocked) { if ( typeof onDetectedHandler != "function") { taError.record(null, "runIfDetected requires a function"); return; } taEvent.queueForLoad( function() { _logged = false; if (_testImg) { _detect(onDetectedHandler, trackingLabel, trackUnblocked); } else { _testImg = _generatePixel(); _testImg.on("load", function(){ _detect(onDetectedHandler, trackingLabel, trackUnblocked, false); }); _testImg.on("error", function(){ _detect(onDetectedHandler, trackingLabel, trackUnblocked, true); }); $("body").append(_testImg); } }, "AdBlockDetect"); }; return exports; }); require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'ab_chk','handlers',['handlers']); /* * ADS-3472: ad blocker detection running permanently on sales drs 99 * Works in Chrome, Firefox, Safari & IE. */ define(["placement","cpm/AdBlockDetect"], function(placement,abDetect) { // a fn is required, abDetect.runIfDetected(function(){}, "ab_chk", true); }); });require(['ta/p13n/placements','ta/page','$prp/ab_chk/handlers'], function(placements, impl) { window.ta.plc_ab_chk_handlers = placements.load('ab_chk','handlers.js', { 'name': 'ab_chk', 'id': 'taplc_ab_chk', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'params': {}, 'data': {}});}); if (require) {require(['ta/rollupAmdShim'], function(rollupAmdShim) { rollupAmdShim.install([], ["ta/util/RecordInterruption"]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],["ta/util/RecordInterruption"]);} } window.ta || (window.ta = {}); define('ta/util/RecordInterruption', ['vanillajs', 'ta/Core/TA.Record', 'ta/util/Error'], function(vanilla, track, error) { 'use strict'; var GA_REC_MODULE = 'interruption_record'; var VALID_TYPES = [ 'popup', 'popunder', 'gate', 'other' ]; var _err = function(msg, eobj) { error.record(eobj, msg, null, null); }; var _isValidType = function(type) { for (var i = 0; i SCROLL_BUFFER) { $(surveyContainerClassName).hide(); } }; $(window).on('scroll', throttle(hide, 100)); } var surveyRadio = Radio("QualtricsSurvey"); // use radio so this functionality can be added to WC footer easily window.addEventListener("qsi_js_loaded", function() { // this event is fired when the Qualtrics external JS has finished loading if (surveyRadio.requestAny("shouldSuppress", true)) { $(surveyContainerClassName).hide(); } }); surveyRadio.on("hide", function() {$(surveyContainerClassName).hide();}); surveyRadio.on("show", function() {$(surveyContainerClassName).show();}); } } }); return { }; }); });require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'dual_search_dust','handlers',['deferred/lateHandlers','handlers']); /** * Private javascript for dual_search placement */ define(["placement", "lib/jquery-amd", "ta/Core/TA.Store", 'ta/Core/TA.Event', "typeahead/TypeAhead.views" /*this needs to be here when the placement is, even though we don't use it here */ ], function (placement, $, taStore, taEvent, typeAheadViews) { if (placement.params && 'typeahead_to_store' in placement.params) { var propertiesToStore = placement.params['typeahead_to_store']; if (propertiesToStore) { for (var property in propertiesToStore) { if (propertiesToStore.hasOwnProperty(property)) { taStore.store(property, propertiesToStore[property]); } } } } focusOnWrapperClick('GEO_SCOPE_CONTAINER', 'GEO_SCOPED_SEARCH_INPUT'); focusOnWrapperClick('MAIN_SEARCH_CONTAINER', 'mainSearch'); /** * allows to focus the corresponding input when its wrapper is clicked (wrapper is wider and taller than the input) */ function focusOnWrapperClick(wrapperId, inputId) { $('#' + wrapperId).on('click', function(e) { // If the click target is the input element, let the browser handle it, so we don't trigger focus twice. if ($(e.target).closest('#' + inputId).length == 0) { $('#' + inputId).focus(); } }); } var options = taStore.retrieve("typeahead_dual_search_options"); function _popAutoTooltip() { if (!options.autoTooltip || !taStore.retrieve("isFirstSessionPageView") || !window.require) { return; } var reqs = ['trjs!overlays/Overlay', 'trjs!overlays/position', 'trjs!overlays/styles/popover', 'trjs!overlays/options/maxWidth', 'trjs!overlays/options/repositionOnEvent' ]; require(reqs, function (Overlay, Position, Style, MaxWidth, Reposition) { var searchButton = document.getElementById("SEARCH_BUTTON"); var mixins = [ Position && Position['below'] && Position['below']([], false), Style && Style(searchButton, 'below', "dark small", " ", options.autoTooltip), MaxWidth && MaxWidth(220), ]; var overlay = new Overlay(searchButton, mixins); if (overlay) { // pop tooltip immediately overlay.show() } }); } if (document.activeElement === $("#GEO_SCOPED_SEARCH_INPUT")[0]) { placement.require(["trjs!deferred/lateHandlers"], function (lh) { lh.whereFocused({type: "dummy"}, document.activeElement); }); } else if (document.activeElement === $("#mainSearch")[0]) { placement.require(["trjs!deferred/lateHandlers"], function (lh) { lh.whatFocused({type: "dummy"}, document.activeElement); }); } else if (options && options.autoTooltip) { taEvent.queueForLoad(_popAutoTooltip, "dual_search auto tooltip"); } return { getOptions: function () { return options; } }; }); }); define('mixins/page-dates/picker-autoadvance', [ 'mixins/page-dates/DateTypeStore', 'mixins/page-dates/picker-autoadvance-utils', 'utils/domUtils' ], function( DateType, autoadvanceUtils, domUtils ) { 'use strict'; var _advancedToType = null; function apply(parentElement, autofillMissingDates, alwaysAdvanceFromStartDate) { var taPage = ta.page; taPage && taPage.on('dateSelected', function selected(target, dateType, date) { if (!domUtils.isOrContainsElement(document.body, parentElement)) { taPage.off('dateSelected', selected); return; } if (!target) { return; } if (!domUtils.isOrContainsElement(parentElement, target)) { return; } var otherType = DateType.getCorrespondingDateType(dateType); if (!otherType) { return; } var isStartDate = DateType.isStartDateType(dateType); var shouldAutoAdvance = !taPage.hasDates(otherType) || (alwaysAdvanceFromStartDate && isStartDate && dateType !== _advancedToType); if (shouldAutoAdvance) { if (autofillMissingDates && !taPage.hasDates(otherType) && Array.isArray(date)) { var autoDate = new Date(date[0].getFullYear(), date[0].getMonth(), date[0].getDate() + (isStartDate ? 1 : -1)); taPage.pushDates(null, otherType, [autoDate]); } var otherPicker = parentElement.querySelector('[data-datetype="' + otherType + '"]'); if (otherPicker) { _advancedToType = otherType; autoadvanceUtils.keepOverlayOpenOnSelection(target); setTimeout(taPage.gatherDates.bind(taPage, otherPicker)); } } }); } return { apply: apply }; }); require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'datepickers_desktop_horizontal_styleguide_icon','handlers',['handlers']); define(['widget', 'vanillajs', 'api-mod', 'ta/Core/TA.Event', 'mixins/page-dates/picker-autoadvance', 'mixins/page-dates/default-dates'], function(widget, vanilla, api, taEvent, pickerAutoadvance, DefaultDates) { 'use strict'; var _checkinElement = api.find('[data-datetype=CHECKIN]', widget.element) , _checkoutElement = api.find('[data-datetype=CHECKOUT]', widget.element) ; function _setDateLabel(target, date) { var label; var dateFormat = target.getAttribute('data-dateFormat'); if (!date) { label = target.getAttribute('data-emptyText'); } else { label = ta.i18n.formatDate(dateFormat, date); } api.find('.picker-inner .picker-label', target).firstChild.nodeValue = label; /* HOT-4599 */ } function _onDateSelected(target, dateType, date) { // Clean up if the widget is no longer in the document. if (!api.inDocument(widget.element)) { ta.page.removeListener('dateSelected', _onDateSelected); _checkinElement = null; _checkoutElement = null; return; } if (dateType === 'CHECKIN') { _setDateLabel(_checkinElement, date[0]); } else if (dateType === 'CHECKOUT') { _setDateLabel(_checkoutElement, date[0]); } else if (dateType === 'STAYDATES') { _setDateLabel(_checkinElement, date[0]); _setDateLabel(_checkoutElement, date[1]); } } /* HOT-8985 */ function _onDatePickerClick(elmt, defer_search) { if (!elmt) { return; } var calendarFlyout = elmt.getParent(".calendarFlyout"); if (calendarFlyout) { var deferred = calendarFlyout.deferred, // arbitrary property, set in DesktopStayDate. calendarWrapper = calendarFlyout.getElement('.calendarWrapper'); if (deferred && calendarWrapper) { deferred.reject(); ta.page.gatherDates(elmt, calendarWrapper, defer_search); return; } } ta.page.gatherDates(elmt, null, defer_search); } taEvent.queueForLoad(function() { ta.page.on('dateSelected', _onDateSelected); pickerAutoadvance.apply(widget.element); DefaultDates.apply(widget.element); }, 'datepicker widget handlers'); return { onDatePickerClick: _onDatePickerClick }; }); });require(['ta/p13n/placements','ta/page','$prp/hotels_leaf_geo_list/handlers'], function(placements, impl) { window.ta.plc_hotels_leaf_geo_list_smart_deals_responsive_broad_0_handlers = placements.load('hotels_leaf_geo_list','handlers.js', { 'name': 'hotels_leaf_geo_list:smart_deals_responsive_broad', 'occurrence': 0, 'id': 'taplc_hotels_leaf_geo_list_smart_deals_responsive_broad_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/map_wc_dusty_bridge/handlers'], function(placements, impl) { window.ta.plc_map_wc_dusty_bridge_sd_0_handlers = placements.load('map_wc_dusty_bridge','handlers.es6', { 'name': 'map_wc_dusty_bridge:sd', 'occurrence': 0, 'id': 'taplc_map_wc_dusty_bridge_sd_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/filters_wc_dusty_bridge/handlers'], function(placements, impl) { window.ta.plc_filters_wc_dusty_bridge_sd_0_handlers = placements.load('filters_wc_dusty_bridge','handlers.es6', { 'name': 'filters_wc_dusty_bridge:sd', 'occurrence': 0, 'id': 'taplc_filters_wc_dusty_bridge_sd_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/dh_sort_filter_entry_wc_bridge/handlers'], function(placements, impl) { window.ta.plc_dh_sort_filter_entry_wc_bridge_smart_deals_responsive_0_handlers = placements.load('dh_sort_filter_entry_wc_bridge','handlers.es6', { 'name': 'dh_sort_filter_entry_wc_bridge:smart_deals_responsive', 'occurrence': 0, 'id': 'taplc_dh_sort_filter_entry_wc_bridge_smart_deals_responsive_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hsx_special_messaging/handlers'], function(placements, impl) { window.ta.plc_hsx_special_messaging_SmartDeals_0_handlers = placements.load('hsx_special_messaging','handlers.js', { 'name': 'hsx_special_messaging:SmartDeals', 'occurrence': 0, 'id': 'taplc_hsx_special_messaging_SmartDeals_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hotels_error_message/handlers'], function(placements, impl) { window.ta.plc_hotels_error_message_smart_deals_responsive_0_handlers = placements.load('hotels_error_message','handlers.js', { 'name': 'hotels_error_message:smart_deals_responsive', 'occurrence': 0, 'id': 'taplc_hotels_error_message_smart_deals_responsive_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {"containerClass":"boldError"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hotels_loading_box/handlers'], function(placements, impl) { window.ta.plc_hotels_loading_box_dusty_smart_deals_responsive_0_handlers = placements.load('hotels_loading_box','handlers.js', { 'name': 'hotels_loading_box:dusty_smart_deals_responsive', 'occurrence': 0, 'id': 'taplc_hotels_loading_box_dusty_smart_deals_responsive_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hsx_hotel_list_lite/handlers'], function(placements, impl) { window.ta.plc_hsx_hotel_list_lite_smart_deals_responsive_sponsored_0_handlers = placements.load('hsx_hotel_list_lite','handlers.js', { 'name': 'hsx_hotel_list_lite:smart_deals_responsive_sponsored', 'occurrence': 0, 'id': 'taplc_hsx_hotel_list_lite_smart_deals_responsive_sponsored_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hsx_hotel_list_lite/handlers'], function(placements, impl) { window.ta.plc_hsx_hotel_list_lite_smart_deals_ab_responsive_0_handlers = placements.load('hsx_hotel_list_lite','handlers.js', { 'name': 'hsx_hotel_list_lite:smart_deals_ab_responsive', 'occurrence': 0, 'id': 'taplc_hsx_hotel_list_lite_smart_deals_ab_responsive_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hotels_list_monitoring/handlers'], function(placements, impl) { window.ta.plc_hotels_list_monitoring_sem_0_handlers = placements.load('hotels_list_monitoring','handlers.es6', { 'name': 'hotels_list_monitoring:sem', 'occurrence': 0, 'id': 'taplc_hotels_list_monitoring_sem_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/resp_h_view_more_hotels/handlers'], function(placements, impl) { window.ta.plc_resp_h_view_more_hotels_sem_responsive_0_handlers = placements.load('resp_h_view_more_hotels','handlers.js', { 'name': 'resp_h_view_more_hotels:sem_responsive', 'occurrence': 0, 'id': 'taplc_resp_h_view_more_hotels_sem_responsive_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/price_disclaimer/handlers'], function(placements, impl) { window.ta.plc_price_disclaimer_smart_deals_responsive_0_handlers = placements.load('price_disclaimer','handlers.es6', { 'name': 'price_disclaimer:smart_deals_responsive', 'occurrence': 0, 'id': 'taplc_price_disclaimer_smart_deals_responsive_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hotels_native_video_ads_tracking/handlers'], function(placements, impl) { window.ta.plc_hotels_native_video_ads_tracking_dusty_sem_responsive_0_handlers = placements.load('hotels_native_video_ads_tracking','handlers.es6', { 'name': 'hotels_native_video_ads_tracking:dusty_sem_responsive', 'occurrence': 0, 'id': 'taplc_hotels_native_video_ads_tracking_dusty_sem_responsive_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/xsell_wc_dusty_bridge/handlers'], function(placements, impl) { window.ta.plc_xsell_wc_dusty_bridge_0_handlers = placements.load('xsell_wc_dusty_bridge','handlers.es6', { 'name': 'xsell_wc_dusty_bridge', 'occurrence': 0, 'id': 'taplc_xsell_wc_dusty_bridge_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/facebook_autologin/handlers'], function(placements, impl) { window.ta.plc_facebook_autologin_0_handlers = placements.load('facebook_autologin','handlers.js', { 'name': 'facebook_autologin', 'occurrence': 0, 'id': 'taplc_facebook_autologin_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/h_hr_refresh_rates_prompt/handlers'], function(placements, impl) { window.ta.plc_h_hr_refresh_rates_prompt_smart_deals_responsive_0_handlers = placements.load('h_hr_refresh_rates_prompt','handlers.js', { 'name': 'h_hr_refresh_rates_prompt:smart_deals_responsive', 'occurrence': 0, 'id': 'taplc_h_hr_refresh_rates_prompt_smart_deals_responsive_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["deferred/popper","trcss!deferred/prompt","handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav/handlers'], function(placements, impl) { window.ta.plc_global_nav_0_handlers = placements.load('global_nav','handlers.js', { 'name': 'global_nav', 'occurrence': 0, 'id': 'taplc_global_nav_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["deferred/lateHandlers","handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_links/handlers'], function(placements, impl) { window.ta.plc_global_nav_links_0_handlers = placements.load('global_nav_links','handlers.js', { 'name': 'global_nav_links', 'occurrence': 0, 'id': 'taplc_global_nav_links_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {"geopillOnHome":false}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_dropdowns/handlers'], function(placements, impl) { window.ta.plc_global_nav_dropdowns_0_handlers = placements.load('global_nav_dropdowns','handlers.js', { 'name': 'global_nav_dropdowns', 'occurrence': 0, 'id': 'taplc_global_nav_dropdowns_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_action_inbox/handlers'], function(placements, impl) { window.ta.plc_global_nav_action_inbox_empty_0_handlers = placements.load('global_nav_action_inbox','handlers.js', { 'name': 'global_nav_action_inbox:empty', 'occurrence': 0, 'id': 'taplc_global_nav_action_inbox_empty_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/hsx_h1/handlers'], function(placements, impl) { window.ta.plc_hsx_h1_smart_deals_0_handlers = placements.load('hsx_h1','handlers.js', { 'name': 'hsx_h1:smart_deals', 'occurrence': 0, 'id': 'taplc_hsx_h1_smart_deals_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {"additionalClass":"responsive corgi"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/masthead_search/handlers'], function(placements, impl) { window.ta.plc_masthead_search_empty_0_handlers = placements.load('masthead_search','handlers.js', { 'name': 'masthead_search:empty', 'occurrence': 0, 'id': 'taplc_masthead_search_empty_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["deferred/lateHandlers","handlers"], 'params': {"typeahead_to_store":{"typeahead_new_location_label":"NEW LOCATION","typeahead.aliases.travel_insurance":["insurance","travel insurance","trip insurance","annual travel insurance"],"typeahead.aliases.flight_reviews":["flight reviews","airline reviews"],"typeahead_throttle_requests":"true","typeahead.aliases.rental_cars":["Rental Cars","Car Rentals"],"typeahead_cruise_ships_enabled":"true","typeahead.aliases.activities":["Tours and Tickets","Tours & Tickets"],"typeahead.aliases.things_to_do":["Things to do","Thing to do","attractions","activities","what to do","sightseeing","Sights","Tourist Attractions","Activity","Attraction","What to see","Where to go","Where to visit","Best Attractions","Best Things to do","Best Tourist Attractions","Best Sightseeing","Top Attractions","Top Things to do","Top Tourist Attractions","Top Sightseeing","Top 10 Attractions","Top 10 Things to do","Top 10 Tourist Attractions","Top 10 Sightseeing"],"typeahead.enable_nearby":true,"typeahead_cruise_cruiselines_enabled":"true","typeahead_divClasses":null,"typeahead.scoped.cur_loc_denied":"Tripadvisor was denied permission to access your location. Give your browser and Tripadvisor permission to use your current location and try again.","typeahead.scoped.cur_loc":"Nearby","typeahead.aliases.travel_forums":["forum","forums","Travel Forum","Travel Forums"],"typeahead.aliases.travel_guides":["guides","city guides"],"typeahead.aliases.vacation_rentals":["vacation rentals","vacation rental","Airbnb","Holiday rental","Holiday rentals"],"typeahead.aliases.flights":["Flights","Flight","Flight to","flights to","nonstop flights","business class flights","return flights","airline flights","air flights","cheap flights","flight from","cheapest flights","flight only","one way flights","direct flights","domestic flights","air fare","cheap flights to","air flights to","airline flights to","business class flights to","cheapest flights to","direct flights to","domestic flights to","nonstop flights to","one way flights to","air fares","airfare","airfares","air fare to","air fares to","airfare to","airfares to"],"typeahead_moved_label":"MOVED","typeahead_dual_search_options":{"geoID":294012,"bypassSearch":true,"staticTypeAheadOptions":{"minChars":3,"defaultValue":"Search","injectNewLocation":true,"typeahead1_5":true,"geoBoostFix":true},"debug":false,"navSearchTypeAheadEnabled":true,"isMobileWeb":false,"geoInfo":{"geoId":294012,"geoName":"United Arab Emirates","parentName":"Middle East","shortParentName":"Middle East","categories":{"GEO":{"url":"/Tourism-g294012-United_Arab_Emirates-Vacations.html"},"HOTEL":{"url":"/Hotels-g294012-United_Arab_Emirates-Hotels.html"},"VACATION_RENTAL":{"url":"/VacationRentals-g294012-Reviews-United_Arab_Emirates-Vacation_Rentals.html"},"ATTRACTION":{"url":"/Attractions-g294012-Activities-United_Arab_Emirates.html"},"EATERY":{"url":"/Restaurants-g294012-United_Arab_Emirates.html"},"FLIGHTS_TO":{"url":"/Flights-g294012-United_Arab_Emirates-Cheap_Discount_Airfares.html"},"CAR_RENTAL_OFFICE":{"url":"/RentalCars_Review?detail=294012"}}}},"typeahead_closed_label":"CLOSED","typeahead.scoped.all_of_trip":"Worldwide","typeahead_attraction_activity_search":"true","typeahead.aliases.hotels":["hotels","hotel","lodging","places to stay","where to stay","accommodation","accommodations","hotel reviews","Hotels & Motels","Best Hotels","Best Places to Stay","Best Lodging","Best Hotels & Motels","Lodgings","Place to stay","Top Hotels","Top Places to Stay","Top Lodging","Top Hotels & Motels","Top 10 Hotels","Top 10 Places to Stay","Top 10 Lodging","Top 10 Hotels & Motels"],"typeahead.aliases.restaurants":["food","places to eat","eateries","dining","restaurants","restaurant","Place to eat","Eatery","Where to eat","What to eat","Best Restaurants","Best Places to Eat","Best Food","Best Dining","Top Restaurants","Top Places to Eat","Top Food","Top Dining","Top 10 Restaurants","Top 10 Places To Eat","Top 10 Food","Top 10 Dining"],"typeahead.searchMore.v2":"Search for "%"","typeahead.searchSessionId":"EEA44D609E804877BED003847F2810EB1689304505441ssid"}}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/browser_mode_tracking/handlers'], function(placements, impl) { window.ta.plc_browser_mode_tracking_0_handlers = placements.load('browser_mode_tracking','handlers.js', { 'name': 'browser_mode_tracking', 'occurrence': 0, 'id': 'taplc_browser_mode_tracking_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/qualtrics_survey/handlers'], function(placements, impl) { window.ta.plc_qualtrics_survey_0_handlers = placements.load('qualtrics_survey','handlers.js', { 'name': 'qualtrics_survey', 'occurrence': 0, 'id': 'taplc_qualtrics_survey_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/masthead_h1/handlers'], function(placements, impl) { window.ta.plc_masthead_h1_dusty_sem_0_handlers = placements.load('masthead_h1','handlers.js', { 'name': 'masthead_h1:dusty_sem', 'occurrence': 0, 'id': 'taplc_masthead_h1_dusty_sem_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/trip_planner_breadcrumbs/handlers'], function(placements, impl) { window.ta.plc_trip_planner_breadcrumbs_0_handlers = placements.load('trip_planner_breadcrumbs','handlers.js', { 'name': 'trip_planner_breadcrumbs', 'occurrence': 0, 'id': 'taplc_trip_planner_breadcrumbs_0', 'location_id': 294012, 'servletClass': 'com.TripResearch.servlet.hotels.SmartDealsServlet', 'servletName': 'SmartDeals', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/prwidgets', 'ta/page'], function(prwidgets) { prwidgets.initWidgets(document); }); ]]>



    Source

    Leave a Reply

    Your email address will not be published. Required fields are marked *