B&B GRILL, Angeles City – Restaurant Reviews, Photos & Phone Number


B&B GRILL, Angeles City – Restaurant Reviews, Photos & Phone Number – Tripadvisor =0&&o1e12?new Date:performance.now())-t.timeStamp;”pointerdown”==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){[“click”,”mousedown”,”keydown”,”touchstart”,”pointerdown”].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);]]>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”:”Restaurant_Review”,”sessionId”:”344EB8867B884881A1F07CBE7A6ADFD8″,”cdnHost”:”https://static.tacdn.com”,”quickSave”:true,”isExternalReferral”:true,”useERUserTracking”:true,”cookieDomain”:”.tripadvisor.com”,”uid”:”YOaoagokLG8AANqbONYAAANO”,”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!ACFThmPq+W3uc/ANxOt/EM7N+QN4wVfpkHuW2e1GndRDdM2cQc8JgRvwwmCdbOlTsTca9EerAG3wON/8Xo/cFoCdSOgAtWiAgJNHaSmpAxZn+EEFRwFTpiuCZTZqCjsXSzka4SAU2i0X9IxFRm9I8vkX7hG1w3ahQWkZ46nynAKD”,”GEO_ID”:”469410″,”hotelsInGeo”:”121″,”LOC_ID”:”10174721″,”isMobile”:false,”isRtl”:false}; });]]> 200&&(c=c.substring(0,Math.min(c.length,200))+”…”),i.withScope(function(e){e.setTag(“logger”,n),e.setExtra(“jQueryEvent”,c),i.captureException(a)})}else i.withScope(function(e){e.setTag(“logger”,n),i.captureException(r)})}else o&&setTimeout(function(){t(e,r,n,!1)},1e4)}function n(){require([“ta/util/Error”],function(r){for(;g.length;){var n=g.shift();n.msg.match(/(^|[^w.])ta .*defin/)||(r.record(n.error,”window.onerror:: “+n.msg,n.evt,n.data,e(n.error),{isglobal:!0}),t(n.msg,n.error,”PageLoad”,!0))}s=!0})}function o(){l=null,E=!1,d=u=null}function i(e,t,n,i,a,c){var f=c&&c.target;if(E){if((!d||a&&a.stack)&&(d=a),!w)try{w=arguments.callee}catch(e){}l?f=l:(!f||u&&f==window)&&(f=u),r(e,t,n,i,d,{target:f,callee:w}),o()}else{d=a,E=!0,u=f;try{w=arguments.callee}catch(e){}}}function a(e){e=e||window.event,i(e.message,e.filename,e.lineno,e.colno,e.error||e,e)}function c(e){e=e||window.event,l=e.target||e.srcElement,f&&clearTimeout(f),f=setTimeout(function(){f=0,l=null},1)}var d,u,l,w,f,s=!1,g=[],E=!1;window.__scriptLoadError=function(e,r){if(e instanceof HTMLScriptElement){var t=e.getAttribute(“data-rup”);if(t){r&&window.define&&window.define(t,[],function(){return{}});var n=new Error(“Error loading script tag for: “+t);throw n.level=”WARN”,n}}},window.onerror=function(e,r,t,n,o){return i(e,r,t,n,o,window.event),!window.IS_DEBUG},window.addEventListener?(window.addEventListener(“error”,a,!1),window.addEventListener(“click”,c,!0),window.addEventListener(“load”,n)):window.attachEvent&&(window.attachEvent(“onerror”,a),document.attachEvent(“onmouseup”,c),window.attachEvent(“onload”,n))}(); !function(){var e,n,t=0,a=5e3;window.uiOverlay=function(l){if(document.readyState in{complete:1,loaded:1}){var i=arguments;require([“trjs!overlays/uiOverlay”],function(e){e.apply(null,i)})}else document.addEventListener&&(e=[].slice.call(arguments),t=(new Date).getTime(),n||(n=!0,document.addEventListener(“DOMContentLoaded”,function(){Date.now()-t

Details

CUISINES

Filipino, Barbecue, Grill, Bar, Asian, Pub

Meals

Dinner, Late Night, Drinks

FEATURES

Parking Available, Street Parking, Free off-street parking, Television, Serves Alcohol, Full Bar, Wine and Beer, Cash Only, Free Wifi, Takeout, Reservations, Outdoor Seating, Seating, Wheelchair Accessible, Table Service

Is this restaurant appropriate for Kids?Yes No Unsure

Is this restaurant good for lunch?Yes No Unsure

Is this a fast food place?Yes No Unsure

Is this a Steakhouse? Yes No Unsure

Is this restaurant good for special occasions?Yes No Unsure

Is this restaurant family-friendly?Yes No Unsure

Is this restaurant good for large groups?Yes No Unsure

Does this restaurant offer table service?Yes No Unsure

Are the prices at this restaurant mid-range / moderate?Yes No Unsure

Does this restaurant accept reservations?Yes No Unsure

See what travelers are saying:

Selected filters

FilterEnglish Reviewed April 29, 2019 via mobile

We went here after work. So much variety on their menu. Price is so inexpensive. Service and cleanliness is ok too. Felt like friday on a monday.

Date of visit: April 2019

Helpful? Reviewed January 15, 2019

We ate here so many times I’m sure they think we are stalking them! Great and extensive menu, ice cold beer, laid back atmosphere, always a nice crowd. Have been here several times already and will be back again for more. Outside venue but haven’t…been pestered with flies here. Just can’t recommend this place enough!More

Date of visit: January 2019

Helpful? Reviewed December 1, 2018 via mobile

Going there is a bit traffic, I was having second thought going, upon arriving parking is a challenge, the restaurant is fully occupied, after few mins we finally seated, serving time is impressive! All the food is just perfect! I wish we had this restaurant…in Sta Rosa Laguna! Great food!More

Date of visit: December 2018

Helpful?1   Reviewed October 16, 2018 via mobile

The crispy pata is just amazing! Not oily, really crisp ajd flavorful. The only miss is the waiting time. A lot of people come here. It is not expensive and thw food is really good. Beer is fresh, but not cold. At least not the…local. If you are ok with having beer with ice, then hit the place.More

>

Date of visit: October 2018

Helpful? Reviewed October 10, 2018

We ate here after our day trip to Subic Ocean Adventure. The food was great…they just don’t sell Barbeque. We ordered patatim, kare kare, hamburger, fettuccini. That’s how diverse the menu was. Service was great, We were a party of 10. Everything we ordered was…great and the portions were big as we still had leftovers to bring home. Will definitely return when we are there again next May.More

Date of visit: June 2018

Helpful? Reviewed October 7, 2018

This is another hugely popular restaurant within walking distance to our apartment. We ventured there due to how busy it was most every night and thought it must be good. I really haven’t got much to say except WHY ? It is just ordinary barbecue…food with less than ordinary service and zero atmosphere. I am wondering how hard it must be to throw a piece of chicken, pork or fish on to an open grill and serve it dried and flavourless on a plate with not much else to go with it. Just do not order anything involving sheep (e..g. Lamb), if it says lamb it is more than likely mutton and mine was bone and gristle and fat, still looking for the meat. The people next to us have frankfurters on a stick done on the barbecue. But who am I to argue with the throng of people visiting every night. Definitely will not venture back here to be insulted with what they call barbecue.More

Date of visit: September 2018

Helpful? Reviewed April 13, 2018 via mobile

This is a good reason to be friendly with hotel staff. Was craving pork bbq and the concierge staff suggested this spot! Had pork bbq, bbq tocino, isaw manok (chicken intestines), and lumpia Shanghai. The mango shake was delicious! The bbq was exactly what I…hoped it would be. It is also a locals place so being away from the tourist crowds was refreshing. Definitely will come back!.More

Date of visit: April 2018

Helpful? Reviewed March 25, 2018 via mobile

Not that fanastic. Limited range of meat for barbecue. Hardly any fish to grill. We ordered lamb ribs and found them to be very tough. The beer was cheap. We had six bottles of Tiger Beer for 200 pesos.

Date of visit: March 2018

Helpful? Reviewed December 18, 2017 via mobile

Nice bbq and beer. Best part is their low pricing and fast service. Most locals come here and enjoy the grilled dishes and cold brews.

Date of visit: December 2017

Helpful? Reviewed November 14, 2017 via mobile

So far the best bbq house we’ve visited in Angeles. the BBQ and the sauce is beyond compare. Service is fast. They have enough staff to take orders. Place is large enough to accomodate a good number of customers. Lastly, very affordable. place…is a bit noisy but you have to understand that its a bbq grill house. Overall, I recommend the place. You’ll never go wrong with their bbq.More

Date of visit: October 2017

Helpful?

View more reviews

Is This Your Listing?

Own or manage this property? Claim your listing for free to respond to reviews, update your profile and much more.

Claim Your Free Listing

Frequently Asked Questions about B&B Grill

Yes, B&B Grill offers takeout services.

Yes, B&B Grill offers delivery services.

B&B Grill is rated accordingly in the following categories by Tripadvisor travelers:
  • Food: 3
  • Service: 3.5
  • Value: 3.5
0){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;i
0&&”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(“ta/Core/TA.PageVisibility”,[“vanillajs”],function(e){“use strict”;function n(){a=!1;for(var e in s)s.hasOwnProperty(e)&&s[e]()}function t(){a=!0;for(var e in f)f.hasOwnProperty(e)&&f[e]()}function d(){var e=document[c]?f:s;for(var n in e)e.hasOwnProperty(n)&&e[n]()}function i(){“undefined”==typeof document[c]?document.addEventListener?(document.addEventListener(“focus”,n,!1),document.addEventListener(“blur”,t,!1)):(document.attachEvent(“onfocus”,n),document.attachEvent(“onblur”,t)):document.addEventListener(r,d),m=!0}function o(){“undefined”==typeof document[c]?document.removeEventListener?(document.removeEventListener(“focus”,n,!1),document.removeEventListener(“blur”,t,!1)):(document.detachEvent(“onfocus”,n),document.detachEvent(“onblur”,t)):document.removeEventListener(r,d),a=!1,m=!1}function u(e,n){var t=e.indexOf(n);return t>=0?e.splice(t,1):null}var c,r,f=[],s=[],m=!1,a=!1;return”undefined”!=typeof document.hidden?(c=”hidden”,r=”visibilitychange”):”undefined”!=typeof document.mozHidden?(c=”mozHidden”,r=”mozvisibilitychange”):”undefined”!=typeof document.msHidden?(c=”msHidden”,r=”msvisibilitychange”):”undefined”!=typeof document.webkitHidden&&(c=”webkitHidden”,r=”webkitvisibilitychange”),{addFocusListener:function(e){s.push(e),m||i()},addBlurListener:function(e){f.push(e),m||i()},removeFocusListener:function(e){e?u(s,e):s.length=0,0===s.length&&0===f.length&&o()},removeBlurListener:function(e){e?u(f,e):f.length=0,0===s.length&&0===f.length&&o()},hidden:function(){return”undefined”!=typeof document.hidden?document.hidden:a}}}); define(“utils/bounceRateUtils”,[“ta/Core/TA.PageVisibility”,”common/trackingStreams”,”ta/Core/TA.LocalStorage”,”ta/util/SessionStorage”,”page-model”],function(e,t,n,r,a){“use strict”;function i(t){if(t&&t.length&&n.canUseSession()&&r.canUseSessionStore()){S=t;var i=c(t),f=a.session.hasReferral,g=f&&a.session.isExternalReferral,j=!window.performance||!performance.navigation||0===performance.navigation.type,v=!f&&j;if(v||g||!i)o(t),s(t,0);else if(!O(S)){var d=r.getObject(h);null!==d&&0!==d||(d=Date.now()-r.getObject(m)),r.setObject(m,Date.now()),s(t,d)}O(S)||(e.addFocusListener(l),e.addBlurListener(b),n.onValueChange(w,u))}}function o(e){r.setObject(d,v()),r.setObject(m,Date.now()),r.setObject(h,0);for(var t=0;t0&&(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(“lib/jquery-amd”,[],function(){return window.Zepto||ta.jquery||window.jQuery}); define(“mixins/mixin”,[],function(){“use strict”;return function(r){var i,n,t=Array.prototype.slice.call(arguments,1);for(var e in t)if(t.hasOwnProperty(e)){i=t[e];for(n in i)r[n]=i[n]}return r}}); define(“common/Radio”,[“babel/babel-helpers”],function(e){var t={},n=/s+/,r=function(){function t(n){e.classCallCheck(this,t),this.channel=n,this.events={},this.replies={}}return e.createClass(t,[{key:”reply”,value:function(e,t,r){var i=this;return e.split(n).forEach(function(e){i.replies[e]||(i.replies[e]=[]),i.replies[e].push({callback:t,context:r||i})},this),this}},{key:”request”,value:function(e){if(!this.replies[e])return null;var t=this.replies[e];t=t[t.length-1];for(var n=arguments.length,r=Array(n>1?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([\s\S]*?)”:”]+)?>”;return t.replace(new RegExp(o,”gi”),””)},exports}); define(“ta/util/Object”,[“vanillajs”,”ns-exporter”],function(t,e){var r={};return r.typeOf=function(t){return Object.prototype.toString.call(t).match(/(w+)]$/)[1].toLowerCase()},r.merge=function(t){for(var e=1;e=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;af.x-a.left-l.x?o.left:o.right}return o[t]},r.injectContent=function(t,e,r,i,o){n.isElement(r)?n.adopt(t,r):i?(r=n.find(i,e),n.removeClass(r,”hidden”),n.adopt(t,r)):o?(r=n.find(o),r&&(t.innerHTML+=r.innerHTML)):t.innerHTML+=r},r.injectContentWithDataAttrs=function(t,e,n,i,o){n=n||e&&e.getAttribute(“data-content”)||””,i=i||e&&e.getAttribute(“data-element”)||””,o=o||e&&e.getAttribute(“data-element-copy”)||””,r.injectContent(t,e,n,i,o)},r.parseOffsets=function(t){return t&&t.length?{x:t[0]&&parseInt(t[0],10)||0,y:t[1]&&parseInt(t[1],10)||0}:{x:0,y:0}},r.loadingSpinnerHtml=e,r}); define(“utils/array/flatten”,[“vanillajs”],function(){return function n(r){return r.reduce(function(r,t){return r.concat(Array.isArray(t)?n(t):t)},[])}}); define(“utils/bindAll”,[“babel/babel-helpers”],function(n){return function(n){for(var r=arguments.length,e=Array(r>1?r-1:0),i=1;i1?h-1:0),u=1;ui.x-r.left-e.x?r.left-t.x-o.x-(l?n.scrollLeft():0):r.left+e.x+o.x-(l?n.scrollLeft():0)},function(t,o,e,r,i,l){return r.top+e.y/2-t.y/2-(l?n.scrollTop():0)}),a.center=l(function(t,n,o,e,r){return r.x/2-t.x/2},function(t,o,e,r,i,l){return i.y/2-t.y/2+(l?0:n.scrollTop())}),a.centerBelow=l(function(t,n,o,e,r){return r.x/2-t.x/2},function(t,o,e,r,i,l){return r.top+e.y+o.y-(l?n.scrollTop():0)}),a.topCenter=l(function(t,n,o,e,r){return r.x/2-t.x/2},function(t,n,o,e,r,i){return 0}),a.topLeft=l(null,function(t,o,e,r,i,l){return r.top-t.y-o.y-(l?n.scrollTop():0)},function(t,o,e,r,i,l){return i.x-(r.left+e.x)+(l?n.scrollLeft():0)}),a.movingCenter=u(!0,!0),a.movingCenterX=u(!0,!1),a.movingCenterY=u(!1,!0),a.cssCentered=f(),a.absolute=l(function(){return 0},function(){return 0}),a.framed=l(function(){return 0},function(){return 0},function(){return 0},function(){return 0}),a.offScreen=l(function(){return-1e4},function(){return-1e4}),a.noop=function(){return function(){}},a.rightEvenInRtl=a.right,a.leftEvenInRtl=a.left,”undefined”!=typeof document&&n.hasClass(document.body,”rtl”)){a.left=a.rightEvenInRtl,a.right=a.leftEvenInRtl;var p=a.bottomRight;a.bottomRight=a.bottomLeft,a.bottomLeft=p,p=a.rightTop,a.rightTop=a.leftTop,a.leftTop=p,p=a.overlapRightTop,a.overlapRightTop=a.overlapLeftTop,a.overlapLeftTop=p}return a}); define(“overlays/options/closeOnDocClick”,[“vanillajs”,”api-mod”],function(t,e){“use strict”;function n(t){this.sourceElement&&e.containsElement(this.sourceElement,t.target)||e.containsElement(this.container,t.target)||t.target&&(“option”===t.target.tagName||e.hasClass(t.target,”ui_dropdown”)||e.getParent(t.target,”ui_dropdown”))||e.checkBrowser(“ie”)&&t.target&&”select”==t.target.tagName&&e.containsEvent(t.target,t)&&e.select(this.container,”input”).indexOf(t.target)||this.hide(“doc-click”)}function i(t){return function(){var i=e.bind(n,this);this.on(“show”,function(){setTimeout(function(){this.isOpen()&&(e.addEvent(document,”click”,i),t&&e.addEvent(document,”touchstart”,i))}.bind(this),1)}).on(“hide”,function(){e.removeEvent(document,”click”,i),t&&e.removeEvent(document,”touchstart”,i)})}}var o=i(!0);return o.withoutTouchEvents=i(!1),o}); define(“overlays/options/repositionOnEvent”,[“vanillajs”,”api-mod”],function(n,i){“use strict”;function t(){this.emit(“positionDirty”)}return function(n,o){return function(){var e=o.splice?o:[o],c=i.bind(t,this);this.on(“show”,function(){e.forEach(function(t){i.addEvent(n,t,c)})}).on(“hide”,function(){e.forEach(function(t){i.removeEvent(n,t,c)})})}}}); define(“overlays/options/repositionOnTaEvent”,[“vanillajs”,”ta/Core/TA.Event”],function(n,i){“use strict”;return function(n){return function(){var t=this.emit.bind(this,”positionDirty”);this.on(“show”,function(){i.on(n,t)}).on(“hide”,function(){i.off(n,t)})}}}); define(“overlays/options/storeOverlayOnElement”,[“vanillajs”,”api-mod”],function(e,t){“use strict”;var n=function(){this.sourceElement&&t.store(this.sourceElement,”overlay”,this)};return n}); define(“overlays/options/closeOnTaEvent”,[“vanillajs”,”ta/Core/TA.Event”],function(n,t){“use strict”;function o(){this.hide(“on-event”)}return function(n){return function(){var i=o.bind(this);this.on(“show”,function(){t.on(n,i)}).on(“hide”,function(){t.off(n,i)})}}}); define(“overlays/options/centerArrowOnSrcElement”,[“vanillajs”,”api-mod”],function(t,i){“use strict”;var o=function(t){function o(){if(t=t||this.sourceElement,this.container&&t&&this.arrow){var o=i.getCoords(this.container),r=i.getCoords(t),n=i.hasClass(this.container,”arrow_top”)||i.hasClass(this.container,”arrow_bottom”);if(n){var s=r.left+r.width/2,e=i.getSize(this.arrow).x/2,a=Math.max(e,Math.min(o.width-e,s-o.left));i.setStyle(this.arrow,{“left”:a+”px”,”right”:”auto”,”margin”:”0 0 0 -“+e+”px”})}else{var s=r.top+r.height/2,e=i.getSize(this.arrow).y/2,h=Math.max(e,Math.min(o.height-e,s-o.top));i.setStyle(this.arrow,{“top”:h+”px”,”bottom”:”auto”,”margin”:”-“+e+”px 0 0 0”})}}}return function(){this.on(“show”,i.bind(o,this)),this.on(“positionDirty”,i.bind(o,this)),this.on(“repositionArrow”,i.bind(o,this))}};return o}); define(“overlays/options/moveIntoView”,[“lib/jquery-amd”],function(t){“use strict”;var o=500;return function(e,n){return e=”undefined”==typeof e||e,n=”undefined”!=typeof n||isNaN(n)?n:0,function(){this.on(“show”,function(){var i,f,r=t(this.container),s=t(this.sourceElement);e?(i=Math.min(r.offset().top,s.offset().top),f=Math.max(r.offset().top+r.outerHeight(),s.offset().top+s.outerHeight())):(i=r.offset().top,f=r.offset().top+r.outerHeight());var u=window.innerHeight,a=t(window).scrollTop(),h=a+u;if(!(i>=a&&fu||i=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;a0&&(e+=(“?”===a[0]?””:”?”)+a,a=null),u.open(o,e,!r.synchronous),s(e,u,r),u.send(a)})}}); 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;n4,a=(15&c)>2,h=(3&f)c}function i(e){var t=/TAP|.+?(?=%2F)/.exec(e),n=t[0],r=o(n),u=e.replace(n,r);window.open(u)}var d=”TAP|”,c=d.length;return{decodeUrl:t,getUrl:n,goToLink:r,decodeProductCode:o,isObfuscatedProductCode:u,goToCommerceLinkWithProductCode:i}}); define(“ta/Core/TA.Record”,[“vanillajs”,”ns-exporter”,”ta/Core/TA.Store”,”purify”,”ajax-request”,”utils/objutils”,”utils/urlDecoder”],function(e,t,n,r,a,i,o){“use strict”;var u={},l={},c=[],s=8,d=”impressionTrackingTree”,g=0,f=1,v=2,p=”UserTracking”,m=”impression”,h=”action”,k=”pageview”,y=”search”,E=[],T=60,P=function(e){return”function”==typeof e},b=function(e,t){try{if(!e||”object”!=typeof t)return;if(window.JSON&&JSON.stringify){var n=JSON.stringify(t);n&&n.length<1e5&&(E.push([e,n]),E.length>T&&E.shift())}}catch(e){}},_=function(e,t,n,r){a(e,t).then(n,r),b(e,t)},S=function(){if(require.defined(“ta/util/Error”)){var e=require(“ta/util/Error”);e.record.apply(e,arguments)}else ta&&ta.m&&P(ta.m.recordJSError)&&ta.m.recordJSError(arguments)},C=function(e){return”undefined”==typeof e||null==e?””:(“string”!=typeof e&&(e=e.toString()),e.replace(/!/g,”!!”).replace(/./g,”!.”).replace(/*/g,”!*”))},w=function(e){var t=[];for(var n in e){var r=e[n];t.push(C(n)+”.”+C(r))}return t.join(“*”)},A=function(e){return”undefined”==typeof e||null===e?””:(“string”!=typeof e&&(e=e.toString()),e.replace(/!/g,”!!”).replace(/./g,”!.”).replace(/*/g,”!*”).replace(/~/g,”!~”))},N=function(e){var t=[];for(var n in e){var r=e[n];t.push(A(n)+”.”+A(r))}return t.join(“*”)},R=function(e){var t=/(https?://[^/]+)?/([^#.?-]*)/,n=t.exec(e);return n&&”undefined”!=typeof n[2]?n[2]?n[2]:”Home”:null},O=function(){var e=u.getPageData();if(e&&e.url)return e.url.substring(1);var t=//([^-]*)/.exec(window.location.pathname);return t?t[1]:null},I=function(){var e=ta.uid;if(require.defined(“redux-init”)){var t=require(“redux-init”);t&&t.tracking&&t.tracking.uid&&(e=t.tracking.uid)}return e},x=function(e,t,n){var r=new RegExp(“(-“+t+”([0-9]+))|([?&]”+n+”=([0-9]+))”),a=r.exec(e);if(a){if(“undefined”!=typeof a[2])return a[2];if(“undefined”!=typeof a[4])return a[4]}return null},M=function(e){return x(e,”d”,”detail”)||x(e,”g”,”geo”)},q=function(e){var t=document.cookie.match(“(?:^|;)\s*”+e+”=([^;]*)”);return!!t&&(t=t[1],0===t.indexOf(“%1%”)&&(t=t.substring(3)),decodeURIComponent(t))},L=function(e,t,n){try{var r;n.encode&&(t=encodeURIComponent(t)),n.domain&&(t+=”; domain=”+n.domain),n.path&&(t+=”; path=”+n.path),n.duration&&(r=new Date,r.setTime(r.getTime()+1e3*n.duration),t+=”; expires=”+r.toGMTString()),n.secure&&(t+=”; secure”),document.cookie=e+”=”+t}catch(e){S(e,”_setCookieInSeconds”,null,arguments)}},D=function(){return ta.m&&ta.m.store&&ta.m.store.has(“bookingSessionId”)?ta.m.store.get(“bookingSessionId”):null},H=function(){var e=!1;return”boolean”==typeof ta.userLoggedIn&&(e=”boolean”==typeof ta.userSecurelyLoggedIn?ta.userLoggedIn?ta.userSecurelyLoggedIn?v:f:g:ta.userLoggedIn),e},U=function(e,t){var r={gac:e[1],gaa:e[2],gal:e[3],gav:e[4],gani:e[5],gass:O(),gasl:M(document.location.href),gads:R(t),gadl:M(t),gapu:I(),gams:H()},a=D();if(!r.gass)throw new Error(“Src servlet undefined, gac:”+r.gac+”, gaa:”+r.gaa+”, gal:”+r.gal);if(!r.gads)throw new Error(“Dst servlet undefined. gac:”+r.gac+”, gaa:”+r.gaa+”, gal:”+r.gal);n.has(“gatt”)&&(r.gatt=n.retrieve(“gatt”)),a&&(r.bsid=a),L(“EVT”,w(r),{domain:cookieDomain,duration:5,encode:!0,path:”/”})},j=function(e){if(!e||!e.className||!e.firstChild)return!1;var t=new RegExp(“\b”+d+”\b”),n=e.firstChild.nodeType,r=e.firstChild.nodeValue;return t.test(e.className)&&n===s&&””!==r},J=function(){};require.defined(“page-model”)&&require([“page-model”],function(e){var t=e.session,r=t.analyticsInfo;r&&(n.keep(“partials.pageProperties”,r.pagePropertyStringForCurrentPageview),n.store(“gaMemberState”,r.memberState),t.analyticsInfo&&require.defined(“ta/Core/TA.Prerender”)&&require(“ta/Core/TA.Prerender”)._init(!0)),J=function(){r&&c.push(JSON.parse(r.jsonForCurrentPageview)),J=function(){}}}),u.getPageData=function(){return J(),c[c.length-1]},u.pushPageData=function(e){J(),e&&c.push(e)},u._GARecordRequest=function(e,t){var r,a={gac:e[1],gaa:e[2],gal:e[3],gav:e[4],gani:e[5],gass:O(),gasl:document.location?M(document.location.href):null,gapu:I(),gams:H()},i=D();return t&&(a.gacl=t),n.has(“gatt”)&&(a.gatt=n.retrieve(“gatt”)),i&&(a.bsid=i),r=require.defined(“utils/BatchRequest”)?{get:function(){require(“utils/BatchRequest”).queue(“/GARecord”,a)}}:{get:function(){setTimeout(function(){var e=new XMLHttpRequest;e.open(“GET”,”/GARecord?”+W(a),!0),e.send(null)},1)}},b(“/GARecord”,a),r};var W=function(e){var t=[];for(var n in e)t.push(encodeURIComponent(n)+”=”+encodeURIComponent(e[n]));return t.join(“&”)};l.urlArgLookup=function(e,t){var n=new RegExp(“[\?&]”+e+”=(\w+)”),r=n.exec(t);return r&&”undefined”!=typeof r[1]?r[1]:null},u._validatedTrackEventArray=function(e,t,n,r,a){return e&&”string”!=typeof e&&(e=e.toString()),t&&”string”!=typeof t&&(t=t.toString()),n&&”string”!=typeof n&&(n=n.toString()),r?”number”!=typeof r&&(r=parseFloat(r),isNaN(r)&&(r=0)):r=0,”boolean”!=typeof a&&(a=a===!0),[“_trackEvent”,e,t,n,r,a]},u._toEvtParams=function(e){try{var t={gac:e.module,gaa:e.action,gal:e.context,gav:e.value,gani:e.noninteraction};return t.gass=O(),t.gasl=M(document.location.href),t.gapu=I(),t.gams=H(),t}catch(t){S(t,”analytics._toEvtParams”,null,e)}},u._trackEventAfterAjax=function(e){try{l.trackDMPBehavior(e.module,e.action,e.context,e.value,e.noninteraction)}catch(t){S(t,”analytics._trackEventAfterAjax”,null,e)}},l.getEventPathOptions=function(e,t,n){try{var r=z(n,e);if(!r)return void S(null,”ta.getEventPathOptions – invalid element”,null,arguments);var a=$(r);return t&&(a.noninteraction=t),a}catch(e){S(e,”ta.getEventPathOptions”,null,arguments)}},u._trackEventPathAfterAjax=function(e){try{l.trackEventOnPage(e.category,e.action,e.label,e.value,e.noninteraction)}catch(e){S(e,”analytics._trackEventPathAfterAjax”,null,arguments)}},l.trackPhysicalCommerce=function(e,t,n,r){try{var a=u._validatedTrackEventArray(e,”Commerce-Physical”,t,n,!1);u._GARecordRequest(a,r).get()}catch(e){S(e,”ta.trackPhysicalCommerce”,null,arguments)}},l.trackAttemptedCommerce=function(e,t,n){try{l.trackDMPBehavior(e,t,n,null,null)}catch(e){S(e,”ta.trackAttemptedCommerce”,null,arguments)}},l.trackPhysicalAndAttemptedCommerce=function(e,t,n,r,a){l.trackPhysicalCommerce(e,t,r,a),l.trackAttemptedCommerce(e,t,n,r)},l.trackImpressionEventOnPage=function(e,t,n,r){e=e||””,t=t||””,n=n||””,r=r||0,l.trackEventOnPage(e,t,n,r,!0)},l.trackEventOnPage=function(e,t,n,r,a){o.isObfuscatedProductCode(e)&&(e=o.decodeProductCode(e)),o.isObfuscatedProductCode(t)&&(t=o.decodeProductCode(t)),o.isObfuscatedProductCode(n)&&(n=o.decodeProductCode(n));try{var i=u._validatedTrackEventArray(e,t,n,r,a);u._GARecordRequest(i).get()}catch(e){S(e,”ta.trackEventOnPage”,null,arguments)}},l.trackEventOnPageOnce=function(e,t,r,a){var i,o=”eventsAlreadyTracked”;i=”object”==typeof ta&&ta.m&&ta.m.store?ta.m.store.get(o):n.retrieve(o),i||(i={},”object”==typeof ta&&ta.m&&ta.m.store?ta.m.store.add(o,i):n.store(o,i));var u=e+”|”+t+”|”+r;i[u]||(l.trackEventOnPage(e,t,r,0,a),i[u]=!0)},l.trackDMPBehavior=function(e,t,n,r,a){},l.setEvtCookie=function(e,t,n,r,a){try{var i=u._validatedTrackEventArray(e,t,n,r,!1);if(U(i,a),require.defined(“ta/common/behavior/dmp/DMP”)){var o=require(“ta/common/behavior/dmp/DMP”);o.isEnabled()&&o.sendEventBehavior(e,t,n,r,Z())}}catch(e){S(e,”ta.setEvtCookie”,null,arguments)}};var G=function(e){var t;try{if(t=q(“MEVT”)||””,t.length>0&&(t+=”~”),t+=N(e),t.length>1024)throw”MEVT Cookie is full”;L(“MEVT”,t,{domain:cookieDomain,duration:5,encode:!0})}catch(e){return S(e,”_appendMevtCookie”,null,arguments),!1}return!0},B=”trk”,V=B.length,F=”etk”,X=/^([A-Z]{1,2}:)?[A-Za-z_0-9-.]+$/,Z=function(){var e=”undefined”!=typeof event?event:window.event;return e?e.target||e.srcElement:document.activeElement};u.getCommentTrackingPath=function(e,t){return z(e,t)};var z=function(e,t){if(e=r(e),!e&&(e=Z(),!e))return S(null,”_getCommentTrackingPath – no element provided or event target element”,null,arguments),null;if(1!=e.nodeType)return null;var n=[];if(t&&”string”==typeof t&&””!==t&&X.test(t)){if(“P:”==t.substring(0,2))return n.push(t.substring(2)),n;n.push(t)}if(“undefined”==typeof e.previousSibling)return S(null,”_getCommentTrackingPath – browser does not support previousSibling”,null,arguments),n;e:for(var a=e;a!=document.body;a=a.parentNode){if(null==a){S(null,”_getCommentTrackingPath – LOOP_PARENT_NODES got unexpected null node”,null,arguments);break}for(var i=0,o=a.previousSibling;null!=o;o=o.previousSibling)if(o.nodeType==s){var u=o.nodeValue;if(u==F){i++;continue}if(u.substring(0,V)!=B)continue;if(i>0){i–;continue}var l=u.substring(V).split(“/”);l||S(null,’ta._getCommentTrackingPath – cannot split context class: “‘+u+'”‘,null,arguments);for(var c=l.length-1;c>=0;c–){var d=l[c],g=X.exec(d);if(g){if(“P:”==g[1]){var f=g[0].substring(2);n.push(f);break e}n.push(g[0])}else S(null,’ta._getCommentTrackingPath – tracking prefix used with invalid context: “‘+l[c]+'”‘,null,arguments)}}}return n},$=function(e){if(0===e.length)return null;var t={“action”:e[0],”label”:””,”value”:”1″,”category”:e[e.length-1]};e.shift();for(var n=e.length-2;n>=0;n–)t.label+=e[n],n>0&&(t.label+=”/”),”N:”==e[n].substring(0,2)&&(t.value=e[n].substring(2));return””===t.label&&(t.label=”Unknown”),t};l.trk=function(e,t,n,a){n=r(n);try{var i=n?n.getAttribute(“data-trk-path”):null;if(i)i=i.replace(“P:”,””),i=i.split(“/”),i.reverse();else if(i=z(n,e),!i||!i.length){var o=””;if(n)if(n.outerHTML){var u=document.createTextNode(n.outerHTML),c=document.createElement(“div”);c.appendChild(u),o=c.innerHTML.substring(0,100)}else n.nodeName?o=n.nodeName:o+=n;else void 0===n?o=”undefined”:null===n&&(o=”null”);return e||(e=null===i?”null path”:void 0===i?”undefined path”:i.hasOwnProperty(“length”)?0===i.length?”empty path”:i.join(“,”):”path: “+i),void S(null,”ta.trk – invalid element for “+e+” from “+o,null,arguments)}l.trkWithPath(i,t,a)}catch(e){S(e,”ta.trk”,null,arguments)}},l.trkWithPath=function(e,t,n){try{if(!e||!e.length)return void S(null,”ta.trkWithPath – no path in arguments”,null,arguments);if(n&&n.length>0&&e.length&&e.splice)for(var r=n.length-1;r>=0;r–)”string”==typeof n[r]&&e.splice(1,0,n[r]);var a=$(e);l.trackEventOnPage(a.category,a.action,a.label,a.value,t)}catch(e){S(e,”ta.trkWithPath – “+e,null,arguments)}},l.trkImpTree=function(e){try{if(!j(e))return void S(null,”ta.trkImpTree called with invalid trackTreeElem!”,null,arguments);var t=e.firstChild.nodeValue;ne(t)}catch(e){S(e,”ta.trkImpTree”,null,arguments)}},l.recordImpression=function(e,t){if(!e)return void(t&&t());try{ne(Y(e),t)}catch(e){S(e,”ta.recordImpression”,null,arguments),t&&t()}};var K=”“,Y=function(e){var t=e.indexOf(K),n=0,r=e.indexOf(Q);return t!==-1&&(n=t+K.length),r===-1&&(r=e.length),e.substring(n,r)};u.stripCommentsFromTree=Y;var ee=”\”,te=”/”;u.appendAscendTokens=function(e){var t=0,n=0,r=0;for(t=0;t0&&(t=r),!document.getElementById(“sponsoredCouponListingWrap”))return t;var a,i=document.querySelector(“#HAC_RESULTS .pageNumbers .current”);if(i){var o=i.getAttribute(“data-page-number”);if(a=parseInt(o,10),isNaN(a)||!a)return S(new Error(“pageNumber is not a number”),”ta._shiftOrdinalsWithSponsoredPlacement”,null,o),-1}return”Hotels_MainList”===e?t+=a:(r&&r>0&&(“sponsored_coupon_listing”===e||”Hotels_MainList_Sponsored”===e||”Hotels_MainList_Discovery_Sponsored_Listing”===e)&&(t+=a-1),t)};l.getRecentTARecords=function(){return E},l.addTypeAheadMevt=function(e){return e.t=”ta”,G(e)},l.addGARecordMevt=function(e,t,r,a,i){try{var o=u._validatedTrackEventArray(e,t,r,a,!1),l={t:”ga”,gac:o[1],gaa:o[2],gal:o[3],gav:o[4],gani:o[5],gass:O(),gasl:M(document.location.href),gads:R(i),gadl:M(i),gapu:I(),gams:H()},c=D();if(!l.gass)throw new Error(“Src servlet undefined, gac:”+l.gac+”, gaa:”+l.gaa+”, gal:”+l.gal);if(!l.gads)throw new Error(“Dst servlet undefined. gac:”+l.gac+”, gaa:”+l.gaa+”, gal:”+l.gal);if(n.has(“gatt”)&&(l.gatt=n.retrieve(“gatt”)),c&&(l.bsid=c),G(l),require.defined(“ta/common/behavior/dmp/DMP”)){var s=require(“ta/common/behavior/dmp/DMP”);s.isEnabled()&&s.sendEventBehavior(e,t,r,a,Z())}}catch(e){S(e,”ta.addGARecordMevt”,null,arguments)}},l.trackInteractions=function(e,t,n){var r={“elmtSource”:e,”elmtType”:n};r=i.extend(r,t),_(“/UserInteractionRecord”,{method:”POST”,url:”/UserInteractionRecord”,data:r},null,function(){S(null,”taRecord.trackInteractions”,null,r)})},l.addInteractionsMEVT=function(e,t,n){var r={“t”:”ia”,”ias”:e,”iak”:ie(t),”iat”:n};G(r)};var ie=function(e){var t=””;return Object.keys(e).forEach(function(n){t=t+n+”^”+e[n]+”+”}),0==t.length?t:t.slice(0,-1)},oe=!1,ue=function(e,t){return oe||(oe=require.defined(“page-model”)?require(“page-model”).session:{}),!!oe.useERUserTracking&&!(oe.ERUserTrackingEventNames&&oe.ERUserTrackingEventNames.length>0&&oe.ERUserTrackingEventNames.indexOf(e)<0)},le=function(e,t,n){if(ue(e,t)){var r=oe.uid&&{request_uid:oe.uid}||{},a={event_name:e,event_type:t,attr:JSON.stringify(i.extend(n,r))},o={get:function(){setTimeout(function(){var e=new XMLHttpRequest;e.open("GET","/UserTrackingRecord?"+W(a),!0),e.send(null)},1)}};return o.get()}n.event_name=e,l.trackEventOnPage(p,t,JSON.stringify(n))};l.trackImpressionWithJson=function(e,t){le(e,m,t)},l.trackActionWithJson=function(e,t){le(e,h,t)},l.trackPageviewWithJson=function(e,t){le(e,k,t)},l.trackSearchWithJson=function(e,t){le(e,y,t)},l.trackUnifiedEvent=le,t.createNs(u,"ta","analytics"),t.exportTo(l,"ta");var ce={};return t.exportTo(u,ce),t.exportTo(l,ce),ce}); define("utils/ajax",["lib/jquery-amd","ta/Core/TA.Record","utils/form-to-json"],function(e,t,i){function n(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&1===e.nodeType&&"string"==typeof e.nodeName}return function(r,a){r.substr||(a=r);var s=e.extend({},a,{dataFilter:function(e,t){return"json"==t&&(e=e.replace(/^s*whiles*([^)]*);?/,"")),a&&a.dataFilter&&a.dataFilter.call(this,e,t),e}});s.xhrFields=s.xhrFields||{},s.xhrFields.withCredentials=!0,n(s.data)&&(s.data=i(s.data));var c=s.trackEvent;return c&&(e.extend(s,t._toEvtParams(c)),s.complete=function(){t._trackEventAfterAjax(c),a&&a.complete&&a.complete.apply(this,arguments)}),s.evalScripts&&(s.success=function(t,i,n){if(t&&t.substr){var r,s;e.parseHTML?(r=e(e.parseHTML(t,document,!0)),s=r.filter("script").add(r.find("script"))):(r=e(""+t+""),s=r.find("script")),s.each(function(e,t){if(t.innerHTML)if(window.execScript)window.execScript(t.innerHTML);else if(window.eval)window.eval(t.innerHTML);else{var i=document.createElement("script");i.setAttribute("type","text/javascript"),i.text=t.innerHTML,document.head.appendChild(i),document.head.removeChild(i)}})}a&&a.success&&a.success.apply(this,arguments)}),r.substr?e.ajax(r,s):e.ajax(s)}}); define("ta/util/Error",["vanillajs","api-mod","utils/ajax","ns-exporter","mixins/Events","utils/browserutils","ta/util/Cookie","ta"],function(r,e,t,o,n,a,i,c){function s(r,t){var o="_extraInfoError_:Problem storing extra info.",n={},a="";try{if(Array.isArray(t)||"[object Arguments]"===Object.prototype.toString.call(t)){for(var i={},c=0;cy&&(a=a.substring(0,y)),a.replace(/[rn]/g,"")}catch(r){}return o}function l(r){return"undefined"!=typeof r&&null!==r?r.toString().replace(/[rn]/g,""):"null or undefined"}function f(r,e,t){var o,n="";if(r&&r.stack)try{var a,i,c=r.stack.split("n"),s=[],l=0;c[1]&&c[1].match(/.record /)&&c.splice(1,1);for(var f=0;f=0)){var d=!!u.match(//jquery-|/mootools|(native)|(native code)|[native code]/);u=u.replace(/^(.*)http.+/([^/]*)/,"$1$2").replace(/(?.{20})[^:)]+/,"$1...").replace(/^(?:s+w+s*([^s]+)|([^s]+)@)s*(?([^)]*))?$/,"$1$2 ($3)").replace(/s*()/,""),a&&d?i||(s.push("..."),i=!0,l++):(s.push(u),d&&l++),d||(i=!1),a=d}}s.length-l=0;return r&&!e}function v(r){if(m()){var e={eMsg:"msg",eStak:"stack",eUrl:"url"};for(var t in e){var o=e[t];r[o]=r[t]}r.file=r.url||document.URL,r.site=window.SITE_VERSION,r.loaded=O?"dom_ready":"not_loaded"}}var p={},S=new n("error","beforeSend"),h=window.IS_DEBUG,y=3e3,R=h?100:10,w=4,E="unset",b=0,O=!1;return p.record=function(r,e,o,n,a,y){y=y||{},r?"string"==typeof r&&(r=new Error(r)):r=new Error("Stub error to build stack.");var w=!1;try{var O=Object.prototype.toString.call(r);w=O===Object.prototype.toString.call(new Error)||O.match(/[object Error[w]*]/)}catch(r){}if(w&&!r.stack)try{throw r}catch(e){e&&e.stack&&(r=e)}o=o||window.event||{};var N=o.target;if(b>=R)return void(h&&console.error(“Maximum JS errors reached. Not reporting.”));b++;var j=!1;try{j=document.body.className.match(/bjs_loggingb/)||m()}catch(r){}if(j){var _=!0;n&&n.hasOwnProperty(“error_script”)&&!d(n.error_script)&&!g(n.error_script)&&(_=!1);var k={};if(N)try{k.eTarg=p.getSelectorString(N)}catch(r){}”undefined”!=typeof debugCacheKey&&(k.key=debugCacheKey);var T=window.pageServlet;T||(T=”unknown”),k.servlet=T,a&&”string”==typeof a||(a=”ERROR”),_?!h&&b>1?(a=”WARN”,k.warnReason=”notFirstJSError”):”object”==typeof r&&”WARN”===r.level&&(a=”WARN”):(a=”WARN”,k.warnReason=”externalError”);var A={“extraInfoError”:”Problem storing extra info”},x={};try{var D=””,L=””;N&&(“function”!=typeof N.id&&(D=N.id),L=N.className);var P=window.serverPool||””,I=””;window.MooTools&&(I+=”MooTools “),require.defined(“lib/jquery-amd”)&&(I+=”jQuery “),x={“TARGET_ID”:D,”TARGET_CLASS”:L,”PAGE_UID”:c&&c.uid,”INTERNAL_JS”:u(),”CLIENT_POOL”:P,”COOKIES_ENABLED”:i.canSet(),”JS_LIBS”:I},_||(x.INTERNAL_ERROR=”false”),b>1&&(x.PRIOR_JS_PAGE_ERRORS=b-1)}catch(r){n=A}k.xInfo=s(x,n);try{k.eUrl=window.location.href}catch(r){}try{var J=c.page.getDates(“STAYDATES”);J?k.eDates=J[0].toLocaleDateString(“en-US”)+” – “+J[1].toLocaleDateString(“en-US”):k.eDates=”No dates set”}catch(r){}var $=”No Error”;try{if(w)$=r.name+”-“+r.message;else if(“object”==typeof r)if(r.name&&r.message)$=r.name+”-“+r.message;else{$=”non-Error object “+Object.prototype.toString.call(r)+” passed, sample properties – “;var M=0;for(var C in r)if(r.hasOwnProperty(C)&&($+=C.substring(0,30)+”: “+(r[C]&&r[C].toString?r[C].toString().substring(0,20):r[C])+”, “,++M>4))break}else $=”non-Object error passed: “+(“”+r).substring(0,60);$=$.replace(/[rn]/g,””)}catch(r){}k.eMsg=$;try{k.eBlk=l(e).substring(0,150)}catch(r){}var U;if(!r.stack)try{U=o&&o.callee||arguments&&arguments.callee}catch(r){}var B=f(r,N,U);B&&(k.eStak=B);try{S.emit(“beforeSend”,k)}catch(r){}k.eLogLevel=a,v(k),h&&!y.isglobal&&(console.error(“/JSErrorRecord:”),r.stack?console.error(r.stack):B?console.error(B):console.error(“No stack”));try{t({url:”/JSErrorRecord”,data:k,method:”POST”,type:”POST”})}catch(r){k={“eBlk”:”JSErrorRecord Error”,”servlet”:T,”eLogLevel”:”ERROR”,”eMsg”:”no error retrieved”},t({url:”/JSErrorRecord”,data:k})}if(h&&(window.ERRORS||(window.ERRORS=[])).push(k),S.emit(“error”,$,e,a,k.eStak),”unset”==E&&(E=i.readRaw(“JS_ERROR_HANDLING”)),E){if(E.match(/alert/)){var G=””;for(var F in k)k.hasOwnProperty(F)&&(G=G+F+”: “+k[F]+”n”);alert(G)}E.match(/console/)&&window.console&&console.error(k)}}},p.getSelectorString=function(r){for(var e=[];r&&”HTML”!=r.tagName&&r!=document;r=r.parentNode){var t=r.tagName;r.id&&(t+=”#”+r.id),r.className&&(t+=”.”+r.className.trim().replace(/s+/g,”.”)),e.unshift(t)}return e.join(“>”)},p.ajaxFailure=function(r,t,o,n){p.record(null,r,null,e.merge({status:t.status},o),n||”ERROR”)},p.enableDomReadyParam=function(){O=!0},p.on=S.on.bind(S),p.off=S.off.bind(S),(a.firefox&&a.version<5||a.ie&&a.version<10)&&(p.record=function(){window.console&&console.error("Unreported error: "+[].slice.call(arguments).join(", "))}),o.createNs(p,"ta.util","error"),p}); 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;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(“calendars/DesktopStayDates”,[“vanillajs”,”api-mod”,”overlays/Overlay”,”overlays/styles/modal”,”overlays/styles/popover”,”overlays/position”,”overlays/options/closeOnDocClick”,”overlays/options/repositionOnEvent”,”overlays/options/repositionOnTaEvent”,”overlays/options/storeOverlayOnElement”,”calendars/CalendarDate”,”overlays/options/closeOnTaEvent”,”overlays/options/centerArrowOnSrcElement”,”overlays/options/moveIntoView”,”ta/util/I18N”,”ta/Core/TA.Dust”,”ta/util/Deferred”,”ta/util/Date”,”mixins/page-dates/DateTypeStore”,”ta/Core/TA.Record”,”utils/responsive”],function(e,t,n,a,r,o,i,d,s,l,c,u,p,h,f,v,m,D,y,T,w){“use strict”;function C(e,t){var n,a=[],r=!1,o=y.isSingleDateType(t.dateType);e.eachDayInMonth(function(e){var n=!r&&0===e.compare(t.today);r=r||n;var i=t.startDate&&0===e.compare(t.startDate);a.push({label:e.day(),date:_(e,t)?null:e.toString(),today:n,start:!o&&i,end:t.endDate&&0===e.compare(t.endDate),selected:o?i:e.inRange(t.startDate,t.endDate)})}),n=e.firstDayOfMonth()-jsGlobalDayOffset,n+=n<0?7:0;for(var i=0;i0&&(t=e.thisMonth))),t}function _(e,t){var n=t.today,a=t.startDate,r=t.dateType,o=t.minEnabledDate,i=t.maxEnabledDate,d=t.maxStayLength,s=t.availableDates,l=t.excludedDates;if(!R(r)){if(s){for(var u=0;u0)||(!!(R(r)&&a&&a.daysTo(e)>d)||!!(i&&i.compare(e)<0))}function x(e,n,a){var r=2,o=e>0?r:-1,i=n.currentMonth.relativeMonth(o),d=f.isRtl()?”dsdc-scroll-right”:”dsdc-scroll-left”;i.compare(n.minEnabledDate.thisMonth())<0||i.compare(n.maxEnabledDate.thisMonth())>0||(i.compare(n.today.relativeMonth(12))>0&&!L&&(L=!0,T.trackEventOnPage(“DATEPICKER”,”viewed_year_out”)),N=!0,v.renderToString(F,{month:C(i,n)}).then(function(r){var o=t.find(“.dsdc-months”,a),i=document.createElement(“div”);i.innerHTML=r,e<0?(t.addClass(o,"dsdc-no-anim"),o.insertBefore(i.firstChild,o.firstChild),t.addClass(o,d),t.forceReflow(o),t.removeClass(o,"dsdc-no-anim")):o.appendChild(i.firstChild),e<0?t.removeClass(o,d):t.addClass(o,d),setTimeout(function(){e<0?o.removeChild(o.lastChild):(t.addClass(o,"dsdc-no-anim"),o.removeChild(o.firstChild),t.removeClass(o,d),t.forceReflow(o),t.removeClass(o,"dsdc-no-anim")),N=!1},B?I:0),n.currentMonth=n.currentMonth.relativeMonth(e),S(n)}))}function S(e,n){e.currentMonth.compare(e.minEnabledDate.thisMonth())=0?t.addClass(t.find(".dsdc-next",n),"dsdc-inactive"):t.removeClass(t.find(".dsdc-next",n),"dsdc-inactive")}function k(){document.selection&&document.selection.empty?document.selection.empty():window.getSelection&&window.getSelection().removeAllRanges()}function O(e,t,n,a){if(a=a||window.event,a&&a.target&&!N){var r=a.target.className;return r.indexOf("dsdc-next")>=0?x(1,t,n):r.indexOf(“dsdc-prev”)>=0?x(-1,t,n):a.target.getAttribute(“data-date”)&&(e.resolve([c.fromString(a.target.getAttribute(“data-date”)).date]),A&&A.hide()),k(),!1}}function P(e){var t=”no_x no_padding date_picker_modal”;return t+=” “+(window.isTabletOnFullSite?”tablet”:”desktop”),t+=” “+e.dateType,t+=” “+(e.className||””)}function R(e){return y.isChildDateType(e)&&!y.isStartDateType(e)&&!y.isRoundTripDateType(e)}var A,N,j=”calendars/desktop_stay-dates/calendar.dust”,F=”calendars/desktop_stay-dates/month.dust”,I=300,B=!!window.TransitionEvent,L=!1,H=543;return{open:function(e,r){A&&A.destroy();var s=m(!0),c=E(r);return v.renderToString(j,M(c)).then(function(r){var p=[a(e,”below”,P(c),null,null,r),o.bottomRight(),i,l,d(window,”date_bar_docked”),d(window,”date_bar_undocked”),u(“dualSearchTypeaheadOpen”)];A=new n(e,p),A.on(“hide”,function(){s.isFulfilled()||s.reject(),A=null}),A.show(),S(c,A.container),t.addEvent(A.container,”click”,O.bind(null,s,c,A.container))}),s.promise()},openInline:function(e,n,a){var r=m(!0),o=E(n),i=a.querySelector(“.innerCalendarWrapper”);t.destroy(i),i=document.createElement(“div”),i.className=”innerCalendarWrapper”,a.appendChild(i),o.showPrices=!ta.page.hasDates(“STAYDATES”);var d=function(){i.style.display=”none”,r.isFulfilled()||r.reject()};return v.renderToString(j,M(o)).then(function(n){i.innerHTML=n,S(o,i),t.addEvent(i,”click”,O.bind(null,r,o,i)),t.addEvent(t.find(“.update_results_button”,i),”click”,function(){t.addClass(e,”greenFocus”)}),t.addEvent(t.find(“.dsdc-close-x”,i),”click”,d),t.addEvent(t.find(“.clearDatesBox”,i),”click”,function(){b(o.dateType),d()})}),r.promise()},openInContainer:function(e,n,a){var r=m(!0),o=E(n),i=t.getParent(a,”calendarFlyout”),d=t.find(“.innerCalendarWrapper”,a),s=a.overlay;return t.destroy(d),d=document.createElement(“div”),d.className=”innerCalendarWrapper”,a.appendChild(d),s&&s.on(“hide”,function(){r.isFulfilled()||r.reject()}),v.renderToString(j,M(o)).then(function(e){d.innerHTML=e,S(o,d),t.addEvent(d,”click”,O.bind(null,r,o,d))}),i.deferred=r,r.promise()},closeCalendar:function(){A&&A.destroy()},openAsPopover:function(e,a){function c(e){return”function”==typeof o[e]&&”below”!=e?o[e]([0,0]):o.bottomRight([-16,-8])}function f(e){return e&&e.calendarPopupDirection&&””!=e.calendarPopupDirection?e.calendarPopupDirection:”below”}A&&A.destroy();var D=m(!0),y=E(a);return v.renderToString(j,M(y)).then(function(o){var v=f(y),m=t.find(“.trip_search”),T=t.find(“.ui_icon.calendar”,e);m&&(v=”below”);var w=c(v),C=[r(e,v,P(y),null,o),w,p(T),i,l,d(window,[“resize”,”date_bar_docked”,”date_bar_undocked”]),s(“makeTextFitResizedText”),u(“dualSearchTypeaheadOpen”)];a.moveIntoView&&C.push(h(!0,30)),A=new n(e,C),A.on(“hide”,function(){D.isFulfilled()||D.reject(),A=null}),t.addEvent(t.find(“.dsdc-close-x”,A.container),”click”,function(){A.hide()}),t.addEvent(t.find(“.dsdc-wrapper .ui_close_x”,A.container),”click”,function(){A.hide()}),t.addEvent(t.find(“.clearDatesBox”,A.container),”click”,function(){b(y.dateType),A.hide()}),A.show(),S(y,A.container),t.addEvent(A.container,”click”,O.bind(null,D,y,A.container))}),D.promise()}}}); define(“mixins/page-dates/Validator”,[“vanillajs”,”ta”,”mixins/page-dates/DateTypeStore”,”calendars/CalendarDate”,”ta/util/Date”],function(e,t,a,n,r){“use strict”;function i(e){if(!a[e].children||!t.page.hasDates(e))return!0;var n=a[e].children,r=t.page.getDates(e);return a.isStartDateType(n[0])&&a.isEndDateType(n[1])&&r[0]<=r[1]||a.isEndDateType(n[0])&&a.isStartDateType(n[1])&&r[1]<=r[0]}function s(e){if(!a[e].children||!t.page.hasDates(e))return!0;var n=t.page.getDates(e);return n[0].getTime()!==n[1].getTime()}function u(e){return function(n){return!a[n].children||!t.page.hasDates(n)||D.apply(null,t.page.getDates(n))<=e}}function D(e,t){var a=e instanceof n?e:new n(e),r=t instanceof n?t:new n(t);return Math.abs(a.daysTo(r))}var T=function(e){var t=e&&e.hasOwnProperty("maxStayLength")?e.maxStayLength:r.MAX_STAY_DURATION_DAYS;this.VALIDATORS={STAYDATES:[i,s,u(t)],ROUNDTRIP:[i],ATTRACTIONRANGE:[i],VPDATES:[i,s,u(t)]}};return T.prototype.validate=function(e){var t=this.VALIDATORS[e];return!t||0==t.length||!t.some(function(t){return!t(e)})},T}); define("ta/support/Qualtrics",["vanillajs","ns-exporter","page-model","ta/Core/TA.LocalStorage"],function(e,t,n,s){"use strict";var i={},r=function(e,t,n,s){this.get=function(e){for(var e=e+"=",t=document.cookie.split(";"),n=0,s=t.length;n=e/100?0:100),s=[t,e,0],this.set(n,s.join(":"))}var i=s[1];if(100==i)return!0;switch(s[0]){case"v":return!1;case"r":return i=s[2]%Math.floor(100/i),s[2]++,this.set(n,s.join(":")),!i}return!0},this.go=function(){if(this.check()){var e=document.createElement("script");e.type="text/javascript",e.src=s+"&t="+(new Date).getTime(),document.body&&document.body.appendChild(e)}},this.start=function(){var e=this;e.go()}};i.displaySurvey=function(e){var t=n.session.uid,s="QSI_S_"+e,i="//znbkpczkrl5wwqzj3-tripadvisor.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_SIID="+e+"&UID="+t+"&Q_LOC="+encodeURIComponent(window.location.href);try{require(["@ta/platform.runtime"],function(e){e.importBundle("@ta/platform.consent").then(function(e){e.requestConsent(e.CategoriesEnum.ANALYTICS,function(){new r(100,"r",s,i).start()})})})}catch(e){}R(!0)};var a=2592e6,o=6048e5,u=!1,c=!1,l=4,p=3,f=2,g=Math.round(10*Math.random())%2,d=!1,h=function(){return s.get("qualtrics-debug")},v=function(){return Number(s.get("qualtrics-session-count")||0)},q=function(){return!!s.getSessionKey("qualtrics-session-count-incremented")},m=function(){var e=v(),t=s.getSessionKey("qualtrics-session-count-incremented");t||(s.set("qualtrics-session-count",e+1,o),s.setSessionKey("qualtrics-session-count-incremented",!0))},S=function(e){s.setSessionKey("qualtrics-ignored",e)},y=function(){return!!s.getSessionKey("qualtrics-ignored")},w=function(e){s.set("qualtrics-responded",e,a)},I=function(){return!!s.get("qualtrics-responded")},b=function(){return Number(s.getSessionKey("qualtrics-page-views")||0)},D=function(){return Number(s.getSessionKey("qualtrics-intercept-views")||0)},K=function(){var e=D();s.setSessionKey("qualtrics-intercept-views",++e),4===e&&S(!0)},T=function(){return Number(s.getSessionKey("qualtrics-intercept-reqs")||0)},C=function(){var e=T();s.setSessionKey("qualtrics-intercept-reqs",e+1)},N=function(){return d},k=function(e){d=e},L=function(){var e=!1,t=N();if(t){var n=I()||y(),s=v(),i=q(),r=b(),a=D();!n&&(s=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("mixins/page-dates/Desktop",["vanillajs","ta","api-mod","ta/Core/TA.Event","ta/Core/TA.Store","ta/Core/TA.LocalStorage","ta/util/Date","mixins/page-dates/Base","calendars/DesktopStayDates","calendars/CalendarDate","mixins/page-dates/Utils","mixins/page-dates/DateTypeStore","mixins/page-dates/Validator","mixins/page-dates/default-dates"],function(e,a,t,n,r,l,i,s,d,o,p,u,D,g){"use strict";function c(e,t){var n={startDate:u.getStartDate(e),dateType:e,thaiOffset:y,autoSelectDates:x,didCreateDefaultDates:I,calendarPopupDirection:P,showClearButton:M,calendarTitle:Y,popCalendarType:K,qualtricsSurveyEnabled:R,moveIntoView:U,hasMetaMarketingDefaultDates:F},r=u.getMinEnabledDate(e);return u.isHotelDateType(e)||u.isRoundTripDateType(e)||u.isAttractionRangeDateType(e)?(n.endDate=u.getEndDate(e),n.incomplete=!a.page.hasDates("STAYDATES"),n.maxStayLength=b,r&&(n.minEnabledDate=r),H?n.maxEnabledDate=new o(p.fromString(H)):w&&(n.maxEnabledDate=(new o).relativeDay(parseInt(w))),t&&(n.calendarPopupDirection=t)):(n.incomplete=!a.page.hasDates(e),n.availableDates=_,n.excludedDates=k,n.minEnabledDate=r||N&&new o(p.fromString(N)),n.maxEnabledDate=H&&new o(p.fromString(H))),n}function f(e){var n,r=e.getAttribute("data-dateType"),l=void 0,i=void 0,s=e;if(null==u.getCorrespondingDateType(r))return null;if(n="[data-dateType="+u.getCorrespondingDateType(r)+"]",window&&window.pageServlet&&("HotelHighlight"==window.pageServlet||"SmartDeals"==window.pageServlet)){for(var d=0;d<3&&!i;d++){if(e=e.parentNode,!e)return null;i=e.getAttribute("data-pickerIndex")}var o=document.querySelector("[data-pickerIndex='"+i+"']");return a.find(n,o)}for(var d=0;d<3&&!l;d++){if(e=e.parentNode,!e)return null;l=t.find(n,e)}return null==l&&u.isStartDateType(r)?(s.setAttribute("data-dateType",u.getCorrespondingDateType(r)),s):l}function T(e){u.getParents(e).forEach(function(t){m.validate(t)||u[t].children.filter(function(a){return a!==e}).forEach(function(e){a.page.clearDates(e),a.page.emit("dateSelected",null,e,[null])})})}function C(){if(a.widgets.calendar&&!a.widgets.calendar.isShim){var e=a.page.getDates("CHECKIN")[0],t=a.page.getDates("CHECKOUT")[0];a.page.hasDates("CHECKIN")?a.widgets.calendar.setPageInDate(i.create(e.getFullYear(),e.getMonth(),e.getDate()),!0):a.widgets.calendar.clearPageInDate(!0),a.page.hasDates("CHECKOUT")?a.widgets.calendar.setPageOutDate(i.create(t.getFullYear(),t.getMonth(),t.getDate()),!0):a.widgets.calendar.clearPageOutDate(!0),a.widgets.calendar.syncAllDatePickers()}}function S(e,t,n){if(null!=e){var r=e.getAttribute("data-trackingContext");r||(r=e.getAttribute("data-dateType")),r+=n||!a.page.hasDates(e.getAttribute("data-dateType"))?"|PRE":"|CHANGE",a.trackEventOnPage("DATEPICKER",t,r)}}function E(e,t,n,r){var l="START";if("STAYDATES"!==n&&r&&null!=r[0]){if(("CHECKIN"===n||"CHECKOUT"===n)&&a.page.hasDates("STAYDATES")&&(l="SELECT",t)){var i;i=O?I?"default_dated_to_manually_dated":"manually_dated_to_manually_dated":"undated_to_manually_dated",a.trackEventOnPage("DATEPICKER",i),I=!1,O=!0}S(t,l,e)}}var m,h=!(!(a&&a.widgets&&a.widgets.calendar)||a.widgets.calendar.isShim),A=!1,v=d.openAsPopover,y=!1,w=null,b=i.MAX_STAY_DURATION_DAYS,x=!1,I=!1,P=null,O=!1,_=null,k=null,N=null,H=null,M=!1,Y=null,K="",R=!1,U=!1,F=!1,L=function(e,a){t.mixin(this,new s(e)),m=new D(a),a&&(y=a.thaiOffset||y,A=a.popCheckInFirst||A,b=a.maxStayLength||i.MAX_STAY_DURATION_DAYS,x=a.autoSelectDates,I=a.didCreateDefaultDates,P=a.calendarPopupDirection,_=a.availableDates,k=a.excludedDates,N=a.minEnabledDate,H=a.maxEnabledDate,w=a.maxEnabledDaysOut,M=a.showClearButton||M,Y=a.calendarTitle||Y,K=a.popCalendarType||K,R=a.qualtricsSurveyEnabled||R,U=a.moveIntoView||U,F=a.hasMetaMarketingDefaultDates||F,g.init({datesWereDefaulted:a.didCreateDefaultDates,popFromDefault:a.supportsPrePopWithDefaultDates,popCalendarType:a.popCalendarType,qualtricsSurveyEnabled:R,hasMetaMarketingDefaultDates:a.hasMetaMarketingDefaultDates}))};return L.prototype.gatherDates=function(e,l,i,s,o){A&&e&&"CHECKOUT"===e.getAttribute("data-dateType")&&!a.page.hasDates("CHECKIN")&&!a.page.hasDates("CHECKOUT")&&(e.blur(),e=f(e));var p=e?e.getAttribute("data-dateType"):"UNKNOWN",u=E.bind(null,!a.page.hasDates(p));if(!e||!t.hasClass(e,"focused")){t.addClass(e,"focused"),S(e,"OPEN"),a.page.on("dateSelected",u);var D=v;l&&(D=s?d.openInline:d.openInContainer);var g=e?e.getAttribute("data-popup-direction-override"):null;return D.call(null,e,c(p,g),l).then(function(d){r.store("enteredDatesInPreDates",!a.page.hasDates("STAYDATES")),t.removeClass(e,"focused"),t.removeClass(e,"greenFocus"),a.page.pushDates(e,p,d),a.page.removeListener("dateSelected",u),a.page.emit("userClickedDate",p);var o=a.page.hasDates("STAYDATES");o&&!i&&n.fireEvent("onCalendarRangeSelect"),s&&o&&l.getElement(".innerCalendarWrapper").hide()},function(){t.removeClass(e,"focused"),t.removeClass(e,"greenFocus"),a.page.removeListener("dateSelected",u),s&&a.page.hasDates("STAYDATES")&&l.getElement(".innerCalendarWrapper").hide(),o&&a.page.hasDates("STAYDATES")&&a.page.onDatesSelected(e,p,a.page.getDates("STAYDATES")),a.page.emit("datepickerRejected",e)})}},L.prototype.gatherDatesNear=function(e){var t=p.findClosestDatepicker(e,"CHECKIN");t&&a.page.gatherDates(t)},L.prototype.pushDates=function(e,t,n){a.page.setDates(t,n),T(t),h&&C(),a.page.onDatesSelected(e,t,n)},L.prototype.setAvailableDates=function(e){_=e},L.prototype.setMaximumDaysOut=function(e){w=e},L.prototype.setExcludedDates=function(e){k=e},L}); define("ta/common/Repoll",["vanillajs","utils/objutils","utils/urlutils","common/trackingStreams","ta/Core/TA.FireEvent","common/Radio","page-model"],function(e,t,n,r,o,a,i){var l=new a("ads_repoll"),s={normal:[10,1e3,2e3,4e3,4e3,4e3],extended:[10,1e3,2e3,4e3,4e3,4e3,8e3,8e3,8e3,8e3,8e3],obsolete:[10,1e3,1e3,1e3,1e3,1500,1500,1500,2e3,2e3,2e3,5e3,9e3,1e4,11e3,12e3]},c=function(e){function a(e){if(e){var t=e.querySelectorAll("[data-targetEvent]");if(t){var n;try{n=Array.prototype.slice.call(t)}catch(e){n=[];for(var a=0;a0)return g=g||[],g.push(c.bind(this,e)),void(window.console&&console.log&&console.log("update held while updates are paused"));this.status>=200&&this.status=0&&w&&w>0)return H*w>=6e4?-1:(H*(w+1)>=6e4&&(T=!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(R+"-polling-complete"))}function d(){N=N>0?N+1:1}function f(){if(N>1)return void(N-=1);N=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,E=!1,T=!1,x=0,P=null,S={},j=!1,A={},b={},q={},M=!!e.evaluateScripts,R=e.placement||”page”,N=0,H=e.pollTimeoutOverride||-1,L=Date.now(),C=e.tracker,O=(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],E=!0}},Q=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&&(E=!0),n},z=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]}},B=function(){$(!1)},G=function(e){var t,n,r,o=(e&&e.getAttribute(“data-paramNames”)||””).split(“,”);for(t=0;t=0?(j=!0,E&&y++,E=!1,r=++x,window.setTimeout(function(){ee(r)},i),a&&p()):(o.fireEvent(“hac-could-not-complete”),ne())}},ee=function(e){if(!P&&j&&e===x){if(N>0)return g=g||[],g.push(ee.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=T,o.paramSeqId=y,o.waitTime=Date.now()-L,C&&C.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)),P=l}},te=function(e){if(N>0)return g=g||[],g.push(te.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(P=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(ne.bind(this)),void(window.console&&console.log&&console.log(“error held while updates are paused”));var e=j;P=null,S={},e?ee(++x):o.fireEvent(R+”-repoll-failed”),p()};return o.on(R+”-repoll-not-done”,B),o.on(R+”-repoll-ajax-params”,G),U(e.pageUrl||window.location.href),e.ajaxParams&&(A=t.extend(A,e.ajaxParams)),setTimeout(function(){J()||o.fireEvent(R+”-polling-complete”)},0),{setPageUrl:U,repoll:D,pause:d,resume:f,getAjaxParams:F,setAjaxParams:I,setAjaxParamsNoPoll:k,setAjaxParamsNoPollForSP:_,setOneTimeParams:W,removeAjaxParams:K,setNotDone:B,isUpdatePending:J,getLastRequestNum:V,setScriptsEval:Y,isScriptsEvalEnabled:Z,fireTargetEvents:a,getParamSeqId:v}};return c}); define(“mixins/ReviewPagination”,[“ta/common/Repoll”],function(e){“use strict”;function t(o){function a(e,t){var a=location.pathname!==e;if(a){if(!history.replaceState)return void setTimeout(function(){window.location.href=e},10);if(history.replaceState(history.state,document.title,e),t)if(o.scrollCallback)o.scrollCallback();else{var n=document.querySelector(l);n&&n.scrollIntoView&&n.scrollIntoView()}i.setPageUrl(e),i.setOneTimeParams(r,”REVIEW_LIST”)}}o=o||{};var i=o.repoll||new e({evaluateScripts:!0}),l=o.scrollToSelector||”[data-reviewsScrollTarget]”,r=o.oneTimeParams||{};t.prototype.applyPaginationOffset=a}return t}); define(“historyinject/HistoryInject”,[“utils/browserutils”,”common/trackingStreams”],function(i,t){“use strict”;function n(i,n){if(!r(n))return!1;var o=i.options.pageAction||”back_button_clicked”,e=i.options.productAttr||””;t.setEvtCookie(i.module,o,e,””,i.backUrl),window.location.replace(n.state.backUrl)}function o(){return window.history&&”pushState”in window.history}function e(i,t){t&&t.call(i);var o=n.bind(null,i);return window.addEventListener(“popstate”,o),window.addEventListener(“hashchange”,o),!!i.isNewTab()&&(i.urlSuffix=i.options.query?i.originalSearch:i.originalHash,void i.updateState())}function r(i){return i.state&&i.state.backUrl}function a(){var t=null;return”ios”===i.Platform.name&&(i.chrome||i.crios)?t=”iOSMobileChrome”:i.android&&i.firefox&&(t=”androidFirefox”),t?new Promise(function(i){require([“trjs!historyinject/browser/”+t],function(t){i(t)})}):Promise.resolve(null)}function l(i,t){try{if(t&&t.backButtonUrl)return t.backButtonUrl;if(window.opener&&window.opener.location&&window.opener.location.pathname){if(window.opener.location.origin===window.location.origin){if(window.opener.location.href&&”/Search”===window.opener.location.pathname)return window.opener.location.href;if(“H_NEARBY_HISTORY_INJECT”!==i&&”EXP_NEARBY_HISTORY_INJECT”!==i&&”RESTAURANT_NEARBY_HISTORY_INJECT”!==i&&”R_R_HISTORY_INJECT”!==i&&”A_R_HISTORY_INJECT”!==i)return window.opener.location.pathname;if(window.opener.location.href&&window.opener.location.pathname.includes(“/Hotel_Review”))return window.opener.location.pathname}}else if(document.referrer&&document.referrer.length>0){var n=new URL(document.referrer);if(n.hostname===document.location.hostname){if(“H_NEARBY_HISTORY_INJECT”!==i&&”EXP_NEARBY_HISTORY_INJECT”!==i&&”RESTAURANT_NEARBY_HISTORY_INJECT”!==i&&”R_R_HISTORY_INJECT”!==i&&”A_R_HISTORY_INJECT”!==i)return n.pathname;if(window.opener.location.href&&window.opener.location.pathname.includes(“/Hotel_Review”))return n.pathname}}}catch(i){}return null}var c=function(i,t){this.originalPath=window.location.pathname,this.originalHash=window.location.hash,this.originalSearch=window.location.search,this.backUrl=null,this.backUrlPlaceholder=”-BackUrl”,this.urlSuffix=””,this.options=t||{},this.module=i,this.mixin=a(),this.backUrl=l(i,this.options)};return c.prototype.isNewTab=function(){return 1===window.history.length},c.prototype.updateState=function(){var i=this.originalPath+this.backUrlPlaceholder;if(!(this.backUrl.indexOf(“WidgetEmbed”)>=0)){if(this.backUrl.indexOf(“.htm”)>=0){var t=this.originalPath.split(“.htm”);i=t[0]+this.backUrlPlaceholder+”.htm”+t[1]}history.replaceState({backUrl:this.backUrl},document.title,i+this.urlSuffix),history.pushState({},document.title,this.originalPath+this.urlSuffix)}},c.prototype.init=function(){o()&&this.backUrl&&this.mixin.then(e.bind(null,this))},c}); 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(“common/pixels-loader”,[“vanillajs”,”mixins/page-dates/DateEvents”,”ta/Core/TA.FireEvent”],function(n,o,i){“use strict”;function e(){return Date.now()-r}function t(n){console.log(“pixels-loader: “+e()+” “+n)}var a,r,c=2e3,l=!1;r=window.performance&&window.performance.timing&&window.performance.timing.navigationStart?window.performance.timing.navigationStart:Date.now();var s=function(){l&&t(“_load starting”),window.require([“trjs!ta/common/behavior/Ads-pagemoniker”],function(n){l&&t(“Ads-pagemoniker starting”),n.loadMonikers(),o.on(“dateSelected”,function(o,i){“STAYDATES”==i&&window.setTimeout(n.loadMonikerForEnterDates,2e3)})}),a&&a.shouldInitFlightsEvents&&u(),s=function(){}},u=function(){var n=new Promise(require.bind(null,[“trjs!ta/common/behavior/Ads-pagemoniker”]));i.on(“lcbPop”,function(){n.then(function(n){n.loadMonikerForLCBPop()})}),i.on(“packageClick”,function(){n.then(function(n){n.loadVacationPackageMetaMonikers()})}),i.on(“metaLinkClickPixelLoad”,function(o){n.then(function(n){n.loadFlightsMetaMonikers(o)})}),i.on(“metaLightboxLoad”,function(o){n.then(function(n){n.loadLightboxMonikers(o)})}),i.on(“flightSearchPixelLoad”,function(){n.then(function(n){n.loadMonikerForFlightSearch()})})};return{init:function(n){a=n,n&&n.pixelsEnabled&&(n.pixelLoadingTracing&&(l=!0),n.hotelsPixelLoadingStrategyEnabled?(l&&t(“init: setting timeout of zero before running _load”),setTimeout(s,0)):(l&&t(“init: setting timeout”),setTimeout(s,c)))},remarketingOptions:function(){return a}}}); define(“responsive_servlets/restaurant_review”,[“lib/jquery-amd”,”mixins/mixin”,”mixins/page-dates/DateEvents”,”mixins/page-dates/Desktop”,”mixins/ReviewPagination”,”historyinject/HistoryInject”,”common/page-filters”,”common/pixels-loader”,”mobile/lite/image-loader”,”ta/common/Repoll”,”ta/Core/TA.Event”],function(e,t,i,n,a,r,o,l,s,c,m){“use strict”;function p(e){return h||(d=new c(e.repollOptions||{evaluateScripts:!0}),t(this,i),t(this,new n(e.pageDates)),t(this,new a({repoll:d,scrollCallback:f})),g(e.filtersInit),l.init(e.remarketingOptions),s.init(200),m.on(“reasons-keywordClick”,u),h=!0,e.nearbyHistoryInject&&new r(“R_R_HISTORY_INJECT”).init()),this}function u(e){o.clearAll(),o.set(“t”,e),f()}function f(){var t=e(“[data-reviewsScrollTarget]”).offset().top-50;e(“html,body”).animate({scrollTop:t},400)}function g(e){e&&(e.forEach(function(e){var t=”multi”===e.type?o.MultiValueFilter:o.SingleValueFilter;o.register(e.name,t,e.value,”true”===e.excludeFromClearAll)}),o.on(“change”,function(){v(o.get());var e=location.pathname.replace(/-ord+/,””);ta.page.applyPaginationOffset(e)}))}function v(e){d.setOneTimeParams(e,”REVIEW_LIST”)}var d,h=!1;return{init:p,refreshWithParams:v}}); define(“maps/v3/providers/providerShim”,[“babel/babel-helpers”,”mixins/Events”],function(e,r){“use strict”;function n(){return s?s:s=new Promise(function(e){i||(v=!0,a.emit(“providerRequested”)),u.then(function(){i.loadLibrary(e)})})}function t(e){var r=c[e];return r||(r={},r.promise=new Promise(function(e){r.resolve=e}),c[e]=r),r}var i=null,o=null,u=new Promise(function(e){return o=e}),s=null,a=new r(“providerRequested”),v=!1,c={};return{registerProvider:function(e){if(i)throw”provider already registered”;if(!e)throw”Attempted to register a null provider”;i=e,o()},providerRequested:function(){return v},createMap:function(e){var r=n();return new Promise(function(n){r.then(function(){var r=i.getMapInstance(e);n(r);var o=t(e.container);o.resolve(r)})})},waitForMap:function(e){var r=t(e);return r.promise},on:a.on.bind(a)}}); define(“maps/v3/tracking”,[“babel/babel-helpers”,”common/trackingStreams”],function(t,a){“use strict”;function n(t,n){a.trackEvent(“map_view”,t?”open”:”close”,n,null)}function c(t,n,c){a.trackEvent(t,n,c,null)}function e(t,n){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;a.trackEvent(“map_pin”,t,c,n)}function i(){n(!0,null)}function o(t){a.trackEvent(“map_view”,”open_requested”,t)}function r(t){window.setTimeout(function(){n(!0,t.offsetWidth)},0)}function p(t,c){n(!1,t.offsetWidth),a.trackEvent(“map_view”,”map_close_num_pins”,c)}function l(t,n){var c={loaded:t,timeSpentOnMap:n};a.trackEvent(“map_view”,”map_close_load_test”,JSON.stringify(c))}function k(t){a.trackEvent(“map_view”,”map_impl”,t)}function u(t){c(“map_view”,”empty”,t)}function m(t,a){c(“map_view”,a?”redo_auto”:”redo”,t)}function _(){a.trackEvent(“map_view”,”grow”)}function v(){a.trackEvent(“map_view”,”shrink”)}function f(t){c(“map_move”,”pan”,t)}function d(t){c(“map_move”,”zoom_in”,t)}function s(t){c(“map_move”,”zoom_out”,t)}function M(t,a){e(“hover”,t,a)}function w(t,a){e(“click”,t,a)}function C(t){a.trackEvent(“map_detail_card”,”photo_click”,t,null)}function E(t){a.trackEvent(“map_detail_card”,”saveCTA_click”,t,null)}function h(t){a.trackEvent(“map_detail_card”,”title_click”,t,null)}function S(t){a.trackEvent(“map_card_cta”,”click”,t,null)}function O(t){a.trackEvent(“map_carousel”,”swipe”,t,null)}function P(t,n){a.trackEvent(“also_show”,t,n)}return{trackMapOpen:r,trackMapClose:p,trackMapFirstOpen:i,trackMapOpenRequested:o,trackRedoSearch:m,trackMapGrow:_,trackMapShrink:v,trackNoPins:u,trackMapPan:f,trackMapZoomIn:d,trackMapZoomOut:s,trackMapPinHover:M,trackMapPinClick:w,trackMapDetailCardPhotoClick:C,trackMapDetailCardSaveClick:E,trackMapDetailCardTitleClick:h,trackMapDetailCardCTAClick:S,trackCarouselSwipe:O,trackAlsoShowClick:P,trackMapLoadedWhenClosed:l,trackMapProvider:k}}); require([“ta/p13n/placements”],function(r){var a=r.define.bind(r,”map_provider_loader”,”handlers”,[“handlers”]);a([“placement”,”maps/v3/providers/providerShim”,”maps/v3/tracking”],function(r,a,e){“use strict”;function i(){var i=”trjs!”+r.params.map_impl;if(r.params.includeRollup){var p=”trjs!”+r.params.map_rollup;r.require([i,p],function(i,p){if(!p)throw”Unable to load map rollup”;i.configureLibrary(r.params.mapConfig||{}),e.trackMapProvider(r.params.map_rollup),a.registerProvider(i)})}else r.require([i],function(i){i.configureLibrary(r.params.mapConfig||{}),e.trackMapProvider(r.params.map_rollup),a.registerProvider(i)})}a.providerRequested()?i():a.on(“providerRequested”,i)})}); ]]>$99u003c/b>/year.”,”plus_hotels_plus_tooltip_learn_more”:”Learn more”,”a11y_skip_link”:”Skip to main content”,”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. “,”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”,”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 “,”success_repost_video”:”Your video was posted!”,”success_repost_photo”:”Your photo was posted!”,”social_nowFollowing”:”Following”,”social_nCount_followers2″:”{0, plural, one{# follower} other{# followers}}”,”m2_trips_detail_date_display”:”{0} u2022 {1}”,”see_all_results_for”:”See all results for “{query}””,”common_Hotels”:”Hotels”,”common_Restaurants”:”Restaurants”,”common_Thingstodo”:”Things to do”,”common_Forums”:”Forums”,”ds_textarea_minimum_characters”:”{numCount}/{numLimit} min characters”,”ds_textarea_maximum_characters”:”{numCount}/{numLimit} max characters”,”common_Loading”:”Loading …”,”reg_back”:”Back”,”trip_planner_clear”:”Clear”,”plus_checkout_dates_range”:”{0} u2192 {1}”,”onetap_message_unlock”:”Unlock the best of Tripadvisor”,”onetap_subhead_signin_alerts_deals”:”Sign in to get price alerts and deals”,”terms_and_policy_links”:”By proceeding, you agree to our u003ca rel=”nofollow” class=”{2}” target=”_blank” href=”{0}”>Terms of Useu003c/a> and confirm you have read our u003ca rel=”nofollow” class=”{2}” target=”_blank” href=”{1}”>Privacy Policyu003c/a>.”,”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”,”post_video_typeahead_placeholder_text_search”:”Search”,”post_video_location_typeahead_add_location”:”Add another location “,”dual_search_worldwide”:”Worldwide”,”plus_home_takeover_horizon_header”:”Get more of what you’ve been missing”,”plus_home_takeover_learn_more”:”Learn more”,”horizon_watch_the_film”:”Vacations miss you. Watch the film.”,”brand_save_money_we_search_200″:”u003cb>Save money.u003c/b> We search 200+ sites for the lowest hotel prices.”,”home_rentals_vacation”:”Rent a home for your next vacation”,”restaurants_contact_links_menu”:”Menu”,”restaurants_contact_links_map”:”Map”,”restaurants_contact_links_call”:”Call”,”restaurants_contact_links_website”:”Website”,”attraction_poi_tours_and_tickets_shelf”:”{pointOfInterest} Tours and Tickets”,”attractions_near_saved”:”Attractions Near {0}”,”faq_about_header”:”Frequently Asked Questions about {sName}”,”visit_hotel_website”:”Visit hotel website”,”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”,”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”,”b2bh_so_special_offer”:”Special offer”,”ODCTest_emailsubject2_404″:”An inquiry from a Tripadvisor user for {0}”,”hr_about_call”:”Call”,”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”,”monday_52″:”Monday”,”tuesday_52″:”Tuesday”,”wednesday_52″:”Wednesday”,”thursday_52″:”Thursday”,”friday_52″:”Friday”,”saturday_52″:”Saturday”,”sunday_52″:”Sunday”,”blcoupons_valid_any_day”:”Offer valid any day of the week.”,”blcoupons_valid_days”:”Offer valid on the following days: {0}”,”b2bh_so_lightbox_redeem_online”:”Redeem on hotel website”,”b2bh_so_lightbox_call_to_redeem”:”Call to redeem”,”b2bh_so_create_offer_code”:”Offer code”,”restaurants_tap_and_show_code”:”Tap and show code to restaurant host”,”b2bh_so_lightbox_expired_offer”:”This offer has expired.”,”social_loading_error_1″:”Whoops, something went wrong.”,”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”,”share_sms_link”:”Check this out:”,”trips_share_email_subject”:”Check out my Trip on Tripadvisor!”,”trips_collaborate_invite_email_subject”:”Join my Trip on Tripadvisor!”,”link_share_sms_checkthisout”:”Check this out on Tripadvisor:”,”link_share_option_sms”:”Text message”,”share_email_subject”:”Check this out on Tripadvisor”,”ib_share_booking_download_app”:”Download the free Tripadvisor App.”,”app_download_url_secure”:”https://www.tripadvisor.com/apps”,”link_share_option_email”:”Email”,”link_share_email_subject”:”Check out {0} on Tripadvisor”,”mobile_here_is_a_place_i_found_8e0″:”Here is a place I found on Tripadvisor:”,”share_email_reviews”:”Here is a review I found on Tripadvisor:”,”share_email_photos”:”Here is a photo I found on Tripadvisor:”,”share_email_videos”:”Here is a video I found on Tripadvisor:”,”share_email_link_subject”:”Check this out”,”share_email_link”:”Check this out:”,”share_email_link_attribution”:”I found this on Tripadvisor.”,”share_email_forumtopic”:”Here is a forum topic I found on Tripadvisor:”,”share_email_forumreply”:”Here is a response I found in the Tripadvisor forums:”,”trips_share_email_hey”:”Hey,”,”trips_share_email_body_v2″:”I created a Trip on Tripadvisor! Check out “{tripName}”!”,”trips_collaborate_invite_email_body_v2″:”I created a Trip on Tripadvisor! Join and add your ideas to “{tripName}”!”,”trips_collaborate_invite_email_body_collaborator_version”:”Join and add your ideas to “{tripName}”!”,”trips_email_share_collaborator_version”:”Check out “{tripName}”!”,”link_share_link_copied”:”Link copied”,”link_share_option_clipboard”:”Copy link”,”link_share_share”:”Share”,”success_repost_review”:”Your review was posted!”,”success_repost_forum”:”Your forum was posted!”,”success_repost_link”:”Your link was posted!”,”success_repost_trip”:”Your trip was posted!”,”success_repost_photos”:”Your photos were posted!”,”view_repost”:”View post”,”repost_failure_message”:”Your repost failed to upload. Please try again.”,”repost_rate_limited_v2″:”Your repost failed to upload. You have exceeded the limit of allowed reposts.”,”social_no_permission”:”You don’t have permission to take this action.”,”reposted”:”Reposted”,”social_repost_on_tripadvisor”:”Repost on Tripadvisor”,”social_repost”:”Repost”,”OC_ListingLink_1_1774″:”Manage Your Listing”,”owner_reg_respond_reviews”:”Respond to Reviews”,”is_this_your_listing_card”:”Is This Your Listing?”,”rs_claim_your_free_listing”:”Claim Your Free Listing”,”myl_cta_review_servlets_2″:”Own or manage this property? Claim your listing for free to respond to reviews, update your profile and much more.”,”mob_popped_calendar_cta”:”Select a date to continue”,”today_label_on_restaurant_reservations_datepicker”:”Today”,”tomorrow_label_on_restaurant_reservations_datepicker”:”Tomorrow”,”restaurants_no_avail_02282019″:”{RestaurantName} is not available through our online partner for your requested time.”,”mobile_restaurant_reserve_error_general_ffffeaf4″:”An error has occurred, please try again later.”,”findatable_fffff863″:”Find a table”,”seeavailabletimes_ffffdd28″:”Find Available Times on {0}”,”find_other_available_restaurants”:”Find other available restaurants”,”restaurant_booking_delivery_separator”:”OR”,”nsp.locationSelect.loading”:”Loading…”,”restaurant_booking_phone_number”:”Phone Number”,”booking_form_select_a_country_code”:”- Select a Country Code -“,”native_login_required”:”Required”,”mobile_sherpa_invalid_email”:”Invalid Email”,”restaurant_booking_date_at”:”{date} at {time}”,”restaurant_booking_table_for”:”Table for {nCount}”,”restaurant_booking_first_name”:”First Name”,”restaurant_booking_last_name”:”Last Name”,”restaurant_booking_email”:”E-mail”,”restaurant_booking_special_requests”:”Special Requests (optional)”,”opentable_complete_reservation”:”Complete Reservation”,”restaurants_finding_your_table”:”Finding your table…”,”restaurant_thank_you_reservation_c2b”:”Thank You for Your Reservation!”,”corrected_lf_confirmation_copy_ffffdd28″:”You will receive an email confirmation from {0}.”,”see_all_restaurants_confirmation”:”See all Restaurants”,”restaurants_booking_flow_error”:”An error has occurred. Please try again later or book directly on {provider}.”,”restaurants_reserve_with”:”Reserve with {provider}”,”Native_Restauarants_Reserve_a_Table”:”Reserve a Table”,”plus_home_takeover_nova_header”:”More dime to dine.”,”plus_home_takeover_nova_subheader”:”Get more of what you’ve been missing.”,”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”,”trips_day_header_item_count”:”{nItems, plural, one{# item} other{# items}}”,”trip_detail_remove_from_trip”:”Remove from Trip”,”trips_save_to_a_trip”:”Save to a trip”,”sponsored_articles_sponsored_by”:”Sponsored by {sponsorName}”,”ds_contributor_author_one”:”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}”,”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_plate”:”Michelin Plate”,”sng_award_michelin_bib”:”Michelin Bib Gourmand”,”sng_michelin_year”:”MICHELIN {0}”,”ds_award_michelin_text”:”MICHELIN”,”About_TC_Winner”:”Travelers’ Choice {0} Winner”,”common_Previous”:”Previous”,”common_Next”:”Next”,”stat_modal_save_to_trip_v2″:”Save to a Trip”,”save_all_items_modal_header”:”Save all items to a Trip”,”stat_modal_create_a_trip_v2″:”Create a Trip”,”select_trip_header”:”Select a Trip”,”stat_modal_view_trip_v2″:”View Trip”,”create_trip_success_toast_with_bold”:”u003cb>{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.”,”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.”,”soical_loading_error_2″:”Give it another try, please.”,”mobile_try_again”:”Try again”,”manage_business_tooltip”:”Visit the Management Center”,”Claim_badge_claimed_tooltip_body”:”Someone from this business manages this listing.”,”Claim_badge_claimed_tooltip_CTA”:”{startLink}Learn more{endLink} “,”Claim_badge_unclaimed_tooltip_1″:”This business is unclaimed.”,”Claim_badge_unclaimed_tooltip_2_b”:”Owners who claim their business can update listing details, add photos, respond to reviews, and more. “,”Claim_badge_unclaimed_tooltip_2_CTA”:”{startLink}Claim your free listing now {endLink}”,”Claim_badge_claimed_status”:”Claimed”,”Claim_badge_unclaimed_status”:”Unclaimed”,”social_Saved”:”Saved”,”trips_save_CTA”:”Save”,”see_all_hours”:” See all hours”,”restaurants_view_all_hours”:”Hours”,”p13n_radius_show_nearby_filter_header”:”Show nearby”,”hotels_map_also_show_transit”:”Transit”,”best_places_around”:”Find the best places around”,”TAFlights_filter_title_reset”:”Reset”,”aw_done_ffffe1e5″:”Done”,”showing_nearby”:”Showing nearby ({0})”,”maps_zoom_in”:”Zoom in”,”maps_zoom_out”:”Zoom out”,”map_search_redo_search_button_text”:”Search this area”,”map_auto_search_label”:”Search as I move the map”,”phoenix_maps_accessibility_locate_me”:”Locate me”,”attractions.cta_more_info”:”More Info”,”board_basis_room_only”:”Room Only”,”board_basis_self_catering”:”Self Catering”,”board_basis_breakfast_included”:”Breakfast Included”,”board_basis_half_board”:”Half Board”,”board_basis_full_board”:”Full Board”,”board_basis_all_inclusive”:”All Inclusive”,”view_deal”:”View Deal”,”tags_category_tag_airport_transportation”:”Airport Transportation”,”num_night_stay_plus_flight_v2″:”{nNights, plural, one{# night} other{# night}} stay + flight”,”mobile_ib_nights_plural”:”{0, plural, one{# night} other{# nights}}”,”vp_per_person_short”:”pp”,”hotel_plus_flight”:”Hotel + Flight”,”view_all_n_deals_plural”:”View {0, plural, one{# deal} other{all # deals}}”,”view_all_deals_from_commerce_on_list_screen”:”View all {0} deals from {1}”,”collapse_deals”:”Collapse deals”,”full_view”:”Full view”,”seo_empty_photo_prompt”:”Have you been to {0}?”,”common_Postphotos”:”Post photos”,”ur_rd_WriteReview”:”Write Review”,”mv_photos_from_everyone”:”everyone”,”mv_photos_from_travelers”:”travelers”,”mv_photos_from_professionals”:”professionals”,”mv_photos_from_management”:”management”,”view_deal_button_cta”:”View deal”,”meta_ui_contact_hotel_c2b”:”Contact hotel for availability”,”no_availailability_from_partners”:”No availability for your dates from our partners”,”plus_hotel_savings_highlighted”:”u003cspan class=”{0}”>Save {1}u003c/span> on this stay”,”plus_hotel_generic_savings_highlighted”:”u003cspan class=”{0}”>Save {1}u003c/span> or more on this stay”,”plus_perks_message_only_map”:”Get member u003cspan class=”{0}”>perks and benefitsu003c/span> with your stay”,”plus_logged_in_discount_and_perks_map”:”u003cspan class=”{0}”>Save {1}u003c/span> and get perks with this stay”,”plus_logged_out_discount_and_perks_map_v2″:”u003cspan class=”{0}”>Save {1} or moreu003c/span> and get perks with this stay”,”plus_hotels_callout_discounts_perks”:”Discounts and perks included:”,”plus_hotels_perks_tooptip_and_more”:”And more”,”exp_see_n_experiences_from_cost_cap”:”{0, plural, one {See # experience} other {See # experiences}} from {1}”,”common_Read_more”:”Read more”,”common_Readless”:”Read less”,”more_link”:”More”,”tabs_photos_fffff660″:”Photos”,”hr_tabs_overview_tab_fffff660″:”Overview”,”tabs_tours_and_tickets”:”Tours & Tickets”,”tabs_reviews_fffff660″:”Reviews”,”mobile_nearby_af0″:”Nearby”,”react_safe_q_and_a”:”Q&A”,”covid19_safety_tab”:”COVID-19″,”attractions.booking.section.itinerary”:”Itinerary”,”attractions.booking.section.highlights”:”Highlights”,”attractions_booking_what_to_expect”:”What to Expect”,”attractions.booking.section.important_info”:”Important Information”,”related_activities”:”Related Activities”,”restaurant_nav_photos”:”Photos”,”restaurant_nav_overview”:”Overview”,”mob_menu_header_title_147b”:”Menu”,”details_section_header”:”Details”,”restaurant_nav_reviews”:”Reviews”,”TAFlights_search_flights_text”:”Search flights”,”reviews_and_more”:”Reviews & more”,”baggage_fees_text”:”Baggage fees”,”covid19_rr_restaurant_owner_gift_card”:”{boldStart}COVID-19{boldEnd}: Include a gift card option with your listing”,”covid19_rr_restaurant_owner_update_giftcard”:”Update gift card information”,”covid19_rr_restaurant_owner_add_giftcard”:”Add a gift card”,”covid19_restaurant_gift_card_info”:”Due to the COVID-19 pandemic, many diners are eating at home rather than dining out. One way to support your favorite restaurants during this financially stressful time: Consider purchasing a gift card (to be used at a later date), which will help businesses keep their operations running.”,”covid19_restaurant_gift_card2″:”{boldStart}COVID-19 Update:{boldEnd} Local restaurants need your support! Purchase a gift card directly from them and make a difference.”,”covid19_purchase_online_gift_card”:”Purchase a Gift Card”,”covid19_purchase_offline_gift_card2″:”{boldStart}COVID-19 Update:{boldEnd} Local restaurants need your support! Purchase a gift card directly from them and make a difference. Contact the restaurant for instructions.”,”eat_r_covid19_banner_takeout_only_date_v1″:”u003cb>COVID-19 Update: u003c/b> This restaurant is only available for takeout or delivery until {date}”,”eat_r_covid19_banner_takeout_only_v1″:”u003cb>COVID-19 Update: u003c/b> This restaurant is only available for takeout or delivery at this time.”,”announcement_banner_covid19_health_measures”:”u003cstrong>COVID-19 update:u003c/strong> See the added health and safety measures this property is taking.”,”announcement_banner_covid19_health_measures_apr”:”u003cstrong>COVID-19 update:u003c/strong> See the added health and safety measures this experience is taking.”,”announcement_banner_covid19_restaurant_note_only”:”u003cstrong>Update from restaurant:u003c/strong> This restaurant has indicated that they are taking additional safety measures due to COVID-19.”,”announcement_banner_covid19_apr_note_only”:”u003cstrong>Update from company:u003c/strong> This experience has indicated that they are taking additional safety measures due to COVID-19.”,”b2bh_covid_read_more”:”Read more”,”price_range_caps”:”PRICE RANGE”,”restaurant_special_diets”:”Special Diets”,”Mobile_Meals”:”Meals”,”restaurant_rr_caps_cuisines”:”CUISINES”,”rs_sales_lander2_features”:”FEATURES”,”ar_btf_about_header”:”About”,”restaurants_view_all_details”:”View all details”,”restaurants_show_full_menu”:”Show full menu”,”rd_hd_writeReview”:”Write a Review”,”rd_popularity_index_linked3″:”u003cb class=”{0}”>u003cspan class=”{1}”>#{2,number,integer}u003c/span>u003c/b> of {3,number,integer} u003ca href=”{4}”>{5} in {6}u003c/a>”,”ratings_and_reviews”:”Ratings and reviews”,”ratings_card_zero_reviews_short”:”There are no reviews for {RestaurantName} yet.”,”ratings_card_zero_reviews”:”There are no reviews for {RestaurantName} yet.nBe the first to write a review!”,”restaurant_rr_caps_rating”:”RATINGS”,”ratings_card_low_reviews_short”:”There aren't enough food, service, value or atmosphere ratings for {RestaurantName} yet.”,”ratings_card_low_reviews_v2″:”There aren’t enough food, service, value or atmosphere ratings for {RestaurantName} yet. Be one of the first to write a review!”,”mentions_headline”:”Mentioned in”,”native_login_user_review_anonymous”:”A Tripadvisor Member”,”rr_food_and_ambiance_title”:”Food and ambience”,”restaurant_owner_upload_photo_cta”:”Enhance your page u2014 Upload photos on your management center.”,”responsive_no_photo_content”:”Enhance this page – u003cspan class=”{spanClass}”>Upload photos!u003c/span>”,”mw_add_photo_ffffdfce”:”Add a photo”,”listing_detail_improve_this_listing_ffffeaf1″:”Improve this listing”,”rs_manage_this_business_link”:”Manage this business?”,”location_and_contact_overview”:”Location and contact”,”locationinfo_fffffa57″:”Email”,”restaurants_michelin_view_more”:”View more on MICHELIN Guide”,”social_profile_contributions”:”{0, plural, one{# contribution} other{# contributions}}”,”mentions_profile_label_a_lower”:”u003cspan class=”{prefixClassName}”>by u003c/span>u003ca class=”{nameClassName}” href=”{url}”>{name}u003c/a>”,”mentions_profile_label_a”:”u003cspan class=”{prefixClassName}”>By u003c/span>u003ca class=”{nameClassName}” href=”{url}”>{name}u003c/a>”,”mentions_profile_label_span_lower”:”u003cspan class=”{prefixClassName}”>by u003c/span>u003cspan class=”{nameClassName}”>{name}u003c/span>”,”mentions_profile_label_span”:”u003cspan class=”{prefixClassName}”>By u003c/span>u003cspan class=”{nameClassName}”>{name}u003c/span>”,”mobile_uberCTA_1ad3″:”Ride there with Uber”,”mobile_uber_1ad3″:”Pickup in {0} min”,”mobile_ola_cabs”:”Ride there with Ola”,”google_translation”:”Google Translation”,”machine_translated_google_disclaimer”:”This service may contain translations powered by Google. Google disclaims all warranties related to the translations, express or implied, including any warranties of accuracy, reliability, and any implied warranties of merchantability, fitness for a particular purpose and noninfringement.”,”sanitation_checklist_email_operator”:”Email operator”,”sanitation_checklist_email_restaurant”:”Email restaurant”,”Dashboard_HSBookingTools_ClickTypeEmail”:”Email hotel”,”sanitation_checklist_list_header_experiences”:”What you can expect during this experience”,”sanitation_checklist_list_header_restaurants”:”What you can expect during your visit”,”sanitation_checklist_list_header_hotels”:”What you can expect during your stay”,”sanitation_checklist_more_questions”:”More questions?”,”sanitation_checklist_community”:”Community”,”sanitation_checklist_ask_a_question”:”Ask a question”,”sanitation_checklist_write_a_review”:”Write a review”,”ts_module_tooltip”:”Visit our u003ca target=”_blank” href=”https://www.tripadvisor.com/travel-safe”>Travel Safe hubu003c/a> to see how we’re helping you make more informed travel decisions during COVID-19.”,”sanitation_checklist_covid19_travel_safe_v2″:”Travel safe during u003cspan style=”white-space: nowrap;”>COVID-19u003c/span>”,”sanitation_checklist_updated”:”Updated {updatedDate}”,”sanitation_checklist_disclaimer_text”:”Safety precautions are provided by the property and are not checked by Tripadvisor for accuracy.”,”sanitation_checklist_note_header”:”A note from {locationName}”,”linkify_removed_v2″:”u003clink removed>”,”set_primary_btn_label”:”Set as primary”,”set_primary_btn_success”:”Thank you”,”native_poidetails_section_media_badge_safety_message”:”Read this important safety alert”,”nsp.time_input.am”:”AM”,”nsp.time_input.pm”:”PM”,”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”,”mobile_hours_closes_in_ffffeaf4″:”Closes in {0} min”,”mobile_hours_opens_in_ffffeaf4″:”Opens in {0} min”,”location_is_open”:” Open now”,”location_is_closed”:” Closed now”,”mobile_geo_is_closed”:”{sGeo} – CLOSED”,”mobile_add_poi_address_15bf”:”Add Address”,”add_phone_number_button”:”+ Add phone number”,”locationinfo_fffffa56″:”Website”,”add_website_button”:”+ Add website”,”add_hours_button”:”+ Add hours”},”features”:{“rubicon_header_bidding”:true,”amazon_header_bidding”:true,”apr_lithium_control”:false,”sentryio_js”:false,”prod_runtime_tracking”:false,”react_tracking_impressions”:true,”fusion_lithium_hotels_page”:false,”fusion_lithium_hotels_list_page”:false,”fusion_lithium_restaurant_review_page”:false,”fusion_lithium_hotel_review_page”:false,”restaurant_list_consolidation”:false,”home_lithium”:true,”nearby_lithium”:true,”tourism_lithium”:true,”travel_advice”:true,”curated_shelves_preview”:true,”cruise_better_by_sea”:false,”account_merge”:true,”forum_home_lithium”:true,”tourism_management_center”:false,”tripadvisor_text_lander”:true,”mc_redesign_core”:false,”product_management”:false,”places_sift_tracking”:true,”t4b_management_center_full_story_sampled”:false,”t4b_management_center_full_story”:true,”hrm_beta_full_story”:true,”hrm_plg_visibility_part1″:true,”hrm_plg_visibility_part2″:true,”media_preview_focal_point”:false,”core_reg_flow_name”:true,”quicklinks_sorting_model”:false,”account_screen_onb”:false,”optimus_ad_slot”:true,”optimus”:true,”optimus_new_members”:true,”optimus_lower_savings_threshold”:false,”social_at_referencing_profile_links”:true,”trips_2018_collab”:true,”optimus_discount_interstitial”:true,”optimus_edu_interstitial”:false,”optimus_edu_interstitial_control”:false,”phoenix_plus”:false,”facebook_onetap_mobile”:false,”facebook_onetap_desktop”:true,”hr_defer_facebook_sdk”:false,”h_defer_facebook_sdk”:false,”mobile_web”:false,”home_location_prompt_master”:true,”optimus_date_picker_test_a”:false,”optimus_date_picker_test_b”:false,”qualtrics_surveys_any”:false,”disable_reg_dialog_for_hardgate”:false,”account_screen_onb_control”:false,”ml_hard_gate_model_v1_reevaluate_on_page_view”:false,”ml_hard_gate_dt_v1_master”:false,”ml_hard_gate_dt_v2_master”:false,”ml_hard_gate_dt_v3_master”:false,”ml_hard_gate_master”:false,”ml_hard_gate_dt”:false,”hard_gate_excl_disable_domain_direct”:false,”ungate_sponsored_listing_clicks”:true,”review_detail_hard_gate_master_dt”:false,”review_detail_hard_gate_dt_other_servlets”:false,”ml_hard_gate_targeting_logic”:false,”ml_hard_gate_no_reqlo”:false,”mw_hard_gate_ghost”:false,”mobile_fixed_ad”:false,”fusion_list_page_map_v2″:false,”fusion_prerelease”:false,”fusion_lithium_attraction_product_review_page”:true,”fusion_lithium”:false,”restaurants_sponsored_attribution_pixel”:false,”restaurants_attribution_pixel_clicks”:false,”restaurants_attribution_pixel_impressions”:false,”restaurants_detail_page_attribution_pixel”:false,”restaurants_unsponsored_attribution_pixel”:false,”hr_disable_cpm_ads”:false,”timed_refresh_after_15s”:false,”t4b_restaurant_special_offers_mobile”:true,”t4b_multiple_special_offers”:true,”hr_dark_green_icons”:true,”social_reposts”:true,”today_tomorrow_datepicker_labels_on_restaurant_review”:false,”restaurants_detail_new_rac”:true,”rr_commerce_clickoff_tighter_padding”:false,”rr_commerce_clickoff_show_arrow_on_button”:false,”rr_commerce_clickoff_show_only_order_online_button”:false,”trips_skip_check_whitelist_public_trips”:true,”trips_heart_icon”:true,”trips_bookmark”:true,”trips_pop_stat_modal”:true,”saves_hotspot_button”:true,”wc_maps_photo_carousel_DT”:true,”hr_maps_rich_content_hotelname”:true,”hr_mediaviewer_display_360_photos”:true,”image_carousel_ssr_all_images”:false,”image_carousel_ssr_7_images”:false,”seo_image_carousel_v3″:false,”image_carousel_ssr_10_images”:false,”bcom_partner_photos”:true,”vr_seo_machine_translated_markup_detail_page”:false,”restaurants_review_covid19_travel_safe_module”:true,”social_mentions_above_the_fold”:true,”restaurants_claimed_badge”:true,”curated_trips_attractions”:false,”curated_trips_restaurants”:false,”trip_modal_home”:true,”linkify_urls”:true},”urqlCache”:{“6378211”:{“data”:{“gptInfo”:[{“adBase”:”/5349/ta.ta.com.s/as.philippines.luzon”,”ppid”:”5GH6MM6533ZYSHYABZZ3KXPJ7LE7ER5NZPVEHBF7SN7WA2CB2TCA”,”pageLevelTargeting”:[{“key”:”browser”,”value”:[“chrome”]},{“key”:”country”,”value”:[“294245”]},{“key”:”detail”,”value”:[“10174721”]},{“key”:”drs”,”value”:[“BRAND_91″,”FL_81″,”P13N_41″,”PRT_75″,”REVB_61″,”REVM_82″,”SALES_27″,”SEARCH_49”]},{“key”:”geo”,”value”:[“469410”]},{“key”:”hname”,”value”:[“B_B_Grill”]},{“key”:”kw”,”value”:[“B_B_Grill”]},{“key”:”loctype”,”value”:[“restaurants”]},{“key”:”PageType”,”value”:[“Restaurant_Review”]},{“key”:”platform”,”value”:[“desktop”]},{“key”:”rd”,”value”:[“com”]},{“key”:”region”,”value”:[“469410″,”6090423″,”2152340″,”294248″]}]}]}},”81802887”:{“data”:{“RestaurantPresentation_searchRestaurantsByGeo”:{“restaurants”:[{“name”:”B&B Grill”,”telephone”:”+63 917 548 2325″,”localizedRealtimeAddress”:”Richtofen Street Brgy. Malabanias, Angeles City, Luzon 2009 Philippines”,”url”:”U0FKX2h0dHA6Ly93d3cuZmFjZWJvb2suY29tL2JuYmdyaWxsX29Ucw==”,”topTags”:[{“id”:10955,”tag”:{“localizedName”:”Mid-range”},”secondary_name”:”$$ – $$$”,”webRoute”:{“url”:”/Restaurants-g469410-zfp10955-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”}},{“id”:10636,”tag”:{“localizedName”:”Filipino”},”secondary_name”:null,”webRoute”:{“url”:”/Restaurants-g469410-c10636-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”}},{“id”:10640,”tag”:{“localizedName”:”Bar”},”secondary_name”:null,”webRoute”:{“url”:”/Restaurants-g469410-zft10640-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”}},{“id”:10651,”tag”:{“localizedName”:”Barbecue”},”secondary_name”:null,”webRoute”:{“url”:”/Restaurants-g469410-c6-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”}}],”external_reference”:{“id”:”10174721″,”namespace”:”TA”},”reviewSummary”:{“count”:17,”rating”:4},”ranking”:{“text”:”53 of 325 Restaurants in Angeles City”,”webRoute”:{“url”:”/Restaurants-g469410-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”},”textWithStyle”:”u003cb>u003cspan>#53u003c/span>u003c/b> of 325 Restaurants in Angeles City”},”updateListingPageRoute”:{“url”:”/UpdateListing-d10174721″},”menu”:{“has_provider”:false,”menu_url”:null},”open_hours”:{“is_open”:false,”is_permanently_closed”:false,”mins_until_open”:94,”mins_until_close”:null,”schedule”:{“sun”:[{“close_time”:”02:00:00″,”open_time”:”17:00:00″}],”mon”:[{“close_time”:”02:00:00″,”open_time”:”17:00:00″}],”tue”:[{“close_time”:”02:00:00″,”open_time”:”17:00:00″}],”wed”:[{“close_time”:”02:00:00″,”open_time”:”17:00:00″}],”thu”:[{“close_time”:”02:00:00″,”open_time”:”17:00:00″}],”fri”:[{“close_time”:”02:00:00″,”open_time”:”17:00:00″}],”sat”:[{“close_time”:”02:00:00″,”open_time”:”17:00:00″}]}},”ta_location”:{“isClosed”:false}}]}}},”404856581″:{“data”:{“RestaurantAwards_getRestaurantAwards”:[{“awardHeader”:”MICHELIN Guide’s Point of View”,”awardReadMore”:”Read more on MICHELIN Guide”,”awards”:[],”summaries”:[]}]}},”420820424″:{“data”:{“abridgedMenuResponse”:{“providerMenu”:null}}},”721237147″:{“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”:”Content Integrity”,”localizedAnchorText”:null,”newWindow”:true,”trackAction”:”content_integrity”,”url”:”https://tripadvisor.mediaroom.com/US-content-integrity-policy”}],”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”:”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-g294245-Philippines.html”,”isObfuscated”:null},{“preLocalizedAnchorText”:”How the site works”,”localizedAnchorText”:null,”newWindow”:null,”trackAction”:”hamon_law”,”url”:”/pages/serviceEN.html”,”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__tripadvisorus__2F__-a_urlKey.dc384df7d23fa0257.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”:”Find a vacation home on u003ca target=”_blank” class=”inlineLink” href=”https://www.vacationhomerentals.com/”>Vacation Home Rentalsu003c/a>”,”localizedLink”:null,”trackAction”:”sites_vr”},{“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”}]}}},”898264209″:{“data”:{“locations”:[{“name”:”Angeles City”}],”insightProfile”:{“locations”:[{“location”:{“locationId”:10174721,”parentId”:469410,”name”:”B&B Grill”,”url”:”/Restaurant_Review-g469410-d10174721-Reviews-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”,”HOTELS_URL”:”/Hotels?geo=10174721″,”ATTRACTIONS_URL”:”/Attractions?geo=10174721″,”RESTAURANTS_URL”:”/Restaurants?geo=10174721″,”isGeo”:false,”locationV2″:{“placeType”:”EATERY”,”names”:{“longOnlyHierarchyTypeahead”:”Angeles City, Philippines”,”longOnlyHierarchyTypeaheadV2″:”Angeles City, Philippines”},”vacationRentalsRoute”:null},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:2048,”maxHeight”:1536,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/0e/f7/cf/98/photo2jpg.jpg?w={width}&h={height}&s=1″}},”placeType”:”EATERY”}}]},”popularDestinations”:[{“locationId”:34227,”parentId”:10488475,”name”:”Fort Lauderdale”,”url”:”/Tourism-g34227-Fort_Lauderdale_Broward_County_Florida-Vacations.html”,”HOTELS_URL”:”/Hotels-g34227-Fort_Lauderdale_Broward_County_Florida-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g34227-Activities-Fort_Lauderdale_Broward_County_Florida.html”,”RESTAURANTS_URL”:”/Restaurants-g34227-Fort_Lauderdale_Broward_County_Florida.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Florida, United States”,”longOnlyHierarchyTypeaheadV2″:”Florida, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g34227-Reviews-Fort_Lauderdale_Broward_County_Florida-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:1920,”maxHeight”:1371,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c7/6b/ca/caption.jpg?w={width}&h={height}&s=1&cx=1312&cy=846&chk=v1_f78d8c742cf5ada16930″}},”placeType”:”CITY”},{“locationId”:34345,”parentId”:34340,”name”:”Key West”,”url”:”/Tourism-g34345-Key_West_Florida_Keys_Florida-Vacations.html”,”HOTELS_URL”:”/Hotels-g34345-Key_West_Florida_Keys_Florida-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g34345-Activities-Key_West_Florida_Keys_Florida.html”,”RESTAURANTS_URL”:”/Restaurants-g34345-Key_West_Florida_Keys_Florida.html”,”isGeo”:true,”locationV2″:{“placeType”:”ISLAND”,”names”:{“longOnlyHierarchyTypeahead”:”Florida, United States”,”longOnlyHierarchyTypeaheadV2″:”Florida, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g34345-Reviews-Key_West_Florida_Keys_Florida-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:5616,”maxHeight”:3744,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c2/97/1e/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”ISLAND”},{“locationId”:34438,”parentId”:28930,”name”:”Miami”,”url”:”/Tourism-g34438-Miami_Florida-Vacations.html”,”HOTELS_URL”:”/Hotels-g34438-Miami_Florida-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g34438-Activities-Miami_Florida.html”,”RESTAURANTS_URL”:”/Restaurants-g34438-Miami_Florida.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Florida, United States”,”longOnlyHierarchyTypeaheadV2″:”Florida, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g34438-Reviews-Miami_Florida-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:1769,”maxHeight”:1179,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/cd/04/e4/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”},{“locationId”:34515,”parentId”:1591089,”name”:”Orlando”,”url”:”/Tourism-g34515-Orlando_Florida-Vacations.html”,”HOTELS_URL”:”/Hotels-g34515-Orlando_Florida-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g34515-Activities-Orlando_Florida.html”,”RESTAURANTS_URL”:”/Restaurants-g34515-Orlando_Florida.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Florida, United States”,”longOnlyHierarchyTypeaheadV2″:”Florida, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g34515-Reviews-Orlando_Florida-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:2520,”maxHeight”:1680,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c0/b2/d2/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:60814,”parentId”:659477,”name”:”Savannah”,”url”:”/Tourism-g60814-Savannah_Georgia-Vacations.html”,”HOTELS_URL”:”/Hotels-g60814-Savannah_Georgia-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g60814-Activities-Savannah_Georgia.html”,”RESTAURANTS_URL”:”/Restaurants-g60814-Savannah_Georgia.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Georgia, United States”,”longOnlyHierarchyTypeaheadV2″:”Georgia, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g60814-Reviews-Savannah_Georgia-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:5040,”maxHeight”:4112,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/ae/5e/16/caption.jpg?w={width}&h={height}&s=1&cx=2799&cy=2496&chk=v1_c587085a66c8ed1d78e7″}},”placeType”:”CITY”},{“locationId”:54359,”parentId”:659476,”name”:”Myrtle Beach”,”url”:”/Tourism-g54359-Myrtle_Beach_South_Carolina-Vacations.html”,”HOTELS_URL”:”/Hotels-g54359-Myrtle_Beach_South_Carolina-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g54359-Activities-Myrtle_Beach_South_Carolina.html”,”RESTAURANTS_URL”:”/Restaurants-g54359-Myrtle_Beach_South_Carolina.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”South Carolina, United States”,”longOnlyHierarchyTypeaheadV2″:”South Carolina, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g54359-Reviews-Myrtle_Beach_South_Carolina-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:3868,”maxHeight”:2578,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/bf/69/b0/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”},{“locationId”:34439,”parentId”:28930,”name”:”Miami Beach”,”url”:”/Tourism-g34439-Miami_Beach_Florida-Vacations.html”,”HOTELS_URL”:”/Hotels-g34439-Miami_Beach_Florida-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g34439-Activities-Miami_Beach_Florida.html”,”RESTAURANTS_URL”:”/Restaurants-g34439-Miami_Beach_Florida.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Florida, United States”,”longOnlyHierarchyTypeaheadV2″:”Florida, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g34439-Reviews-Miami_Beach_Florida-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:1440,”maxHeight”:1071,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/cc/e1/67/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”},{“locationId”:45963,”parentId”:28949,”name”:”Las Vegas”,”url”:”/Tourism-g45963-Las_Vegas_Nevada-Vacations.html”,”HOTELS_URL”:”/Hotels-g45963-Las_Vegas_Nevada-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g45963-Activities-Las_Vegas_Nevada.html”,”RESTAURANTS_URL”:”/Restaurants-g45963-Las_Vegas_Nevada.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Nevada, United States”,”longOnlyHierarchyTypeaheadV2″:”Nevada, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g45963-Reviews-Las_Vegas_Nevada-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:1200,”maxHeight”:800,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c0/87/b0/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”},{“locationId”:60750,”parentId”:28926,”name”:”San Diego”,”url”:”/Tourism-g60750-San_Diego_California-Vacations.html”,”HOTELS_URL”:”/Hotels-g60750-San_Diego_California-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g60750-Activities-San_Diego_California.html”,”RESTAURANTS_URL”:”/Restaurants-g60750-San_Diego_California.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”California, United States”,”longOnlyHierarchyTypeaheadV2″:”California, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g60750-Reviews-San_Diego_California-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:5472,”maxHeight”:3647,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1b/48/a5/2c/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:60982,”parentId”:29222,”name”:”Honolulu”,”url”:”/Tourism-g60982-Honolulu_Oahu_Hawaii-Vacations.html”,”HOTELS_URL”:”/Hotels-g60982-Honolulu_Oahu_Hawaii-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g60982-Activities-Honolulu_Oahu_Hawaii.html”,”RESTAURANTS_URL”:”/Restaurants-g60982-Honolulu_Oahu_Hawaii.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Hawaii, United States”,”longOnlyHierarchyTypeaheadV2″:”Hawaii, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g60982-Reviews-Honolulu_Oahu_Hawaii-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:4700,”maxHeight”:3133,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c1/a0/72/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”},{“locationId”:60763,”parentId”:28953,”name”:”New York City”,”url”:”/Tourism-g60763-New_York_City_New_York-Vacations.html”,”HOTELS_URL”:”/Hotels-g60763-New_York_City_New_York-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g60763-Activities-New_York_City_New_York.html”,”RESTAURANTS_URL”:”/Restaurants-g60763-New_York_City_New_York.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”New York, United States”,”longOnlyHierarchyTypeaheadV2″:”New York, United States”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g60763-Reviews-New_York_City_New_York-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:2520,”maxHeight”:2068,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c5/7c/68/caption.jpg?w={width}&h={height}&s=1&cx=950&cy=1766&chk=v1_9ee2771da71f55a7ac6a”}},”placeType”:”CITY”},{“locationId”:150807,”parentId”:1575485,”name”:”Cancun”,”url”:”/Tourism-g150807-Cancun_Yucatan_Peninsula-Vacations.html”,”HOTELS_URL”:”/Hotels-g150807-Cancun_Yucatan_Peninsula-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g150807-Activities-Cancun_Yucatan_Peninsula.html”,”RESTAURANTS_URL”:”/Restaurants-g150807-Cancun_Yucatan_Peninsula.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Quintana Roo, Mexico”,”longOnlyHierarchyTypeaheadV2″:”Yucatan Peninsula, Mexico”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g150807-Reviews-Cancun_Yucatan_Peninsula-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:1225,”maxHeight”:1633,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/ae/5d/ec/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:150812,”parentId”:659488,”name”:”Playa del Carmen”,”url”:”/Tourism-g150812-Playa_del_Carmen_Yucatan_Peninsula-Vacations.html”,”HOTELS_URL”:”/Hotels-g150812-Playa_del_Carmen_Yucatan_Peninsula-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g150812-Activities-Playa_del_Carmen_Yucatan_Peninsula.html”,”RESTAURANTS_URL”:”/Restaurants-g150812-Playa_del_Carmen_Yucatan_Peninsula.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Quintana Roo, Mexico”,”longOnlyHierarchyTypeaheadV2″:”Yucatan Peninsula, Mexico”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g150812-Reviews-Playa_del_Carmen_Yucatan_Peninsula-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:3000,”maxHeight”:2002,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c0/ad/21/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:3176298,”parentId”:147293,”name”:”Bavaro”,”url”:”/Tourism-g3176298-Bavaro_Punta_Cana_La_Altagracia_Province_Dominican_Republic-Vacations.html”,”HOTELS_URL”:”/Hotels-g3176298-Bavaro_Punta_Cana_La_Altagracia_Province_Dominican_Republic-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g3176298-Activities-Bavaro_Punta_Cana_La_Altagracia_Province_Dominican_Republic.html”,”RESTAURANTS_URL”:”/Restaurants-g3176298-Bavaro_Punta_Cana_La_Altagracia_Province_Dominican_Republic.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Dominican Republic, Caribbean”,”longOnlyHierarchyTypeaheadV2″:”Punta Cana, Dominican Republic”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g3176298-Reviews-Bavaro_Punta_Cana_La_Altagracia_Province_Dominican_Republic-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:3264,”maxHeight”:2448,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/09/f3/ae/2e/bavaro-beach.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”},{“locationId”:295424,”parentId”:2630221,”name”:”Dubai”,”url”:”/Tourism-g295424-Dubai_Emirate_of_Dubai-Vacations.html”,”HOTELS_URL”:”/Hotels-g295424-Dubai_Emirate_of_Dubai-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g295424-Activities-Dubai_Emirate_of_Dubai.html”,”RESTAURANTS_URL”:”/Restaurants-g295424-Dubai_Emirate_of_Dubai.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”United Arab Emirates, Middle East”,”longOnlyHierarchyTypeaheadV2″:”Emirate of Dubai, United Arab Emirates”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g295424-Reviews-Dubai_Emirate_of_Dubai-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:5472,”maxHeight”:3648,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1b/51/ca/8d/caption.jpg?w={width}&h={height}&s=1&cx=2985&cy=1423&chk=v1_ee80618899fd7d7544dd”}},”placeType”:”MUNICIPALITY”},{“locationId”:187147,”parentId”:187144,”name”:”Paris”,”url”:”/Tourism-g187147-Paris_Ile_de_France-Vacations.html”,”HOTELS_URL”:”/Hotels-g187147-Paris_Ile_de_France-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g187147-Activities-Paris_Ile_de_France.html”,”RESTAURANTS_URL”:”/Restaurants-g187147-Paris_Ile_de_France.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Ile-de-France, France”,”longOnlyHierarchyTypeaheadV2″:”Ile-de-France, France”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g187147-Reviews-Paris_Ile_de_France-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:2970,”maxHeight”:3713,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c2/86/0e/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”},{“locationId”:186338,”parentId”:186217,”name”:”London”,”url”:”/Tourism-g186338-London_England-Vacations.html”,”HOTELS_URL”:”/Hotels-g186338-London_England-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g186338-Activities-London_England.html”,”RESTAURANTS_URL”:”/Restaurants-g186338-London_England.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”England, United Kingdom”,”longOnlyHierarchyTypeaheadV2″:”England, United Kingdom”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g186338-Reviews-London_England-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:6000,”maxHeight”:4000,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1c/c0/b1/4b/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”},{“locationId”:297962,”parentId”:297960,”name”:”Antalya”,”url”:”/Tourism-g297962-Antalya_Turkish_Mediterranean_Coast-Vacations.html”,”HOTELS_URL”:”/Hotels-g297962-Antalya_Turkish_Mediterranean_Coast-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g297962-Activities-Antalya_Turkish_Mediterranean_Coast.html”,”RESTAURANTS_URL”:”/Restaurants-g297962-Antalya_Turkish_Mediterranean_Coast.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Turkey, Europe”,”longOnlyHierarchyTypeaheadV2″:”Turkish Mediterranean Coast, Turkey”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g297962-Reviews-Antalya_Turkish_Mediterranean_Coast-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:3630,”maxHeight”:710,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/15/33/fd/3c/antalya.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:312725,”parentId”:13098613,”name”:”Belek”,”url”:”/Tourism-g312725-Belek_Serik_District_Turkish_Mediterranean_Coast-Vacations.html”,”HOTELS_URL”:”/Hotels-g312725-Belek_Serik_District_Turkish_Mediterranean_Coast-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g312725-Activities-Belek_Serik_District_Turkish_Mediterranean_Coast.html”,”RESTAURANTS_URL”:”/Restaurants-g312725-Belek_Serik_District_Turkish_Mediterranean_Coast.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Turkey, Europe”,”longOnlyHierarchyTypeaheadV2″:”Turkish Mediterranean Coast, Turkey”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g312725-Reviews-Belek_Serik_District_Turkish_Mediterranean_Coast-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:1575,”maxHeight”:983,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/0a/cd/d5/11/caption.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:297555,”parentId”:297556,”name”:”Sharm El Sheikh”,”url”:”/Tourism-g297555-Sharm_El_Sheikh_South_Sinai_Red_Sea_and_Sinai-Vacations.html”,”HOTELS_URL”:”/Hotels-g297555-Sharm_El_Sheikh_South_Sinai_Red_Sea_and_Sinai-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g297555-Activities-Sharm_El_Sheikh_South_Sinai_Red_Sea_and_Sinai.html”,”RESTAURANTS_URL”:”/Restaurants-g297555-Sharm_El_Sheikh_South_Sinai_Red_Sea_and_Sinai.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Egypt, Africa”,”longOnlyHierarchyTypeaheadV2″:”Red Sea and Sinai, Egypt”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g297555-Reviews-Sharm_El_Sheikh_South_Sinai_Red_Sea_and_Sinai-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:5967,”maxHeight”:1167,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/15/33/fc/ed/sharm-el-sheikh.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:297966,”parentId”:297960,”name”:”Kemer”,”url”:”/Tourism-g297966-Kemer_Turkish_Mediterranean_Coast-Vacations.html”,”HOTELS_URL”:”/Hotels-g297966-Kemer_Turkish_Mediterranean_Coast-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g297966-Activities-Kemer_Turkish_Mediterranean_Coast.html”,”RESTAURANTS_URL”:”/Restaurants-g297966-Kemer_Turkish_Mediterranean_Coast.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Turkey, Europe”,”longOnlyHierarchyTypeaheadV2″:”Turkish Mediterranean Coast, Turkey”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g297966-Reviews-Kemer_Turkish_Mediterranean_Coast-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:3059,”maxHeight”:980,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/15/33/fd/40/kemer.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:297549,”parentId”:297545,”name”:”Hurghada”,”url”:”/Tourism-g297549-Hurghada_Red_Sea_and_Sinai-Vacations.html”,”HOTELS_URL”:”/Hotels-g297549-Hurghada_Red_Sea_and_Sinai-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g297549-Activities-Hurghada_Red_Sea_and_Sinai.html”,”RESTAURANTS_URL”:”/Restaurants-g297549-Hurghada_Red_Sea_and_Sinai.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Egypt, Africa”,”longOnlyHierarchyTypeaheadV2″:”Red Sea and Sinai, Egypt”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g297549-Reviews-Hurghada_Red_Sea_and_Sinai-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:5184,”maxHeight”:1012,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/15/33/fc/eb/hurghada.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:297961,”parentId”:297960,”name”:”Alanya”,”url”:”/Tourism-g297961-Alanya_Turkish_Mediterranean_Coast-Vacations.html”,”HOTELS_URL”:”/Hotels-g297961-Alanya_Turkish_Mediterranean_Coast-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g297961-Activities-Alanya_Turkish_Mediterranean_Coast.html”,”RESTAURANTS_URL”:”/Restaurants-g297961-Alanya_Turkish_Mediterranean_Coast.html”,”isGeo”:true,”locationV2″:{“placeType”:”MUNICIPALITY”,”names”:{“longOnlyHierarchyTypeahead”:”Turkey, Europe”,”longOnlyHierarchyTypeaheadV2″:”Turkish Mediterranean Coast, Turkey”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g297961-Reviews-Alanya_Turkish_Mediterranean_Coast-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:2000,”maxHeight”:1500,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/0d/f5/fc/63/sea-view-from-the-castle.jpg?w={width}&h={height}&s=1″}},”placeType”:”MUNICIPALITY”},{“locationId”:297968,”parentId”:297967,”name”:”Side”,”url”:”/Tourism-g297968-Side_Manavgat_Turkish_Mediterranean_Coast-Vacations.html”,”HOTELS_URL”:”/Hotels-g297968-Side_Manavgat_Turkish_Mediterranean_Coast-Hotels.html”,”ATTRACTIONS_URL”:”/Attractions-g297968-Activities-Side_Manavgat_Turkish_Mediterranean_Coast.html”,”RESTAURANTS_URL”:”/Restaurants-g297968-Side_Manavgat_Turkish_Mediterranean_Coast.html”,”isGeo”:true,”locationV2″:{“placeType”:”CITY”,”names”:{“longOnlyHierarchyTypeahead”:”Turkey, Europe”,”longOnlyHierarchyTypeaheadV2″:”Turkish Mediterranean Coast, Turkey”},”vacationRentalsRoute”:{“url”:”/VacationRentals-g297968-Reviews-Side_Manavgat_Turkish_Mediterranean_Coast-Vacation_Rentals.html”}},”thumbnail”:{“photoSizeDynamic”:{“maxWidth”:4128,”maxHeight”:2322,”urlTemplate”:”https://dynamic-media-cdn.tripadvisor.com/media/photo-o/0f/89/33/c6/20160829-172606-largejpg.jpg?w={width}&h={height}&s=1″}},”placeType”:”CITY”}]}},”1012441724″:{“data”:{“BaSpecialOffers_findSpecialOffersByLocationIds”:[{“locationId”:10174721,”specialOffers”:[]}]}},”1342819371″:{“data”:{“canViewOptimusFeatures”:true}},”1433442450″:{“data”:{“RestaurantCommerceSelection_getDeliveryTakeoutOnlyStatus”:null}},”2012593743″:{“data”:{“locations”:[{“parentGeoId”:294248,”postPhotosUrl”:”/PostPhotos-d10174721″,”writeUserReviewUrl”:”/UserReview-g469410-d10174721-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”}]}},”2291066975″:{“data”:{“faqs”:[[{“question”:”Does B&B Grill offer takeout?”,”answer”:”Yes, B&B Grill offers takeout services.”,”answerJsonLd”:”Yes, B&B Grill offers takeout services.”},{“question”:”Does B&B Grill offer delivery?”,”answer”:”Yes, B&B Grill offers delivery services.”,”answerJsonLd”:”Yes, B&B Grill offers delivery services.”},{“question”:”How is B&B Grill rated?”,”answer”:”B&B Grill is rated accordingly in the following categories by Tripadvisor travelers:u003cbr>u003cul>u003cli>Food: 3u003c/li>u003cli>Service: 3.5u003c/li>u003cli>Value: 3.5u003c/li>u003c/ul>”,”answerJsonLd”:”B&B Grill is rated accordingly in the following categories by Tripadvisor travelers:u003cbr>u003cul>u003cli>Food: 3u003c/li>u003cli>Service: 3.5u003c/li>u003cli>Value: 3.5u003c/li>u003c/ul>”}]],”locations”:[{“name”:”B&B Grill”}]}},”2652962399″:{“data”:{“currency”:{“code”:”USD”,”name”:”U.S. Dollars”,”symbol”:”$”}}},”2879066021″:{“data”:{“socialContentFromLocation”:{“hasMore”:false,”impressionId”:”013fdefc-a0d8-41d1-bdb1-6281ceb49209″,”sections”:[]}}},”2888623345″:{“data”:{“menuResponse”:{“providerMenu”:null}}},”3000539684″:{“data”:{“safetyInfo”:[{“location”:{“locationId”:10174721,”name”:”B&B Grill”,”placeType”:”EATERY”},”updatedDate”:null,”managementResponse”:null,”safetyTags”:[]}]}},”3053624406″:{“data”:{“locations”:[{“hasSensitiveIssues”:false,”locationV2″:{“taMessageText”:””}}]}},”3054309120″:{“data”:{“Menus_getGiftcards”:[{“ownerIndicator”:null,”urls”:[]}]}},”4013122694″:{“data”:{“safetyInfo”:[{“managementResponse”:null,”safetyTags”:[]}]}},”4047476204″:{“data”:{“ownerPropertiesForUserLocation”:null}},”156401003945857″:{“data”:{“currentLocale”:{“pointOfSaleName”:”United States”,”ietfLocale”:”en”,”languageName”:”English”,”country”:{“locationId”:191,”name”:”United States”}}}}},”redux”:{“i18n”:{“locale”:”en_US”,”language”:”en”,”ietfLocale”:”en-US”,”isRtl”:false,”distanceUnit”:”MILES”,”firstDayOfWeek”:0},”api”:{“requests”:{“_data_1_0_restaurants_10174721_commerce_providers”:{“loading”:false,”result”:[“/data/1.0/restaurants/10174721/commerce/providers”],”url”:”/data/1.0/restaurants/10174721/commerce/providers”},”_data_1_0_restaurant_10174721_ownerLikelihood”:{“loading”:false,”result”:[“/data/1.0/restaurant/10174721/ownerLikelihood”],”url”:”/data/1.0/restaurant/10174721/ownerLikelihood”},”_data_1_0_cmspromo_Restaurant_Review_10174721_get_CENTER_placement_”:{“loading”:false,”result”:[“/data/1.0/cmspromo/Restaurant_Review-10174721/get/CENTER?placement=”],”url”:”/data/1.0/cmspromo/Restaurant_Review-10174721/get/CENTER?placement=”},”_data_1_0_location_10174721″:{“loading”:false,”result”:[“/data/1.0/location/10174721″],”url”:”/data/1.0/location/10174721″},”_data_1_0_location_10174721_hours”:{“loading”:false,”result”:[“/data/1.0/location/10174721/hours”],”url”:”/data/1.0/location/10174721/hours”},”_data_1_0_restaurant_10174721_overview”:{“loading”:false,”result”:[“/data/1.0/restaurant/10174721/overview”],”url”:”/data/1.0/restaurant/10174721/overview”},”_data_1_0_cmspromo_Restaurant_Review_10174721_get_POPUP_placement_”:{“loading”:false,”result”:[“/data/1.0/cmspromo/Restaurant_Review-10174721/get/POPUP?placement=”],”url”:”/data/1.0/cmspromo/Restaurant_Review-10174721/get/POPUP?placement=”},”_data_1_0_brand_header_servlet_Restaurant_Review_viewportCategory_DESKTOP_geoId_469410_pageName_Restaurant_Review_isTaReferrer_false”:{“loading”:false,”result”:[“/data/1.0/brand/header?servlet=Restaurant_Review&viewportCategory=DESKTOP&geoId=469410&pageName=Restaurant_Review&isTaReferrer=false”],”url”:”/data/1.0/brand/header?servlet=Restaurant_Review&viewportCategory=DESKTOP&geoId=469410&pageName=Restaurant_Review&isTaReferrer=false”},”_data_1_0_cmspromo_Restaurant_Review_10174721_get_RIGHT_placement_”:{“loading”:false,”result”:[“/data/1.0/cmspromo/Restaurant_Review-10174721/get/RIGHT?placement=”],”url”:”/data/1.0/cmspromo/Restaurant_Review-10174721/get/RIGHT?placement=”},”_data_1_0_restaurant_10174721_ownerStatus”:{“loading”:false,”result”:[“/data/1.0/restaurant/10174721/ownerStatus”],”url”:”/data/1.0/restaurant/10174721/ownerStatus”}},”responses”:{“/data/1.0/restaurant/10174721/overview”:{“data”:{“name”:”B&B Grill, Philippines”,”detailId”:10174721,”geo”:”Angeles City, Philippines”,”geoId”:469410,”isOwner”:false,”links”:{“warUrl”:”/UserReviewEdit-g469410-d10174721-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”,”addPhotoUrl”:”/PostPhotos-g469410-d10174721″,”ownerAddPhotoUrl”:”/ManagePhotos-d10174721-B_B_Grill”},”location”:{“latitude”:15.158714,”longitude”:120.58202,”directionsUrl”:”dXgxX2h0dHBzOi8vbWFwcy5nb29nbGUuY29tL21hcHM/c2FkZHI9JmRhZGRyPVJpY2h0b2ZlbitTdHJlZXQrQnJneS4rTWFsYWJhbmlhcyUyQytBbmdlbGVzK0NpdHklMkMrTHV6b24rMjAwOStQaGlsaXBwaW5lc0AxNS4xNTg3MTQsMTIwLjU4MjAyX1lvaQ==”,”landmark”:null,”neighborhood”:null},”contact”:{“address”:”Richtofen Street Brgy. Malabanias, Angeles City, Luzon 2009 Philippines”,”email”:”grillbnb@gmail.com”,”phone”:”+63 917 548 2325″,”website”:”M3d4X2h0dHA6Ly93d3cuZmFjZWJvb2suY29tL2JuYmdyaWxsX2xJMw==”},”rating”:{“primaryRanking”:{“rank”:22,”totalCount”:88,”category”:”Filipino”,”geo”:”Angeles City”,”url”:”/Restaurants-g469410-c10636-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”},”secondaryRanking”:{“rank”:53,”totalCount”:325,”category”:”Restaurants”,”geo”:”Angeles City”,”url”:”/Restaurants-g469410-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”},”primaryRating”:4,”reviewCount”:17,”ratingQuestions”:[{“name”:”Food”,”rating”:30,”icon”:”restaurants”},{“name”:”Service”,”rating”:35,”icon”:”bell”},{“name”:”Value”,”rating”:35,”icon”:”wallet-fill”}]},”tags”:{“reviewSnippetSections”:null},”detailCard”:{“tagTexts”:{“priceRange”:{“tagCategoryId”:240,”tags”:[{“tagId”:10955,”tagValue”:”Mid-range”}]},”cuisines”:{“tagCategoryId”:231,”tags”:[{“tagId”:10636,”tagValue”:”Filipino”},{“tagId”:10651,”tagValue”:”Barbecue”},{“tagId”:10668,”tagValue”:”Grill”},{“tagId”:10640,”tagValue”:”Bar”},{“tagId”:10659,”tagValue”:”Asian”},{“tagId”:10670,”tagValue”:”Pub”}]},”dietaryRestrictions”:{“tagCategoryId”:285,”tags”:[]},”meals”:{“tagCategoryId”:233,”tags”:[{“tagId”:10599,”tagValue”:”Dinner”},{“tagId”:10704,”tagValue”:”Late Night”},{“tagId”:10949,”tagValue”:”Drinks”}]},”features”:{“tagCategoryId”:234,”tags”:[{“tagId”:10854,”tagValue”:”Parking Available”},{“tagId”:10855,”tagValue”:”Street Parking”},{“tagId”:10858,”tagValue”:”Free off-street parking”},{“tagId”:10859,”tagValue”:”Television”},{“tagId”:10862,”tagValue”:”Serves Alcohol”},{“tagId”:10863,”tagValue”:”Full Bar”},{“tagId”:10864,”tagValue”:”Wine and Beer”},{“tagId”:10869,”tagValue”:”Cash Only”},{“tagId”:10870,”tagValue”:”Free Wifi”},{“tagId”:10601,”tagValue”:”Takeout”},{“tagId”:10602,”tagValue”:”Reservations”},{“tagId”:10603,”tagValue”:”Outdoor Seating”},{“tagId”:10852,”tagValue”:”Seating”},{“tagId”:10861,”tagValue”:”Wheelchair Accessible”},{“tagId”:16547,”tagValue”:”Table Service”}]},”establishmentType”:{“tagCategoryId”:230,”tags”:[{“tagId”:10591,”tagValue”:”Restaurants”}]}},”numericalPrice”:””,”improveListingUrl”:”/ImproveListing-d10174721.html”,”updateListingUrl”:”/ManageListing-g469410-d10174721-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”}},”error”:null},”/data/1.0/cmspromo/Restaurant_Review-10174721/get/RIGHT?placement=”:{“data”:null,”error”:null},”/data/1.0/location/10174721″:{“data”:{“location_id”:”10174721″,”name”:”B&B Grill”,”latitude”:”15.158714″,”longitude”:”120.58202″,”num_reviews”:”17″,”timezone”:”Asia/Manila”,”location_string”:”Angeles City, Pampanga Province, Central Luzon Region, Luzon”,”awards”:[],”doubleclick_zone”:”as.philippines.luzon”,”preferred_map_engine”:”default”,”raw_ranking”:”3.2065584659576416″,”ranking_geo”:”Angeles City”,”ranking_geo_id”:”469410″,”ranking_position”:”61″,”ranking_denominator”:”376″,”ranking_category”:”restaurant”,”ranking”:”#61 of 452 places to eat in Angeles City”,”distance”:null,”distance_string”:null,”bearing”:null,”rating”:”4.0″,”is_closed”:false,”open_now_text”:”Closed Now”,”is_long_closed”:false,”price_level”:”$$ – $$$”,”description”:”B&B Barbecue and Beer is the perfect stop for grilled delights, cool drinks and lots of other gustatory treats cooked to perfection. East meets west in this food destination, what with the modern interior spruced with just the right amount of laid-back feel.”,”web_url”:”https://www.tripadvisor.com/Restaurant_Review-g469410-d10174721-Reviews-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”,”write_review”:”https://www.tripadvisor.com/UserReview-g469410-d10174721-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”,”ancestors”:[{“subcategory”:[{“key”:”municipality”,”name”:”Municipality”}],”name”:”Angeles City”,”abbrv”:null,”location_id”:”469410″},{“subcategory”:[{“key”:”province”,”name”:”Province”}],”name”:”Pampanga Province”,”abbrv”:null,”location_id”:”6090423″},{“subcategory”:[{“key”:”region”,”name”:”Region”}],”name”:”Central Luzon Region”,”abbrv”:null,”location_id”:”2152340″},{“subcategory”:[{“key”:”island”,”name”:”Island”}],”name”:”Luzon”,”abbrv”:null,”location_id”:”294248″},{“subcategory”:[{“key”:”country”,”name”:”Country”}],”name”:”Philippines”,”abbrv”:null,”location_id”:”294245″}],”category”:{“key”:”restaurant”,”name”:”Restaurant”},”subcategory”:[],”parent_display_name”:”Angeles City”,”is_jfy_enabled”:false,”nearest_metro_station”:[],”phone”:”+63 917 548 2325″,”website”:”http://www.facebook.com/bnbgrill”,”email”:”grillbnb@gmail.com”,”address_obj”:{“street1″:”Richtofen Street”,”street2″:”Brgy. Malabanias”,”city”:”Angeles City”,”state”:null,”country”:”Philippines”,”postalcode”:”2009″},”address”:”Richtofen Street Brgy. Malabanias, Angeles City, Luzon 2009 Philippines”,”hours”:{“week_ranges”:[[{“open_time”:1020,”close_time”:1560}],[{“open_time”:1020,”close_time”:1560}],[{“open_time”:1020,”close_time”:1560}],[{“open_time”:1020,”close_time”:1560}],[{“open_time”:1020,”close_time”:1560}],[{“open_time”:1020,”close_time”:1560}],[{“open_time”:1020,”close_time”:1560}]],”timezone”:”Asia/Manila”},”is_candidate_for_contact_info_suppression”:false,”cuisine”:[{“key”:”10636″,”name”:”Filipino”},{“key”:”10651″,”name”:”Barbecue”},{“key”:”10668″,”name”:”Grill”},{“key”:”10640″,”name”:”Bar”},{“key”:”10659″,”name”:”Asian”},{“key”:”10670″,”name”:”Pub”}],”dietary_restrictions”:[],”photo”:{“id”:”251121560″,”published_date”:”2017-04-14T12:15:32-0400″,”helpful_votes”:”2″,”is_blessed”:false,”uploaded_date”:”2017-04-14T12:15:32-0400″,”images”:{“small”:{“url”:”https://media-cdn.tripadvisor.com/media/photo-l/0e/f7/cf/98/photo2jpg.jpg”,”width”:”150″,”height”:”150″},”thumbnail”:{“url”:”https://media-cdn.tripadvisor.com/media/photo-t/0e/f7/cf/98/photo2jpg.jpg”,”width”:”50″,”height”:”50″},”original”:{“url”:”https://media-cdn.tripadvisor.com/media/photo-o/0e/f7/cf/98/photo2jpg.jpg”,”width”:”2048″,”height”:”1536″},”large”:{“url”:”https://media-cdn.tripadvisor.com/media/photo-s/0e/f7/cf/98/photo2jpg.jpg”,”width”:”550″,”height”:”413″},”medium”:{“url”:”https://media-cdn.tripadvisor.com/media/photo-f/0e/f7/cf/98/photo2jpg.jpg”,”width”:”250″,”height”:”188″}}},”tags”:null,”display_hours”:[{“days”:”Sun – Sat”,”times”:[“5:00 PM – 2:00 AM”]}]},”error”:null},”/data/1.0/brand/header?servlet=Restaurant_Review&viewportCategory=DESKTOP&geoId=469410&pageName=Restaurant_Review&isTaReferrer=false”:{“data”:{“adjustForSmartBanner”:false,”showGeopill”:true,”numLines”:2,”isPersistentHeader”:false,”usePersistentIcons”:true,”hideLogo”:false,”liteHeader”:false},”error”:null},”/data/1.0/cmspromo/Restaurant_Review-10174721/get/CENTER?placement=”:{“data”:null,”error”:null},”/data/1.0/location/10174721/hours”:{“data”:{“openStatus”:”CLOSED”,”openStatusText”:”Closed Now”,”hoursTodayText”:”Hours Today: 5:00 PM – 2:00 AM”,”currentHoursText”:””,”allOpenHours”:[{“days”:”Sun – Sat”,”times”:[“5:00 PM – 2:00 AM”]}],”addHoursLink”:{“url”:”/UpdateListing-d10174721#Hours-only”,”text”:”+ Add hours”}},”error”:null},”/data/1.0/cmspromo/Restaurant_Review-10174721/get/POPUP?placement=”:{“data”:null,”error”:null},”/data/1.0/restaurant/10174721/ownerStatus”:{“data”:{“isVerified”:false,”isMemberOwner”:false,”isUserInCountry”:false},”error”:null},”/data/1.0/restaurants/10174721/commerce/providers”:{“data”:{“slot1Offer”:null,”slot2Offer”:null},”error”:null},”/data/1.0/restaurant/10174721/ownerLikelihood”:{“data”:{“isOwner”:false,”likelihood”:”LOW”},”error”:null}}},”page”:{“name”:”LOCATION_DETAIL”,”geoId”:469410,”detailId”:10174721,”crossSells”:null},”travelerInfo”:{“preferences”:{“currency”:”USD”},”hotels”:null,”vr”:{“start”:null,”end”:null,”adults”:2,”children”:0},”attractions”:{“singleDate”:””,”fromDate”:””,”toDate”:””,”attractionPaxAdults”:0,”attractionPaxChildren”:0},”restaurants”:{“date”:”2021-07-08″,”time”:”8:00 PM”,”partySize”:”2″,”isDefault”:true,”displayDate”:”Thu, 7/8″},”home”:null,”flights”:{“oneWayDate”:”2021-07-22″,”departureDate”:”2021-07-22″,”returnDate”:”2021-07-29″,”originAirportCode”:null,”destinationAirportCode”:null}},”auth”:{“isMember”:false,”csrfToken”:”TNI1625!AMaB97aDuAMrgNb2+YsggwYKDpgSQthUOKvIKPeOD36u9zPW+o0cpyrvPRM8vmUqNQCV5HUScb8Ws4EhNCJSUnEnuLOBIaPGuV2VCyNk9bQQAzouxRY7iGLPrCBcpbWL2UHoJwIWjP/YkgjLPSYjQmmA5uaXtrdWwLbBE1A5pLUY”,”altSessId”:”F0930D1F2C5D42DD2D168F406FED914B”,”loggedInUserId”:null,”captcha”:null,”fbApi”:{“apiVersion”:”v6.0″,”facebookConnectApiKey”:”162729813767876″,”facebookConnectAppId”:”162729813767876″,”facebookConnectAppName”:”tripadvisor”,”taServerTime”:1625729130,”skipFacebookSessionCheck”:false,”sdkUrl”:”//connect.facebook.net/en_US/sdk.js”,”facebookPermissions”:”email,user_friends”}},”route”:{“geo”:”469410″,”detail”:”10174721″,”page”:”Restaurant_Review”},”lithiumRoute”:[{“page”:”Restaurant_Review”,”params”:{“geoId”:469410,”detailId”:10174721},”path”:”/Restaurant_Review-g469410-d10174721-Reviews-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”,”fragment”:””},{“uid”:”YOaoagokLG8AANqbONYAAANO”}],”overlays”:{“global”:null,”fab”:null,”locals”:{},”toasts”:[]},”meta”:{“initialServletName”:”Restaurant_Review”,”device”:{“viewportCategory”:”DESKTOP”,”userAgentCategory”:”DESKTOP”,”os”:{“family”:”UNKNOWN”,”majorVersion”:-1},”browser”:{“family”:”CHROME”,”majorVersion”:60},”securityToken”:”f842502e79669de1a859e007e9b450e872b09d2daf120f9dfd4ec5541e49bcd7″},”readonlyMode”:false,”initialRelativeUrl”:”/Restaurant_Review-g469410-d10174721-Reviews-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”,”initialAbsoluteUrl”:”https://www.tripadvisor.com/Restaurant_Review-g469410-d10174721-Reviews-B_B_Grill-Angeles_City_Pampanga_Province_Central_Luzon_Region_Luzon.html”,”baseUrl”:”https://www.tripadvisor.com”,”imageCdnUrl”:”https://static.tacdn.com”,”cookieDomain”:”.tripadvisor.com”,”taUnique”:”web542a.198.54.114.89.17A8501E0B3″,”isTaReferrer”:false,”referrerUrl”:”http://www.bing.com/”,”forceFullSite”:false,”environment”:”Live”,”isNativeWebview”:false,”commerceCountryId”:191,”impressionData”:{“pageLoadUid”:”YOaoagokLG8AANqbONYAAANO”},”lineItemsByLoc”:{}},”tracking”:{“mcid”:10570,”uid”:”YOaoagokLG8AANqbONYAAANO”,”analytics”:{“cv”:[[“_deleteCustomVar”,1],[“_deleteCustomVar”,47],[“_setCustomVar”,11,”Detail”,”B&B Grill-10174721″,3],[“_setCustomVar”,12,”Country”,”Philippines-294245″,3],[“_setCustomVar”,19,”Region”,”Central Luzon Region-2152340″,3],[“_setCustomVar”,25,”Continent”,”Asia-2″,3],[“_setCustomVar”,20,”PP”,”–“,3],[“_deleteCustomVar”,13],[“_deleteCustomVar”,14],[“_deleteCustomVar”,8],[“_deleteCustomVar”,10]],”url”:”/Restaurant_Review”},”searchSessionId”:”344EB8867B884881A1F07CBE7A6ADFD81625729130742ssid”,”sessionId”:”344EB8867B884881A1F07CBE7A6ADFD8″,”uniqueId”:”web542a.198.54.114.89.17A8501E0B3″,”serverName”:”www.tripadvisor.com”,”hostName”:”web542a.a.tripadvisor.com”,”vcsRevision”:1499008,”vcsBranch”:”releases/PRODUCTION_1498944_20210707_0401″,”drsInfo”:”ABC.17*AFIL.98*ATTPromo.56*AUC.37*BBML.16*BMP.34*BRDTTD.20*Brand.91*CAKE.69*CAR.30*COM.67*CRS.2*Community.90*Content.31*CoreX.81*EATPIZZA.17*EID.32*EXP.70*Engage.4*FDP.40*FDS.95*FDU.4*FLTMERCH.15*FLTREV.49*Filters.46*Flights.81*HRATF.58*HSX.26*HSXB.2*IBEX.57*ING.41*INT1.91*INT2.15*ITR.70*L10N.54*ML.92*ML6.37*MM.88*MOBILEAPP.-1*MOF.15*MPS.76*MTA.2*Me2.55*Mem.12*Mobile.61*MobileCore.71*Notifications.25*Other.40*P13N.41*PIE.15*PLS.78*POS.42*PRT.75*RDS1.31*RDS2.15*RDS3.56*RDS4.91*RDS5.2*RET.44*REV.4*REVB.61*REVH.62*REVM.82*REVSD.39*REVSP.66*REVXS.59*RNA.89*RSE1.50*RSE2.15*Rooms.50*S3PO.27*SD40.1*SE2O.67*SEM.70*SEO.45*SORT1.93*Sales.27*Search.49*SiteX.90*Surveys.19*T4B.4*TGT.84*TRP.84*TTD.8*TX.7*Timeline.20*VP.55*VR.27*YM.48*YMB.52″,”uvmScore”:””,”retargetingUrl”:”www.tamgrt.com/RT”,”domainName”:”www.tripadvisor.com”}},”assets”:[“/assets/XjkW5l.4a34825b.js”,”/assets/peh_3a.f19503a1.js”,”/assets/lMO0v3.8c109bb9.css”,”/assets/RH7wJe.e4d17e2f.css”,”/assets/W3_c4H.c49130a4.css”,”/assets/jb_4W2.08af4e4d.css”,”/assets/Q7TAd7.eebca924.css”,”/assets/Ov85iR.ea23ef03.css”,”/assets/VANuRt.a4f6bd75.css”,”/assets/ANe_04.5e1d8ee5.css”,”/assets/m5ZZFI.f4041b96.css”,”/assets/pyY-iJ.dc89f2e7.css”,”/assets/_qQcW3.4ac590d2.css”,”/assets/eDFcUX.43f69d3f.css”,”/assets/V08PS7.8507b7e7.css”,”/assets/5-GvUO/vIwuL7.7d7a1eaf.css”,”/assets/5KqyYa.61a4fd40.css”,”/assets/VP50Wc.3067619e.css”,”/assets/MsxLpS.b5e6e879.css”,”/assets/7yGKf-.bf0ef8fe.css”,”/assets/iuYvTO.6160dd98.css”,”/assets/DjNvou.974cd947.css”,”/assets/PCLJ0D/-EYc4Q.2b7f7e12.css”,”/assets/iekllc.87d663db.css”,”/assets/Ly5eaD.23c2bad4.css”,”/assets/z2XL6d.7dc53b5a.css”,”/assets/xegF5W.94d585a8.css”,”/assets/MG7IEl.65fb64fb.js”,”/assets/cDcdfi.93a44509.js”,”/assets/faye7n.a77d34aa.js”,”/assets/h74DsO.f2ea5e26.js”,”/assets/RiHMo-.dac31ca1.js”,”/assets/lMO0v3.8c109bb9.js”,”/assets/nIW_Rw.06f0aaa2.js”,”/assets/-i3PJS.7e7147ff.js”,”/assets/OnmvvE.81104fb4.js”,”/assets/535agn.afbe8398.js”,”/assets/B7vHz6.135347bd.js”,”/assets/N4pTU2.9e5d02ff.js”,”/assets/aunxON.b221453f.js”,”/assets/Jk5sjx.64489d57.js”,”/assets/pLbCP4.d32b1bfb.js”,”/assets/UhC_bI.5e211a38.js”,”/assets/fsml46.d11e6b36.js”,”/assets/2R4xv2.904a45c1.js”,”/assets/xZoNdB.4d4af646.js”,”/assets/drdfeZ.113035a0.js”,”/assets/vq6MSq.0172e9ee.js”,”/assets/RH7wJe.e4d17e2f.js”,”/assets/W3_c4H.c49130a4.js”,”/assets/jb_4W2.08af4e4d.js”,”/assets/0DsHEV.91d47635.js”,”/assets/Q7TAd7.eebca924.js”,”/assets/oo669z.bcfd6f17.js”,”/assets/Ov85iR.ea23ef03.js”,”/assets/SfdMbo.453d8cb2.js”,”/assets/VANuRt.a4f6bd75.js”,”/assets/mv7yXI.9d18ac1a.js”,”/assets/YwNsO_.b8fd831a.js”,”/assets/5X2em-.9bdafea5.js”,”/assets/F8raOV.1c737328.js”,”/assets/jaCyxS.655fbd57.js”,”/assets/5-GvUO.7d7a1eaf.js”,”/assets/UWCmG6.f46e8a28.js”,”/assets/rKB8Wf.0e272517.js”,”/assets/XtxvfD.909cf1f9.js”,”/assets/vmXh3M.cb46a868.js”,”/assets/E8NZou.b9b2f3dc.js”,”/assets/DbN8HP.defc66ad.js”,”/assets/b3xEaf.42f16c46.js”,”/assets/gsKhh7.8b13b69d.js”,”/assets/vWxBAe.da1ce83d.js”,”/assets/nvMJfD.aa754be9.js”,”/assets/asW43G.c7633374.js”,”/assets/1x56sm.904c1093.js”,”/assets/c9QfOM.42643687.js”,”/assets/l6BSGt.11fc8808.js”,”/assets/dROhDJ.c331e39f.js”,”/assets/BLrxBS.1e174bb1.js”,”/assets/6NeHQy.81da9c70.js”,”/assets/b57PJQ.3b07c716.js”,”/assets/jmIMrC.3cb51936.js”,”/assets/n3D4ip.f1e98f49.js”,”/assets/QZqymc.8bc30002.js”,”/assets/30t50h.b8489014.js”,”/assets/ANe_04.5e1d8ee5.js”,”/assets/4Z07E2.ccd30fcf.js”,”/assets/m5ZZFI.f4041b96.js”,”/assets/jSLlaY.131c73fc.js”,”/assets/6RAaot.eac11fcd.js”,”/assets/pyY-iJ.dc89f2e7.js”,”/assets/_qQcW3.4ac590d2.js”,”/assets/eDFcUX.43f69d3f.js”,”/assets/O8LbtK.bb81efd3.js”,”/assets/V08PS7.8507b7e7.js”,”/assets/Dg5_-9.9c05ac65.js”,”/assets/f9x1OV.6534c6a8.js”,”/assets/T7FcVR.c0e9f665.js”,”/assets/gGW5sO.73c2427f.js”,”/assets/5-GvUO/vIwuL7.7d7a1eaf.js”,”/assets/38xMQJ.16797833.js”,”/assets/w4JHTr.67918073.js”,”/assets/NJheb1.5fc518b5.js”,”/assets/PCLJ0D.2b7f7e12.js”,”/assets/I81Q5L.19d8ec46.js”,”/assets/5KqyYa.61a4fd40.js”,”/assets/VP50Wc.3067619e.js”,”/assets/MsxLpS.b5e6e879.js”,”/assets/7yGKf-.bf0ef8fe.js”,”/assets/MHKLZN.65f32365.js”,”/assets/_cZwhS.ab63e57e.js”,”/assets/iuYvTO.6160dd98.js”,”/assets/DjNvou.974cd947.js”,”/assets/PCLJ0D/-EYc4Q.2b7f7e12.js”,”/assets/iekllc.87d663db.js”,”/assets/Ly5eaD.23c2bad4.js”,”/assets/_Z-1K3.8065ab5c.js”,”/assets/vd4nty.027d5018.js”,”/assets/z2XL6d.7dc53b5a.js”,”/assets/xegF5W.94d585a8.js”,”/assets/_g8cls.bf143ec0.js”,”/assets/8xs-IB.f0d32c41.js”,”/assets/wAve59.54cb5db5.css”,”/assets/bO7DmF.1c1d0a42.css”,”/assets/cBPvJq.e1f73f37.css”,”/assets/U3jxzU.9bc480a7.css”,”/assets/MBK0so.225ab828.css”,”/assets/wAve59.54cb5db5.js”,”/assets/hxnqL3.2eb5c12b.js”,”/assets/LGU7YR.018b29b8.js”,”/assets/sERCEg.18a9eff8.js”,”/assets/bO7DmF.1c1d0a42.js”,”/assets/cBPvJq.e1f73f37.js”,”/assets/iZ1Bsx.7388b5de.js”,”/assets/YtS4jD.8f04b527.js”,”/assets/U3jxzU.9bc480a7.js”,”/assets/4kVXmt.cd99eafa.js”,”/assets/MBK0so.225ab828.js”,”/assets/g9oDmO.1546e08a.css”,”/assets/Hgrhyo.7ce75d1f.css”,”/assets/bsx_H5.fa76c4a6.css”,”/assets/KwOV1Z.679413b2.css”,”/assets/AoLEtg.95923f14.css”,”/assets/g9oDmO.1546e08a.js”,”/assets/pT-O8u.f391d482.js”,”/assets/iLImXn.05070922.js”,”/assets/Hgrhyo.7ce75d1f.js”,”/assets/CSOnVf.d8c79854.js”,”/assets/bsx_H5.fa76c4a6.js”,”/assets/KwOV1Z.679413b2.js”,”/assets/AoLEtg.95923f14.js”,”/assets/4CrHtN.e8d096d5.css”,”/assets/OC9u-G.159dc759.css”,”/assets/oiya90.79ef9841.css”,”/assets/MCrJhI.e7e32ade.css”,”/assets/meOI_T.2504141e.css”,”/assets/4J6GHD.657f5c97.css”,”/assets/QLckY2.06b4f715.css”,”/assets/MNKFIS.8b26a8ce.css”,”/assets/4CrHtN.e8d096d5.js”,”/assets/OC9u-G.159dc759.js”,”/assets/oiya90.79ef9841.js”,”/assets/MCrJhI.e7e32ade.js”,”/assets/meOI_T.2504141e.js”,”/assets/4J6GHD.657f5c97.js”,”/assets/QLckY2.06b4f715.js”,”/assets/MNKFIS.8b26a8ce.js”,”/assets/FttHiS.d5560452.js”,”/assets/Z_Ebpb.56dff4c3.js”,”/assets/a4q8MG.0912c84d.js”,”/assets/h7E4Ym.dc0decf0.js”,”/assets/nPqO2d.12558e49.js”,”/assets/zXGKDf.1b0cd35d.js”,”/assets/xsqNye.bcde1ff0.js”,”/assets/griB9b.ad4bad38.js”,”/assets/dX3eZQ.4739f611.css”,”/assets/EkR174/p-Om7F.4b426ce6.css”,”/assets/EkR174/0e7qB0.4b426ce6.css”,”/assets/7vyllf.78a07ccd.css”,”/assets/Kv5xL1.619c9b4d.css”,”/assets/TkeYrn.2aa02abc.css”,”/assets/uWZ6Id.ab67c522.css”,”/assets/BgJkqv.0450262b.css”,”/assets/S07X1M/57pCYe.c259af04.css”,”/assets/L2wXtu.ae485494.css”,”/assets/V_I8wA.49848c4a.css”,”/assets/dAea-m.037f9005.css”,”/assets/7bbexq.46163f34.css”,”/assets/jPSRY1.60a62164.css”,”/assets/fZR2pj.b4a71f4e.css”,”/assets/EkR174/gGjYrO.4b426ce6.js”,”/assets/dX3eZQ.4739f611.js”,”/assets/EkR174/p-Om7F.4b426ce6.js”,”/assets/EkR174/0e7qB0.4b426ce6.js”,”/assets/7vyllf.78a07ccd.js”,”/assets/x5AnXu.f7dd32cc.js”,”/assets/2NwMnm.be6048c2.js”,”/assets/-2hM2s.f17e7218.js”,”/assets/v_y45t.83b90abf.js”,”/assets/S07X1M.c259af04.js”,”/assets/thFMrK.4566daff.js”,”/assets/Kv5xL1.619c9b4d.js”,”/assets/TkeYrn.2aa02abc.js”,”/assets/0uWw9s.046be067.js”,”/assets/mHPUmd.db46b7cc.js”,”/assets/OkJwbt.7b2bc01c.js”,”/assets/uWZ6Id.ab67c522.js”,”/assets/BgJkqv.0450262b.js”,”/assets/S07X1M/57pCYe.c259af04.js”,”/assets/L2wXtu.ae485494.js”,”/assets/1yEXVQ.d27dbd29.js”,”/assets/ABlMo4.07ba397e.js”,”/assets/qKFflQ.0c042635.js”,”/assets/-WwUo-.8f6fb166.js”,”/assets/V_I8wA.49848c4a.js”,”/assets/dAea-m.037f9005.js”,”/assets/7bbexq.46163f34.js”,”/assets/Erjc5t.af74950c.js”,”/assets/jPSRY1.60a62164.js”,”/assets/fZR2pj.b4a71f4e.js”,”/assets/EkR174.4b426ce6.js”,”/assets/6hAP4j.5a0ac225.css”,”/assets/6nM-E7.d154521a.css”,”/assets/MlvYp6.f0806815.js”,”/assets/6KWcSB.5c18b276.js”,”/assets/U-DhDC.e2ffae6a.js”,”/assets/6hAP4j.5a0ac225.js”,”/assets/RXx5aI.4b162973.js”,”/assets/eFKnUp.1f78e088.js”,”/assets/c_rvp5.3dc276f5.js”,”/assets/O-HcBE.24bf00dd.js”,”/assets/HKQFPT.83c497ef.js”,”/assets/6nM-E7.d154521a.js”,”/assets/mxARhC.b712432c.js”,”/assets/qAPD3R.d792efd8.js”,”/assets/NkmoMN.d18bd345.js”,”/assets/ETqDaL.49836a53.js”,”/assets/mT-Pb2.d4cde6e7.js”,”/assets/oPZBqR.e8f4679e.js”,”/assets/S-RL4Q.d240bf52.js”,”/assets/kYmwth.7f865d72.js”,”/assets/BqoTCX.61115c38.css”,”/assets/zPgUM0.0f0ff56a.css”,”/assets/qfSfGN.b6032699.css”,”/assets/BqoTCX.61115c38.js”,”/assets/wU942v.f9b17207.js”,”/assets/w2XwHO.6b72170b.js”,”/assets/IuX4Ar.60ced102.js”,”/assets/zPgUM0.0f0ff56a.js”,”/assets/HDgDKt.b62b0141.js”,”/assets/MWFqPp.0ff801f9.js”,”/assets/Oc3sTL.d5ed4c17.js”,”/assets/qfSfGN.b6032699.js”,”/assets/J7ol2P.d91104d4.css”,”/assets/tV1cF7.4a9368ca.css”,”/assets/J7ol2P.d91104d4.js”,”/assets/q0TyIl.dc6f83ce.js”,”/assets/tV1cF7.4a9368ca.js”,”/assets/2IPQDU.67e53835.js”,”/assets/DY6uxn.05568616.js”,”/assets/kLoEDZ.67b0772d.js”,”/assets/I1c87z.9534e80c.css”,”/assets/I1c87z.9534e80c.js”,”/assets/ew-Uau.c3c1fcb7.js”,”/assets/aqM4oG.a75005da.css”,”/assets/jmC6mk.0e53a617.css”,”/assets/aqM4oG.a75005da.js”,”/assets/-qDq4b.c9fc99aa.js”,”/assets/jmC6mk.0e53a617.js”,”/assets/40rCF9.7ade60cc.js”,”/assets/SMVlF-.f1078d6f.js”,”/assets/StmlN2.f33a6ddb.css”,”/assets/GnBs-1.a128d5ab.css”,”/assets/xepK-e.e00f5698.css”,”/assets/4rDmid.928bd19a.css”,”/assets/81k8UC.c50034c9.css”,”/assets/Xi-2HZ.ccc0ec56.css”,”/assets/REpc0H.31cc95c3.css”,”/assets/s1eoNx.96089115.css”,”/assets/StmlN2.f33a6ddb.js”,”/assets/GnBs-1.a128d5ab.js”,”/assets/6En9Ch.4765bf4b.js”,”/assets/z9x-tT.d30b7361.js”,”/assets/L3NEyz.62331d62.js”,”/assets/m1CGB5.6474cf5e.js”,”/assets/xepK-e.e00f5698.js”,”/assets/RmQ-yN.43bc5e8a.js”,”/assets/4rDmid.928bd19a.js”,”/assets/81k8UC.c50034c9.js”,”/assets/Xi-2HZ.ccc0ec56.js”,”/assets/REpc0H.31cc95c3.js”,”/assets/Ckp-bW.ce495bb8.js”,”/assets/s1eoNx.96089115.js”,”/assets/SoF4Aa.1fad3541.js”,”/assets/uW7u9D.70366a9d.css”,”/assets/uW7u9D.70366a9d.js”,”/assets/FnrCe6.6ca286f2.js”,”/assets/ui0Mdg.a73ab0ee.css”,”/assets/5miaKe.05a58041.css”,”/assets/t1LGYH.40ffb502.css”,”/assets/ZO6G4K.928b3867.js”,”/assets/ui0Mdg.a73ab0ee.js”,”/assets/pZzSdK.4b285121.js”,”/assets/vLhQxP.26327f8f.js”,”/assets/5miaKe.05a58041.js”,”/assets/8vFdtI.3b541b41.js”,”/assets/JFHNGL.27ac7d47.js”,”/assets/t1LGYH.40ffb502.js”,”/assets/CXMmrT.9e3edafd.js”,”/assets/tiI8NS.a30bf87b.css”,”/assets/tiI8NS.a30bf87b.js”,”/assets/PCbs_l.5111ecff.js”,”/assets/ajT-3h.fef37b8e.css”,”/assets/YjYLB2.20b1a15d.css”,”/assets/ajT-3h.fef37b8e.js”,”/assets/YjYLB2.20b1a15d.js”,”/assets/yhPkcw.f107c522.js”,”/assets/mGqah_.67ff7104.css”,”/assets/U1tcLB.5d4f11cb.css”,”/assets/wwtmHV.087bc967.css”,”/assets/g7DBrU.74f66de1.css”,”/assets/DCBGY9.7befd2e0.css”,”/assets/7Aj2pc.10274f92.css”,”/assets/1weFyZ.289ebc13.css”,”/assets/HZtvHO.f7c4f340.css”,”/assets/PiTJFd.d8326c73.css”,”/assets/LFeTN6.e3a46ba0.css”,”/assets/mGqah_.67ff7104.js”,”/assets/U1tcLB.5d4f11cb.js”,”/assets/wwtmHV.087bc967.js”,”/assets/g7DBrU.74f66de1.js”,”/assets/DCBGY9.7befd2e0.js”,”/assets/7Aj2pc.10274f92.js”,”/assets/1weFyZ.289ebc13.js”,”/assets/HZtvHO.f7c4f340.js”,”/assets/PiTJFd.d8326c73.js”,”/assets/fTyhRT.4e98a386.js”,”/assets/9I0t-6.4dd92cc5.js”,”/assets/LFeTN6.e3a46ba0.js”,”/assets/WkP2XE.51511d0f.js”,”/assets/8eZ7us.3e053c5a.css”,”/assets/x9N_Dh.d668a623.css”,”/assets/8eZ7us.3e053c5a.js”,”/assets/x9N_Dh.d668a623.js”,”/assets/Knxjr7.d22e46cc.js”,”/assets/BG6WJP.2b7ed824.js”,”/assets/zlqOrw.1b54612b.css”,”/assets/vF730k.8586326b.css”,”/assets/zlqOrw.1b54612b.js”,”/assets/vF730k.8586326b.js”,”/assets/lmr1u9.49f3a793.js”,”/assets/vK2ef-.cf31f693.js”,”/assets/Kp9O3W.214bac6a.css”,”/assets/xaSSoH.0e9c55cb.js”,”/assets/Kp9O3W.214bac6a.js”,”/assets/D2d7j4.0c5ce4db.css”,”/assets/A7p4Ig.1f465544.css”,”/assets/VwUieX.aaa572fe.css”,”/assets/R57Q-B.fa5c6e7f.css”,”/assets/KB4cfU.f796aca5.css”,”/assets/ue1PHu.20c4d79d.css”,”/assets/R4dv1u.5fe3335d.css”,”/assets/wbt5GG.a7025ca5.css”,”/assets/IdKzX3.cb4aabac.css”,”/assets/uWGJsK.043670a3.css”,”/assets/Xolfce.a1735eb9.css”,”/assets/yIC5Nu.94d963c8.css”,”/assets/CF88Pt.d58dc5cf.css”,”/assets/CBPWpM.ec1d9352.css”,”/assets/aEMrjM.c974d2a7.css”,”/assets/QnohJ2.bf12f213.css”,”/assets/fLiMWZ.b19e2f27.css”,”/assets/Jb1HNR.6c42cd9b.css”,”/assets/vgue-2.2a754728.css”,”/assets/UhV2Xg.9884069b.css”,”/assets/TujamJ.606cd8fe.css”,”/assets/9TT7ph.c1f302d0.css”,”/assets/-7XpHF.3a7d8167.css”,”/assets/FIpkU7.3799b72e.css”,”/assets/_vtk6W.7468c43c.css”,”/assets/AU-u0s.5ad71e56.css”,”/assets/kp5583.3079f501.css”,”/assets/u0KQ1z.fe09b455.css”,”/assets/miRpRf.d31a3a9e.css”,”/assets/KCA1h4.78659e44.css”,”/assets/KYaeMN.04d11b86.css”,”/assets/D2d7j4.0c5ce4db.js”,”/assets/A7p4Ig.1f465544.js”,”/assets/VwUieX.aaa572fe.js”,”/assets/UaLTva.7b01e64b.js”,”/assets/R57Q-B.fa5c6e7f.js”,”/assets/KB4cfU.f796aca5.js”,”/assets/ue1PHu.20c4d79d.js”,”/assets/l7q5Ts.3d1f4ae9.js”,”/assets/R4dv1u.5fe3335d.js”,”/assets/7XASeK.91cc1801.js”,”/assets/wbt5GG.a7025ca5.js”,”/assets/IdKzX3.cb4aabac.js”,”/assets/uWGJsK.043670a3.js”,”/assets/Xolfce.a1735eb9.js”,”/assets/w_dosq.6e20e28f.js”,”/assets/A8AD3f.c0554165.js”,”/assets/kI6OFW.4b3f05c0.js”,”/assets/RSaHg-.9634ca1a.js”,”/assets/yIC5Nu.94d963c8.js”,”/assets/CF88Pt.d58dc5cf.js”,”/assets/mcogfz.fdb97021.js”,”/assets/XiRh4V.2d85cc6b.js”,”/assets/fiorRT.a063f9e9.js”,”/assets/e3JVFn.d9eda1bf.js”,”/assets/CBPWpM.ec1d9352.js”,”/assets/auVyhB.5a421b55.js”,”/assets/aEMrjM.c974d2a7.js”,”/assets/QnohJ2.bf12f213.js”,”/assets/3sqLTh.9fbef1c3.js”,”/assets/Z1vtVj.c6011559.js”,”/assets/fLiMWZ.b19e2f27.js”,”/assets/Jb1HNR.6c42cd9b.js”,”/assets/-IO4YY.42d27110.js”,”/assets/wc54S1.682595f4.js”,”/assets/CwU70X.6cf10941.js”,”/assets/nHP58Z.aa32dc4f.js”,”/assets/vgue-2.2a754728.js”,”/assets/UhV2Xg.9884069b.js”,”/assets/ZfnplY.36f682b9.js”,”/assets/TujamJ.606cd8fe.js”,”/assets/XO_UpJ.09847838.js”,”/assets/fTsrJe.61af88d0.js”,”/assets/9TT7ph.c1f302d0.js”,”/assets/-7XpHF.3a7d8167.js”,”/assets/KtGvlB.bc6185a4.js”,”/assets/FIpkU7.3799b72e.js”,”/assets/sAh7MJ.474de309.js”,”/assets/_vtk6W.7468c43c.js”,”/assets/AU-u0s.5ad71e56.js”,”/assets/kp5583.3079f501.js”,”/assets/PbGVd2.91c89dee.js”,”/assets/_AgNiB.42ddafc3.js”,”/assets/FjihCs.a0eaa737.js”,”/assets/LgmAJW.7e63fe1f.js”,”/assets/qK4vTI.84ca60f5.js”,”/assets/lfA4fx.7432a59c.js”,”/assets/lYfRy0.77646e3e.js”,”/assets/zdk9wF.57bac4a3.js”,”/assets/_wYjwe.5040b140.js”,”/assets/FHZ_Dz.4647d47b.js”,”/assets/-AfPNw.41a3da97.js”,”/assets/u0KQ1z.fe09b455.js”,”/assets/miRpRf.d31a3a9e.js”,”/assets/KCA1h4.78659e44.js”,”/assets/KYaeMN.04d11b86.js”,”/assets/Uau69a.cf487c51.js”,”/assets/nrVmZz.51d07714.js”,”/assets/s_VSNG.8c901502.js”,”/assets/JmaROh.2c872140.css”,”/assets/pgZY2-.c5daccd1.css”,”/assets/JmaROh.2c872140.js”,”/assets/pgZY2-.c5daccd1.js”,”/assets/qHRhpr.60309ddd.css”,”/assets/1Blu63.27fb5a92.css”,”/assets/N7_-Pe.56dd5b5f.js”,”/assets/qHRhpr.60309ddd.js”,”/assets/NbJixN.4a1439d7.js”,”/assets/1Blu63.27fb5a92.js”,”/assets/wurSPw.26ce43e8.js”,”/assets/V-aAcX.ecad726f.js”,”/assets/EJ-Kf3.374b1810.js”,”/assets/_oo5-G.d2b8e381.js”,”/assets/NeKuL5.50de0fd6.css”,”/assets/9kM7rC.4f08daac.css”,”/assets/NeKuL5.50de0fd6.js”,”/assets/9kM7rC.4f08daac.js”,”/assets/tGoH3e.71653dd4.css”,”/assets/7LISht.8007986f.css”,”/assets/rZbf7k.f04394e3.css”,”/assets/qkYV7t.9594ee85.css”,”/assets/qnA4nJ.6c204d82.css”,”/assets/1EZ_7C.f9d5abfd.css”,”/assets/eJYNEt.13c56941.css”,”/assets/PgoAle.9fb7447d.css”,”/assets/hxNjir.e12de29e.css”,”/assets/TVI5a2.7ba38875.css”,”/assets/UzUVfh.cfb3e4f6.css”,”/assets/wn3KpT.9846da6d.css”,”/assets/tGoH3e.71653dd4.js”,”/assets/fa0p6x.b63697b7.js”,”/assets/7LISht.8007986f.js”,”/assets/rZbf7k.f04394e3.js”,”/assets/KmpI2y.d4a11472.js”,”/assets/zRE7yK.67bfe453.js”,”/assets/qkYV7t.9594ee85.js”,”/assets/qnA4nJ.6c204d82.js”,”/assets/1EZ_7C.f9d5abfd.js”,”/assets/eJYNEt.13c56941.js”,”/assets/_KhVZh.8101dccc.js”,”/assets/fSRrv3.8fe28cee.js”,”/assets/PgoAle.9fb7447d.js”,”/assets/hxNjir.e12de29e.js”,”/assets/TVI5a2.7ba38875.js”,”/assets/dWSKta.60b2bd39.js”,”/assets/UzUVfh.cfb3e4f6.js”,”/assets/Pxd0my.da1eaf4c.js”,”/assets/f95x4s.444ee662.js”,”/assets/wn3KpT.9846da6d.js”,”/assets/8FqfUx.914cfbb2.css”,”/assets/fG1DJ-.df06534a.css”,”/assets/8FqfUx.914cfbb2.js”,”/assets/fG1DJ-.df06534a.js”,”/assets/o7hWy9.5b0e1477.css”,”/assets/o7hWy9.5b0e1477.js”,”/assets/ZH0RLx.b63e3900.css”,”/assets/ZH0RLx.b63e3900.js”,”/assets/t7RFOq.690854dd.js”,”/assets/GVTdZB.12298cae.js”],”bundles”:[“XjkW5l”,”peh_3a”,”MG7IEl”,”cDcdfi”,”faye7n”,”h74DsO”,”RiHMo-“,”lMO0v3″,”nIW_Rw”,”-i3PJS”,”OnmvvE”,”535agn”,”B7vHz6″,”N4pTU2″,”aunxON”,”Jk5sjx”,”pLbCP4″,”UhC_bI”,”fsml46″,”2R4xv2″,”xZoNdB”,”drdfeZ”,”vq6MSq”,”RH7wJe”,”W3_c4H”,”jb_4W2″,”0DsHEV”,”Q7TAd7″,”oo669z”,”Ov85iR”,”SfdMbo”,”VANuRt”,”mv7yXI”,”YwNsO_”,”5X2em-“,”F8raOV”,”jaCyxS”,”5-GvUO”,”UWCmG6″,”rKB8Wf”,”XtxvfD”,”vmXh3M”,”E8NZou”,”DbN8HP”,”b3xEaf”,”gsKhh7″,”vWxBAe”,”nvMJfD”,”asW43G”,”1x56sm”,”c9QfOM”,”l6BSGt”,”dROhDJ”,”BLrxBS”,”6NeHQy”,”b57PJQ”,”jmIMrC”,”n3D4ip”,”QZqymc”,”30t50h”,”ANe_04″,”4Z07E2″,”m5ZZFI”,”jSLlaY”,”6RAaot”,”pyY-iJ”,”_qQcW3″,”eDFcUX”,”O8LbtK”,”V08PS7″,”Dg5_-9″,”f9x1OV”,”T7FcVR”,”gGW5sO”,”5-GvUO/vIwuL7″,”38xMQJ”,”w4JHTr”,”NJheb1″,”PCLJ0D”,”I81Q5L”,”5KqyYa”,”VP50Wc”,”MsxLpS”,”7yGKf-“,”MHKLZN”,”_cZwhS”,”iuYvTO”,”DjNvou”,”PCLJ0D/-EYc4Q”,”iekllc”,”Ly5eaD”,”_Z-1K3″,”vd4nty”,”z2XL6d”,”xegF5W”,”_g8cls”,”8xs-IB”,”wAve59″,”hxnqL3″,”LGU7YR”,”sERCEg”,”bO7DmF”,”cBPvJq”,”iZ1Bsx”,”YtS4jD”,”U3jxzU”,”4kVXmt”,”MBK0so”,”g9oDmO”,”pT-O8u”,”iLImXn”,”Hgrhyo”,”CSOnVf”,”bsx_H5″,”KwOV1Z”,”AoLEtg”,”4CrHtN”,”OC9u-G”,”oiya90″,”MCrJhI”,”meOI_T”,”4J6GHD”,”QLckY2″,”MNKFIS”,”FttHiS”,”Z_Ebpb”,”a4q8MG”,”h7E4Ym”,”nPqO2d”,”zXGKDf”,”xsqNye”,”griB9b”,”EkR174/gGjYrO”,”dX3eZQ”,”EkR174/p-Om7F”,”EkR174/0e7qB0″,”7vyllf”,”x5AnXu”,”2NwMnm”,”-2hM2s”,”v_y45t”,”S07X1M”,”thFMrK”,”Kv5xL1″,”TkeYrn”,”0uWw9s”,”mHPUmd”,”OkJwbt”,”uWZ6Id”,”BgJkqv”,”S07X1M/57pCYe”,”L2wXtu”,”1yEXVQ”,”ABlMo4″,”qKFflQ”,”-WwUo-“,”V_I8wA”,”dAea-m”,”7bbexq”,”Erjc5t”,”jPSRY1″,”fZR2pj”,”EkR174″,”MlvYp6″,”6KWcSB”,”U-DhDC”,”6hAP4j”,”RXx5aI”,”eFKnUp”,”c_rvp5″,”O-HcBE”,”HKQFPT”,”6nM-E7″,”mxARhC”,”qAPD3R”,”NkmoMN”,”ETqDaL”,”mT-Pb2″,”oPZBqR”,”S-RL4Q”,”kYmwth”,”BqoTCX”,”wU942v”,”w2XwHO”,”IuX4Ar”,”zPgUM0″,”HDgDKt”,”MWFqPp”,”Oc3sTL”,”qfSfGN”,”J7ol2P”,”q0TyIl”,”tV1cF7″,”2IPQDU”,”DY6uxn”,”kLoEDZ”,”I1c87z”,”ew-Uau”,”aqM4oG”,”-qDq4b”,”jmC6mk”,”40rCF9″,”SMVlF-“,”StmlN2″,”GnBs-1″,”6En9Ch”,”z9x-tT”,”L3NEyz”,”m1CGB5″,”xepK-e”,”RmQ-yN”,”4rDmid”,”81k8UC”,”Xi-2HZ”,”REpc0H”,”Ckp-bW”,”s1eoNx”,”SoF4Aa”,”uW7u9D”,”FnrCe6″,”ZO6G4K”,”ui0Mdg”,”pZzSdK”,”vLhQxP”,”5miaKe”,”8vFdtI”,”JFHNGL”,”t1LGYH”,”CXMmrT”,”tiI8NS”,”PCbs_l”,”ajT-3h”,”YjYLB2″,”yhPkcw”,”mGqah_”,”U1tcLB”,”wwtmHV”,”g7DBrU”,”DCBGY9″,”7Aj2pc”,”1weFyZ”,”HZtvHO”,”PiTJFd”,”fTyhRT”,”9I0t-6″,”LFeTN6″,”WkP2XE”,”8eZ7us”,”x9N_Dh”,”Knxjr7″,”BG6WJP”,”zlqOrw”,”vF730k”,”lmr1u9″,”vK2ef-“,”xaSSoH”,”Kp9O3W”,”D2d7j4″,”A7p4Ig”,”VwUieX”,”UaLTva”,”R57Q-B”,”KB4cfU”,”ue1PHu”,”l7q5Ts”,”R4dv1u”,”7XASeK”,”wbt5GG”,”IdKzX3″,”uWGJsK”,”Xolfce”,”w_dosq”,”A8AD3f”,”kI6OFW”,”RSaHg-“,”yIC5Nu”,”CF88Pt”,”mcogfz”,”XiRh4V”,”fiorRT”,”e3JVFn”,”CBPWpM”,”auVyhB”,”aEMrjM”,”QnohJ2″,”3sqLTh”,”Z1vtVj”,”fLiMWZ”,”Jb1HNR”,”-IO4YY”,”wc54S1″,”CwU70X”,”nHP58Z”,”vgue-2″,”UhV2Xg”,”ZfnplY”,”TujamJ”,”XO_UpJ”,”fTsrJe”,”9TT7ph”,”-7XpHF”,”KtGvlB”,”FIpkU7″,”sAh7MJ”,”_vtk6W”,”AU-u0s”,”kp5583″,”PbGVd2″,”_AgNiB”,”FjihCs”,”LgmAJW”,”qK4vTI”,”lfA4fx”,”lYfRy0″,”zdk9wF”,”_wYjwe”,”FHZ_Dz”,”-AfPNw”,”u0KQ1z”,”miRpRf”,”KCA1h4″,”KYaeMN”,”Uau69a”,”nrVmZz”,”s_VSNG”,”JmaROh”,”pgZY2-“,”N7_-Pe”,”qHRhpr”,”NbJixN”,”1Blu63″,”wurSPw”,”V-aAcX”,”EJ-Kf3″,”_oo5-G”,”NeKuL5″,”9kM7rC”,”tGoH3e”,”fa0p6x”,”7LISht”,”rZbf7k”,”KmpI2y”,”zRE7yK”,”qkYV7t”,”qnA4nJ”,”1EZ_7C”,”eJYNEt”,”_KhVZh”,”fSRrv3″,”PgoAle”,”hxNjir”,”TVI5a2″,”dWSKta”,”UzUVfh”,”Pxd0my”,”f95x4s”,”wn3KpT”,”8FqfUx”,”fG1DJ-“,”o7hWy9″,”ZH0RLx”,”t7RFOq”,”GVTdZB”],”lazyLoadedModules”:[“g9oDmO”,”wAve59″,”EkR174/gGjYrO”,”4CrHtN”],”renders”:[{“id”:”component_5″,”props”:{},”package”:”BqoTCX”},{“id”:”component_51″,”props”:{},”package”:”t7RFOq”}],”hydrations”:[{“id”:”component_6″,”props”:{},”package”:”EkR174″},{“id”:”component_2″,”props”:{},”package”:”MlvYp6″},{“id”:”component_3″,”props”:{},”package”:”mxARhC”},{“id”:”component_4″,”props”:{},”package”:”qAPD3R”},{“id”:”component_7″,”props”:{},”package”:”J7ol2P”},{“id”:”component_8″,”props”:null,”package”:”I1c87z”},{“id”:”component_9″,”props”:{“itemType”:”RESTAURANT_REVIEW”,”hasContainer”:”true”,”limit”:”4″},”package”:”aqM4oG”},{“id”:”component_10″,”props”:{},”package”:”40rCF9″},{“id”:”component_11″,”props”:{},”package”:”StmlN2″},{“id”:”component_12″,”props”:{“locationScoped”:”true”,”pid”:”40513″},”package”:”SoF4Aa”},{“id”:”component_13″,”props”:{“size”:”970×250-728×90″,”position”:”footer”,”additionalClass”:”no_reserve_margins”,”minWinSize”:”970″,”pageLoadRender”:”true”},”package”:”uW7u9D”},{“id”:”component_14″,”props”:{},”package”:”ZO6G4K”},{“id”:”component_15″,”props”:{“showOwner”:”true”,”expectedOwnerLikelihoods”:”LOW|HIGH”},”package”:”tiI8NS”},{“id”:”component_16″,”props”:{},”package”:”ajT-3h”},{“id”:”component_17″,”props”:{“withTopMargin”:”true”,”position”:”RailNova”},”package”:”mGqah_”},{“id”:”component_18″,”props”:{},”package”:”8eZ7us”},{“id”:”component_19″,”props”:{“size”:”300×250-300×600″,”position”:”rail2″,”wantedViewportCategory”:”DESKTOP”,”pageLoadRender”:”true”},”package”:”BG6WJP”},{“id”:”@ta/trips.save-to-trip:location:3257282_component_20″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:3257282},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:3948687_component_21″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:3948687},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:12833505_component_22″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:12833505},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:4413023_component_23″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:4413023},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2718689_component_24″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2718689},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:11893889_component_25″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:11893889},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:9751979_component_26″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:9751979},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:4227956_component_27″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:4227956},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”component_28″,”props”:{},”package”:”vK2ef-“},{“id”:”@ta/trips.save-to-trip:location:2420089_component_29″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2420089},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:1592724_component_30″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1592724},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:8280033_component_31″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:8280033},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2197339_component_32″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2197339},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2000570_component_33″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2000570},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:6023313_component_34″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:6023313},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:6938997_component_35″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:6938997},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:1060534_component_36″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1060534},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”component_37″,”props”:{“popoverPosition”:”below”,”displayMode”:”compact”},”package”:”xaSSoH”},{“id”:”component_38″,”props”:{},”package”:”D2d7j4″},{“id”:”component_39″,”props”:{},”package”:”JmaROh”},{“id”:”component_40″,”props”:{},”package”:”N7_-Pe”},{“id”:”component_41″,”props”:{},”package”:”EJ-Kf3″},{“id”:”component_42″,”props”:{“useButton”:”true”,”showOwner”:”false”,”expectedOwnerLikelihoods”:”MEDIUM”},”package”:”tiI8NS”},{“id”:”component_43″,”props”:{},”package”:”_oo5-G”},{“id”:”component_44″,”props”:{},”package”:”NeKuL5″},{“id”:”component_45″,”props”:{},”package”:”tGoH3e”},{“id”:”component_46″,”props”:{},”package”:”8FqfUx”},{“id”:”component_47″,”props”:{},”package”:”o7hWy9″},{“id”:”component_48″,”props”:{},”package”:”rZbf7k”},{“id”:”component_49″,”props”:{“size”:”300×250-300×600″,”position”:”rail1″,”wantedViewportCategory”:”DESKTOP”,”pageLoadRender”:”true”},”package”:”BG6WJP”},{“id”:”component_50″,”props”:{},”package”:”ZH0RLx”},{“id”:”@ta/trips.save-to-trip:location:3488044_component_52″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:3488044},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:1393046_component_53″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:1393046},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:2554720_component_54″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:2554720},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”@ta/trips.save-to-trip:location:5508909_component_55″,”props”:{“object”:{“__typename”:”LocationInformation”,”locationId”:5508909},”widgetStyle”:”listing”,”tooltipCopy”:null,”toastCopy”:null,”toastCopySubhead”:null,”allowPopStatModal”:false},”package”:”zlqOrw”},{“id”:”component_1″,”props”:{},”package”:”GVTdZB”}],”ssrPreloadedModules”:[]}};(this.$WP=this.$WP||[]).push([‘@ta/features’,function(e){return [function(){e(‘default’,__WEB_CONTEXT__.pageManifest.features);},[]]},[]]);]]> 0) { taCookie.setPIDCookie(pid); } var userLoggedInAppendString = (ta.userLoggedIn === true) ? ‘|LoggedIn’ : ”; var servlet = (device === ‘mobile’) ? ‘/UserReview’ : ‘/UserReviewEdit’; var eventLabel = (poiTrackingCategory === ‘Activity’) ? (‘Product|Location’ + userLoggedInAppendString) : ‘POI|Location’; taRecord.setEvtCookie(‘contextual_cta_button_review’, ‘click’, eventLabel, 0, servlet); } function _warOnClickForOwner(locationId, href, pid) { if (pid && pid > 0) { taCookie.setPIDCookie(pid); } taRecord.setEvtCookie(‘owner_cta’, ‘owner_visit_mc_middle’, locationId, 0, href); } return { warOnClick: _warOnClick, warOnClickForOwner: _warOnClickForOwner }; });});if (require) {require([‘ta/rollupAmdShim’], function(rollupAmdShim) { rollupAmdShim.install([], [“page-model”]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],[“page-model”]);} }require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_tag_questions’,’handlers’,[‘handlers’]); define([“widget”,”lib/jquery-amd”,”ta/Core/TA.LocalStorage”], function(widget,$,ls) { function _init() { var questionsElem = $(widget.element).find(“.questions”); if (!questionsElem) { ta.util.error.record(“Tag Questions init error”); return; } var locationId = questionsElem.attr(“data-location-id”); var answeredQuestions = []; if (ls.enabled) { var _answeredQuestions = ls.getObject(_getLocalStorageKey(locationId)); if (_answeredQuestions && _answeredQuestions.length) { answeredQuestions = JSON.parse(_answeredQuestions); } else { ls.set(_getLocalStorageKey(locationId),JSON.stringify([])); } } var questionsElems = $(widget.element).find(“.question”); var questionShown = false; questionsElems.each(function (index, elem){ if (_isQuestionNew(elem, answeredQuestions)) { $(elem).show(); questionShown = true; // return false is equivalent to a ‘break’ statement for $.each() return false; } }); if (!questionShown) { questionsElem.find(“.finalMessage”).show(); } } function _getLocalStorageKey(locationId) { return “TAG_QUESTION_”+locationId; } $(widget.element).find(‘.answer’).click(function(evt){ var answerElem = $(evt.target); if (!answerElem.hasClass(“answer”)) { answerElem = $(answerElem.closest(“.answer”)); } if (!answerElem) { ta.util.error.record(“TagQuestions could not get answerElem”); } var questionElem = $(answerElem.closest(“.question”)); var questionsElem = $(widget.element).find(“.questions”); if (!(questionElem && questionsElem)) { ta.util.error.record(!questionElem ? “TagQuestions could not get questionElem” : “TagQuestions could not get questionsElem”); } if (questionElem.find(“.checkbox-checked”).length > 0) { // The user has already selected an answer and it’s probably animating out return; } answerElem.find(“.ui_icon”).removeClass(“checkbox-border”); answerElem.find(“.ui_icon”).addClass(“checkbox-checked”); var val = answerElem.attr(“data-value”); var id = questionElem.attr(“data-id”); var locationId = questionsElem.attr(“data-location-id”); var securityToken = questionsElem.attr(“data-security-token”); if (!(val && id && locationId && securityToken)) { var missingVals = []; if (!val) { missingVals.push(“val”); } if (!id) { missingVals.push(“id”); } if (!locationId) { missingVals.push(“locationId”); } if (!securityToken) { missingVals.push(“securityToken”); } ta.util.error.record(“Tag Questions missing values: [“+ missingVals.join(“,”) +”]”); } // NOTE: Use $.param rather than Object.toQueryString to generate url, since it seems that Object.toQueryString // currently gets defined in site/js3/mootools/core/Types/Object.js, which should not be present on newer responsive pages new ta.util.ajax({ data: { locationId: locationId, id: id, value: val, token: securityToken }, method: ‘POST’, url: “/ListingQuestionsAjax?” + $.param({format:’json’, a:’TAG_VOTE’}), onSuccess: function (e) { nextQuestion(questionElem,locationId); }, onFailure: function (e) { ta.util.error.record(e); } }); }); function _isQuestionNew(questionElem,answeredQuestions) { questionElem = $(questionElem); var id = questionElem.attr(“data-id”); if (!id || !answeredQuestions) { return true; } return answeredQuestions.indexOf(id) 0) { var answeredQuestions = JSON.parse(ls.getObject(_getLocalStorageKey(locationId))); answeredQuestions.push(id); ls.set(_getLocalStorageKey(locationId),JSON.stringify(answeredQuestions)); } } var questionsElems = $(widget.element).find(“.question”); if (!(questionElem && questionsElems)) { ta.util.error.record(“TagQuestions could not show next question”); } var index = questionsElems.index(questionElem) + 1; var nextQuestionElem = null; if (index > 0) { while (questionsElems.length > index) { var _nextQuestionElem = $(questionsElems[index]); if (_isQuestionNew(_nextQuestionElem,answeredQuestions)) { nextQuestionElem = _nextQuestionElem; break; } index += 1; } } if (!nextQuestionElem) { var finalMessage = $(widget.element).find(“.finalMessage”); if (finalMessage) { questionElem.fadeOut(400,function(){ finalMessage.fadeIn(); }); } } else { questionElem.fadeOut(400, function () { nextQuestionElem.fadeIn(); }); } } ta.queueForLoad( function() { _init(); }, ‘initialize ‘+widget.container_id); }); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_responsive_static_map_image’,’handlers’,[‘handlers’]); define([“babel/babel-helpers”, “widget”, “utils/throttle”, ‘page-model’], function (babelHelpers, widget, throttle, pageModel) { var container = widget.element; var contentChoice = container.getElementsByClassName(“contentChoice”)[0].getAttribute(“data-contentChoice”); var mapWidth = void 0; var requesting = false; function _imgLoaded(img) { if (!img.complete) { return false; } return img.naturalWidth !== 0; } /** * Makes an ajax call to get a new static map of the right size */ var reloadMap = throttle(function () { if (!document.body.contains(container)) { window.removeEventListener(‘resize’, reloadMap); return; } // Reload the map if its width has changed. A width of 0 indicates the element is not visible. var newWidth = container.offsetWidth; if (newWidth && newWidth !== mapWidth) { if (requesting) { // A request is already pending. Don’t send another. return; } requesting = true; widget.require([“trhtml!” + contentChoice + “?thumbWidth=” + newWidth + “&thumbHeight=” + container.offsetHeight + “&locationId=” + pageModel.LOC_ID], function (contentDiv) { mapWidth = newWidth; requesting = false; if (newWidth !== container.offsetWidth) { // This request is already stale. We don’t need its content. reloadMap(); return; } var newContainer = contentDiv.querySelector(“[data-prwidget-name=”” + widget.name + “”]”); var img = contentDiv.querySelector(‘.mapImg’); if (!newContainer || !img) { return; } mapWidth = newWidth; // Don’t replace the content until the new map has loaded, preventing flickering if (_imgLoaded(img)) { container.innerHTML = newContainer.innerHTML; } else { img.addEventListener(‘load’, function () { return newWidth === container.offsetWidth && (container.innerHTML = newContainer.innerHTML); }); } }); } }, 200); reloadMap(); window.addEventListener(‘resize’, reloadMap); });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’common_btf_nearby_poi_grid’,’handlers’,[‘handlers’]); define([‘babel/babel-helpers’, ‘widget’, ‘common/trackingStreams’], function (babelHelpers, widget, tracking) { ‘use strict’; function trackSeeAll(label) { tracking.trackEvent(‘seeAllNearby’, ‘click’, label); } return { trackSeeAll: trackSeeAll }; });});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,’common_btf_nearby_poi_entry’,’handlers’,[‘handlers’]); // Private javascript for btf_nearby_poi_entry define([‘widget’, ‘vanillajs’, ‘ta/util/openNewTab’, ‘common/trackingStreams’], function(widget, vanilla, openNewTab, tracking) { return { click: function(url, trackingString) { trackingString && tracking.trackEvent(‘nearby’, ‘click’, trackingString); openNewTab(url); } }; }); });define(‘ta/common/behavior/Ads-pagemoniker’, [‘vanillajs’, ‘ns-exporter’, ‘common/trackingStreams’, ‘ta/Core/TA.Store’, ‘common/pixels-loader’,’ta/util/Element’,’ta/Core/TA.FireEvent’], function(vanilla, nsExporter, tracks, taStore, Pixels, element, taFireEvent) { var exports = {}; exports.remarketingOptions = Pixels.remarketingOptions() || {}; var awaitConsentResponse = function () { return new Promise(function (resolve) { window.require([“@ta/platform.runtime”], function (runtime) { runtime.importBundle(“@ta/platform.consent”).then(function (consentBundle) { consentBundle.enqueue(resolve); }); }); }); } var retrieve = function(key) { if (exports.remarketingOptions[‘pixelsEnabled’] === undefined) { exports.remarketingOptions = Pixels.remarketingOptions() || {}; } return exports.remarketingOptions[key]; }; var pixelTypeToIframeName = { OFFER_VIEW: ‘Monikers_OV’, HAC_PRICES_LOADED: ‘Monikers_HPL’, RESTAURANTS_OFFLINE_ATTRIBUTION: ‘Monikers_ROA’, RESTAURANTS_PRODUCT_SELECTION: ‘Monikers_RPS’, RESTAURANTS_PRODUCT_PAYMENT: ‘Monikers_RPP’, RESTAURANTS_PRODUCT_CONVERSION: ‘Monikers_RPC’, RESTAURANTS_NEW_REG_OWNER_FORM: ‘Monikers_NRO’, RESTAURANTS_CONF_REG_OWNER: ‘Monikers_CRO’, MEMBER_REGISTRATION_FORM: ‘Monikers_MRF’, HOTEL_CLAIM_FORM_SUBMISSION: ‘Monikers_HCFS’, STARTER_PACKAGES_PAGE_VIEW: ‘Monikers_SPPV’, STARTER_PACKAGES_PROPERTY_SELECTION: ‘Monikers_SPPS’, HOTELS_PRODUCT_CART_INITIATE_CHECKOUT: ‘Monikers_HPCIC’, HOTELS_PRODUCT_CART_ADD_PAYMENT_INFO: ‘Monikers_HPCAP’, HOTELS_PRODUCT_CART_PURCHASE: ‘Monikers_HPCPP’, UPP_HOTELS_PRODUCT_CART_INITIATE_CHECKOUT: ‘Monikers_UPP_HPCIC’, UPP_HOTELS_PRODUCT_CART_ADD_PAYMENT_INFO: ‘Monikers_UPP_HPCAP’, UPP_HOTELS_PRODUCT_CART_PURCHASE: ‘Monikers_UPP_HPCPP’, FACEBOOK_MC_RETARGETING: ‘Monikers_FMCR’, PAID_FUNNEL_LEAD_CONVERSION: ‘Monikers_PFLC’, MEMBER_CREATE: ‘Monikers_MC’, SAVE_TO_TRIP: ‘Monikers_STT’, SAVE_TO_TRIP_INTENT: ‘Monikers_STTI’, PLUS_CONFIRM: ‘Monikers_PLUS’ }; var _getIframeIdByPixelType = function(pixelType) { if (pixelType === ‘RESTAURANTS_OFFLINE_ATTRIBUTION’) { return pixelTypeToIframeName[pixelType] + ‘_’ + Math.floor(Math.random() * Math.floor(1000000)); } else { return pixelTypeToIframeName[pixelType]; } }; var firedForEnteringDatesKey = ‘dates.enter.moniker.fired’; var firedForHotelPricesKey = ‘hotel.prices.moniker.fired’; var firedForIBClick = false; var MAX_PRICE_LOCS = 5; var jsReplacementTargetVar = ‘loc1’; var jsReplacementSearchStr = ‘@@@loc1@@@’; var jsReplacementSourceVar = ‘locId’; var setTimeoutRetryThreshold = 10; var timeoutMilliseconds = 1000; var _addHotelPricesToPixelContext = function() { var completed = false; if (retrieve(‘hotelPricesEnabled’)) { var pixelContext = retrieve(‘pixelContext’); if (pixelContext) { var servlet = pixelContext.servlet; if (servlet === ‘HotelHighlight’) { return completed; } var results = []; var locIds; if (servlet === ‘Hotel_Review’) { locIds = [pixelContext.curLocId.toString()] || ”; } else { locIds = pixelContext.locIds || ”; locIds = locIds.split(‘,’).slice(0, MAX_PRICE_LOCS); } for (var i=0; i < locIds.length; i++) { if (!locIds[i]) { continue; } var setTimeoutCounter = 0; function waitUntilElementExists() { var result = ''; var qs = "[data-pernight][data-locationid='" + locIds[i] + "']"; var priceElement = document.body.querySelector(qs); if (setTimeoutCounter < setTimeoutRetryThreshold && !priceElement) { setTimeoutCounter++; window.setTimeout(waitUntilElementExists, timeoutMilliseconds); } else { if (setTimeoutCounter < setTimeoutRetryThreshold) { result = priceElement.getAttribute('data-pernight') || ''; } results.push(result); completed = true; } } waitUntilElementExists(); } pixelContext.locPrices = results.join(','); } } else { completed = true; } return completed; } var _tryAddHotelPrices = function() { if (_addHotelPricesToPixelContext()) { _loadMonikerForHotelPrices(); return true; } return false; } var startTime; var pixelTracing = false; if (window.performance && window.performance.timing && window.performance.timing.navigationStart) { startTime = window.performance.timing.navigationStart; } else { startTime = Date.now(); } function _elapsed() { return (Date.now() - startTime); } function _trace(msg) { console.log('ads-pagemoniker: ' + _elapsed() + ' ' + msg); } var _loadHotelPricesPixels = function() { if (pixelTracing) { _trace('_loadHotelPricesPixels starting'); } if(retrieve('hotelPricesEnabled')) { var retries = 3; var _addHotelPricesWithRetry = function () { if (!_tryAddHotelPrices() && retries--) { setTimeout(_addHotelPricesWithRetry, 1000); } }; _addHotelPricesWithRetry(); } }; exports.loadMonikerForHotelPrices = function(options) { var hotelsPixelLoadingStrategyEnabled = false; if (options) { pixelTracing = options.pixelLoadingTracing; hotelsPixelLoadingStrategyEnabled = options.hotelsPixelLoadingStrategyEnabled; } if (pixelTracing) { _trace('loadMonikerForHotelPrices starting'); } if (!hotelsPixelLoadingStrategyEnabled) { _loadHotelPricesPixels(); return; } setTimeout(_loadHotelPricesPixels, 0); }; exports.loadMonikers = function(context) { try { if (!retrieve('pixelsEnabled')) { return null; } context = context || {}; context.pixelType = 'PAGEVIEW'; var pixelContext = retrieve('pixelContext'); if (pixelContext && (pixelContext.servlet == 'HotelBookingRoomSelectionHtml' || pixelContext.servlet == 'MobileHotelBookingRoomSelection')) { context.pixelType = 'IB_CLICK'; exports._addIBPageViewContext(context); } var monikerFrame = exports._loadMonikers(context); if (retrieve('cacheMobileClickoutResponse')) { context.pixelType = 'CLICKOUT'; exports._cacheClickoutMonikers(context); } return monikerFrame; } catch (e) { tracks.error(e, 'ads.loadMonikers', null, {context: context}); } return null; }; exports.loadMonikerForEnterDates = function(context) { try { if (!retrieve('pixelsEnabled')) { return null; } if (!taStore.retrieve(firedForEnteringDatesKey)) { taStore.store(firedForEnteringDatesKey, true); _addHotelPricesToPixelContext(); context = context || {}; context.pixelType = 'ENTER_DATES'; setTimeout(exports._loadMonikers.bind(null, context), 2000); } } catch(e) { } }; var _loadMonikerForHotelPrices = function(context) { try { if (!retrieve('hotelPricesEnabled')) { return null; } if (!taStore.retrieve(firedForHotelPricesKey)) { taStore.store(firedForHotelPricesKey, true); exports._loadMonikersForPixelType(context, 'HAC_PRICES_LOADED') } } catch(e) { } }; exports.loadClickoutMonikers = function(context) { try { if (!(retrieve('pixelsEnabled') && retrieve('clickoutPixelsEnabled'))) { return null; } if (exports._cachedClickoutMonikerTextArr) { return exports._appendMonikersIFrameText(exports._cachedClickoutMonikerTextArr, context[jsReplacementSourceVar] || ''); } context = context || {}; context.pixelType = 'CLICKOUT'; return exports._loadMonikers(context); } catch (e) { tracks.error(e, 'ads.loadClickoutMonikers', null, {context: context}); } return null; }; exports.loadLightboxMonikers = function(context, extraContext) { try { if (!retrieve('pixelsEnabled')) { return null; } context = context || {}; context.pixelType = 'LIGHTBOX_CLICK'; var mergedContext = exports._mergeContexts(context, extraContext); var monikerFrame = exports._loadMonikers(mergedContext); return monikerFrame; } catch (e) { tracks.error(e, 'ads.loadLightboxMonikers', null, {context: context}); } return null; }; exports.loadLightboxClickoutMonikers = function(context) { try { if (!(retrieve('pixelsEnabled') && retrieve('clickoutPixelsEnabled'))) { return null; } context = context || {}; context.pixelType = 'LIGHTBOX_CLICKOUT'; return exports._loadMonikers(context); } catch (e) { tracks.error(e, 'ads.loadLightboxClickoutMonikers', null, {context: context}); } return null; }; exports.loadIBClickMonikers = function(context) { if (firedForIBClick) { return null; } var result = exports._loadMonikersForPixelType(context, 'IB_CLICK'); firedForIBClick = true; return result; }; exports.loadIBRoomSelectMonikers = function(context) { return exports._loadMonikersForPixelType(context, 'IB_ROOM_SELECT'); }; exports.loadIBConfirmMonikers = function(context) { return exports._loadMonikersForPixelType(context, 'IB_CONFIRM'); }; exports.loadVRConfirmMonikers = function(context) { return exports._loadMonikersForPixelType(context, 'VR_CONFIRM'); }; exports.loadFlightsMetaMonikers = function(context) { if (exports._loadMonikersForPixelType(context, 'FLIGHTS_META') != null) { return exports._loadMonikersForPixelType(context, 'LIGHTBOX_CLICKOUT'); }; return null; } exports.loadMonikerForCarsMeta = function(context) { return exports._loadMonikersForPixelType(context, 'CARS_META'); }; exports.loadMonikerForCarsSearchResults = function(context) { return exports._loadMonikersForPixelType(context, 'CARS_SEARCH_RESULTS'); }; exports.loadVacationPackageMetaMonikers = function(context) { return exports._loadMonikersForPixelType(context, 'PACKAGE_META'); } exports.loadMonikerForLCBPop = function(context) { return exports._loadMonikersForPixelType(context, 'LCB_POP'); }; exports.loadMonikerForFlightsMetaLightbox = function(context) { return exports._loadMonikersForPixelType(context, 'LIGHTBOX_CLICK'); }; exports.loadMonikerForFlightSearch = function(context) { return exports._loadMonikersForPixelType(context, 'SEARCH'); }; exports.loadMonikerForCruiseMeta = function(context) { return exports._loadMonikersForPixelType(context, 'CRUISE_META'); }; exports.loadMonikerForRestaurantsOfflineAttribution = function(context) { return exports._loadMonikersForPixelType(context, 'RESTAURANTS_OFFLINE_ATTRIBUTION'); }; exports.loadMonikerForRestaurantsProductSelection = function(context) { return exports._loadMonikersForPixelType(context, 'RESTAURANTS_PRODUCT_SELECTION'); }; exports.loadMonikerForRestaurantsProductPayment = function(context) { return exports._loadMonikersForPixelType(context, 'RESTAURANTS_PRODUCT_PAYMENT'); }; exports.loadMonikerForRestaurantsProductConversion = function(context) { return exports._loadMonikersForPixelType(context, 'RESTAURANTS_PRODUCT_CONVERSION'); }; exports.loadMonikerForRestaurantsNewRegOwnerForm = function(context) { return exports._loadMonikersForPixelType(context, 'RESTAURANTS_NEW_REG_OWNER_FORM'); }; exports.loadMonikerForRestaurantsConfirmedRegOwner = function(context) { return exports._loadMonikersForPixelType(context, 'RESTAURANTS_CONF_REG_OWNER'); }; exports.loadMonikerForHotelClaimFormSubmission = function(context) { return exports._loadMonikersForPixelType(context, 'HOTEL_CLAIM_FORM_SUBMISSION'); }; exports.loadMonikerForMcRetargeting = function(context) { return exports._loadMonikersForPixelType(context, 'FACEBOOK_MC_RETARGETING'); }; exports.loadMonikerForPaidFunnelConversion = function(context) { return exports._loadMonikersForPixelType(context, 'PAID_FUNNEL_LEAD_CONVERSION'); }; exports.loadMonikerForStarterPackagesPageView = function(context) { return exports._loadMonikersForPixelType(context, 'STARTER_PACKAGES_PAGE_VIEW'); }; exports.loadMonikerForStarterPackagesPropertySelection = function(context) { return exports._loadMonikersForPixelType(context, 'STARTER_PACKAGES_PROPERTY_SELECTION'); }; exports.loadMonikerForHotelsProductCartCheckout = function(context) { return exports._loadMonikersForPixelType(context, 'HOTELS_PRODUCT_CART_INITIATE_CHECKOUT'); }; exports.loadMonikerForHotelsProductCartAddPaymentInfo = function(context) { return exports._loadMonikersForPixelType(context, 'HOTELS_PRODUCT_CART_ADD_PAYMENT_INFO'); }; exports.loadMonikerForHotelsProductCartPurchase = function(context) { return exports._loadMonikersForPixelType(context, 'HOTELS_PRODUCT_CART_PURCHASE'); }; exports.loadMonikerForMemberRegistrationForm = function(context) { return exports._loadMonikersForPixelType(context, 'MEMBER_REGISTRATION_FORM'); }; exports.loadMonikerForCreateMemberSuccessful = function(context) { return exports._loadMonikersForPixelType(context, 'MEMBER_CREATE'); }; exports.loadMonikerForSaveToTripIntent = function(context) { return exports._loadMonikersForPixelType(context, 'SAVE_TO_TRIP_INTENT'); }; exports.loadMonikerForSaveToTrip = function(context) { return exports._loadMonikersForPixelType(context, 'SAVE_TO_TRIP'); }; exports.loadMonikerForRegistration = function(context, extraContext) { var mergedContext = exports._mergeContexts(context, extraContext); return exports._loadMonikersForPixelType(mergedContext, 'REGISTRATION_SUCCESS'); }; exports.loadMonikerForPlus = function(context) { return exports._loadMonikersForPixelType(context, 'PLUS_CONFIRM'); }; exports._loadMonikersForPixelType = function (context, pixelType) { try { context = context || {}; context.pixelType = pixelType; if (!(retrieve('pixelsEnabled') && retrieve('ibPixelsEnabled')) && !context['pixelEnableOverride']) { return null; } return exports._loadMonikers(context); } catch (e) { tracks.error(e, 'loadMonikers for pixelType, ', null, {context: context}); } return null; }; exports._cacheClickoutMonikers = function(extraContext) { var pixelContext = retrieve('pixelContext'); var mergedContext = exports._mergeContexts(pixelContext, extraContext); var url = exports._buildPixelUrl(mergedContext); if (!url) { return; } url += '&reportOnly=true&jsReplace='+jsReplacementTargetVar; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onreadystatechange = function() { if (this.readyState == 4) { exports._cachedClickoutMonikerTextArr = this.response.split(jsReplacementSearchStr); } }; xhr.send(); }; exports._addIBPageViewContext = function(context) { if (document.getElementById('roomList')) { context.lowestPrice = document.getElementById('roomList').dataset.lowestPrice; } if (document.getElementById('roomInfoContainer')) { context.lowestPrice = document.getElementById('roomInfoContainer').dataset.lowestPrice; } }; exports._buildPixelUrl = function(context) { var pixelServlet = retrieve('pixelServlet') ? retrieve('pixelServlet') : context.pixelServlet; if (!pixelServlet) { tracks.error(null, 'ads._buildPixelUrl: remarketing.pixelServlet not set'); return null; } var url = '/' + pixelServlet + '?'; var pixelsByType = retrieve('pixelsByType'); if (pixelsByType) { var pixelListForPixelType = pixelsByType[context.pixelType]; if (pixelListForPixelType) { var pixelList = pixelListForPixelType.join(','); if (pixelList) { url = url + 'pixelList=' + pixelList; } } } for (var key in context) { if (context.hasOwnProperty(key)) { url += '&' + key + '=' + context[key]; } } if (ta.uid) { url += '&puid=' + ta.uid; } return url; }; exports._appendMonikersIFrame = function (url, id) { return awaitConsentResponse().then(function () { var frame = document.createElement('iframe'); frame.setAttribute('id', id || 'Monikers'); frame.setAttribute('style', 'border:none; position:absolute; bottom:0; right:0'); frame.setAttribute('width', '1'); frame.setAttribute('height', '1'); frame.setAttribute('src', url); frame.setAttribute('scrolling', 'no'); document.body.appendChild(frame); return frame; }); }; exports._appendMonikersIFrameText = function(textArr, insertText) { return awaitConsentResponse().then(function () { var frame = document.createElement('iframe'); frame.setAttribute('id', 'Monikers'); frame.setAttribute('style', 'border:none; position:absolute; bottom:0; right:0'); frame.setAttribute('width', '1'); frame.setAttribute('height', '1'); document.body.appendChild(frame); var iframeDoc = frame.contentDocument || frame.contentWindow.document; iframeDoc.open().write(textArr[0]); for (var i = 1; i < textArr.length; i++) { iframeDoc.write(insertText); iframeDoc.write(textArr[i]); } iframeDoc.close(); return frame; }); }; exports._mergeContexts = function(c1, c2) { if (!c1) { return c2; } else if (!c2) { return c1; } var key; var merged = {}; for (key in c1) { if (c1.hasOwnProperty(key)) { merged[key] = c1[key]; } } for (key in c2) { if (c2.hasOwnProperty(key)) { merged[key] = c2[key]; } } return merged; }; exports._loadMonikers = function(extraContext) { var pixelContext, mergedContext; try { pixelContext = retrieve('pixelContext'); mergedContext = exports._mergeContexts(pixelContext, extraContext); var url = exports._buildPixelUrl(mergedContext); if (!url) { return null; } return exports._appendMonikersIFrame(url, _getIframeIdByPixelType(mergedContext.pixelType)); } catch (e) { tracks.error(e, 'ads._loadMonikers', null, {pixelContext: pixelContext, extraContext: extraContext}); } return null; }; nsExporter.exportTo(exports, 'ta.common.ads'); return exports; }); define('sponsoredlisting/RestaurantsSponsoredListing', ['vanillajs', 'common/trackingStreams', 'ajax-request', 'page-model', 'sponsoredlisting/utils', 'ta/Core/TA.LocalStorage', 'ta/common/behavior/Ads-pagemoniker', 'ta/util/SessionStorage'], function(vanillajs, tracking, Ajax, pageModel, slUtils, localStorage, monikers, SessionStorage) { "use strict"; var TRIP_ADS_EVENT_TYPE_CLICKED = 'CLICKED'; var TRIP_ADS_EVENT_TYPE_IMPRESSED = 'IMPRESSED'; var SPONSORED_LISTING_ID_CLICKED_KEY = 'sponsoredListingIdClicked'; var SPONSORED_LISTING_ID_CLICKED_EXPIRATION = 1000 * 60 * 5; var SPONSORED_LISTING_LOCATIONS_KEY = 'sponsoredListingsLocations'; var pathRegex = /[A-Za-z_]+/; var _translateToTrackingUrl = function( destUrl) { var parseElem = document.createElement('a'); parseElem.href = destUrl; var trackingUrl = pathRegex.exec(parseElem.pathname)[0]; if (trackingUrl == "Commerce") { return "Redirect"; } return trackingUrl; }; var _postTripAdsEvent = function(selectRequestGuid, selectPayloadToken, adReqUniqueId, eventType, callback) { Ajax({ 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, 'payloadToken': selectPayloadToken, 'externalId': adReqUniqueId }) }).then(callback, callback); }; var _logAdRequestEvent = function(event, requestId, adUnit) { Ajax({ method: 'POST', url: "/AdRequestEventLogApi/1.0/logEvent", 'x-requested-by': pageModel.JS_SECURITY_TOKEN, data: { event: event, requestId: requestId, adUnit: adUnit, servlet: pageModel.session.pageServlet, url: window.location.pathname } }); }; var _fireLiverampAttributionPixel = function(locationId, eventName) { return monikers.loadMonikerForRestaurantsOfflineAttribution({ rsAttributionlocationId: locationId, rsAttributionEvent: eventName, servlet: pageModel.session.pageServlet, pixelServlet: 'PageMoniker', pixelEnableOverride: true }); }; var _tripAdsClick = function(commerceData, clickData) { _setSPLocationInfoInSessionStorage(commerceData.location_id); var tab = null; if (clickData.newTab) { tab = window.open(clickData.destUrl, '_blank'); if (tab) { tab.focus(); } } var _commerceClickCallback = function() { var _pixelCallback = function() { var _tripAdsClickCallback = function() { var _redirectCallback = function() { if (!tab) { window.location = clickData.destUrl; } }; if (clickData.shouldUngateSponsoredClicks && commerceData && commerceData.location_id && localStorage.enabled) { localStorage.set(SPONSORED_LISTING_ID_CLICKED_KEY, commerceData.location_id, SPONSORED_LISTING_ID_CLICKED_EXPIRATION); } if (!tab) { tracking.redirectWithEvt(_redirectCallback, pageModel["session"]["pageServlet"], 'rs_tripads_click', clickData.trackingString, 0, clickData.trackingUrl); } else { require(['ta/Core/TA.Record'], function(taRecord) { taRecord.trackEventOnPage(pageModel["session"]["pageServlet"], 'rs_tripads_click', clickData.trackingString); }); } }; _postTripAdsEvent(clickData.tripAdsGuid, clickData.tripAdsPayloadToken, clickData.adReqUniqueId, TRIP_ADS_EVENT_TYPE_CLICKED, _tripAdsClickCallback); }; if (clickData.shouldFireClickAttributionPixel === true) { _fireLiverampAttributionPixel(commerceData.location_id, 'SPONSORED_CLICK').then(function (attributionIframe) { if (attributionIframe !== null) { attributionIframe.addEventListener("load", _pixelCallback); } }); } else { _pixelCallback(); } }; Ajax({ method: 'POST', url: '/SponsoredListingCommerce/1.0/click', 'content-type': 'application/json', 'x-requested-by': pageModel.JS_SECURITY_TOKEN, data: JSON.stringify(commerceData) }).then(_commerceClickCallback, _commerceClickCallback); _logAdRequestEvent('CLICK', clickData.adReqUniqueId, commerceData.area); }; var _setSPLocationInfoInSessionStorage=function(locationId) { if (window.sessionStorage) { var locations=JSON.parse(window.sessionStorage.getItem(SPONSORED_LISTING_LOCATIONS_KEY)); if(locations) { locations[locationId]=Date.now(); window.sessionStorage.setItem(SPONSORED_LISTING_LOCATIONS_KEY,JSON.stringify(locations)); } else { var locations={}; locations[locationId]= Date.now(); window.sessionStorage.setItem(SPONSORED_LISTING_LOCATIONS_KEY,JSON.stringify(locations)); } } }; var initTripAdsListing = function(adWrapper, locationId, spAdvertiserId, adReqUniqueId, tripAdsId, tripAdsGuid, tripAdsPayloadToken, slLineItem, geoId, slotId, shouldFireClickAttributionPixel, shouldFireImpressionAttributionPixel, sponsoredSlot) { var elem = adWrapper; var trackingString = sponsoredSlot + "|" + locationId + "|" + spAdvertiserId + "|" + slLineItem + "|" + tripAdsId + "|" + adReqUniqueId; var urlNodes = elem.querySelectorAll('[data-url]'); for(var i = 0; i < urlNodes.length; i++) { var urlNode = urlNodes[i]; var trackingUrl = _translateToTrackingUrl(urlNode.getAttribute("data-url")); var commerceData = { slot: slotId, location_id: locationId, area: sponsoredSlot, from: _translateToTrackingUrl(window.location.href), dest: trackingUrl, sl_line_item_id: slLineItem, trip_ads_id: tripAdsId }; var data = { destUrl : urlNode.getAttribute("data-url"), newTab : urlNode.hasAttribute("data-url-newtab"), shouldUngateSponsoredClicks : urlNode.hasAttribute("data-ungateSponsoredClicks"), trackingString : trackingString, trackingUrl : "/" + trackingUrl, geoId : geoId, tripAdsGuid: tripAdsGuid, tripAdsPayloadToken: tripAdsPayloadToken, adReqUniqueId: adReqUniqueId, shouldFireClickAttributionPixel: shouldFireClickAttributionPixel }; urlNode.addEventListener('click', _tripAdsClick.bind(null, commerceData, data)); } require(['ta/Core/TA.Record'], function(taRecord) { taRecord.trackEventOnPage(pageModel["session"]["pageServlet"], 'rs_tripads_ad_selected', trackingString); window.addEventListener("scroll", function(e) { var pageScrollEvent; if (typeof window.CustomEvent === "function") { pageScrollEvent = new CustomEvent("pageScroll"); } else { pageScrollEvent = document.createEvent("CustomEvent"); pageScrollEvent.initCustomEvent("pageScroll", true, true, null); } elem.dispatchEvent(pageScrollEvent); }); function _trackAdElemShownToUser() { var _tripAdsImpressCallback = function() { taRecord.trackEventOnPage(pageModel["session"]["pageServlet"], 'rs_tripads_user_impression', trackingString); }; _postTripAdsEvent(tripAdsGuid, tripAdsPayloadToken, adReqUniqueId, TRIP_ADS_EVENT_TYPE_IMPRESSED, _tripAdsImpressCallback); _logAdRequestEvent('IMPRESSION', adReqUniqueId, sponsoredSlot); if (shouldFireImpressionAttributionPixel === true) { _fireLiverampAttributionPixel(locationId, 'SPONSORED_IMPRESSION'); } } function trackAdElemShownToUser(e) { var adElem = e.adTarget || this; if (slUtils.isInViewport(adElem)) { adElem.removeEventListener("pageScroll", trackAdElemShownToUser); adElem.removeEventListener("adLoadComplete", trackAdElemShownToUser); _trackAdElemShownToUser(); } } window.setTimeout(function() { elem.addEventListener("pageScroll", trackAdElemShownToUser); elem.addEventListener("adLoadComplete", trackAdElemShownToUser); var adLoadCompleteEvent; if (typeof window.CustomEvent === "function") { adLoadCompleteEvent = new CustomEvent("adLoadComplete"); } else { adLoadCompleteEvent = document.createEvent("CustomEvent"); adLoadCompleteEvent.initCustomEvent("adLoadComplete", true, true, null); } elem.dispatchEvent(adLoadCompleteEvent); }, 0); }); }; var initSampleTripAdsListing = function(adWrapper) { var urlNodes = adWrapper.querySelectorAll('[data-url]'); for(var i = 0; i mobile size ResponsiveEvents.onOver('tablet', function () { $('.node-preserve', widget.element).removeClass('collapsed inRHR'); }); return { /** * Updates page filters, triggering a list update. */ updateFilter: updateFilter, /** * Toggles the filter choices visibility. */ toggleCollapse: toggleCollapse, /** * Shows hover text for info tooltip. */ hoverTooltip: hoverTooltip }; });});require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'filters_detail_language','handlers',['handlers']); define(['babel/babel-helpers', 'widget', 'ta/page', 'lib/jquery-amd', 'common/page-filters', 'common/detail-filter-tracking', 'common/trackingStreams', 'overlays/Overlay', 'overlays/styles/modal', 'overlays/position', 'overlays/styles/windowshade', 'overlays/options/autoReposition', 'overlays/options/closeOnEscape', 'overlays/options/closeOnDocClick', 'common/Radio', 'utils/ResponsiveEvents'], function (babelHelpers, widget, taPage, $, Filters, track, trackingStreams, Overlay, Modal, Position, WindowShade, AutoReposition, CloseOnEscape, CloseOnDocClick, radio, ResponsiveEvents) { var $choices = $('.choices', widget.element); var paramName = $choices.attr("data-param"); // Actual name used in request var filterName = $choices.attr('data-name'); // For tracking var $allOptions = $('.more-options', widget.element); var allOptionsContent = $allOptions[0]; var lightbox = void 0; function _initLightbox() { return new Overlay(null, Modal(null, 'center', widget.element.className, $('.name', widget.element).html(), null, allOptionsContent, 'div'), Position.center(), CloseOnDocClick, CloseOnEscape, AutoReposition, WindowShade()); } function updateFilter(e, element) { lightbox && lightbox.hide(); // Close lightbox if it's open track('Controls', 'click_' + filterName, element.parentElement.getAttribute('data-tracker'), 0); Filters.set(paramName, element.value); } function sync(settings) { var newVal = settings[paramName]; if (typeof newVal === 'undefined') { return; } if (newVal.to === '') { Filters.set(paramName, "ALL"); return; } $('input', widget.element).each(function (i, e) { return e.checked = e.value == newVal.to; }); } function toggleCollapse() { if ($('.collapse_mark', widget.element).is(":visible")) { $('.node-preserve', widget.element).toggleClass('collapsed'); } } function moreClick(elmt) { lightbox = _initLightbox(); $allOptions.removeClass("is-hidden-tablet"); widget.markMine(allOptionsContent); // Need this so that widgetEvCall still works lightbox.on('hide', function () { $allOptions.addClass("is-hidden-tablet"); $allOptions.append(allOptionsContent); }); lightbox.show(); } Filters.on('change', sync); // Show as collapsed in the sidebar radio('collapsible-layout').on('show-collapsed', function () { $('.node-preserve', widget.element).addClass('collapsed inRHR'); }); // Make sure we're not collapsed when changing > mobile size ResponsiveEvents.onOver(‘tablet’, function () { $(‘.node-preserve’, widget.element).removeClass(‘collapsed inRHR’); }); return { /** * Updates page filters, triggering a list update. */ updateFilter: updateFilter, /** * Collapse widget to title **/ toggleCollapse: toggleCollapse, /** * Show a lightbox with all options */ moreClick: moreClick }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’filters_query_resp’,’handlers’,[‘handlers’]); define([‘babel/babel-helpers’, ‘widget’, ‘lib/jquery-amd’, ‘common/page-filters’, ‘common/detail-filter-tracking’, ‘ta/util/Deferred’, ‘lib/TypeAhead’], function (babelHelpers, widget, $, Filters, track, Deferred, TypeAhead) { ‘use strict’; var paramName = $(‘[data-param]’, widget.element).attr(‘data-param’); var queryElem = $(‘.query_elem’, widget.element); var tags = $(‘.tagdata’, widget.element).data(‘tags’).split(‘,’); var typeahead = void 0; function sync(settings) { var newVal = settings[paramName]; if (typeof newVal === ‘undefined’) { return; } queryElem.val(newVal.to); } function createTypeAhead(evnt, elmt) { evnt && evnt.stopPropagation(); if (typeahead) { return typeahead; } var typeaheadParams = { name: ‘Review-Keyword-Search’, minChars: 1, startEventOn: ‘focus’, autopopulateHighlighted: false, defaultValue: ”, clearDefaultTextOnFocus: false, selectOnBlur: false, assumeOnBlur: false, restoreOnFocus: false, cycleInput: false, containerClass: ‘typeahead-container keywords_typeahead’, containerParent: $(“.query_form”, widget.element)[0], positionRelative: true, offsetX: 0, offsetY: 2, width: null, cacheResults: true, shouldSubmit: function shouldSubmit() { updateFilter(true); return false; }, search: function search(query) { var result = []; for (var t = 0; t = 20) { // Max 20 suggestions break; } } } return Deferred().resolve({ results: result, query: query }); }, // this is not called with a consistent argument list onSelect: function onSelect() { var query = queryElem.val() || ”; updateFilter(false); // force the typeahead to search for options starting with the full query, not whatever we // typed to get to this point typeahead.sync({ query: query, result: {} }); }, onRender: function onRender() { var numChoices = $(‘.typeahead-choices *’, widget.element).length; $(‘.typeahead-container’, widget.element).css(‘visibility’, numChoices === 0 ? ‘hidden’ : ‘visible’); } }; typeahead = new TypeAhead(elmt, $.extend({}, typeaheadParams)); return typeahead; } function updateFilter(isManual) { var query = queryElem.val() || ”; if (isManual) { // Replace all non-alphanumeric characters with an underscore for the tracking. ‘asd!!+_asdf!’ will become ‘asd_asdf_’. track(‘Controls’, ‘click_search’, query.replace(/(W|_)+/g, ‘_’), 0); } else { // Replace all non-alphanumeric characters with an underscore for the tracking. ‘asd!!+_asdf!’ will become ‘asd_asdf_’. track(‘Controls’, ‘keyword_search_auto_complete’, query.replace(/(W|_)+/g, ‘_’), 0); } queryElem.blur(); Filters.clear(‘t’); // Clear tags Filters.set(paramName, query); } $(“.query_form”, widget.element).submit(updateFilter); Filters.on(‘change’, sync); return { createTypeAhead: createTypeAhead, updateFilter: updateFilter }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_hero_nav’,’handlers’,[‘handlers’]); define([“babel/babel-helpers”, “widget”, “lib/jquery-amd”, “ta/util/I18N”, ‘common/Radio’, ‘photoviewer/radioHelper’, ‘photoviewer/models/eventTypes’, ‘photoviewer/tracking’, ‘utils/responsive’, ‘ta/Core/TA.Event’], function (babelHelpers, widget, $, i18n, radio, radioHelper, eventTypes, tracking, responsive, taEvent) { var m_helper = radioHelper(widget.element, _init, true); var isRtl = i18n.isRtl(); //this might be called multiple times – please consider any code added here accordingly function _init(pvId) { _initKeyboardListener(); _initNavigationItems(); _disableButtons(pvId); } function _initNavigationItems() { var photoViewerRadio = m_helper.getRadio(); photoViewerRadio.off(eventTypes.HERO_CLICKED, _onHeroRhrClicked).on(eventTypes.HERO_CLICKED, _onHeroRhrClicked); photoViewerRadio.off(eventTypes.RHR_CLICKED, _onHeroRhrClicked).on(eventTypes.RHR_CLICKED, _onHeroRhrClicked); } function _initKeyboardListener() { var photoViewerRadio = m_helper.getRadio(); photoViewerRadio.off(eventTypes.NAV_KEY_PRESSED, _keyHandler).on(eventTypes.NAV_KEY_PRESSED, _keyHandler); } function _disableButtons(pvId) { var current = $(“#” + pvId + ” .tinyThumb.current”); $(‘.heroNav.left’, widget.element).toggleClass(‘disabled’, parseInt(current.attr(‘data-offset’)) === 0); $(‘.heroNav.right’, widget.element).toggleClass(‘disabled’, current.next(‘.tinyThumb’).length === 0); } function _onHeroRhrClicked() { var navItems = $(“.navigationItem”, widget.element); navItems.toggleClass(“anchor”); if (!responsive.desktop()) { tracking.recordNavArrowVisibilityChange(navItems.hasClass(“anchor”)); } } function _keyHandler(evnt) { // handle keyboard navigation evnt = evnt || window.event; switch (evnt.keyCode) { case 37: // left arrow _advanceHero(null, null, isRtl ? 1 : -1); break; case 39: // right arrow _advanceHero(null, null, isRtl ? -1 : 1); break; } } function _advanceHero(evnt, elmt, dir) { m_helper.getRadio().emit(eventTypes.ADVANCE_HERO_CLICKED, dir); // if from a click if (evnt) { m_helper.getRadio().trigger(‘check-ad-refresh’); tracking.recordArrowClick(); } else { // if not from a click, we still let the sponsored video system know that // we’re advancing taEvent.fireEvent(‘galNavClick’); } } return { advanceHero: _advanceHero }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_back_to_gallery’,’handlers’,[‘handlers’]); define([“babel/babel-helpers”, “widget”, “lib/jquery-amd”, ‘photoviewer/models/eventTypes’, ‘photoviewer/radioHelper’, ‘photoviewer/tracking’], function (babelHelpers, widget, $, eventTypes, radioHelper, tracking) { var m_helper = radioHelper(widget.element, _init, true); //this might be called multiple times – please consider any code added here accordingly function _init() { _initClickHoverToggle(); } function _onHeroRhrClicked() { $(“.galleryButton”, widget.element).toggleClass(“anchor”); } function _initClickHoverToggle() { var radio = m_helper.getRadio(); radio.off(eventTypes.HERO_CLICKED, _onHeroRhrClicked).on(eventTypes.HERO_CLICKED, _onHeroRhrClicked); radio.off(eventTypes.RHR_CLICKED, _onHeroRhrClicked).on(eventTypes.RHR_CLICKED, _onHeroRhrClicked); } function _backToGallery() { var $paramsElement = $(“[data-aggregationId]”, widget.element); var params = { albumViewMode: “images”, aggregationId: $paramsElement.attr(“data-aggregationId”), albumid: $paramsElement.attr(“data-albumId”), offset: $paramsElement.attr(“data-offset”), filter: $paramsElement.attr(“data-filter”) }; tracking.recordBackToGalleryClick(); m_helper.getRadio().trigger(eventTypes.BACK_TO_GALLERY, params); } return { backToGallery: _backToGallery }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_auto_play_overlay’,’handlers’,[‘handlers’]); /** * @author jwatton * @since Dec 11 2017 */ define([‘widget’, ‘lib/jquery-amd’, ‘photoviewer/models/eventTypes’, ‘photoviewer/tracking’, ‘photoviewer/radioHelper’], function(widget, $, eventTypes, tracking, radioHelper) { ‘use strict’; var AUTOPLAY_DELAY = 10 * 1000; // 10 seconds var autoPlayWidgetContainer = widget.element; var m_helper = radioHelper(widget.element, _init, true); var m_isVisible = false; function _playUpNext() { if (m_isVisible) { m_isVisible = false; $(autoPlayWidgetContainer).toggle(m_isVisible); m_helper.getRadio().trigger(“autoPlayNext”); } } function _cancel() { m_isVisible = false; $(autoPlayWidgetContainer).toggle(m_isVisible); m_helper.getRadio().trigger(“cancelAutoPlay”); } function _showOverlay() { if (!m_isVisible) { m_isVisible = true; _setOverlayContent(); $(autoPlayWidgetContainer).toggle(m_isVisible); } } function _setOverlayContent() { var nextVideoTitle = m_helper.getRadio().request(“nextVideoTitle”); var $title = $(“.autoPlayOverlayTitle”); $title.text(nextVideoTitle); var $timer = $(‘.progressIndicator’); var pathLength = $timer.attr(‘r’) * 2.0 * Math.PI; $timer.stop(); $timer.css(‘stroke-dasharray’, pathLength); $timer.css(‘stroke-dashoffset’, pathLength); $timer.animate({ ‘stroke-dashoffset’: 0 }, AUTOPLAY_DELAY, ‘linear’, _playUpNext); } //this might be called multiple times – please consider any code added here accordingly function _init() { m_helper.getRadio().off(“showAutoPlayOverlay”, _showOverlay).on(“showAutoPlayOverlay”, _showOverlay); } return { playUpNext: _playUpNext, cancel: _cancel }; } ); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_report_problem’,’handlers’,[‘handlers’]); define([“babel/babel-helpers”, “widget”, “lib/jquery-amd”, ‘photoviewer/models/eventTypes’, ‘photoviewer/radioHelper’, ‘pages/inappropriate_vote_stub’, ‘photoviewer/tracking’, ‘page-model’], function (babelHelpers, widget, $, eventTypes, radioHelper, IAP, pvTracking, pageModel) { var m_helper = radioHelper(widget.element, _init, true); var m_mediaId = void 0; //this might be called multiple times – please consider any code added here accordingly function _init() { m_helper.getRadio().off(eventTypes.HERO_UPDATED, _load).on(eventTypes.HERO_UPDATED, _load); m_helper.getRadio().off(eventTypes.HERO_CLICKED, _toggleAnchor).on(eventTypes.HERO_CLICKED, _toggleAnchor); m_helper.getRadio().off(eventTypes.RHR_CLICKED, _toggleAnchor).on(eventTypes.RHR_CLICKED, _toggleAnchor); } function _load(data) { if (!(data instanceof Object)) { return; } var mediaid = data.mediaid, isPano = data.isPano, mediaAttributionUrl = data.mediaAttributionUrl; var button = $(‘.ui_button’, widget.element); if (isPano || mediaAttributionUrl) { if (!button.hasClass(‘hidden’)) { // We should only hide the button if it’s visible button.toggleClass(‘hidden’); } } else { // Make sure that the button is visible button.removeClass(‘hidden’); } m_mediaId = mediaid; } function _toggleAnchor() { $(‘.ui_button’, widget.element).toggleClass(‘anchor’); } function click(evt) { IAP.open(evt, widget.element, { voteContentType: ‘MEDIA’, contentId: m_mediaId, locationId: pageModel.LOC_ID }); } return { click: click }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_helpful’,’handlers’,[‘handlers’]); define([“babel/babel-helpers”, “widget”, “lib/jquery-amd”, ‘photoviewer/models/eventTypes’, ‘photoviewer/radioHelper’, ‘utils/ajax’, ‘photoviewer/tracking’, ‘page-model’], function (babelHelpers, widget, $, eventTypes, radioHelper, ajax, pvTracking, pageModel) { var m_helper = radioHelper(widget.element, _init, true); var m_curHeroInfo = void 0; var m_mediaVoted = {}; //this might be called multiple times – please consider any code added here accordingly function _init() { m_helper.getRadio().off(eventTypes.HERO_UPDATED, _load).on(eventTypes.HERO_UPDATED, _load); m_helper.getRadio().off(eventTypes.HERO_CLICKED, _toggleAnchor).on(eventTypes.HERO_CLICKED, _toggleAnchor); m_helper.getRadio().off(eventTypes.RHR_CLICKED, _toggleAnchor).on(eventTypes.RHR_CLICKED, _toggleAnchor); } function _load(data) { if (!(data instanceof Object)) { return; } var helpfulvotes = data.helpfulvotes, mediaid = data.mediaid, albumid = data.albumid, mediaType = data.mediaType, mediaFilter = data.mediaFilter, isPano = data.isPano; m_curHeroInfo = { helpfulvotes: helpfulvotes, mediaid: mediaid, albumid: albumid, mediaType: mediaType, mediaFilter: mediaFilter }; $(‘.ui_button’, widget.element).toggleClass(‘hidden’, isPano); _updateVotes(helpfulvotes); } function _toggleAnchor() { $(‘.ui_button’, widget.element).toggleClass(‘anchor’); } function _updateVotes(votes) { if (typeof votes !== ‘number’ || isNaN(votes)) { votes = 0; } if (m_mediaVoted[m_curHeroInfo.mediaid]) { votes++; } $(‘.count’, widget.element).text(votes).toggleClass(‘hidden’, votes 0) { // when primary media is saved, web component will emit ‘saved’ event. // we should listen this event to update messaging on the button. radio(‘set-primary-button’).off(‘saved’, _saved).on(‘saved’, _saved); var button = $(‘.ui_button’, widget.element); button.removeClass(‘unauthorized’); } } function _saved() { var label = $(‘.cta .label’, widget.element); if (!label.hasClass(‘hidden’)) { label.toggleClass(‘hidden’); } var success = $(‘.cta .success’, widget.element); success.removeClass(‘hidden’); } function _load(data) { if (!(data instanceof Object)) { return; } var mediaid = data.mediaid, mediaType = data.mediaType; var button = $(‘.ui_button’, widget.element); // only photos can be set as primary if (mediaType !== ‘2’) { if (!button.hasClass(‘hidden’)) { button.toggleClass(‘hidden’); } } else { // Make sure that the button is visible button.removeClass(‘hidden’); } m_mediaId = mediaid; } function click() { // when user click ‘Set primary’ button, we emit a ‘click’ event, which is listened by the web component on the page // this component will call primary-photo api and save the primary photo. radio(‘set-primary-button’).emit(‘click’, { mediaId: m_mediaId }); } return { click: click }; });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_caption’,’handlers’,[‘handlers’]); define([‘babel/babel-helpers’, ‘widget’, ‘lib/jquery-amd’, ‘photoviewer/models/eventTypes’, ‘utils/ResponsiveEvents’, ‘utils/responsive’, ‘photoviewer/radioHelper’, ‘photoviewer/tracking’], function (babelHelpers, widget, $, eventTypes, responsiveEvents, responsive, radioHelper, tracking) { // values from MediaAlbumEntry.java var MASK_MEDIA_MANAGEMENT = 1; var MASK_MEDIA_TRAVELER = 2; var MASK_MEDIA_STAFF = 4; var $widget = void 0; var $container = void 0; var m_helper = radioHelper(widget.element, _init, true); //this might be called multiple times – please consider any code added here accordingly function _init() { $widget = $(widget.element); $container = $widget.find(‘.captionBox’); _handleResponsive(); m_helper.getRadio().off(eventTypes.HERO_UPDATED, _load).on(eventTypes.HERO_UPDATED, _load); } function _load(data) { if (!(data instanceof Object)) { return; } var isPano = data.isPano, avatarUrl = data.avatarUrl, captionText = data.captionText, captionProvider = data.captionProvider, mediaFilter = data.mediaFilter, rating = data.rating, reviewUrl = data.reviewUrl, mediaAttributionUrl = data.mediaAttributionUrl; $container.find(‘.iconCircle’).removeClass(‘active’); switch (mediaFilter) { case MASK_MEDIA_MANAGEMENT: { $container.find(‘.management’).addClass(‘active’); break; } case MASK_MEDIA_STAFF: { $container.find(‘.tripadvisor’).addClass(‘active’); break; } case MASK_MEDIA_TRAVELER: { $container.find(‘.avatar’).attr(‘src’, avatarUrl); $container.find(‘.user_no_avatar’).toggleClass(‘active’, !avatarUrl); $container.find(‘.member’).toggleClass(‘active’, !!avatarUrl); break; } default: { break; } } var captionTitleHtml = captionText; $container.find(‘.ui_bubble_rating’).attr(‘class’, ‘ui_bubble_rating member bubble_’ + rating).toggle(rating > 0); var captionProviderContainer = $(“”); if (mediaAttributionUrl) { var attributionLink = $(““).html(captionProvider); attributionLink.attr(“href”, mediaAttributionUrl).attr(“target”, ‘_blank’).attr(“rel”, “nofollow”); attributionLink.click(function (event) { event.stopPropagation(); tracking.recordCaptionAttributionUrlClick(); }); captionProviderContainer.append(attributionLink); } else { captionProviderContainer.text(captionProvider); } $container.find(‘.captionBody’).toggle(!!captionProvider).html(captionProviderContainer); $widget.off(‘click’); if (reviewUrl && reviewUrl.length !== 0 && !isPano && captionText && captionText.length !== 0) { captionTitleHtml = $(“”).html(captionText); captionTitleHtml.attr(“href”, reviewUrl).attr(‘target’, ‘_blank’).click(function (event) { event.stopPropagation(); tracking.recordCaptionReviewClick(); }); } var $captionTitle = $container.find(‘.captionTitle’); $captionTitle.toggle(!!captionText).html(captionTitleHtml); } function _handleResponsive() { if (responsive.mobile()) { _adjustForMobile(); } else { _adjustForDesktop(); } responsiveEvents.onUnder(‘tablet’, _adjustForMobile); responsiveEvents.onOver(‘tablet’, _adjustForDesktop); } function _adjustForDesktop() { $container.removeClass(‘is-mobile’); } function _adjustForMobile() { //placement should handle vertical positioning depending on the photo size $container.addClass(‘is-mobile’); } });});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_media_filter’,’handlers’,[‘handlers’]); /** * * @author kankori * @since Nov 2017 */ define([‘widget’, ‘lib/jquery-amd’, ‘photoviewer/models/eventTypes’, ‘photoviewer/tracking’, ‘photoviewer/radioHelper’, ‘utils/urlutils’], function(widget, $, eventTypes, tracking, radioHelper, urlUtils) { ‘use strict’; var m_helper = radioHelper(widget.element, null, true); var $widget = $(widget.element); function handleTypeClick(event, elm, loadDataQueryParams) { var args = urlUtils.getUrlQueryArgs(loadDataQueryParams); m_helper.getRadio().trigger(eventTypes.TYPE_CHANGE, args); tracking.recordFilterItemClick(args.filter, elm, ‘type’); } function handleCategoryClick(event, elm, loadDataQueryParams) { var args = urlUtils.getUrlQueryArgs(loadDataQueryParams); m_helper.getRadio().trigger(eventTypes.CATEGORY_CHANGE, args); tracking.recordFilterItemClick(args.albumid, elm, ‘category’); } function toggleCategoryExpanded(event, elm, numKeepInView) { $widget.find(‘.albumFilterTag’).slice(numKeepInView).toggleClass(‘hidden’); $widget.find(‘.expandFilters’).toggleClass(‘hidden’); $widget.find(‘.hideFilters’).toggleClass(‘hidden’); } return { handleTypeClick: handleTypeClick, handleCategoryClick: handleCategoryClick, toggleCategoryExpanded: toggleCategoryExpanded }; } ); });require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_auto_play’,’handlers’,[‘handlers’]); /** * @author jwatton * @since Dec 11 2017 */ define([‘widget’, ‘lib/jquery-amd’, ‘photoviewer/models/eventTypes’, ‘photoviewer/tracking’, ‘photoviewer/radioHelper’, ‘utils/responsive’, ‘overlays/uiOverlay’], function(widget, $, eventTypes, tracking, radioHelper, responsive, uiOverlay) { ‘use strict’; var autoPlayEvent = eventTypes.AUTOPLAY_TOGGLE; var $autoplayCheckbox = $(widget.element).find(“#AUTOPLAY-SWITCH”); var m_helper = radioHelper(widget.element, _init, true); var m_autoplayEnabled = false; /** * Set autoplay on or off * */ function _toggleAutoplayEnabled() { if (m_autoplayEnabled !== $autoplayCheckbox.is(“:checked”)) { m_autoplayEnabled = $autoplayCheckbox.is(“:checked”); if ($autoplayCheckbox.is(“:checked”)) { tracking.trackSimpleAction(“autoplay_toggle_on_click”); } else { tracking.trackSimpleAction(“autoplay_toggle_off_click”); } } } /** * cancel autoplay from button on overlay * */ function _cancelAutoPlayEnabled(){ m_autoplayEnabled = false; $autoplayCheckbox.prop(“checked”, false); } /** * Check if autoplay is on or off * * @returns {Boolean} */ function _isAutoplayEnabled() { return m_autoplayEnabled; } /** * Opens Overlay info message when hovering over auto play */ function _tooltipHover(event, elmt){ uiOverlay(event, elmt); } //this might be called multiple times – please consider any code added here accordingly function _init() { $autoplayCheckbox.prop(‘checked’, _isAutoplayEnabled() && responsive.tablet()).change(function() { m_helper.getRadio().trigger(autoPlayEvent); }); m_helper.getRadio().off(autoPlayEvent, _toggleAutoplayEnabled).on(autoPlayEvent, _toggleAutoplayEnabled).reply(“isAutoPlayEnabled”, _isAutoplayEnabled) .on(“cancelAutoPlay”, _cancelAutoPlayEnabled); } return { toolTipHover: _tooltipHover }; } );});require([‘ta/prwidgets’], function(widgets) { var define = widgets.define.bind(widgets,’photoviewer_media_filter_toolbar’,’handlers’,[‘handlers’]); /** * @author kankori * @since Nov 2017 */ define([‘widget’, ‘lib/jquery-amd’, ‘photoviewer/models/eventTypes’, ‘photoviewer/tracking’, ‘photoviewer/radioHelper’, ‘utils/urlutils’, ‘ta/prwidgets’], function(widget, $, eventTypes, tracking, radioHelper, urlutils, prwidgets) { ‘use strict’; var events = [eventTypes.TYPE_CHANGE, eventTypes.CATEGORY_CHANGE].join(‘ ‘); var dropdownItemSelected = false; var overlays = {}; var $widget = $(widget.element); var m_helper = radioHelper(widget.element, _init, true); function _showOverlay(overlayName, contentSelector) { if(!overlays[overlayName]) { require([‘overlays/Overlay’, ‘overlays/position/fullside’, ‘overlays/styles/windowshade’, ‘overlays/options/keepInDom’, ‘overlays/styles/modal’, ‘overlays/options/closeOnWindowshadeClick’, ‘overlays/options/slideInOut’ ], function (Overlay, fullside, windowShade, keepInDom, Modal, closeOnWindowshadeClick, slide) { var content = $widget.find(contentSelector); overlays[overlayName] = new Overlay(widget.element, fullside.right(), new Modal(null, null, ‘second-layer’, null, null, content.get(0)), windowShade(‘dark second-layer’), slide(‘from_right’), closeOnWindowshadeClick); prwidgets.initWidgets(overlays[overlayName].contentElement); overlays[overlayName].show(); // HOT-21959 – ru-Ru: MW: Can’t scroll the filter category of photos $(overlays[overlayName].container).addClass(‘layered_overlay’); overlays[overlayName].on(‘hide’, function() { if (!dropdownItemSelected) { var pageAction = overlayName === “typeOverlay” ? “grid_view_type_click” : “grid_view_category_click”; tracking.recordGridDropdownAbandonment(pageAction); } dropdownItemSelected = false; }); }); } else { overlays[overlayName].show(); } } function _showTypeOverlay() { _showOverlay(‘typeOverlay’, ‘.type_flyout’); } function _showCategoryOverlay() { _showOverlay(‘categoryOverlay’, ‘.category_flyout’); } function _clearOverlays() { for (var ol in overlays) { if (overlays.hasOwnProperty(ol)) { overlays[ol].destroy(); delete overlays[ol]; //will need to re-create after reload } } dropdownItemSelected = true; } function _typeClicked(event, target, data) { var args = urlutils.getUrlQueryArgs(data); m_helper.getRadio().trigger(eventTypes.TYPE_CHANGE, args); tracking.recordFilterItemClick(args.filter, target, ‘type’); } function _categoryClicked(event, target, data) { var args = urlutils.getUrlQueryArgs(data); m_helper.getRadio().trigger(eventTypes.CATEGORY_CHANGE, args); tracking.recordFilterItemClick(args.albumid, target, ‘category’); } //this might be called multiple times – please consider any code added here accordingly function _init() { m_helper.getRadio().off(events, _clearOverlays).on(events, _clearOverlays); } return { showTypeOverlay: _showTypeOverlay, showCategoryOverlay: _showCategoryOverlay, typeClicked: _typeClicked, categoryClicked: _categoryClicked }; }); }); 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': 10174721, 'servletClass': 'com.TripResearch.servlet.eatery.responsive.RestaurantReviewServlet', 'servletName': 'Restaurant_Review', 'params': {}, 'data': {}});}); if (require) {require(['ta/rollupAmdShim'], function(rollupAmdShim) { rollupAmdShim.install([], ["ta"]); }); } else {if (window.ta&&ta.rollupAmdShim) {ta.rollupAmdShim.install([],["ta"]);} }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-utils', [], function() { var exports = {}; exports.keepOverlayOpenOnSelection = function(target) { var overlayElmts = document.querySelectorAll(".ui_overlay"); for (var i = 0; i

FIRST_AD_TOP – apiTrigger) {window.removeEventListener(‘scroll’, initAtFirstAd);if (!initHasRun) {initHasRun = true;require([‘@ta/platform.runtime’, ‘trjs!cpm/Desktop’], function(runtime, desktopAds) {runtime.importBundle(‘@ta/platform.consent’).then(function (bundle) {bundle.requestConsent(bundle.CategoriesEnum.ADVERTISING, function() {desktopAds.initDoubleClick(initOpts); });});});}}}initAtFirstAd();window.addEventListener(‘scroll’, initAtFirstAd);});]]>



Source

Leave a Reply

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