In a rare Saturday sitting, British MPs will gather in Westminster tomorrow to vote on a Brexit deal.
We've been here before, several times - Theresa May's deal was comprehensively rejected on a number of occasions.
This time is a little different, mainly thanks to the new deal agreed between the EU and UK this week - with the backstop gone, replaced by a number of Northern Ireland-specific mechanisms introduced to avoid a hard border in Ireland.
There was plenty of optimism in Brussels yesterday, but the deal faces its most significant hurdle now - getting through the House of Commons.
It could go either way, and the only thing for certain is that it's going to be close...
Parliamentary arithmetic
Here's how the general House of Commons situation looks at the moment.
There are 650 seats, although four of those - speaker John Bercow and three deputies - don't typically vote. There are also seven Sinn Féin MPs who abstain and don't take their seats.
That all means Boris Johnson will need 320 votes to win a narrow majority of one, assuming everyone shows up to vote and there are no abstentions.
The Tories are in power, but they don't have a working majority.
They're still supported by 10 members of the DUP in a confidence and supply arrangement, but the Northern Irish party are not happy with the new deal.
In general, almost all the opposition parties - Labour, the SNP, Liberal Democrats etc... - oppose the deal, with opposition leader Jeremy Corbyn claiming it's worse than Theresa May's.
How will the parties vote?
It's a given that most Tories will vote for the deal, and most Labour and opposition MPs against it. But it's all a bit more complicated than that.
The DUP will oppose the deal, which is a major blow for the British prime minister - 10 votes which will be crucial in the final count.
Mr Johnson will therefore be relying on almost all Tories to back the deal - but the biggest risk he faces is some of the hardline Tory Brexiteers siding with the DUP.
That doesn't seem like it will be the case, but the DUP has today called on some of the most ardent pro-Brexit Conservatives to back them.
Conservative & Unionist MPs must take a stand for the Union and join us in rejecting this deal. Internal & burdensome trade barriers will be erected within the UK without parallel consent from both unionists & nationalists. This is not Brexit.
— Sammy Wilson MP 🇺🇦🇬🇧 (@eastantrimmp) October 18, 2019
Meanwhile, Jeremy Corbyn can count on most of his party's support, plus most of the opposition - but there will be rebels. How many could well determine how the votes goes.
A count by the Financial Times forecasts seven Labour rebels (and one Lib Dem), a situation that would likely see the deal defeated.
However, there are more potential Labour votes for the deal - with 19 Labour MPs having written to EU Commission President Jean-Claude Juncker recently indicating their desire for a deal.
It's still unclear exactly how many will break party ranks, as there are major reservations in the party about how the deal addresses issues such as workers' rights.
The other wildcards are the almost two dozen former Tories who lost the party whip last month for voting against the government to block a no deal scenario.
While these aren't government MPs any more, most are keen for a deal - meaning they're likely to back the agreement in tomorrow's vote.
In another complication, there are the amendments likely to be tabled.
Aside from the deal itself, tomorrow will almost certainly see major amendments come up for a vote - such as potential extensions to Brexit to allow for a general election.
Too close to call
It's not hard to see a path to the deal being passed, but equally Boris Johnson faces an uphill battle securing the two or three crucial votes to push his deal over the line.
It's going to be a long Saturday in the House of Commons....