Perfect Match knows it’s a deeply, deeply unserious show. There’s a moment early in the first episode of this season that perfectly preps us for the vibes of this reality-dating competition. Harry, who didn’t watch the first season because three of his exes were on it, says he knows the winning couple wasn’t a perfect match: “She cheated on that guy with me,” he laughs. So no matter how much host Nick Lachey insists that this is all in the name of love, Perfect Match subtly acknowledges from the jump that it’s not actually about finding the two most compatible people in Netflix’s incestuous reality-verse and sending them on a luxurious vacation. It’s about drama, baby! A show like Love Is Blind wants contestants to breathlessly believe in the sanctity of its marriage experiment, but on Perfect Match, you’re allowed (and dare I say encouraged!) to be a messy bitch who’s just here for a good time.
Now, that doesn’t mean that some contestants aren’t still looking for a real relationship amid all the drama. I’m just not convinced that the majority of them are. Here, the first ten singles who come mingle in the Perfect Match villa in Tulum, Mexico:
Tolú, The Trust. Ready to find a husband. Waaay too mature for some of these clowns.
Stevan, Too Hot to Handle. Calls himself Water Gun Kelly … as in, MGK with a “little squirt action.” Does that line normally work for him?
Bryton, Squid Game: The Challenge. Slips into third person while introducing himself. Claims to not care that people hate him.
Dominique, Too Hot to Handle. She was more attracted to women than men the last time she did a reality-dating show. Gets turned on by arguments.
Micah, Love Is Blind. Clearly still trying to rebrand out of her villain era. Says it’s going to be a Hot Micah Summer, which … you know, props for self-confidence!
Kaz, Dated & Related. Is hungry for the “all-you-can-eat buffet” of girls. Brags about being good at sex.
Izzy, Love Is Blind. Feels insecure about his age and height in the villa. You know it’s bad when Netflix decides the best quality for his tagline is that he has good credit now.
Elys, Too Hot to Handle. Promises she’s crazy in a “fun” way.
Xanthi, The Circle. Admits that she always goes for bad boys. At least she’s self-aware?
Harry, Too Hot to Handle. Confuses Tolú’s Africa earrings for Antarctica. Gets the biggest reaction from the rest of the cast due to his poor track record with women, but swears therapy and self-help books have changed him for the better.
Time for our first round of matches! Dominique and Bryton, who share a … combative flirting style, immediately hit it off. They’re the first to couple up but also the first to start fighting. Harry ends up with Elys, which makes sense — she’s the woman in the house who seems to care the least about his past. Izzy awkwardly tries to pursue his crush on Micah. Unfortunately, if you have to ask a woman not to think of you as a creep, you’ve already lost, bud. He ends up matching with Tolú, who likes that he seems ready for something serious. Xanthi and Stevan have clear chemistry after a toe-sucking icebreaker, but she wants to break her habit of dating bad boys by matching with Kaz instead. That leaves Micah and Stevan, a distinctly platonic pairing.
As a refresher, Perfect Match is structured around compatibility challenges. The winning couple goes on a date together. More importantly in the context of the competition, they also get to go to the boardroom, where they can pick two new people to send on a date with their housemates — or themselves. Any people left unmatched at the end of the night are eliminated.
The first challenge involves thrusting a platform to a finish line. Harry and Elys win. He says it came down to strength and size; she credits their ability to connect. Bryton doesn’t listen to Dominique, who has an engineering degree. His condescension finally becomes too much for her in an uncomfortable post-challenge interview, where she bursts into tears.
Thankfully, Harry and Elys decide in the boardroom to offer Dominique a different option: Chris, a Too Hot to Handle star with Disney-prince hair whom Elys vouches for. They also pick Tolú to go on a date with … Dom!!! That’s right, Perfect Match’s sweetheart winner is back. If you didn’t watch season one, all you need to know is that he came across as a kind, sensitive guy who could be easily taken advantage of (and apparently was cheated on after winning). “I got this. I got it this time,” Dom assures us.
Just like that, the mix-and-match era begins. It seems pretty obvious that the new guys will be staying. Tolú already liked Dom from watching him on the show, and they have great chemistry. She says it’ll be a tough decision, but from the moment she says, “Oh, Dom, you should have” on the date, I’m already sure Izzy will be packing his bags. (Poor guy has to get rejected by Micah one more time before it sinks in for him, though.) Meanwhile, Bryton clearly feels threatened by Chris and gives off rancid vibes when asking for proof of foreskin. I don’t think Chris is perfect for Dominique — he doesn’t know how to handle her bisexuality, and he tries to out-alpha Bryton after crashing a rooftop conversation. But I’m glad that Dominique recognizes she and Bryton are never going to work. She begrudgingly ends up with Chris, but at the cost of losing faith in the male gender as a whole.
The rest of the pairing goes pretty smoothly, too. Micah and Xanthi both realize that they’re more interested in each other’s matches and mutually agree to a “wife swap” with Stevan and Kaz. Harry and Elys stick together, though we see some cracks when he says he wants her to be more physically affectionate. He just takes it way too personally when women are wary of him. They’re just trying to protect their peace, dude!
The next compatibility test is a kissing challenge, which is designed to stir up some insecurity. It’s never gonna be fun when your partner rates someone else as a better kisser than you. Even when blindfolded and wearing noise-canceling headphones, I feel like you should have enough physical clues not to give your partner your lowest score. (Apparently, Chris either doesn’t realize or doesn’t care that he does that to Dominique.) Xanthi opts out, while Kaz and Micah give each other perfect tens. You can’t convince me those weren’t strategic rankings once they figured out who they were kissing, but they win either way.
During her date with Kaz, Micah suggests that it might be “kinda spicy and fun” to start testing couples that seem solid. They send Harry on a date with Jessica from Love Is Blind, who is his exact physical type as a short, tan brunette. It’s nice that Harry reacts so positively to her being a single mom. But it’s still hard to believe that he’s a mature man ready for marriage when he’s telling us he’s nervous he might be going on a date with someone he’s “already spunked in.” I can only hope that Jessica’s daughter never hears any of Harry’s many obscene confessionals.
Harry suggests that Elys is just a friend, which leads to a very tense breakup once that info trickles down. Jessica is confused at the situation she’s walked into. She still matches with Harry, but warns him she’s not to be played with. He seems to respect Jessica more, and the room-cam suggests that she isn’t as guarded about the physical touch he wanted from Elys, so this connection seems to have potential.
Micah and Kaz have also tested Stevan by setting him up with Alara from Dated & Related. She’s looking for a gentleman who will “open my chairs” and doors, and Stevan is more than happy to pitch himself as a nice mama’s boy. But Alara is also tempted by fellow Harry Potter fan Dom. She even tells him to pick her, but Dom lets his indecision get the best of him and ends up watching Alara and Stevan kiss. He sticks with Tolú, but his heart obviously isn’t in it.
Meanwhile, Chris decides to help his friend Elys out by matching with her, allowing her to stay out of pure spite for Harry. Chris’s relationship with Dominique is basically over anyway; she’s rightfully exasperated that he insinuates that being bi means she wants an open relationship. For some reason, he decides to bring her and Xanthi (whom he’s never matched with, mind you!) together to declare that he won’t be picking them. Do men think? Do they?? Dominique and Xanthi honestly seem relieved to head out.
Compatibility challenge No. 3 involves answering questions about other couples. At this point, Elys is clearly only focused on trying to take Harry down. We learn a few spicy facts, but nothing comes close to the revelation that Stevan had a cage to put women in. (He later clarifies that it was a dog cage, not a cage he specifically bought for women, which doesn’t feel better to me.) Dom and Tolú win, but during their date, he hints that she should pick a new guy for herself in the boardroom, and she feels played.
Tolú decides to send her friend Elys on a date with Justin from Surviving Paradise. When it’s time to choose someone for herself, Dom tries to clear the air. Tolú ends up accusing him of being jaded and not actually wanting to explore his connection with her. It definitely feels like his takeaway from last season is that loyalty is a weakness. “Congratulations. You have entered your villain era,” Tolú tsks in a confessional. She sends herself on a date with Jake from The Ultimatum. (I’m just glad she doesn’t pick Trevor from Love Is Blind. She has me scared when she says Trevor must be ready for a genuine connection, so I assume his cheating scandal hasn’t broken at this point in filming.)
Jake’s … fine. But during a game of “truth or dare” back at the villa, Chris makes a clear move on Tolú by reviving his Axel Stone stripper persona. He gives Tolú a lap dance, then dares her to kiss him. Jake wonders, “But why wasn’t he matched up with her previously?” Good question, Jake! Chris and Tolú have definitely been flirting for a little bit, but the timing is convenient. Is she just a backup? Either way, Tolú can’t stand a passive man and matches with Chris for at least putting in work to win her over. Bye, Jake!
We also get a couple of failed swap attempts. Micah is interested in Elys’s date, Justin. That’s strike two for Elys, who is still upset that Micah and Kaz sent Harry on that date with Jessica. Elys tries to plant some seeds of doubt in Kaz, but he doesn’t take the bait. Micah ends up apologizing to Kaz, and instead of breaking up, they reaffirm their commitment to each other. Meanwhile, “Dom Cruise” tries to make a move on Alara. Even after Stevan surprised her by making a romantic dinner the night before, she was definitely still considering Dom. But after a heartfelt chat with Stevan, she ultimately chooses to stick with him. Dom then tries for Elys, but she recognizes it as a last-ditch effort and matches with Justin.
Realizing that he’ll be leaving the house, a frustrated Dom makes a throwaway comment suggesting that Harry isn’t genuine. Jessica questions why Harry’s best friend would say this, and Harry goes to his room and starts sobbing. “For some reason, all these people wanna talk poorly about me,” he says. You can’t think of ONE reason, sir? Jessica comes in to try to hug him, but he pushes her away and says he wants her to never question him. She then tearfully apologizes. Jessica, no!!!
The next morning, Jessica says she was overthinking, and actually feels guilty for making him feel bad. I still think she’s being way too forgiving, but these two seem happy after talking through the situation. And I have to admit that their personalities do kinda work. Even when they’re arguing about whether she’s a geek, it doesn’t feel as upsetting as Dominique and Bryton’s back-and-forths.
The last compatibility challenge of this batch of episodes involves moving balls into a basket without using hands. Stevan and Alara win. Despite a fake-out that makes Tolú give out a hug she wants back, Stevan does not go on a date. Instead of trying to break up strong couples, he and Alara use their time in the boardroom to try to make better matches.
They’re not convinced Chris’s feelings for Tolú are real, so they send him on a date with Melinda, whom he had a crush on when she hosted his show, Dated & Related. Melinda’s dreams of sex and travel seem a bit more Chris’s speed, since I’m not quite sure that he is as ready for marriage as Tolú is.
Alara and Stevan also don’t think that Micah is a good match for Kaz. Stevan bluntly calls Micah a “fun sponge,” which is harsh. But … is he wrong? There’s a distinct difference in Kaz’s energy when he meets his bubbly new date, Holly, yet another representative from Too Hot to Handle. (In the most crude way possible, Harry shares that he and Stevan have both slept with Holly, which she denies.)
Tolú and Micah try to reassure each other that they’re not in danger. They put on their keep-my-man dresses, though they’re worried that Melinda and Holly have packed steal-your-man dresses.
Kaz is definitely rattled. He’s stumbling over his words, making ice cream metaphors that he himself doesn’t even understand. After hearing Holly talk about the date, Micah calls Kaz a liar, which feels like the final straw that pushes him into Holly’s arms, though we don’t actually find out whom he picks.
Chris decides he’s happy with the pace he’s set with Tolú and the way their chemistry is building. He matches with her, telling her their relationship feels more real. I do think the fact that Melinda talked to the other guys influenced his choice, but maybe he really is developing some feelings? I mean, Tolú is a bad bitch. I don’t know; I can’t really get a read on Chris. I’m just happy she’s lived to fight another day.
Justin and Elys match, Stevan and Alara match, and Harry and Jess — leaving Melinda fuming. She won’t have to be upset for too long, though, because the preview reveals that everyone, including eliminated contestants and those who weren’t selected in the boardroom, has been invited to enter the mix. It’s a truly cruel move from Netflix. I’m obsessed.
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(3),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),(auth.isSubscriber()||auth.isMobileAppRequest())&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"3":3,"4":4,"17":17,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]