"Researchers have just released hacker-proof cryptographic code — programs with the same level of invincibility as a mathematical proof.
rogrammers are human, but mathematics is immortal. By making programming more mathematical, a community of computer scientists is hoping to eliminate the coding bugs that can open doors to hackers, spill digital secrets and generally plague modern society.
Now a set of computer scientists has taken a major step toward this goal with the release today of EverCrypt, a set of digital cryptography tools. The researchers were able to prove — in the sense that you can prove the Pythagorean theorem — that their approach to online security is completely invulnerable to the main types of hacking attacks that have felled other programs in the past. "When we say proof, we mean we prove that our code can't suffer these kinds of attacks," said Karthik Bhargavan, a computer scientist at Inria in Paris who worked on EverCrypt.
EverCrypt was not written the way most code is written. Ordinarily, a team of programmers creates software that they hope will satisfy certain objectives. Once they finish, they test the code. If it accomplishes the objectives without showing any unwanted behavior, the programmers conclude that the software does what it's supposed to do.
Yet coding errors often manifest only in extreme "corner cases" — a perfect storm of unlikely events that reveals a critical vulnerability. Many of the most damaging hacking attacks in recent years have exploited just such corner cases.
"It's some cascading failure, and it's hard to systematically find because [the events leading to it] are individually all very unlikely," said Bryan Parno, a computer scientist at Carnegie Mellon University who worked on EverCrypt.
"You can reduce the question of how code behaves into a mathematical formula, and then you can check if the formula holds. If it does, you know your code has that property," said Parno.
Because it's practically impossible to formally specify the function of complex software such as a web browser, researchers have instead focused on programs that are both critical and amenable to being defined mathematically. EverCrypt is a library of software that handles cryptography, or the encoding and decoding of private information. These cryptographic libraries are innately mathematical. They involve arithmetic with prime numbers and operations on canonical geometric objects like elliptic curves. Defining what cryptographic libraries do in formal terms is not a stretch.
The main challenge to creating EverCrypt was developing a single programming platform that could express all the different attributes the researchers wanted in a verified cryptographic library. The platform needed the capacity of a traditional software language like C++ and the logical syntax and structure of proof-assistant programs like Isabelle and Coq, which mathematicians have been using for years. No such all-in-one platform existed when the researchers started work on EverCrypt, so they developed one — a programming language called F*. It put the math and the software on equal footing.
Their new cryptographic library provides a number of security guarantees. The researchers proved that EverCrypt is free of coding errors, like buffer overruns, that can enable hacking attacks — in effect, provably ruling out susceptibility to all possible corner cases. They also proved that EverCrypt gets the cryptographic math right every time — it never performs the wrong computation.
But the most striking guarantee EverCrypt makes has to do with an entirely different class of security weaknesses. These occur when a bad actor infers the contents of an encrypted message just by observing how a program operates.
For example, an observer might know that an encryption algorithm runs just a little faster when it adds "0" to a value and just a little slower when it adds "1" to a value. By measuring the amount of time an algorithm takes to encrypt a message, an observer could start to figure out whether the binary representation of a message has more 0s or 1s in it — and eventually infer the complete message. "Somewhere deep in your algorithm or the way you implement your algorithm you are leaking information, which can completely defeat the purpose of the entire encryption," said Bhargavan. Such "side-channel attacks" were behind several of the most notorious hacking attacks in recent years, including the Lucky Thirteen attack. The researchers proved that EverCrypt never leaks information in ways that can be exploited by these types of timing attacks.
Yet while EverCrypt is provably immune to many types of attacks, it does not herald an era of perfectly secure software. Protzenko noted there will always be attacks that no one has thought of before. EverCrypt can't be proven secure against those, if only for the simple reason that no one knows what they will be.
Because vulnerabilities in adjacent, unverified programs can undermine a cryptographic library, Project Everest aims to surround EverCrypt with as much verified software as it can. The overarching goal of the initiative is to complete a fully verified implementation of Hypertext Transfer Protocol Secure (HTTPS), the software that secures most web communication. This will involve half a dozen individual software elements like EverCrypt, each of which is formally verified to work on its own and all of which are formally verified to work together.


text:
Q: Как записать в список? Я провожу анализ текста с помощью pymorphy2. Из анализа я выаскиваю само слово (parse.normal_form) и его часть речи (parse.tag.POS).
Вот что у меня выходит
появление NOUN
оон NOUN
быть VERB
обусловить PRTS
целый ADJF

Как можно записать все это в список, который содержал много маленьких списков
[['появление','NOUN'],['оон','NOUN'],['быть','VERB']]

words = text.split()
pos_tag = []
for word in words:
  parse = morph.parse(word)[0]
  print(parse.normal_form,parse.tag.POS)

A: Это очень просто сделать, просто создайте пустой список и добавляйте в него список двух значений:
words = text.split()
res = []
for word in words:
  parse = morph.parse(word)[0]
  res.append([parse.normal_form, parse.tag.POS])
print(res)

Вывод:
[['появление','NOUN'],['оон','NOUN'],['быть','VERB']]

redpajama_set_name: RedPajamaStackExchange


Spicer India Private Limited designs and manufactures drivetrain products for the OEMs of utility vehicles and commercial vehicles, off-highway and the related aftermarket segments, domestically and internationally. Continuous R&D and collaborative product development efforts have enhanced Spicer India's trustworthiness among OEMs and fleet operators. This has allowed us to come up with more lightweight, fuel-efficient and higher torque-carrying capacity vehicles. Our leadership status has been reinforced by the power of partnership and the power of people, resulting in the company being consistently recognised as a Great Place to Work®.
Spicer India Private Limited is continuously developing products that are increasingly lighter in weight and have a higher torque-carrying capacity. Our wide range of drive shaft and drive train components are built with advanced technologies and help achieve the clean mobility goals of our customers, in addition to providing a smoother drive. We are also known for offering product warranties that last one lakh kilometres.


Warm note: Those sizes in our size chart are all US size, please choose your correct size according to the US size chart in the left picture.
We can also offer custom service for free to you, no matter what color and size you want. You just need to message us about them when you make order.
A little color difference cannot be avoided on shopping online. Hope you can understand it.
If you have any questions when you make order, please contact us and we are always at your service.
Suits for prom dress, bridesmaid dress, evening dress, wedding dress, party dress, and other special occasions.


Window Succulent How To Grow Healthy Succulents Needlesandleaves Net With Growing Plants Succulent Leaf Baby Plants How To Propagate Succulents From Leaves And Cuttings Needlesandleaves Net Random Growing 1420783236705 For Growing Succulent Plants Succulent Leaf Baby Plants How To Propagate Succulents From Leaves And Cuttings Needlesandleaves Net For Growing Succulent Leaf Baby Plants How To Propagate Succulents From Leaves And Cuttings Needlesandleaves Net At Growing Joelix Grow Succulents3 Random Growing Succulent Plants 2 Random Growing Succulent Plants Or Growing Succulent Plants 1402419849115 Within Growing Succulent Plants How To Grow Succulents Indoors In Artificial Lights Needlesandleaves Net At Growing Succulent Plants Img 7445 In Growing Succulent Plants 7020 Urn Or Growing Succulent Plants Succulents Twenty20 1ebd85bd C6c0 4bec A7f0 3ce10741b91b Or Growing Succulent Plants Sd Aspect 1490891104 Cl Jpg Resize 640 Within Growing Succulent Plants Growing 20Succlents 20Indoors 0 In Succulent Plants .
On this website we recommend many designs about Growing Succulent Plants that we have collected from various sites. raggedwrite.net that we have collected from various sites, and of course what we recommend is the most excellent of image for Growing Succulent Plants. If you like the design on our website, please do not hesitate to visit again and get inspiration from all the houses in the design of our web design.


text:
Tag Archives: Pedro Martinez
NL's Cy Young Award has gone to a Phillies hurler seven times
Denny won the 1983 NL Cy Young Award for his performance with the Phillies that season
Major League Baseball continues the announcement of its 2019 awards on Wednesday evening. The top pitchers in both the National and American Leagues will be honored as the Cy Young Award winners are publicly revealed in a 6:00 pm EST broadcast on the MLB Network.
Those will be the more formally recognized awards as voted on by the Baseball Writers Association of America. However, a few hours earlier, the IBWAA (Internet Baseball Writers Association of America) will announce the winners of voting from their membership.
The 2019 American League Cy Young Award finalists are teammates Gerrit Cole and Justin Verlander of the AL champion Houston Astros and former Phillies pitcher Charlie Morton of the Tampa Bay Rays. Verlander previously won the award back in 2011 and is a three-time runner-up for the honors.
In the National League, the finalists are last year's winner Jacob deGrom of the New York Mets, Korean southpaw Hyun-Jin Ryu of the Los Angeles Dodgers, and three-time winner Max Scherzer of the world champion Washington Nationals. Both Ryu and Cole are free agents this off-season.
My choices are Cole and deGrom. Those are the two men who received my IBWAA vote.
MLB first began recognizing the best pitcher in baseball with this formal award with the 1956 season. For the first 11 years, just one winner for all of Major League Baseball was honored.
Due to an overwhelming outpouring of fan requests, a winner was honored from both the National and American Leagues beginning with the 1957 season.
In 1969, the American League vote ended in a tie between Denny McLain of the Detroit Tigers and Mike Cuellar of the Baltimore Orioles, and for the only time in the history of the award it was shared. Voting rules were changed as a result, with just one winner honored thereafter.
While the Cy is generally considered to be an honor for the top starting pitcher in the game, that is not a requirement. Mike Marshall of the Los Angeles Dodgers became the first reliever to take the honors in 1974, and eight other relievers have since won the award across the two leagues. The most recent was Eric Gagne of the Dodgers back in 2003.
Roger Clemens holds a record for having won the award seven times. A pair of former Phillies pitchers, Roy Halladay and Pedro Martinez, are among a group of a half-dozen hurlers to be honored with the Cy in both leagues at some point during their careers.
The late Baseball Hall of Famer and Phillies Wall of Famer Halladay is one of just four pitchers to take home a National League Cy Young Award while a member of the Fightin' Phils pitching staff.
Halladay was the unanimous winner of the award after a historic 2010 season in which he threw a Perfect Game as well as just the second postseason no-hitter in MLB history. He registered an incredible 8.6 WAR value that year, winning 21 games and tossing 250.2 innings with nine complete games.
In 1983, right-hander John Denny captured the honors with the Phillies "Wheeze Kids" team that would go on to win the National League pennant. Denny received 20 of 24 first-place votes to finish as an easy winner.
That Cy followed a 19-win season during which he tossed 242.2 innings over 36 starts. Denny was also the NL's Comeback Player of the Year in that first full season after coming to the Phillies from the Cleveland Indians in a September 1982 trade.
Four years later, the only Phillies relief pitcher to ever win the Cy took the honors in one of the closest votes ever. Steve Bedrosian saved 40 games for the team that year, exactly half of their total 1987 wins total. He worked 89 innings over 65 games, allowing 79 hits with 74 strikeouts and a 2.83 ERA.
"Bedrock" received just nine of 24 first-place votes, but came out the winner with 57 total voting points. That total edged out the 55 received by Rick Sutcliffe (four first-place) of the Chicago Cubs and 54 for Rick Reuschel (eight first-place), who split the season between the Pittsburgh Pirates and San Francisco Giants.
Halladay, Denny, Bedrosian. Those are three of the seven times that a Phillies pitcher has taken the NL honors. As I said earlier, four pitchers have won the award while with the club. Which means that the fourth hurler would put four Cy Young Awards into his trophy case.
That hurler was, of course, lefty Steve Carlton. The greatest pitcher in Phillies franchise history, Carlton won the Cy for his performances on the mound in the 1972, 1977, 1980, and 1982 campaigns.
That first win in 1972 was one of the most impressive pitching performances in Major League Baseball history. In his first season after arriving from the Saint Louis Cardinals in a spring training trade for Rick Wise, Carlton was the unanimous winner of what has been ranked as the ninth-greatest Cy Young season in history.
The man who became alternately known as "Lefty" or "Super Steve" won 27 games with a putrid Phillies team that would win just 59 games. He made 41 starts with 30 complete games, numbers that are unheard of in today's game. Carlton allowed just 257 hits over 346.1 innings with 310 strikeouts, registering a 1.97 ERA and 0.993 WHIP.
In 1977, Carlton won 23 games while tossing 283 innings over 36 starts. He registered 17 complete games and struck out 198 with a 2.64 ERA and 1.124 WHIP. That performance allowed him to receive 17 of 26 first-place votes and finish comfortably ahead of runner-up Tommy John of the Dodgers.
For his performance during the Phillies first-ever World Series-winning campaign in 1980, Carlton became just the third pitcher to ever win three Cy's, joining Sandy Koufax and Tom Seaver with that distinction.
That year, the lefty won 24 games, with 38 of his starts resulting in 13 complete games. He struck out 286 batters while allowing just 243 hits across 304 innings pitched. Carlton registered a 2.34 ERA and 1.095 WHIP, and received 23 of the 24 first-place votes as the runaway winner.
Two years later, Carlton became the first pitcher to ever win four career Cy Young Awards, and did so again in runaway fashion, receiving 20 of 24 first-place votes.
That season, Carlton won 23 games while making 38 starts, half of those resulting in complete games. He struck out 286 over 295.2 innings with a 1.147 WHIP for a Phillies team that would battle his old Saint Louis club for the NL East crown down to the last two weeks of the season before falling three games short.
Carlton and Halladay went on to become both Baseball Hall of Famers and Phillies Wall of Famers. Carlton's 84.1 career WAR mark is the fifth-best in baseball history among left-handed pitchers, while Halladay's 65.4 mark leaves him among the top 50 hurlers in the history of the game.
Denny had a nice career, winning 123 games over 13 big-league seasons, 37 of those with the Phillies over parts of four years. Bedrosian registered 184 career saves and 76 wins in a 14-year career.
At this time last season, Phillies right-hander Aaron Nola was a finalist for the award after winning 17 games and allowing just 149 hits over 212.1 innings across 33 starts with 224 strikeouts.
Will Nola some day become the fifth Phillies pitcher to capture an NL Cy Young Award? Perhaps Zach Eflin will elevate his game to that level. Or maybe the club will be able to lure Cole or Ryu this winter in free agency and find one of them taking the honors in some future season.
One thing is certain, as the 2011 Phillies who won a franchise record 102 regular season games while featuring a "Four Aces" rotation of Halladay, Cole Hamels, Cliff Lee, and Roy Oswalt showed, starting pitching is the name of the game in Major League Baseball.
The Phillies need to upgrade their starting pitching rotation by landing a pair of new, proven arms in the free agent market this winter. If they do, the club should finally once again become a serious challenger for a postseason berth in 2020. And perhaps they'll also get a Cy Young winner in the bargain.
The two Phillies skippers to win Manager of the Year may surprise you
Four Phillies players have won the NL Rookie of the Year Award
Phillies to shop at the top of the 2020 MLB free agent market
Evaluation of the current Philadelphia Phillies roster and payroll situations
J.T. Realmuto wins the 2019 National League Gold Glove Award at catcher
Nationals coach Joe Dillon emerges as a leading contender for Phillies new hitting coach
Bryan Price brings tremendous experience as the new Phillies pitching coach
Joe Girardi is the right man at the right time for the Philadelphia Phillies
Time for the Phillies to give Alec Bohm a full shot to start at third base in 2020
Aaron NolaBBWAACharlie MortonCliff LeeCole HamelsCy Young AwardDenny McLainEric GagnefeaturedGerrit ColeHyun-jin RyuIBWAAJacob deGromJohn DennyJustin VerlanderMajor League BaseballMax ScherzerMike CuellarMike MarshallMLBPedro MartinezPhiladelphia PhilliesPHILLIESRick ReuschelRick SutcliffeRick WiseRoger ClemensRoy OswaltSandy KoufaxSteve BedrosianSteve CarltonTom SeaverTommy JohnZach Eflin
Cliff Lee: he never wanted to leave Phillies in the first place
2019-01-12 Matt Veasey
Embed from Getty Imageswindow.gie=window.gie||function(c){(gie.q=gie.q||[]).push(c)};gie(function(){gie.widgets.load({id:'k2G0vbLXS-tL44bdxt–vg',sig:'MG0vFvbBXvLVrKYLYhaUvZScIjSRwLZ_B1x6B1G3_Tc=',w:'594px',h:'395px',items:'107615232′,caption: true ,tld:'com',is360: false })});//embed-cdn.gettyimages.com/widgets.js
Cliff Lee came and went in 2009 and came back in 2010
During what all fans of the Philadelphia Phillies have been led to believe will be one of the most significant off-season periods ever for the franchise, I've been taking a look back at the team's 'Hot Stove' history.
So far we have recalled the signings of Pete Rose (1978), Jose Mesa(2000), and Jim Thome (2002) in free agency. We have also revisited key off-season trades: the 1981 three-way deal that resulted in Lonnie Smith leaving and Bo Diaz arriving, the 1982 trade of future Hall of Famer Ryne Sandberg, and the trading away of Thome.
Probably the most recent important Phillies move during a Hot Stove season came in the middle of December back in 2010. It was then that general manager Ruben Amaro Jr. began trying to reverse a huge prior mistake from exactly one year earlier. Both decisions were among the most influential during the 2009-11 period when the club was trying to get back to the World Series.
Those two moves involved a left-handed starting pitcher named Cliff Lee. His pro career had begun after he was drafted three times. Lee finally signed after being selected by the Montreal Expos with their fourth round selection in the 2000 MLB Amateur Draft.
In June 2002, Lee was dealt to the Cleveland Indians as part of a four-prospect package that also included Grady Sizemore and Brandon Phillips in an overall six-player deal that brought starting pitcher Bartolo Colon to Montreal.
LEE DEVELOPS INTO AN ACE
In Cleveland's minor league system, Lee showed enough with Buffalo of the Triple-A International League that he was given a two-start cup of coffee with the Indians in September 2002. He went 10.1 innings allowing just six hits over those two outings.
Lee won the 2008 AL Cy Young Award with Cleveland
After beginning the 2003 season back at Triple-A, Lee received a spot start with Cleveland in late June. Then in mid-August he was called to the big-leagues for good. Lee would enter the Tribe's starting rotation and remain there for the next six years.
Lee would develop into one of the top starting pitchers in the game, culminating in a memorable 2008 season. While the Phillies were driving towards their first World Series crown in nearly three decades, Lee was putting together a Cy Young Award-winning season in Cleveland.
In that 2008 campaign, Lee went 22-3 with a 2.54 ERA and 1.110 WHIP. He also had a fabulous 170/34 K:BB ratio over 223.1 innings across 31 starts. In addition to the Cy Young honors, he was an AL All-Star for the first time, and even received AL MVP votes.
Lee was scheduled to become a free agent after the 2010 season, and it became obvious that the Indians would not be able to get him to sign a contract extension. Looking at a rebuilding situation, Cleveland GM Mark Shapiro decided to find a deal for him a year early.
LEE ACQUIRED BY CHAMPS IN-SEASON
As defending World Series champions, the Phillies were struggling to open up a lead in a tight NL East race in July 2009. A big reason was that the team's starting pitching was looking a bit fragile.
Cole Hamels, the hero of the prior season, appeared to be going through a World Series hangover campaign. Brett Myers struggled the entire year with injuries. At age 46, Jamie Moyer was getting hit hard. Joe Blanton and rookie J.A. Happ were giving the club innings, but were not the kind of arms that a team looking to repeat as world champions wanted at the front of a rotation.
On July 15, the Phillies signed 37-year-old veteran Pedro Martinez, who had been sitting out the season to that point. It was going to take Martinez a few weeks to get into pitching shape, and in fact he would not join the team's starting rotation until August 12.
Amaro was still rumored to be hot after both Lee and Toronto Blue Jays right-hander Roy Halladay. Finally, just before the non-waiver trade deadline, Amaro and Shapiro reached a deal. The Phillies would acquire Lee in exchange for a four-prospect package led by pitcher Carlos Carrasco.
Cito Gaston was manager of the Blue Jays at the time. Once the Phillies had traded for Lee, it meant that Gaston was likely to keep his ace in Halladay. Jayson Stark at ESPN quoted Gaston after the Lee deal was announced: "Who knows? They may come back and get [Halladay], too. That'd be a pretty good staff there, wouldn't it?" How prescient that comment would eventually prove.
The 30-year-old Lee was everything that the Phillies hoped, and more. Over a dozen starts he went 7-4 with a 74/10 K:BB ratio. Martinez went 5-1 over nine starts with a 37/8 K:BB ratio. The two veterans gave the rotation just the shot in the arm that it needed to push the club to its third straight NL East title.
In the 2009 postseason, Lee upped his game. He made two strong starts in a tough NLDS victory over the Colorado Rockies, then a brilliant start against the Los Angeles Dodgers in Game Three of the NLCS.
When Lee shut down the New York Yankees in Game One of the World Series, the Phillies appeared on their way to back-to-back championships. Alas, it was not to be. The team did win his next start in Game Five, but that only kept them alive. The Yanks would take the Fall Classic two nights later.
THE LEE HOT STOVE TRADE
After the season, Amaro resumed his pursuit of Halladay, who was scheduled to become a free agent following the 2010 season. On December 16, 2009 the Phillies acquired Halladay from Toronto in exchange for a three-prospect package.
Amaro had negotiated a four-year contract extension with the 32-year-old Halladay, who thought that he was joining Lee in the Phillies rotation. Instead, Amaro shocked everyone in the Phillies community by dealing away Lee just hours later.
The justification given by Amaro at the time was shaky from the start. He felt that Lee's contract demands were unreasonable, and also claimed that the Phillies needed to re-stock their farm system after it had been depleted by that summer's Lee trade and the Halladay aquistion.
However, the package that Amaro obtained from the Seattle Mariners that day of prospect pitchers Phillippe Aumontand J.C. Ramirez and young outfielder Tyson Gillies failed to convince anyone that it improved the organization to the same level as having Lee remain on the big-league pitching staff.
It would prove to be one of the worst trades in Phillies history. Our own Tim Kelly here at PN wrote in August 2018 about comments made by former outfielder Jayson Werth to a local radio station. Included among those revealing remarks were this quote:
"…they [the Phillies] offered Cliff a contract at a marginal number, we'll say. And then he counters at a reasonable counter, far less for what he ends up signing back for. Within that day, a day or two, Ruben freaks out, he can't believe that they would ask for that type of money – which was under-market for Cliff – and trades him to Seattle. So he was traded to Seattle for a bag of balls and a couple Fungos."
Halladay would enjoy a memorable 2010 season in which he would capture the National League Cy Young Award while tossing a Perfect Game and a playoff no-hitter. Hamels rebounded with a solid campaign. The rest of the rotation struggled, but Amaro swung a trade to bring in three-time NL All-Star and perennial Cy Young candidate Roy Oswalt from Houston.
The Phillies struggled much of that summer. But then from late August through late September the team went on an incredible run, winning 23 of 27 games to pull away to a fourth straight NL East title.
As for Lee, he would make just 13 starts for the Mariners. With the club struggling and with Lee still scheduled to become a free agent in the coming off-season he was shipped off to the Texas Rangers following a final start for Seattle on July 4.
At the time of that deal, Lee was 8-3 with a 2.34 ERA and had been selected to the AL All-Star team. He would attend the game not as a member of the Mariners, but instead wearing a Rangers cap.
Over the rest of the season in Texas, Lee would go just 4-6 with a 3.98 ERA. He did produce solid numbers otherwise, allowing 103 hits over 108.2 innings with a 96/12 K:BB ratio in 15 starts.
The Rangers won the AL West crown and the American League pennant, reaching the World Series. However, the Phillies were not there to great their former pitcher. Halladay, Werth, and the two-time defending NL champion Phillies had been beaten in six games in the 2010 NLCS by the San Francisco Giants.
San Francisco would then take out the Rangers in five games to capture the first World Series crown for the Giants franchise in 56 years. Lee was rocked in the opener of that Fall Classic in San Francisco. He then would also lose a pitcher's duel to Tim Lincecum in the Game Five clincher at Texas.
THE LEE HOT STOVE FREE AGENT SIGNING
The off-season got underway following that 2010 campaign with Lee entering free agency for the first time in his career. A return to the Rangers was possible, but the New York Yankees were seen by most as the early and overwhelming favorites to land his services.
The Yankees had finished in second place in the AL East in 2010, a game behind the Tampa Bay Rays but had comfortably won what was the lone Wildcard berth available at that time. The Yanks then swept the Minnesota Twins 3-0 in the ALDS, but were beaten by Texas in six games in the ALCS. Adding Lee, and subtracting him from the Rangers, would likely push them to the top of the American League favorites list.
The Phillies were not seen to be a contender for Lee at first. They already had a rotation that would include Halladay, Hamels, and Oswalt coming back in 2011. It was projected at that point that Blanton and Kyle Kendrick would make up the back of their rotation.
A formal contract offer was extended to Lee by the Yankees, one that would turn out to be the highest offer that he would receive. It wouldn't be enough.
Shock waves rolled across the game on December 15, 2010 when, seemingly out of nowhere, it was announced that the Phillies and Lee had agreed to a five-year, $120 million contract. Lee would join Halladay, Hamels, and Oswalt in what the baseball world would call the "Four Aces" rotation, one of the best in the history of the game.
In Philadelphia it became known as "Merry Cliffmas", and Phillies fans were euphoric. They would have a dominating pitching rotation that would give their still-potent offensive attack a chance to win every single day.
Not only was Lee's signing a surprise gift to Phillies fans, but he also won their hearts forever with what he said upon agreeing to the deal: "I never wanted to leave in the first place." It turned out that Lee and his wife Kristen had enjoyed their brief 2009 time in Philly so much that returning was a relatively easy decision.
The Phillies of 2011 would not win every day, but it seemed like it at times. That club would set a franchise record with 102 regular season wins, leading the NL East from wire-to-wire and ultimately taking the division crown by 13 games.
Lee went 17-8 with a 2.40 ERA and was named as NL All-Star, finishing third in the NL Cy Young Award voting. Halladay went 19-6 with a 2.35 ERA and finished as the Cy Young runner-up. Hamels was 14-9 with a 2.79 ERA, finishing fifth in that Cy Young Award voting.
Oswalt won just nine games and struggled some with a 3.69 ERA. In fact, he wasn't even one of the four most effective members of the rotation that year. Neither were Blanton or Kendrick. That status was provided by 23-year-old rookie Vance Worley, who surprised everyone with an 11-3 mark and 3.01 ERA over 25 games, 21 as a starter. Worley would finish third in the NL Rookie of the Year voting.
When the 2011 postseason opened, the Phillies were clear favorites to capture their second World Series title in four years. But in one of the most disheartening endings in franchise history, they were edged out in five games by the Saint Louis Cardinals in the NLDS.
Lee played a part in that loss. After the offense bailed out Halladay to take Game One, those same bats then provided Lee with an early 4-0 lead in Game Two. But the Cardinals then chipped away, scoring three runs in the top of the 4th inning and one each in the 6th and 7th, rallying for a 5-4 win to tie the series.
The Phillies took a 2-1 series lead behind a strong outing from Hamels in Game Three, but Saint Louis beat Oswalt in Game Four to once again tie the series.
In a decisive Game Five at Citizens Bank Park, a pitching battle for the ages took place. Halladay allowed just one run on six hits. It would be enough to win almost any game. But Saint Louis received an absolute gem from their starter, Chris Carpenter. He would shut the Phillies out on three hits in a complete game.
With two outs in the bottom of the 9th inning and the Cardinals clinging to a 1-0 lead, Saint Louis native Ryan Howard stepped in for the Phillies. On a 2-2 pitch, Carpenter's 110th of the game, Howard topped a slow grounder to second base. As the final out was being recorded, the big slugger crumpled to the ground, having blown out his Achilles tendon.
It wasn't obvious yet at that point, but history would show that the Phillies era of contention at the top of Major League Baseball would end with that play.
The 2012 Phillies struggled from the beginning but were still three games above the .500 mark and within 2.5 games of first place as June began. But the team would collapse under the weight of injuries.
Howard wouldn't return until July and was never the same dominating slugger. Chase Utley wouldn't begin his season until late June, and at age 33 was beginning his own slow decline. Both Shane Victorino and Hunter Pence, the latter obtained just a year earlier to bolster that 2011 team, were traded away at the non-waiver deadline as Amaro threw in the towel.
Lee would pitch well in both 2012 and 2013 as the Phillies tried unsuccessfully to quickly rebuild. He went 14-8 with a 2.87 ERA, made the NL All-Star team, and finished sixth in National League Cy Young voting in the 2013 season. Incredibly, less than a year later his career would be over.
The 2014 season opened with Lee as the Phillies primary trade candidate. At 35-years-old he still had that season and then 2015 to go on his contract, with a $25 million salary owed both years. There was a $27.5 million club option or $12.5 million buyout for the 2016 season as well.
He began the year as the Opening Day starter. Over his first 10 starts through mid-May he went 4-4 with a 3.18 ERA and a 61/9 K:BB ratio in what seemed a typical Lee season. But following a May 18 win over the Cincinnati Reds he was placed on the disabled list with discomfort in his left pitching elbow.
The Phillies tried to bring him back as the non-waiver trade deadline approached, hoping to find a deal, but he was hit hard in two late July starts. Then on July 31, the exact date of the deadline, he was given a final chance to show that he was healthy and could help someone.
It appeared to observers that things had started out well that night at Nationals Park. Through 2.2 innings, Lee had allowed just one hit and walked no one, striking out four Washington Nationals batters. And then it ended, just that suddenly.
With two outs in the third inning, Lee delivered his first pitch to Denard Span and walked off the mound, tapping his left arm. It turned out that he had been experiencing discomfort while warming up before the game, and then when warming up before each inning. This time it wouldn't go away.
''It was there every throw and I just felt like if I kept throwing something was going to snap and I just wanted to make sure that didn't happen," Lee said per Sports Illustrated via the AP following that game.
He tried to come back for the 2015 season but was able to throw just two innings at spring training in Clearwater. Lee would spend that entire season on the disabled list after suffering a left common flexor tear. After the season ended the Phillies declined his option for 2016, and his career was over.
In February 2016, when it was becoming obvious that Lee would never pitch again, Grant Brisbee at SB Nation wrote a fantastic piece on the pitcher who he correctly called "one of the best pitchers of his generation." In that piece, Brisbee described what it was like for a batter facing Lee:
"Watching a pitcher move inside and out, up and down, is absolutely symphonic. But it's even more entertaining to watch the hitters panic, knowing that the baseball can dart a foot away from the plate if it doesn't bore right in on their damned thumbs. The hitter is acutely aware that the pitcher on the mound can do whatever he wants, whenever he wants, and there's a split second to determine if the ball is going to hurt him, be hittable or be so unhittable that it will make him look like an idiot if he swings."
Over parts of five seasons with the Phillies, Lee recorded a 48-34 record with a 2.94 ERA, 1.089 WHIP, and 2.85 FIP. He yielded just 777 hits over 827.1 innings across 118 starts, surrendering just 80 home runs while registering a 21.6 WAR mark.
He also produced an other-worldly 813/124 K:BB ratio, made a pair of NL All-Star teams, and finished among the leaders in Cy Young voting twice. In his time with the Phillies, Lee led the National League in shutouts in 2011, and twice led the league in both the K/BB and BB/9 categories.
Cliff Lee was one of the most popular players on a team populated with those types of individuals, the greatest Phillies team to never win a world championship. That popularity has never waned.
His being traded away in December 2009 may have kept the 2010 Phillies from winning another World Series crown. But neither was his return as a free agent in December 2010 enough to make that happen for a record-setting Phillies team in 2011.
It remains possible that one day we'll be watching Lee enjoy an induction ceremony to the Phillies Wall of Fame. For the millions of fans who packed Citizens Bank Park during the final years of that heyday, it would be a well-deserved honor.
Originally published at Phillies Nation as "Phillies Hot Stove History: The 2009 trade and 2010 free agent signing of Cliff Lee"
Carlos CarrascoCliff LeeCole HamelsHot Stove HistoryJamie MoyerJayson WerthJoe BlantonKyle KendrickPedro MartinezPHILLIESRoy HalladayRoy OswaltRuben Amaro JrVance Worley
FOOTBALL, Uncategorized
Can the 2018 Eagles do what the 2009 Phillies could not?
Embed from Getty Imageswindow.gie=window.gie||function(c){(gie.q=gie.q||[]).push(c)};gie(function(){gie.widgets.load({id:'Isx9kvU9T8dSRTEHZI6WAg',sig:'g8ZRce4DcUHjBxnAgN790Xv1srGe8-cR1ynGaY5LCV8=',w:'594px',h:'396px',items:'92601985′,caption: true ,tld:'com',is360: false })});//embed-cdn.gettyimages.com/widgets.js
Despite Utley's heroics the Phillies fell just short in repeat world title attempt
Tonight is the 2018 NFL season opener between the Philadelphia Eagles and the Atlanta Falcons. That would be the Super Bowl champion Philadelphia Eagles, by the way. Those words still look and sound so glorious, do they not?
The Birds and their fans will celebrate their title one final time with the raising of the first-ever Super Bowl banner at Lincoln Financial Field this evening. But after that, the game will begin. The football calendar will officially turn to a new season.
In that new 2018 season the Eagles will be defending an NFL championship for the fourth time in franchise history. It marks just the second time in the last 35 years that a Philadelphia major pro sports team will attempt to repeat as a champion.
Philly fans remember well the last time it happened Just nine years ago the Philadelphia Phillies played the 2009 season as defending champions of Major League Baseball.
The long playoff run and Fall Classic triumph had been punctuated by a Halloween parade around City Hall and down Broad Street to Citizens Bank Park.
The Eagles experienced pretty much the same thing. A long playoff run, early February Super Bowl, parade this time up Broad Street from the stadium area and out the Ben Franklin Parkway to the Art Museum.
There was a shorter than normal off-season as the Phillies did the banquet and awards circuit that winter and then returned to Clearwater for spring training in February 2009. The Eagles had a month shorter off-season as well. While the Birds and their coaching staff were prepping for the Patriots, the rest of the NFL was already getting a jump on 2018 preparations.
As far as personnel were concerned, the 2009 Phillies returned largely the same cast of lead characters who had won the crown. The only change among starting position players came with Raul Ibanez replacing Pat Burrell as the left fielder.
On the mound, the biggest change at the start was that young lefty J.A. Happ stepped into the starting rotation in place of the Kyle Kendrick and Adam Eaton combination from the previous year.
Lee arrived at the July 2009 trade deadline to provide a needed shot in the arm.
Those Phillies had to make a big injury adjustment when Brett Myers hit the DL for three months in late May. You probably won't recall that they gave Antonio Bastardo five June starts, or that they signed Rodrigo Lopez and plugged him in for five July starts. But you will recall that they traded for Cliff Lee and signed Pedro Martinez in July, bolstering the rotation for August and beyond.
There was a World Series hangover at the beginning of the season. Six weeks in, the Phillies went through a stretch in which they lost six of eight games. On Friday, May 15, the 2009 Phillies woke up with a 16-16 record. And then it all changed.
Following that mid-May rough stretch, the Phillies went on a five-game winning streak. It began a stretch that saw the club capture 19 of their next 26, moving them to a season-best twelve games over the .500 mark and to a four-game lead in the NL East.
And then the bottom seemed to again drop out. A loss on Friday, June 12 began a horrendous stretch in which the club dropped 11 of 13 games. Despite falling to just three games over .500 they remained atop the division, but barely. With just a half-game lead, they once again turned things around.
From June 27 to the MLB All-Star Game break the Phillies went 11-4, hitting the break with their lead back up to four games. They didn't let up when play resumed, winning their first five. It kicked off a 10-2 run that pushed their record overall to 58-40 and stretched their division lead out to seven games.
Though the team would drop eight of the next 11 contests, Lee had arrived to inject some life – not to mention a stopper to the rotation. He got the win in two of the three victories during that rough stretch.
The rest of the way, those 2009 Phillies were never seriously challenged within the division. Charlie Manuel's squad clinched a third straight NL East crown with a 10-3 romp over the Houston Astros at Citizens Bank Park on September 30 and then coasted through the final four games.
In the NLDS the Phillies faced a real challenge from the Colorado Rockies but fought them off in four tough games. Then for a second straight season, the club overcame the Los Angeles Dodgers in the NLCS in five games.
For the first time in history the Phillies returned to the World Series for a second consecutive year. That is exactly what the Eagles will be trying to accomplish. It's a tough road. There were ups and downs along the way. But the Phillies had the best team in the NL, and they proved it over the course of the long season and two tough playoff series.
The 2018 Philadelphia Eagles look very similar. The Birds are again one of the strongest teams in football, but there will be challenges along the way. They will take some hard shots. They might even go into a losing stretch of games.
But given health from most of the key players, there is no reason that in the end their talent cannot take them back for a shot at a repeat. The Phillies had that shot and came up just short.
In that 2009 World Series the Phillies ran into a talented and experienced New York Yankees squad. They even handed the Yanks a 6-1 thrashing in the opener at Yankee Stadium.
But New York got a gutsy performance from A.J. Burnett in Game Two to even the series, then out-slugged the Phillies to take two of three at Citizens Bank Park. Up by three games to two, the Yankees put the series away with a convincing 7-3 victory in Game Six back in the Bronx.
Thinking back on it, that World Series defeat was disheartening. The Phillies were no longer the world champions. But they were still a strong ball club. They would get a couple more serious shots at another ring. Though they came up short, it was a magnificent run.
This is what looms ahead for these Philadelphia Eagles. They are the champions, but there are other talented teams out there. The Eagles look right now to be the best team in the NFC East. Get into the playoffs, have Carson Wentz and most of the supporting cast healthy, and anything can happen.
The 2009 Philadelphia Phillies showed that repeating as a champion is not an easy task, even for a supremely talented team. But just because those Phillies came up short doesn't mean this Eagles team will. It's about fighting through a long season and earning a shot in the playoffs.
That's all these Birds and the fans should be looking at right now. The game in front of them. The season ahead of them. Get that playoff spot and take a shot in January at the repeat. Fly Eagles, fly!
Originally published at Phillies Nation as "As Super Bowl champion Eagles open, 2009 Phillies can relate to difficulty repeating"
A.J. BurnettAntonio BastardoBrett MyersBurrellCharlie ManuelCliff LeeDoug PedersonEaglesJ.A. HappPedro MartinezPHILLIESRaul IbanezRodrigo LopezSPORTSSuper BowlWorld Series
Phillies have found it tough to win at Fenway Park in recent years
Fenway Park as it looked during the Red Sox 4-1 series victory over Phillies in 1915 World Series
Major League Baseball has been doing this Inter-league stuff in the regular season for just over two decades now. The Phillies and American League's Boston Red Sox will face off as a pair of first place teams over the next two nights at Fenway Park in Boston.
Fenway Park is particularly famous to opposing fans due to its huge left field wall. The "Green Monster" stands 37.2 feet tall and is just 310 feet from home plate. For the Phillies, it has been the stuff of nightmares.
The Phillies have visited Fenway Park on 10 separate occasions over the last 21 seasons prior to this one. Those visits have seen the two club square off in 28 regular season games in Boston. The Phillies have walked out a winner just nine times. That's a miserable .321 winning percentage.
Things weren't so bad in the early years of Inter-league play. The host Bosox swept the Phillies in the first-ever three game series at Fenway Park back in 1997.
But over the next seven seasons between 1998-2004, the Phillies captured six of the 11 games spanning four series. In one memorable game on June 9, 2001 the Phillies beat Boston's Hall of Fame ace Pedro Martinez 5-2 behind the pitching of Omar Daal.
However, since the Red Sox ended their "Curse of the Bambino" by winning the 2004 World Series, things have not been good for the Phillies. The Red Sox swept a three-game series between the two clubs in 2006 and have gone 11-2 against the Phillies under the backdrop of their Green Monster over the last five series between the teams in Boston.
A year ago, the Red Sox pulled off a pair of dramatic walkoff victories against the Phillies at Fenway. That gives Boston five straight victories over the Phillies at Fenway Park entering tonight's contest.
After losing three of four to the last-place Cincinnati Reds over this past weekend, the Phillies cannot afford to get swept in Boston. A loss tonight would make it four defeats in a row, something that the team has experienced just twice all season in pushing to the top of the NL East. They have yet to drop five in a row.
If the Phillies are going to come back home for their big Alumni Weekend still in first place, they are likely going to have to figure out a way to beat the Boston Red Sox in front of the Green Monster. That will be even tougher this year. Boston's record of 74-33 is the best in baseball.
Originally published at Phillies Nation as "Fenway's Green Monster has been the stuff of Phillies nightmares"
Boston Red SoxCurse of the BambinoFenway ParkOmar DaalPedro MartinezPHILLIES
Nationals / Expos All-Time 25-Man Roster
The Washington Nationals emerged for the 2005 season after the relocation of the original Montreal Expos franchise.
Major League Baseball expanded by four teams and split into a divisional format beginning in 1969.
The Kansas City Royals and Seattle Pilots (now the Milwaukee Brewers) went to the American League. The Expos and San Diego Padres were assigned to the National League.
The Montreal team was named after the successful World's Fair "Expo 67" held there in 1967 during the Canadian Centennial celebration.
After a decade of losing, a young core of players emerged in the late 1970's to turn the team into a contender for the first time. Then from 1979-94 the Expos were consistent winners.
There were 11 winning Expos campaigns and another two .500 seasons during that 16 year stretch. However, Montreal reached the MLB postseason only one time in its history.
EXPOS REACH THE POSTSEASON
A strike in 1981 caused Major League Baseball to split the season into two halves. The teams who finished in first place in each half would then advance to a best-of-five "League Division Series", a first for baseball.
The defending champion Philadelphia Phillies won the first half, and the Expos won the second half. Montreal then upended the Phils in a dramatic five-game NLDS to move within a step of the franchise' first World Series.
In the best-of-five NLCS, the Expos took a two games to one lead. The Dodgers tied it up, and the two clubs moved to a decisive Game Five. On a two-out home run by Rick Monday in the top of the 9th, the Dodgers won 2-1 to advance to the World Series.
THE STRIKE OF 1994
In 1993, the Expos re-emerged as a division power. However, the Phillies put together a magical worst-to-first season, holding Montreal off by three games to win the NL East crown.
The following year, the Expos entered the season as favorites, not only in the division, but also to win the World Series.
Montreal won 20 of 22 games beginning on July 18 to take the division lead. With a 74-40 record, the Expos led the Atlanta Braves by six games.
And then it all suddenly ended, not in defeat, but with the longest work stoppage in the history of Major League Baseball. A player strike began on August 12 and would last into the following year, cancelling the rest of the season, including the postseason.
GOODBYE, CANADA
The Expos franchise would never recover. They dropped to 5th place in 1995, recovered to win 88 games and finish in 2nd place in 1996, but then plummeted to five straight losing seasons.
An inability to get funding for a new ballpark led to rumors of a move constantly swirling, and then to MLB purchasing the club in 2002. Those relocation nightmares actually became a reality for Montreal baseball fans when the move to Washington was announced.
In their final year north of the border the club finished a dismal 67-95 and in last place. The first season in D.C. resulted in a .500 finish, but the losing continued with six straight seasons below the .500 mark.
Finally, the new Washington Nationals began to contend with a 98-64 record in 2012, winning the first division title in franchise history.
With a new group of young stars, the Nationals have now become perennial contenders in the National League. The 2016 season resulted in their third NL East crown in the last five years.
One thing continues to elude the franchise in Washington. The club remains one of eight current Major League Baseball teams to never have even reached the World Series.
NOT MAKING THE CUT
Selecting a 25-Man roster for the franchise was a difficult proposition. They have had an abundance of strong, interesting outfielders and first basemen in their history.
Aside from their obvious Hall of Famer, selecting a backup catcher was a tough chore. There are a handful of decent options.
There were a number of players who you won't find, but who contributed mightily to the history of the organization.
Included among these are shortstops Chris Speier, Orlando Cabrera and Tim Foli. Catchers Brian Schneider and Darrin Fletcher are not selected.
Outfielders Warren Cromartie, Rondell White, and Jayson Werth fell short. So did infielders Larry Parrish and Andres Galarraga. I opted for versatility and projection in the infield.
Since I forced myself to carry at least two relievers, getting down to the 7th-9th best starting pitchers leads to difficult decisions. That was again the situation here.
On the mound, not making the cut were arms such as Steve Renko, Bill Stoneman, Bill Gullickson, Scott Sanderson, Charlie Lea, Jeff Fassero, Chad Cordero, Ugueth Urbina, and John Wetteland.
So who did make the cut? The Nationals / Expos All-Time 25-Man Roster includes 11 pitchers (two true relievers), two catchers, six infielders, and six outfielders.
NEXT: ALL-TIME EXPOS / NATIONALS PITCHING STAFF
All-Time 25-Man RosterAndre DawsonBASEBALLBryce HarperGary CarterLarry WalkerMontreal ExposPedro MartinezRusty StaubRyan ZimmermanStephen StrasburgTim RainesWashington Nationals

redpajama_set_name: RedPajamaCommonCrawl


I need to find out if pregnancy hormones are making me into a looper... possible as I'm really struggling with this pregnancy.
So dear OH (other half) wanted to learn to drive last year and trying for a baby and I made it clear he needs to pass before I have the baby . early into this year I paid for all his lessons... he got to the point his instructor said you need to book your theory and do the test.
Next theory test on weekend is in late October (that's looking at three test centres) ... and obviously I think that's too late and he's still got to do the practical which he may also fail and not be able to take me to the hospital and bring the baby back. That and the car seat we get may not be compatible with someone else's car !!
I have suggested him taking holiday and then booking it on that day, and it was met with stones silence.
I know I'm being petty, but oh has known this is important to me and has been from th beginning and if I have a c section I'm gonna need him to drive for basic stuff (we live in a pretty rural area) and family aren't close by.
Oh also I'm the person who drives everywhere. I have tried talking about it and he just says I'm in a mood (which doesn't help the hormones) but also won't listen to why this is stressing me out or even talk about it bar saying late October will be fine.
He's not nervous about driving, he's lazy even his family have said that. I couldn't sleep last night I was so angry.
Help me I'm about to explode. Btw taxis don't take women in labour in our area and I'm sure friends would offer but it's not the point. He made a promise and I'm pretty chilled about everything else bar this.
I'm main driver have been for ages - and if he failed (and revised) I would be fine because he tried.
My rational head says it's fine get someone else to take you if required and the less rational side is telling me to set his clothes on fire 🔥... help !
I think you are a bit overreacting, and that is what probably puts your oh off. However he needs to get a grip and just pass his tests. October is not too late if he will manage to do his practical soon after the theory.
Tbh I'm a bit like him, I have my driving licence but I don't use it, my oh is the main driver and I avoid it as much as I can! In just not interested.
The mad thing about it is - he was the one who said he really wanted to learn but was worried about the cost so I paid as a Christmas present and said he said to learn for the baby. I'm not sure what's happened 😩. He loved the lessons and lives cars but just think he's bone idle.
I don't really like driving either tbh and that I thinks the issue really that it's expected I will drive everywhere and he takes it for granted. With a baby on the way it just makes my anxiousness worse.
I think it doesn't help that he's completely gone from yess this is great to meh. Can't help thinking it's linked to the baby.
I'd be raging! The fact that you had to pay for his lessons and book theory test for him... he's not a child.. he needs to step up and get a grip.. wtf!?!
For me driving is a life skill so as an adult, and more so as a parent it's more than useful.
I don't think you're being unreasonable at all. He sounds like he needs to grow up and accept some responsibility. From the sound of it he has had every opportunity to get this sorted, it's not asking too much for him to pull his weight with the driving, especially after the baby is born and when you go into labour. I would be furious if my partner was so unsupportive!
You are not over reacting. Why should you be paying for his lessons and organising his tests he should want to as it will improve his lifestyle and his baby's. Where I live driving is necessary rather than a want.
I wouldn't be happy if my husband wouldn't drive me to the hospital as we are keeping it a secret when I'm in labour as I don't want my mum on the phone every 5 mins asking.


When we talk about the world's most incredible workspaces, Google almost always tops the list. The Google offices are notorious for their well-designed, employee comfort focused spaces. Minds head straight to the Lego, free haircuts, bowling alleys and host of other playful perks that Google offices are renowned for.
The Google Zurich space was designed for the best worker experience. There are rooms to play various sporting activities at Google Zurich. There are even areas to sing or dance in. There is a massage therapy space and also a large fish tank where staff members can jump into a foam-filled bathroom and also relax. Their space has a sky lounge with great food and a terrific coffee center. It has an interior forest as well as a flick area. Meeting rooms have actually been transformed right into Gondolas.
The Google Japan office is recognized for their tech-savvy technique to both their job as well as their workplace. Embellished with strong patterns as well as exciting colors, the workplace is a standout. The whole style is far-out as well as develops an environment that is stimulating.
The New York-themed theme park of Google's Chelsea-based headquarters has hallways embellished with subway grates as well as fire hydrants, graffiti would certainly conference room doors, and chandeliers made of meat hooks, a nod to the nearby Meatpacking District. One conference room is set up like a tiny Seinfeldian New York apartment–think exposed brick, an electronic drum set, and awkward family photos on the wall.
Google's Amsterdam office designs also take inspiration from their location's cultural history and visual flavor, capturing the playfulness inherent in so much Dutch design. The ceiling panels are designed to look like stroopwafels–that quintessentially Dutch gooey waffle-cookie.
Google's Dublin office designs putting-green and authentic jungle decorating workspaces, and Google's Dr. Seussian Dublin campus is possibly the most playground-like in the whole family.
The office features Space-Age egg chairs, ivy and also flower-covered walls, shag carpets, a Lego room, a tube slide between floors, and a view of the Mediterranean sea from the rooftop deck.
The trifecta of Google offices in London range from a space station-like area that appears right out of a Stanley Kubrick motion picture to pleased kid funhouse to a decidedly homey anglophilic dreamhouse.
For more information, watch the video about 7 Inspiring Google Office Design Concept. Don't forget to like, share this video and also subscribe the channel.


Living out what happens when we center our lives in God.
CHRISTIAN STEWARDSHIP IS LIVING OUT WHAT HAPPENS WHEN WE CENTER OUR LIVES IN GOD.
IT IS WHAT WE DO WITH ALL THAT GOD HAS GIVEN TO US.
Shandon's ministries possible. Will you re-commit to Shandon through your prayers, presence, gifts, service and witness?
Each person truly makes a difference.
FIND OUT MORE ABOUT SHARING YOUR GIFTS.
How much should I give? What are the ways I can give?
Use this form to make your commitment to support Shandon's 2019 Stewardship Campaign. If you have any questions about a financial commitment, contact Nancy Probst at 256-8383, ext. 107 or nprobst@shandon-umc.org.


text:
Samsung Galaxy S9, S9+ Users Reporting Touch Screen Dead Zones
By Joel Hruska on March 23, 2018 at 3:39 pm
The Samsung Galaxy S9 has been hailed as having the best smartphone display available today. The phone's overall design and functionality is an evolutionary improvement over the S8, though its camera has been highly praised. One unwanted feature, however, is mucking things up for folks — the appearance of dead zones on the touch screen that don't respond to user input.
It's not clear why this problem is happening, but it's not isolated to any particular point on the device. Various users have reported dead zones at all points on the device, including some that have an entire horizontal stripe across the panel that doesn't work properly.
This video hows the problem in action and was created by Reddit user bobdurfob. He writes:
I think this might be a digitizer issue. I've had two S9+ with the same issue where a region of the screen will stop being responsive. For the first one I had it was the middle left of the screen. It would also spaz out and have phantom taps all over the screen for a second or two. For the replacement one I have it's the bottom third left side. It's infuriating. Here I'm trying to just trace my finger in an up to down motion on the screen. You can see it stutter on the bottom third.
Samsung's new phone has only been on sale for a week. The company is aware of the issues and has stated: "We are looking into a limited number of reports of Galaxy S9/S9+ touchscreen responsiveness issues. We are working with affected customers and investigating."
Some customers have reported that a factory reset can be helpful or that turning up the touch-screen sensitivity can resolve the issue, but we'd shy away from either fix. If Samsung sold you a phone that doesn't work perfectly out of the box, and the issue isn't a matter of personal preference or a setting that the company has changed to a new default behavior that you want to switch, don't keep the product. We've already seen how touch-screen mistakes can come back to bite people — Apple's "Touch Disease" destroyed iPhone 6 handsets because the company removed components from its smartphone design, leading to long-term failure. Hardware that arrives failing out of the box shouldn't be tolerated, regardless of whether the fault was in the software image or the underlying hardware.
Hopefully Samsung we'll resolve the problem before it becomes a major concern. At least the company can take comfort in the fact that these devices don't literally ignite and catch fire. Touch-screen failures are annoying, but they don't burn down anyone's house.
touch disease


Ms. Sussman was born and raised in Jacksonville, Florida. She received undergraduate degrees in Psychology and Sociology from the University of Georgia in 2002 and a Masters Degree in Counseling Psychology from the University of North Florida in 2004.
Ms. Sussman then received her Juris Doctorate with honors in 2007 from Florida Coastal School of Law. She graduated with a Family Law Certificate. While at Florida Coastal she was an active member of the Mock Trial team, competing in multiple national competitions. She was also a staff editor for the Florida Coastal Law Review and served as a teaching and research assistant for multiple professors. She also worked as a law clerk for a family law firm in Jacksonville.
Ms. Sussman has been a member of the Florida Bar since 2007. She began her career with a family law firm in Naples, Florida and returned to Jacksonville to work with the firm in 2010. She became a shareholder in 2014. She is a member of the Family Law Section of the Florida Bar, the Jacksonville Bar Association, and the Young Lawyers Sections of both the Florida Bar and the Jacksonville Bar Association. She currently serves on the executive committee of the Florida Family Law Inn of Court.
Ms. Sussman authored two articles for the Florida Bar Journal, "Appellate Court Trends in Permanent Alimony for "Gray Area" Divorces: 1997 – 2007" in April 2008 and "Appellate Court Trends in Rehabilitative Alimony: 10 Years Later" in October 2008. She has also prepared presentations on various family law matters for the Collier County Bar Association and the Florida Family Law Inn of Court. She was named a rising star by Florida Super Lawyers in 2010.
Ms. Sussman handles all levels of family cases involving everything from child custody and timesharing to complex financial matters. When necessary, she works closely with other professionals, such as accountants, financial advisors, appraisers, business valuators, psychologists and other medical professionals, to ensure that all issues are comprehensively addressed. While she seeks to resolve all of her cases through mediation, she is also experienced in bringing cases to trial. Ms. Sussman also prepares prenuptial agreements, postnuptial agreements, and handles appeals of family law matters.


text:
Kama Darreh (, also Romanized as Kamā Darreh and Komā Darreh; also known as Kūmeh Darreh) is a village in Howli Rural District, in the Central District of Paveh County, Kermanshah Province, Iran. At the 2006 census, its population was 95, in 23 families.

References

Populated places in Paveh County

redpajama_set_name: RedPajamaWikipedia


Toronto-developed wellness game #SelfCare has amassed over 527,000 downloads since launching seven weeks ago on iOS.
In the weeks since release, #SelfCare has placed 27th in Canada's top 50 games list on the App Store. The game has also since come to Android.
The game was developed by Tru Luv, a new studio co-founded by former Ubisoft Montreal developer Brie Code and Montreal artist and magazine editor Eve Thomas.
Tru Luv's goal with #SelfCare was to create an experience that is game-like, although also not quite a game at the same time. In #SelfCare, players assume the role of a character who is spending the day relaxing in bed.
Unlike most games, #SelfCare doesn't give the player a specific goal to work towards. Instead, the game emphasizes the importance of self-care through various simple mini-games, like breathing exercises or folding laundry. Players can take on these activities in any order and for as long as they want.
Code told PocketIndustry.biz that the game is three months ahead of where Tru Luv expected it to be, so the team is currently taking some time to listen to feedback and plan ahead. Going forward, Code says Tru Luv will work the Games for Emotional and Mental Health (GEHM) lab to add new relaxation tools to #SelfCare.


Order a certified copy of a Macomb County business registration online by following the steps below. The cost is $15 for the first copy, and $5 for each additional copy of the same record after that. Online orders typically take one to two business days to process and mail out (you should receive your record 5 to 10 business days after ordering if you choose free standard shipping). There is no additional fee for using the Macomb County Clerk online order service. Business registrations are public records and you need not show identification in order to purchase a certified copy.


text:
Hundreds of homes still without gas after burst water main caused havoc in Nantyglo area
Wales and West Utilities have been working through the night to restore services
Work is ongoing to restore gas supplies, interrupted by a burst water main, to almost 800 properties in the Nantyglo area in Blaenau Gwent.
A total of 19 streets have been affected in the village and work to fix the problem could take several days to complete.
Engineers from Wales and West Utilities had to visit every property affected to make sure the gas was off before work began.
Abertillery and Ebbw Vale Sports Centres have since opened their doors for washing and shower facilities for those who need them.
A Wales and West Utilities spokesman said: "We have been working to restore the gas supply to approximately 755 properties in the Nantyglo area, which has been interrupted by water from a burst water main in Waun Heulog getting into our gas pipe.
"Our engineers have visited every property affected to make sure the gas supply is turned off, and are now working to remove the water from the gas pipe.
"Once this is completed we will be visiting each property again to safely turn their gas supplies back on.
"We are working round the clock to resolve this issue. We are as yet unable to give an exact time when gas supplies will be restored. This is a complex operation that may take several days to complete.
"Gas supplies will not all be restored at the same time, but we will keep people updated as to how we are progressing with this."
According to a spokesman, about 50 engineers are working to fix the problem. Initially it was reported the number of homes affected was 500. That number has increased following a recount but Wales and West Utilities have said the problem is not spreading.
Nantyglo councillor John Mason has no central heating and cannot use his gas cooker as a result of the disrupted supply. He does have hot water though thanks to an immersion heater. Electrical fans have been brought in for warmth.
He said the housing association Tai Calon have made arrangements to use the Winchestown Pensioners' Hall as a focal point for people to ask questions.
Wales and West Utilities said it has distributed 85 fan heaters and 82 hot plates for warming food to vulnerable customers.
Anyone who needs assistance should call its customer services team on 0800 912 2999.
Abertillery Sports Centre is open from 7am to 5pm on Saturday and from 8.30am to 5pm on Sunday. It will be closed on bank holiday Monday.
In Ebbw Vale, the sports centre is open from 8am to 4pm on Saturday, 8am to 8pm on Sunday and 8am to 4pm on bank holiday Monday.


text:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace WinLess.Models
{
    public class Directory
    {
        #region Constructor

        private Directory()
        {
        }

        public Directory(string path)
        {
            FullPath = path;
            LoadFiles();
        }

        #endregion

        #region Properties

        private string fullPath;
        public string FullPath
        {
            get
            {
                return fullPath;
            }
            set {
                DirectoryInfo directoryInfo = new DirectoryInfo(value);
                if(directoryInfo.Exists){
                    fullPath = directoryInfo.FullName;
                }
            }
        }

        public List<Models.File> Files
        {
            get;
            set;
        }

        #endregion

        #region Public Methods

        public void LoadFiles()
        {
            Files = new List<Models.File>();
            this.Refresh();
        }

        public void Refresh()
        {
            List<File> removedFiles = new List<File>();
            foreach (File file in Files)
            {
                if (!System.IO.File.Exists(file.FullPath))
                {
                    removedFiles.Add(file);
                }
            }
            foreach (File file in removedFiles)
            {
                Files.Remove(file);
            }

            AddFiles(new DirectoryInfo(this.FullPath));
        }

        public bool ContainsFile(string fullPath)
        {
            bool result = false;
            foreach (File file in Files)
            {
                if (string.Compare(file.FullPath, fullPath, StringComparison.InvariantCultureIgnoreCase) == 0)
                {
                    result = true;
                    break;
                }
            }
            return result;
        }

        public override string ToString()
        {
            return FullPath;
        }

        #endregion

        #region Private Methods

        private void AddFiles(DirectoryInfo directoryInfo)
        {
            try
            {
                FileInfo[] files = directoryInfo.GetFiles();
                foreach (FileInfo file in files)
                {
                    if ((string.Compare(file.Extension, ".less", StringComparison.InvariantCultureIgnoreCase) == 0 ||
                        (string.Compare(file.Extension, ".css", StringComparison.InvariantCultureIgnoreCase) == 0) && file.Name.Contains(".less")
                       ) && !this.ContainsFile(file.FullName))
                    {
                        Files.Add(new Models.File(this, file.FullName));
                    }
                }

                DirectoryInfo[] subDirectories = directoryInfo.GetDirectories();
                foreach (DirectoryInfo subDirectoryInfo in subDirectories)
                {
                    AddFiles(subDirectoryInfo);
                }
            }
            catch{}
        }

        #endregion
    }
}

redpajama_set_name: RedPajamaGithub


text:
Steps to Just Start
EPIC-N has lots of experience helping programs get started. Over the years, EPIC-N has found the following tasks help programs 'Just Start'. Follow these suggested tasks in any order you see fit, but finding someone to be your EPIC-N champion is the best place to start.
Find a champion
The EPIC Model relies on many moving parts to succeed. It is best to try and find one stakeholder with enough institutional power and resources to champion the program. In the beginning, this individual may be more involved in the day-to-day operations until a "program manager" is identified. Once identified have the champion:
Identify what they can provide to support the start of the program
Visit the EPIC-N website to learn more about other EPIC-N programs
Complete this form connecting them to:
EPIC-N's newsletter mailing list
A listserv for those trying to start EPIC programs in other communities
EPIC-N support staff
Find someone to run the program
In some cases, this can be the same person as the champion. In most cases, this is someone with either current priorities and/or availability to manage the day-to-day operations of the program as they increase. Once identified have this person:
Find faculty
The EPIC Model relies on faculty buy-in to succeed. Having a faculty member willing to advocate for the adoption of the model can help win over other faculty. Follow these suggestions to help generate a list of interested faculty.
Make a list of faculty already interested in supporting the program
Add to the list faculty already engaging community partners in their course work
Ask the program champion to send an email to all faculty on campus
Use the template language found in the resource library for composition
In the email, link the a survey to gauge interest
Add names of interested faculty to the list
Use the newly generated list of faculty to schedule one-on-one or small group meetings to learn about their priorities and interest in having a future course participate in the future program
Find your first community partner
The EPIC Model relies on community buy-in to succeed. Choosing the first partner can set up the program for future success.
Make a list of potential community partners for the first year of the program
Ask the program champion to send an email to nearby community members
Choose a community partner willing to be a positive supporter and advocate for the program even in the trial year.
Find seed money for the program
EPIC-N programs are funded in many different ways. Successful programs usually receive university seed funding leading to a successful trial year. After the trial year programs are usually able to use their positive outcomes to win over community funding from future partners to replace their seed funding. However, all EPIC programs have different funding models.
Become an EPIC-N member
EPIC-N staff build and collect valuable resources to save programs countless time and help programs find money as they build out their programs. Purchasing an EPIC-N membership gives new programs access to resources, promotional materials, the new online learning commons, TA support (in years past this support has led to investment from other sources), and the EPIC-N listserv. Visit this resource to learn more about becoming a member.
Request a site visit from an EPIC-N trainer
Sometimes those interested in starting a program hit roadblocks. Sometimes these barriers to 'Just Start' are social, political, and/or financial in nature. Hosting an EPIC-N trainer for a two-day site visit to your university and/or the surrounding community can build university support from the President to the student level. Trainers come prepared to speak to any level, (deans, faculty, and future program coordinators to win support for your program). Site visits can also include meetings with potential community partners to help explain the model and work through how to be effective partners. Site visits frequently lead to significant program revenue in the first year (e.g. $150,000 by the University of California, Irvine).
Email info@epicn.org about your interest in a site visit to receive more information.
Readme – Start a ProgramReadme – EPIC-N Resources


The book draws together the economic literature relating to the supply of land for development. The standard view appears to be that the owners of land have no interest other than to allow their land to be used for the activity which would yield the highest income. But in reality this is not so and the book's aim is to demonstrate this, to set out the reasons and to show the economic effects of the fact that landowners have other motives.
The book covers the supply of land for urban development and shows how land has characteristics which differentiate it from other factors of production which will also affect its supply for some uses, e.g. land is fixed in location and its price and value are inseparable from where it is.
New light is cast on the market for land (by concentrating on the supply side), and on land use planning (by taking an economic viewpoint).
Chapter 1: Introduction: The Market for Land and Property.
The development of a theory of the supply of land.
Chapter 2: Land Values, Rents and Demand.
Planning controls and rent theory.
Chapter 3: Coping with Changes in Demand.
Capital longevity and the asymmetry of change.
The process of change in the housing market.
Chapter 4: How Efficient is the Property Market?.
The economic concept of efficiency.
Chapter 5: Market Inefficiency: Causes and Consequences.
Why the property market is imperfect and inefficient.
Price determination and the theory of the core.
Chapter 6: The Supply of Land for a Particular Use: Speculation and Uncertainty.
Chapter 7: The Supply of Land for a Particular Use: Occupier Performances and Residential Attachment.
Chapter 8: The Ownership of Land.
Tenants, owner occupiers, and the supply of land.
Chapter 9: Land Ownership, Politics and Society.
Society and the ownership of land.
Alternative forms of ownership and tenancy.
Chapter 10: Ownership and Control: Monopoly.
Monopoly rents and wine production.
Monopoly rents and shopping centres.
Chapter 11: Ownership and Control: Minimum Rents.
Minimum rents in an urban environment.
Chapter 12: Information, Uncertainty and the Property Market.
Modelling the search for information.
Searching for housing in practice.
The developer and land supply restriction.
Chapter 13: Land Availability and Land Banking.
Land banking by private firms.
Chapter 14: Contiguity: Site Assembly.
Chapter 15: Contiguity: Compulsory Purchase and the Scale of Development.
Compulsory purchase and the speed of acquisition.
Scale economies, acquisition costs, and history.
Chapter 16: Contiguity: Land Reallocation and the Price of Land.
Size of site and the price of land.
Chapter 17: The Taxation of Land and Development Gains.
Economic theory and taxes on development.
Land taxation in recent British history.
Chapter 18: Annual Taxation and the Nationalisation of Land.
Property taxes and the rates.
Chapter 19: Themes and Changes in Perception.
Excellent in the way it brings together in a coherent whole, various approaches to the analysis of the supply of land for development. The issues covered are pertinent for both practitioners and academics in providing a useful theoretical framework based on sound economics. The book is well written and enjoyable to read.
Journal of Property Investment and Finance, September 2005.


text:
#include "tensorflow/compiler/xla/service/while_util.h"

#include <memory>

#include "absl/algorithm/container.h"
#include "absl/container/flat_hash_map.h"
#include "absl/container/inlined_vector.h"
#include "absl/strings/str_cat.h"
#include "tensorflow/compiler/xla/hlo/ir/hlo_computation.h"
#include "tensorflow/compiler/xla/hlo/ir/hlo_instruction.h"
#include "tensorflow/compiler/xla/literal_util.h"
#include "tensorflow/compiler/xla/service/hlo_creation_utils.h"
#include "tensorflow/compiler/xla/service/tuple_util.h"

namespace xla {

using absl::StrCat;

static StatusOr<HloComputation*> WidenWhileCondition(
    HloComputation* narrow_condition, const Shape& wide_shape) {
  const Shape& narrow_shape =
      narrow_condition->parameter_instruction(0)->shape();

  HloComputation* wide_while_cond = [&]() {
    HloComputation::Builder builder(StrCat("wide.", narrow_condition->name()));
    builder.AddInstruction(
        HloInstruction::CreateParameter(0, wide_shape, "wide_param"));

    // This is needed so that the root instruction is shaped as a PRED[] -- we
    // need to get this right to begin with since we can't mutate the type of
    // the root instruction later.  We later change the root instruction to
    // something more appropriate.
    builder.AddInstruction(
        HloInstruction::CreateConstant(LiteralUtil::CreateR0<bool>(false)));
    return narrow_condition->parent()->AddEmbeddedComputation(builder.Build());
  }();

  HloInstruction* truncated_parameter =
      TupleUtil::ExtractPrefix(wide_while_cond->parameter_instruction(0),
                               narrow_shape.tuple_shapes_size());
  HloInstruction* call_narrow_cond = wide_while_cond->AddInstruction(
      HloInstruction::CreateCall(ShapeUtil::MakeShape(PRED, {}),
                                 {truncated_parameter}, narrow_condition));

  wide_while_cond->set_root_instruction(call_narrow_cond);

  TF_RETURN_IF_ERROR(CallInliner::Inline(call_narrow_cond).status());
  return wide_while_cond;
}

static StatusOr<std::pair<HloComputation*, CallInliner::InlinedInstructionMap>>
WidenWhileBody(HloComputation* narrow_body, const Shape& wide_shape) {
  const Shape& narrow_shape = narrow_body->parameter_instruction(0)->shape();

  HloComputation* wide_while_body = [&]() {
    HloComputation::Builder builder(StrCat("wide.", narrow_body->name()));
    builder.AddInstruction(
        HloInstruction::CreateParameter(0, wide_shape, "wide_param"));
    return narrow_body->parent()->AddEmbeddedComputation(builder.Build());
  }();

  HloInstruction* wide_parameter = wide_while_body->parameter_instruction(0);
  HloInstruction* truncated_parameter = TupleUtil::ExtractPrefix(
      wide_parameter, narrow_shape.tuple_shapes_size());
  HloInstruction* call_narrow_body =
      wide_while_body->AddInstruction(HloInstruction::CreateCall(
          narrow_shape, {truncated_parameter}, narrow_body));

  std::vector<HloInstruction*> live_through_values;
  for (int i = narrow_shape.tuple_shapes_size();
       i < wide_shape.tuple_shapes_size(); i++) {
    live_through_values.push_back(
        wide_while_body->AddInstruction(HloInstruction::CreateGetTupleElement(
            wide_shape.tuple_shapes(i), wide_parameter, i)));
  }

  wide_while_body->set_root_instruction(
      TupleUtil::AppendSuffix(call_narrow_body, live_through_values));

  TF_ASSIGN_OR_RETURN(auto inlined_instructions_map,
                      CallInliner::Inline(call_narrow_body));
  return {{wide_while_body, std::move(inlined_instructions_map)}};
}

/*static*/ StatusOr<WhileUtil::MakeInstructionsLiveInResult>
WhileUtil::MakeInstructionsLiveIn(
    HloInstruction* while_instr,
    absl::Span<HloInstruction* const> instructions) {
  CHECK(while_instr->shape().IsTuple());

  int elements_in_old_while_shape = while_instr->shape().tuple_shapes_size();
  Shape new_while_shape = while_instr->shape();
  for (auto* instruction : instructions) {
    *new_while_shape.add_tuple_shapes() = instruction->shape();
  }

  TF_ASSIGN_OR_RETURN(
      HloComputation * new_while_condition,
      WidenWhileCondition(while_instr->while_condition(), new_while_shape));

  HloComputation* new_while_body;
  CallInliner::InlinedInstructionMap inlined_instructions_map;
  TF_ASSIGN_OR_RETURN(
      std::tie(new_while_body, inlined_instructions_map),
      WidenWhileBody(while_instr->while_body(), new_while_shape));

  HloInstruction* new_while_init =
      TupleUtil::AppendSuffix(while_instr->mutable_operand(0), instructions);
  HloComputation* containing_computation = while_instr->parent();
  HloInstruction* new_while = containing_computation->AddInstruction(
      HloInstruction::CreateWhile(new_while_shape, new_while_condition,
                                  new_while_body, new_while_init));

  // We want to get rid of the old while instruction even if it has side
  // effecting operations so we do a manual HloComputation::RemoveInstruction
  // instead of relying on HloComputation::ReplaceInstruction.
  HloInstruction* replacement_instr = TupleUtil::ExtractPrefix(
      new_while, while_instr->shape().tuple_shapes_size());
  TF_RETURN_IF_ERROR(while_instr->ReplaceAllUsesWith(replacement_instr));
  TF_RETURN_IF_ERROR(containing_computation->RemoveInstruction(while_instr));

  HloInstruction* while_body_param = new_while_body->parameter_instruction(0);
  std::vector<HloInstruction*> live_in_instructions;
  for (int64_t i = elements_in_old_while_shape;
       i < new_while_shape.tuple_shapes_size(); i++) {
    live_in_instructions.push_back(
        new_while_body->AddInstruction(HloInstruction::CreateGetTupleElement(
            instructions[i - elements_in_old_while_shape]->shape(),
            while_body_param, i)));
  }

  WhileUtil::MakeInstructionsLiveInResult result;

  result.new_while_instr = new_while;
  result.replacement_instr = replacement_instr;
  result.while_body_live_in_values = std::move(live_in_instructions);
  result.while_body_instruction_map = std::move(inlined_instructions_map);

  return std::move(result);
}

static StatusOr<std::unique_ptr<HloComputation>>
MakeCountedLoopConditionComputation(const Shape& loop_state_shape,
                                    int32_t trip_count) {
  Shape scalar_pred = ShapeUtil::MakeShape(PRED, {});

  TF_ASSIGN_OR_RETURN(std::unique_ptr<HloComputation> cond_computation,
                      CreateComputationWithSignature(
                          {&loop_state_shape}, scalar_pred, "while_cond"));

  HloInstruction* trip_count_constant =
      cond_computation->AddInstruction(HloInstruction::CreateConstant(
          LiteralUtil::CreateR0<int32_t>(trip_count)));

  HloInstruction* param = cond_computation->parameter_instruction(0);
  TF_ASSIGN_OR_RETURN(HloInstruction * indvar,
                      MakeGetTupleElementHlo(param, 0));

  TF_ASSIGN_OR_RETURN(
      HloInstruction * compare,
      MakeCompareHlo(ComparisonDirection::kLt, indvar, trip_count_constant));
  cond_computation->set_root_instruction(compare);
  return std::move(cond_computation);
}

static StatusOr<std::unique_ptr<HloComputation>> MakeCountedLoopBodyComputation(
    const Shape& loop_state_shape,
    absl::FunctionRef<StatusOr<WhileUtil::LoopStateTy>(
        HloInstruction*, const WhileUtil::LoopStateTy&)>
        loop_body_generator) {
  TF_ASSIGN_OR_RETURN(std::unique_ptr<HloComputation> body_computation,
                      CreateComputationWithSignature(
                          {&loop_state_shape}, loop_state_shape, "while_body"));
  HloInstruction* one = body_computation->AddInstruction(
      HloInstruction::CreateConstant(LiteralUtil::CreateR0<int32_t>(1)));
  HloInstruction* param = body_computation->parameter_instruction(0);
  TF_ASSIGN_OR_RETURN(HloInstruction * indvar,
                      MakeGetTupleElementHlo(param, 0));
  TF_ASSIGN_OR_RETURN(HloInstruction * next_indvar,
                      MakeBinaryHlo(HloOpcode::kAdd, indvar, one));

  std::vector<HloInstruction*> loop_body_generator_args;
  for (int i = 1, e = loop_state_shape.tuple_shapes_size(); i < e; i++) {
    TF_ASSIGN_OR_RETURN(HloInstruction * tuple_element,
                        MakeGetTupleElementHlo(param, i));
    loop_body_generator_args.push_back(tuple_element);
  }
  TF_ASSIGN_OR_RETURN(std::vector<HloInstruction*> next_state,
                      loop_body_generator(indvar, loop_body_generator_args));
  next_state.insert(next_state.begin(), next_indvar);
  HloInstruction* next_state_tuple =
      body_computation->AddInstruction(HloInstruction::CreateTuple(next_state));
  body_computation->set_root_instruction(next_state_tuple);

  return std::move(body_computation);
}

static std::pair<std::unique_ptr<HloInstruction>,
                 std::unique_ptr<HloInstruction>>
MakeInitTupleFromInitValues(const WhileUtil::LoopStateTy& init_values) {
  std::vector<HloInstruction*> init_values_with_indvar;
  init_values_with_indvar.reserve(init_values.size() + 1);
  std::unique_ptr<HloInstruction> zero =
      HloInstruction::CreateConstant(LiteralUtil::CreateR0<int32_t>(0));
  init_values_with_indvar.push_back(zero.get());
  absl::c_copy(init_values, std::back_inserter(init_values_with_indvar));
  return std::make_pair(std::move(zero),
                        HloInstruction::CreateTuple(init_values_with_indvar));
}

// Returns a tuple shape containing a S32, and a shape from each value in
// `init_values`. If a shape from a value in `init_values` doesn't have a
// layout, use a default layout for the shape.
static Shape MakeLoopStateShapeWithLayout(
    const WhileUtil::LoopStateTy& init_values) {
  std::vector<Shape> loop_state_shape_components;
  loop_state_shape_components.reserve(init_values.size() + 1);
  loop_state_shape_components.push_back(ShapeUtil::MakeShape(S32, {}));
  absl::c_transform(init_values,
                    std::back_inserter(loop_state_shape_components),
                    [](HloInstruction* instr) {
                      Shape shape = instr->shape();
                      if (!shape.has_layout()) {
                        LayoutUtil::SetToDefaultLayout(&shape);
                      }
                      return shape;
                    });
  return ShapeUtil::MakeTupleShape(loop_state_shape_components);
}

/*static*/ StatusOr<WhileUtil::OwningLoopStateTy> WhileUtil::MakeCountedLoop(
    HloModule* module, int32_t trip_count,
    const WhileUtil::LoopStateTy& init_values,
    WhileUtil::LoopBodyGeneratorTy loop_body_generator,
    const OpMetadata& metadata) {
  CHECK_GE(trip_count, 0);

  // Both MakeCountedLoopConditionComputation and MakeCountedLoopBodyComputation
  // use loop_state_shape to create a literal, which requires loop_state_shape
  // to have a layout.
  Shape loop_state_shape = MakeLoopStateShapeWithLayout(init_values);
  TF_ASSIGN_OR_RETURN(
      std::unique_ptr<HloComputation> cond,
      MakeCountedLoopConditionComputation(loop_state_shape, trip_count));
  TF_ASSIGN_OR_RETURN(
      std::unique_ptr<HloComputation> body,
      MakeCountedLoopBodyComputation(loop_state_shape, loop_body_generator));
  std::unique_ptr<HloInstruction> owned_indvar;
  std::unique_ptr<HloInstruction> owned_init_tuple;
  std::tie(owned_indvar, owned_init_tuple) =
      MakeInitTupleFromInitValues(init_values);
  std::unique_ptr<HloInstruction> owned_while = HloInstruction::CreateWhile(
      loop_state_shape, module->AddEmbeddedComputation(std::move(cond)),
      module->AddEmbeddedComputation(std::move(body)), owned_init_tuple.get());
  owned_while->set_metadata(metadata);
  HloInstruction* while_instr = owned_while.get();

  std::vector<std::unique_ptr<HloInstruction>> owned;
  owned.push_back(std::move(owned_indvar));
  owned.push_back(std::move(owned_init_tuple));
  owned.push_back(std::move(owned_while));
  std::vector<HloInstruction*> while_results;
  for (int64_t i = 0, e = init_values.size(); i < e; i++) {
    std::unique_ptr<HloInstruction> user_state =
        HloInstruction::CreateGetTupleElement(init_values[i]->shape(),
                                              while_instr, i + 1);
    while_results.push_back(user_state.get());
    owned.push_back(std::move(user_state));
  }
  return WhileUtil::OwningLoopStateTy{std::move(owned), while_results};
}

/*static*/ StatusOr<WhileUtil::LoopStateTy> WhileUtil::MakeCountedLoop(
    HloComputation* computation, int32_t trip_count,
    const WhileUtil::LoopStateTy& init_values,
    WhileUtil::LoopBodyGeneratorTy loop_body_generator,
    const OpMetadata& metadata) {
  TF_ASSIGN_OR_RETURN(
      auto owning_loop_state,
      MakeCountedLoop(computation->parent(), trip_count, init_values,
                      loop_body_generator, metadata));
  for (auto& instruction_to_add : owning_loop_state.instructions_to_add) {
    computation->AddInstruction(std::move(instruction_to_add));
  }
  return owning_loop_state.while_results;
}

/*static*/ std::vector<HloInstruction*> WhileUtil::GetInvariantGTEsForWhileBody(
    const HloComputation& while_body) {
  std::vector<HloInstruction*> result;
  const HloInstruction::InstructionVector root_operands =
      while_body.root_instruction()->operands();
  for (int i = 0; i < root_operands.size(); i++) {
    HloInstruction* instr = root_operands[i];
    if (instr->opcode() == HloOpcode::kGetTupleElement &&
        instr->tuple_index() == i &&
        instr->operand(0) == while_body.parameter_instruction(0)) {
      result.push_back(instr);
    }
  }
  return result;
}

/*static*/ absl::flat_hash_map<int64_t, absl::InlinedVector<HloInstruction*, 1>>
WhileUtil::GetGTEsMapForWhileConditional(
    const HloComputation& while_conditional) {
  absl::flat_hash_map<int64_t, absl::InlinedVector<HloInstruction*, 1>> result;
  for (HloInstruction* user :
       while_conditional.parameter_instruction(0)->users()) {
    if (user->opcode() == HloOpcode::kGetTupleElement) {
      result[user->tuple_index()].push_back(user);
    }
  }
  return result;
}

}  // namespace xla