The writers fight off boredom when they are forced to work after hours. Roger hosts a party while Joan and Greg host a party of their own. Sally has a run in with Grandpa.
Changes at Sterling Cooper affect Pete and Ken. Don and Sal go on a business trip.
(Season Finale.) Sterling Cooper is in play and the office scrambles without Don. Betty learns some disconcerting news.
Freddy Rumsen disappoints his team during a pitch. Pete finds an opportunity at the office to exploit while Don proves his loyalty to an old friend. Betty finds a welcome distraction in Sara Beth.
Peggy contributes on a pro-bono project. Duck and Don try to create market appeal to a new demographic. Harry is overwhelmed with the workload in his department and recruits assistance from an unlikely source.
Don and Duck take a stab at making peace. Peggy tries to insinuate herself into the execs' after-hours meetings. Duck deals with a family visit at the office.
Season 1 finale. As Thanksgiving approaches, Don's work responsibilities interfere with his domestic life. Peggy is given a new opportunity, provoking the ire of some of her colleagues. Betty makes a startling discovery.
On election night, the Sterling Cooper staff pulls a rowdy all-nighter while watching the returns. Pete's ambitions cause him to directly challenge Don.
Peggy is given a difficult assignment. Roger's work problems provide new opportunities for Don, and Pete grows more frustrated. Betty finds a new outlet for her growing dissatisfaction.
A rival ad agency courts Don, involving Betty in their attempt to lure him from Sterling Cooper. As the presidential campaign heats up, the agency looks for new ways to counter the latest Kennedy ads. Tempers flare over Peggy.
Don is tormented as pieces of his secretive past begin to haunt him. Peggy's new success at work and resulting boost in confidence threaten her office relationship. Salvatore gets a little too close with a client.
Roger joins Don for an evening of dinner and drinking, during which Roger's behaviour leads to a rift in their relationship. Pete faces trouble at home as he struggles with his new marriage.
A taboo office romance is revealed. At a brainstorming session, Peggy proves to be more than a secretary, opening up new opportunities for her at Sterling Cooper. Meanwhile, Rachel faces her conflicted feelings for Don after he seeks out her advice on a new campaign.
Don must deal with the fallout as a photo brings back a past he isn't ready to confront. Ken incites jealousy among his colleagues and drives Pete to make an unorthodox request of his wife. Peggy overhears a startling conversation in the office and shares the secret with Joan.
Pete returns from his honeymoon. After his business relationship with Rachel takes an unforeseen turn, Don attends a party which further illuminates his increasing dissatisfaction with his present life.


Dianor are experts at material PCD (Polycrystalline Diamond), a superior material regarding resistance and low friction.
Poly-Crystalline-Diamond (PCD) is, next to Solid Diamond, the hardest material known to man. An extremely low friction makes PCD the ideal material for support– and reference-parts submitted to wear. PCD-wear parts, when possible to use, offers outstanding performance: Extreme tool-life gives good tool economy.
An extremely low friction makes PCD the ideal material for support– and reference-parts submitted to wear. PCD-wear parts, when possible to use, offers outstanding performance: Extreme tool-life gives good tool economy.
Poly-Crystalline-Diamond (PCD) is, next to Solid Diamond, the hardest material known to man.
Details PCD ( Polycrystalline diamond ) is attached to the tool.
We also provide you with Support and reference details in Solid Carbide. Read more about Support and reference details in Solid Carbide.
Tool cost a tool not worn last longer and, despite that the initial cost can be higher than the corresponding detail in e.g. tungsten carbide, refurbished again to reduce costs.
Set-up and adjustment costs Reduced set-up and adjustment costs by the tool lasting longer, not needing replacement as often. This will reduce setup times. Because the wear usually is non-existent, it is fewer parameters in the operation to keep track to set up process. Just the time savings during set-up can often provide significantly greater savings than those made from tooling cost.
Quality costs An absolute reference provides constant conditions in the operation. The spread of measurements becomes less in addition to roundness etc. often gets better. This means that the control and error costs can be reduced.
Quality improvements A smaller spread of measurements eg. better roundness gives a higher quality of the final product, which provides a competitive advantage. The ability to use closer tolerances can sometimes be used in the construction or to simplify subsequent operations or assembling.


(Philadelphia, Pa. – September 2, 2016) – The six Philadelphia Gas Works (PGW) Customer Service Centers will be closed on Monday, September 5, 2016, in observance of Labor Day. The PGW Residential Call Center and Commercial Resource Center will also be closed.
At any time, all gas leaks or gas-related emergencies should be immediately reported by calling 215-235-1212.
The PGW Customer Service, Commercial Resource and Residential Call Centers will resume normal business hours on Tuesday, September 6, 2016, except as indicated below*. Normal business hours for the Customer Service Centers are from 9 a.m. to 5 p.m. weekdays (see schedule below).
Normal hours for the PGW Residential Call Center are between 8 a.m. and 6 p.m. The PGW Commercial Resource Center operates between 8 a.m. and 4:30 p.m.
Customers may check their bills, make bill payments or obtain other information at www.pgworks.com.


Go to school. Study hard. Get Certified.
Have you ever lay awake in bed at night and asked yourself the question: if the undead arise tomorrow, am I ready?
Will you know what to do when they burst through the door of your hard-earned HDB flat and want to eat your flesh?
Never fear, for there is a solution that will appeal to the Singaporean in you: go to school, study hard and get certified.
Zombie Survival School believes in hands-on learning; all participants will even be given the chance to test their skills against 'zombies'.
To graduate, participants must pass all required modules and earn 80 academic credits.
Zombie Survival School boasts a 100 per cent passing rate*. It is your best bet for staying alive when the inevitable happens and the zombie horde knocks at your door.
1. Zombie apocalypse: Can survive one!
Details: Module, pricing and sign up info here.
Enroll: Please join our mailing list to be updated when enrollment is open.
Connect with us, and Daryl Dixon will be sent to inform you of our upcoming modules.
Register your interest , and we will send a crash dummy * to inform you when enrollment starts.


text:
Stephania crebra är en tvåhjärtbladig växtart som beskrevs av Lewis Leonard Forman. Stephania crebra ingår i släktet Stephania och familjen Menispermaceae. Inga underarter finns listade i Catalogue of Life.

Källor

Ranunkelordningen
crebra

redpajama_set_name: RedPajamaWikipedia


Sony's mobile business is not in good form. Despite the company's attempt to re-invent its Xperia line, its previous earnings are leaving analysts wondering if this year will be Sony Mobile's last breath. The company, however, has always been stubborn about its smartphones, despite and in spite of all the odds. Expected to headline this coming MWC 2019, the Xperia XZ4 could also give smartphone users something to talk about. Provided it's not yet too late for the Xperia brand, that is.
Despite making competitive digital cameras, Sony has fallen way behind when it came to smartphone cameras. Which is both sad and ironic considering it makes the sensors that other smartphone makers use and boast about. It's almost as if it reserves those high-end sensors for its customers, leaving nothing for its own Xperia phones.
The Xperia XZ4 could change that trend, at least for this year. According to the latest leak, not only will it have three cameras on its back, one of those will be the highest ever in the market in terms of megapixel count. Trumping the Honor View 20's 48 megapixel sensor, which, again, was made by Sony, the upcoming Sony flagship will boast of a still-unannounced 52 megapixel sensor with a large f/1.6 aperture lens.
As mentioned, it won't be alone. Based on the leaked image, there will be a 16 megapixel f/2.6 telephoto camera on top and a 0.3 megapixel f/1.4 Time-of-Flight sensor below. The latter seems to be a new trend, even though its exact practical use has yet to be elaborated.
Given the Xperia XZ4's rumored specs and, now, these three cameras, it seems likely it will be Sony's premium 2019 flagship, despite not having the usual "Premium" label. That will leave it a bit handicapped later this year without a new flagship, unless it already foresees the Xperia XZ4 could very well be its last.


Veganism isn't exactly the magic health bullet some people think it is.
For one, vegan staples aren't always as healthy as they're cracked up to be.
Fake meats can be full of sodium, artificial ingredients, preservatives, processed oils and little nutritional value.
Another thing: Many vegan staples, when consumed in excess, can be bad for the environment.
It takes 1.1 gallons of water to produce a single almond. The demand for almonds taxes heavily on California's already limited water supply.
Avocados, often regarded as a great source of healthy fat for vegans, need a lot of water, too.
The demand for avocados is so great that in Chile, some towns' water supplies have been depleted, Mother Jones reported.
Growing soybeans, which are the main ingredient in tofu, has led to deforestation.
Natural ecosystems across South America are being disrupted for soy production, the World Wildlife Fund noted. Biodiversity is also being threatened.
Vegan diets may not supply people with all of the nutrients required in a healthy diet — and this has nothing to do with protein.
The body has a harder time digesting iron and zinc from plant sources. Vegan diets are often low in vitamin D.
There are many pros to the animal-free diet, but it's important to recognize that veganism isn't without problems of its own.


text:
December 14, 2017 by NOW National
#EnoughIsEnough Summit to Convene in February 2018:
The National Organization for Women (NOW) announces today the #EnoughIsEnough campaign, led by NOW and coalition partners including Feminist Majority, National Congress of Black Women, Alianza Nacional de Campesinas, Legal Momentum and UNITE HERE. #EnoughIsEnough will bring together different voices and perspectives to develop effective strategies aimed at bringing about substantive change to prevent, address and remedy sexual harassment in the workplaces and schools.
#EnoughIsEnough will have a special focus on low-paid workers, who cannot afford to confront their bosses or talk to the press. Nearly two-thirds of the 20 million low-wage workers are women, and more than a quarter experience sexual harassment on the job.
Advocates and allies are committed to supporting the survivors who are breaking their silence to make sure that their brave disclosures result in meaningful change. To achieve this, the #EnoughIsEnough campaign partners will convene a one-day summit in February 2018 to discuss and craft initiatives to end misogyny and sexual violence against women, including gender based violence in the workplace and educational institutions.
"Over the last few months, very brave women have brought attention to a toxic problem that has been rampant in our society for a very long time," says Toni Van Pelt, president of NOW. "The conversation about sexual harassment and assault needs to include both the stories of survivors and new ways to address and prevent hostile environments in workplaces and school in order to end the culture of abuse of women."
"Sexual harassment and assault is a serious problem in the hospitality industry, and that is why since 2012, UNITE HERE has been fighting for and winning new protections to keep our workers safe," says Maria Elena Durazo, General Vice President for Immigration, Civil Rights, and Diversity, UNITE HERE.
"Our union has been combating sexual harassment at work before the national conversation caught up to us. We are incredibly proud of our dozens of UNITE HERE union hotel housekeepers who had the courage to not only speak out about what happened to them, but go on to lead and win campaigns for new protections in the hospitality industry."
"Beyond just the workplace, we cannot leave out students and educational institutions when we're talking about rampant sexual harassment and assault," says Eleanor Smeal, president of the Feminist Majority. "One in five women students are survivors of campus sexual assault. The movement on campuses, led by student activists, is growing and cannot be ignored."
"In order to change the culture around sexual violence, we must also center the voices of women of color whose stories often fall through the cracks in and out of their communities," says E. Faye Williams, President of the National Congress of Black Women. "We need to create a space that allows women of color the opportunity to speak on solutions that will work for the specific needs of their communities."
"Women employed in every industry and sector, including agriculture and other low-paid positions, have historically confronted wide-spread workplace sexual violence," says Mónica Ramírez, President of Alianza Nacional de Campesinas. "It is more important than ever before that we unite to find solutions to ensure that all women can work with dignity and without fear of violence against them."
"We are calling for a radical shift in how our government and institutions investigate complaints of harassment and sexual violence," says Carol Robles-Roman, President of Legal Momentum. "We insist that a renewed culture of system-wide accountability and enforcement of basic rights take hold with national partners leading the way."
The #EnoughIsEnough Campaign will propose actions that will promote early intervention; improve policies that outline responsibility and accountability and that ultimately remove abusers from their positions of power; and continue to suggest ways to rectify the economic harm many victims experience as a result of sexual harassment and abuse.
"The old ways of dealing with sexual harassment and assault—secrecy, avoidance, denial and excuses—are crumbling in real time," says Toni Van Pelt. "New solutions are needed. We must be tough on perpetrators of sexual harassment and assault and tough on the causes as well. Men must no longer treat women as objects but with respect as equals."
Emily Imhoff, press@now.org, 951-547-1241
Filed Under: NOW National News Tagged With: NOW National News
About NOW National

redpajama_set_name: RedPajamaCommonCrawl


Use your kitty to slash enemies and gain upgrades to help you get to the puppy!
Create a clear path for Amigo Pancho to fly to the top of the screen by removing objects from the playfield.
Rescue your family from the red devil! Use a variety of weapons to defeat your enemies, look for treasure boxes hidden underneath the dirt.


text:
The Talking Dead #398: s9e2 – "The Bridge"
October 17, 2018	Season 9, The Walking Dead	01:34:08
This week on The Walking Dead, a lot of time was spent building bridges over water and between communities. Tune in to hear Jason and I recap season 9 episode 2, "The Bridge".
The Talking Dead #397: "A New Beginning" Feedback
October 12, 2018	Listener Feedback, Season 9, The Walking Dead	00:51:56
Did Maggie do the right thing by executing Gregory? Should Daryl have been in charge of The Sanctuary? Does everybody own a canoe in Canada? Tune in for for the answers to these questions and more on this week's listener feedback show.
The Talking Dead #396: s9e1 – "A New Beginning"
October 9, 2018	Season 9, The Walking Dead	01:43:49
The Walking Dead returned this week for season 9, with "A New Beginning". It's been a year and a half since season 8 ended, and lots has changed. Tune in for our recap of the episode, along with some of your Holy Crap! Moments.
Music for this episode is "Bridges" by Erthlings.
The fan-made credit sequence Jason mentioned can be found on YouTube.
The Talking Dead #387: "SDCC 2018 Trailer"
July 31, 2018	Off Season, Season 9, The Walking Dead	02:01:34
It's a bit later than usual, but Jason and I finally sit down to discuss the season 9 trailer released at San Diego Comic Con 2018. There's also plenty of Walking Dead news to cover this week, so prepare for a longer than usual podcast!
The Talking Dead #384: Season 8 Wrap-Up Crossover, Part 1
June 18, 2018	Listener Feedback, Season 8, The Walking Dead	01:32:20
At long last, I'm happy to present our season 8 wrap-up crossover podcast with Jason and Karen from The Walking Dead 'Cast! Together, we run down our top 6 highlights from The Walking Dead season 8! Make sure you visit podcastica.com to hear the other half of the countdown.
The Talking Dead #381: "Andrew Lincoln Is Leaving!"
May 30, 2018	Off Season, Season 9, The Walking Dead	0:32:11
Huge news in The Walking Dead universe this week! All the major news outlets are reporting that Andrew Lincoln is leaving The Walking Dead and will only appear in 6 episodes during season 9. Tune if for more information and our thoughts on this massive development.
The Talking Dead #375: "Wrath" Feedback
April 20, 2018	Listener Feedback, Season 8, The Walking Dead	01:44:13
It's our listener feedback show for season 8 episode 16, "Wrath". Could Negan survive the injury to his neck? Was the big battle too easy for team Rick to win? Is Chuck Norris dead? Tune in for the answers to these questions and a lot more.
The Talking Dead #374: s8e16 – "Wrath"
April 17, 2018	Season 8, The Walking Dead	01:59:30
Jesus helps Morgan decide which end to use; Team Rick faces off with Negan and The Saviours; and Maggie isn't sure they did the right thing. Tune in this week for our full recap of The Walking Dead season 8 finale, "Wrath". Plus, Jason plays my finale prediction, and we read your holy crap moments!
Music for this episode is "War Is Over" by Lowland Hum.
The Talking Dead #373: "Worth" Feedback
It's our listener feedback show for season 8 episode 15, "Worth". Why did Negan have to fight Simon? Is Eugene sabotaging the bullets? Can I convince Jason to join a hockey team? Tune in for the answers to these questions, and a lot more!
The Talking Dead #372: s8e15 – "Worth"
Aaron delivers a message to the Oceansiders, Negan retakes control of The Sanctuary, and Simon get his comeuppance. Tune in this week for our full recap of The Walking Dead season 8 episode 15, "Worth".


text:
Die Zeche Merklingsbank ist ein ehemaliges Steinkohlenbergwerk in Bommern. Das Bergwerk war auch unter den Namen Zeche Mercklingsbank und Zeche Merchlingsbank bekannt. Irrtümlich wurde das Bergwerk auch als Zeche Mecklingsbank bezeichnet. Das Bergwerk befand sich etwa 200 Meter östlich vom Schloss Steinhausen, westlich vom heutigen Lindenweg. Das Bergwerk befand sich etwa 20 Meter unterhalb der Zeche Steinhardtsbank.

Geschichte

Die Anfänge

Am 21. Mai des Jahres 1732 wurde das Längenfeld Merklingsbank verliehen. Das Längenfeld befand sich im Bereich zwischen dem Muttental und dem Ruhrtal. Das hier vorhandene Flöz war das Flöz Kreftenscheer, das eine Mächtigkeit von 1,8 Metern incl. 50 Zentimeter Zwischenmittel hatte. Nach der Verleihung lag das Bergwerk lange Zeit still. Im Jahr 1738 wurde Gerhard Peter Merklingshaus vom preußischen Bergamt mit dem Grubenfeld belehnt. Ab dem Jahr 1739 ging das Bergwerk in Betrieb. Der Stollen wurde etwa 20 Meter vom Südflügel der Zeche Braunschweig aufgefahren. In den Jahren 1754 und 1755 wurde das Bergwerk aufgrund von Absatzmangel in Fristen gelegt. Im Jahr 1755 verkauften die Erben von Gerhard Peter Merklingshaus die Hälfte ihres Bergwerkseigentums an Johann Caspar Hundeicker. Gemäß den Aufzeichnungen des Amtes Wetter waren im Jahr 1755 Mercklingshaus und Hundeicker als Gewerken eingetragen.

Der weitere Betrieb
Im Jahr 1757 wurde das Bergwerk wieder in Betrieb genommen. Im Jahr 1787 wurde das Bergwerk in der Niemeyerschen Karte eingetragen. Im Jahr 1796 wurden von elf Bergleuten 44.407 Ringel über den Stollen im Muttental gefördert. Die geförderten Kohlen wurden zum Teil ins Bergische Land transportiert. Ab dem Jahr 1800 war das Bergwerk für mehrere Jahre in Betrieb. Im Jahr 1804 ließen die Gewerken einen Schiebeweg durch das Muttental bis zur Ruhr bauen. An dem Bau dieses Schiebeweges beteiligten sich auch weitere Bergwerke. Durch den Schiebeweg war es dann möglich, die geförderten Kohlen mit Karren zur Ruhr zu transportieren. Aufgrund von Kauf und durch Erbschaften war die Zahl der Mitglieder der Gewerkschaft seit dem Jahr 1755 stetig gewachsen. Gewerken waren nun die Familien Hueck, Küper, Wünnenberg, Gethman und Berger. Das Bergwerk war bis zum Jahr 1810 in Betrieb. Im Juni des Jahres 1813 wurde die Zeche Merklingsbank stillgelegt. In der Zeit vom 30. Januar bis zum 14. April des Jahres 1821 konsolidierte das Bergwerk mit weiteren Bergwerken zur Zeche Louisenglück.

Einzelnachweise

Merklingsbank
Merklingsbank


One Step Oil/wax mixture ideal for decorative surfaces. Festool's Surfix Oil Application system is quick and ergonomic. The full oil bottle clicks into the base plate and is used as a handgrip. Pressing down on the bottle controls the flow of oil, which is then distributed evenly using the foam pad. The foam pad absorbs surplus oil and redistributes it to the right place.
The Festool Surfix tackles one of the hardest to nail finishing tasks by dispensing oil directly to your work piece without mess.


The striking conformation of an American Foxhound bears a striking resemblance to the body build of a Beagle. The dog measures from 21 to 25 inches at the withers and weighs from 65 to 75 pounds. This breed's sleek athletic body is well covered with a short coat that ranges from black, tan and white, tan and white or red and white color combinations. The admirable speed of this excellent hunter is attributed to the well boned strong legs.
The American Foxhound is a very old breed – older than America, the country it was named after. This breed originated from the pack of English hunting dogs that was brought to the Crown Colony by Robert Brooke in 1650.
In Great Britain, these dogs were highly acclaimed for their excellent hunting abilities. The dogs were used by the British landed gentry to hunt foxes. Hunted in packs, the dogs will chase the prey while the hunters follow on horseback. The deep and booming melodious voice will distinctly change to alert the hunters when a prey is found. Settlers of the New World utilize these dogs to hunt foxes as well. Because of the ferocious nature, the dogs are believed to have been used by the English military commanders to track Indians.
The English Foxhounds were crossed and re-crossed with the dogs of settlers from Ireland and France until a new breed that has adapted to the conditions of the new country has evolved. This has resulted to the development of the American Foxhound.
The American Foxhound was actually developed to be a hunting dog. An American Foxhound would be in its element if it is chasing a prey. An ultra sensitive scenting ability, a remarkable staying power and a passionate desire to overpower a prey make this breed a notable hunter. Once this dog has found an interesting scent nothing can stop the dog from trailing the prey. As the breed name suggests, foxes are the usual prey of these dogs although these hunting dogs will not pass up the chance to run after any animal.No wonder, the breed is highly valued as a hunting dog.
American Foxhounds are first and foremost highly valued for their remarkable hunting abilities. However, apart from the hunting prowess, these dogs are valued as well for their loving and gentle nature. These energetic dogs turn into placid pets with gentle disposition at home. This breed is not a one man dog. An American Foxhound loves all the members of the family but the dogs are noted to be especially friendly and affectionate with the children.


text:
Q: Does the inverse function theorem fail for $\frac {\partial r}{\partial x}$ This is a follow-up to a question that I answered (though, not well enough).
Why is it that $\frac {\partial r}{\partial x} = \cos(\theta) = \frac {\partial x}{\partial r} = \frac {\partial}{\partial r}(r\cos(\theta))$?
$r$ and $x$ should be continuously differentiable so the inverse function theorem should apply.  And I don't think $r$ should be a function of $\theta$ (even though $\frac {\partial r}{\partial x}$ is).  Can someone explain this to me?

A: Here is the right answer with prove.
Since you did the partial differentiation on the parametric equation, but it is not the only relationship between $x$ and $r$ in $r^2=x^2 + y^2$. The following section show you the right procedure:
$x^2 +y^2 =r^2$
$x^2 = r^2 - y^2$
$\frac{\partial (x^2)}{\partial {r}} = \frac{\partial( r^2 - y^2)}{\partial{r}}$
$\frac{\partial x}{\partial r} = \frac{r}{x} - \frac{y}{x}sin\theta$
$=\frac{1}{cos \theta} - \frac{sin^2 \theta}{cos \theta}$
$= cos \theta$
$\frac{\partial r^2}{\partial x} = 2x + \frac{\partial y^2}{\partial x}$
$\frac{\partial r}{\partial x} = \frac{x}{r} - \frac{y}{r} \frac{\partial y}{\partial x}$
$= \cos(\theta)-\frac{y}{r} \frac{\partial y}{\partial x}$
$=\cos(\theta)-\frac{y}{r}(\frac{r}{y} \frac{\partial r}{\partial x} - \frac{x}{y})$
$=\cos(\theta)-\frac{\partial r}{\partial x} +\frac{x}{r}$
$2\frac{\partial r}{\partial x} = 2\cos(\theta)$
The question here is why does $\frac{\partial x}{\partial r} = \frac{\partial r}{\partial x}$
For ease of understanding, I will show the surface $r^2 = x^2 + y^2$ and plot $| \sqrt{x^2+y^2}|$

Our problem is $r^2=x^2+y^2$, with parametric equation $x=r\cos(\theta), y=r\sin(\theta), r>=0$.
Since we would like to know $\frac{\partial x}{\partial r}$, so turn the surface and look at the surface in direction which is parallel to y axis (figure 2), as a result, we only view the relationship between $x$ and $r$. Furthermore, the figure 3 shows the relationship between x, y and r.
From equation $r^2=x^2+y^2$, you can imagine that the from top view of the surface. The surface is composed by many circle with ascending radius, larger radius will at a higher level, result a clone. The relationship between r and x is x increase, radius increase. And the ratio is 1:1.
Therefore,
$\frac{\partial x}{\partial r} = \frac{\partial r}{\partial x} = \cos(\theta) = x/r = 1$

A: Let $F: (x,y)\to (r,\theta)$ the usual change of coordinates.
The Jacobian matrix for $F$ (expressed in terms of $(r,\theta)$) is given by:
\begin{pmatrix}
\cos(\theta) & \sin(\theta) \\
-\sin(\theta)/r & \cos(\theta)/r
\end{pmatrix}
The Jacobian matrix for $F^{-1}$ is given by:
\begin{pmatrix}
\cos(\theta) & -r\sin(\theta) \\
\sin(\theta) & r\cos(\theta)
\end{pmatrix}
So IFT works.

redpajama_set_name: RedPajamaStackExchange


text:
Triathlon Bike Training
How to Group Cycle Like a Pro
by Tristin Hopper
Group Cycling Safety
Dogs may be man's best friend, but they're a cyclist's worst enemy. They'll bark at you; they'll nip at your heels; they'll run under your front wheel and bring you crashing to the ground. Dogs are even an issue during the acclaimed Tour de France. Every year, the occasional stray might dart into the peloton, unwittingly prompting a storm of flailing limbs and airborne bicycles.
Dogs are just one of the many hazards facing group cyclists. Amid heavy traffic, rough weather, uneven terrain and even swooping birds, it's a wonder cyclists take to the road in anything less than a full suit of armor. Group cyclists face a particularly unique set of safety hazards. On the one hand, a peloton is less at risk for auto collisions, because it's more visible to motorists. On the other hand, you're also more at risk of getting caught in a massive, multi-cyclist collision. Still, by taking along the right equipment and keeping your wits about you, you should be able to get to the finish line in one piece.
A helmet is absolutely essential. Of any piece of safety equipment, a helmet is most likely to keep you out of the morgue. More than 9 in 10 U.S. cyclists killed in 2008 weren't wearing a helmet [source: Insurance Institute for Highway Safety]. Most cycling groups won't let you join a ride without one. A handlebar-mounted bell may seem like a childish accessory, but it's an essential tool to help you politely communicate with other pedestrians, cars and other cyclists. A ringing bell is always more pleasant to hear than "Get out of the way!"
If you're sharing a road with cars (which is most of the time) you should always be well-versed in the official rules of the road. Stop at stop signs, don't go the wrong way down a one-way street, and never ride on the sidewalk. The more predictable you make your movements on the road, the easier it will be for motorists to steer clear of your peloton.
You should never ride in groups wider than two riders, and even that can be risky. On busy roads, you should stay in a single file. To keep the peloton from sprawling out into traffic, riders should stay almost uncomfortably close. Your front wheel should be no less than six inches from the rear wheel of the rider in front of you, and your shoulders should be no less than 12 inches away from the rider next to you -- just be sure not to overlap wheels [source: Horowitz]. Because of these close quarters, you'll want your cycling to be as smooth as possible. Brake too fast or swerve your wheels, and you could find yourself under a pile of very unhappy riders.
Daylight is always the safest time to schedule a bike ride, but during the winter some night biking may be unavoidable. Whenever you take to the road after sunset, be sure to bedeck yourself with as many lights as possible. Reflectors don't count: If a car's headlights have come close enough to illuminate your reflectors, chances are that it's too late to avoid a collision [source: Goodridge]. Luckily, we live in the golden age of cheap, bright bike lights. You should be able to pick up two blindingly bright LED lights (one for the back, one for the front) for no more than $50. Avoid incandescent lights: They burn out, they're not as bright, and they'll eat through batteries much faster. Colors are also important, as they indicate the direction in which a bike is moving. Keep your front lights white, your back lights red and your side lights amber. Cars will obviously be your biggest night time hazard -- but don't forget to keep your eyes peeled for pedestrians, animals and the occasional unlit cyclist.
Keep reading to find out how to save gas on your next vacation.
Tired of Traffic? Get Spinning
Rather than brave the elements, many cyclists choose to take their workouts indoors by joining a "spinning class" at the local gym. In a room filled with exercise bikes, instructors guide a group of riders through a simulated ride complete with hills and rough terrain. The weather's always nice, you can listen to music, and you won't need to worry about getting smashed by a minivan. Instead of fresh air, however, you'll be taking in a lungful of gym smell [source: Gural].
How Pedaling Technique Works
How to Improve Bike Hill Climbing
How to Improve Pedaling Efficiency
Should I stand or sit when riding uphill?


Make the most out of your days by the water with the Costa Gulf Shore 580P Polarized Sunglasses. These rimless shades offer a wide field of vision that lets you take in the horizon to the fullest, and feature polarized lenses to ensure a reduced glare coming off the water. Nose pads help ensure grip, and scratch-resistant technology has you covered in case they do take a tumble. With a super light weight and full UV Protection, you'll have no reason not to take them on all of your summer adventures.


Responsible for the care and safety of assigned children. As a member of the multidisciplinary treatment team assumes primary residential care counselor role. Responsible for input into the formulation of a therapeutic residential treatment plan and the implementation observation and documentation of this program under the direction of the Residential Care Supervisor.
- Consistently applies the corporate values of respect honesty and fairness and the constant pursuit of excellence in improving the health status of the people of the region through the provision of customer-friendly geographically-accessible and high-value services within the environment of a comprehensive integrated academic health system.
- Participates in maintaining a safe and therapeutic environment.
- Participates in the development and operationalization of the residential care plan for assigned children according to established Department and Program-based procedure and policy.
- Maintains and documents level of child observation as ordered by the physician or Program Director each shift.
- Supervises assigned children in daily routines and assists with activities of daily living.
- Identifies reports and actively resolves potential/actual problems in the Program.
- Demonstrates appropriate critical incident follow-up skills by timely verbal reporting to Residential Care Supervisor or Nursing Supervisor/Program Nurse and documentation in child�s chart.
- Intervenes in disruptive milieu or destructive to self/other child situations providing timely therapeutic intervention(s).
- Adheres to Hospital Departmental and Program policies and procedures.
- Attends Program meetings as assigned.
- Maintains current certification in crisis management.
- Maintains current CPR certification.
- Maintains current ERS Safety & OSHA certifications.
- Attends Program staff development meetings as assigned.
- Consistently follows all Hospital and Departmental policies and procedures.
- Consistently follows all Program-based policies and procedures.
- Actively participates in the residential child care planning process under the direction of the Residential Care Supervisor.
- Participates in the initial admission interview process as assigned.
- Works to support initial therapeutic alliance with child and family on admission.
- Completes initial milieu assessment within a 24 hour period. Develops initial problem list and residential care plan within 24 hours of admission.
- Reviews residential care plan and problem list on a daily basis revising as necessary.
- Communicates individual child residential treatment plans in an ongoing manner to other Program staff including liaison with other multidisciplinary treatment providers.
- Actively participates in DPC�s treatment team and shift report.
- Is aware of Program QA indicators and responsibilities related to such.
- Accurately documents significant child/family observations/milieu treatment in the child�s chart in a timely fashion.
- Offers information and knowledge acquired through experience to other staff via formal/ informal staff development forums.
- Supports and contributes to the development of residential care plans/behavioral management.
- Assists and teaches child in activities of daily living and personal hygiene based upon child�s level of competence.
- Demonstrates ability to set consistent and supportive therapeutic limits within guidelines of Hospital Program and Department standards.
- Institutes behavioral programs specific to the needs of the child in collaboration with off-line clinicians.
- Participates and assists in organizing Program activities.
- Consistently models to children/families appropriate and therapeutic interpersonal staff/child interactions.
- Handles crisis situations in a safe effective manner utilizing the least restrictive safe patient care alternative.
- Takes the initiative to seek formal/informal supervision incorporating suggestions for improvement/changes in job performance.
- Baccalaureate Degree in a Human Service field. (Equivalent experience may be substituted for educational requirements at the discretion of the COO Nurse Executive).
- Demonstrated knowledge and skills necessary to provide care to patients throughout the life span with consideration of aging processes human development stages and cultural patterns in each step of the care process.
- Six months to one year of direct child care work with emotionally impaired youth.
- Current Bradley Hospital Crisis Management certification or enrollment in Bradley Hospital course.
- Current ERS Safety & OSHA certification.


text:
(function() {
var modules = {};
(function() {

// A simple class system, more documentation to come

function extend(cls, name, props) {
    var prototype = Object.create(cls.prototype);
    var fnTest = /xyz/.test(function(){ xyz; }) ? /\bparent\b/ : /.*/;
    props = props || {};

    for(var k in props) {
        var src = props[k];
        var parent = prototype[k];

        if(typeof parent == "function" &&
           typeof src == "function" &&
           fnTest.test(src)) {
            prototype[k] = (function (src, parent) {
                return function() {
                    // Save the current parent method
                    var tmp = this.parent;

                    // Set parent to the previous method, call, and restore
                    this.parent = parent;
                    var res = src.apply(this, arguments);
                    this.parent = tmp;

                    return res;
                };
            })(src, parent);
        }
        else {
            prototype[k] = src;
        }
    }

    prototype.typename = name;

    var new_cls = function() {
        if(prototype.init) {
            prototype.init.apply(this, arguments);
        }
    };

    new_cls.prototype = prototype;
    new_cls.prototype.constructor = new_cls;

    new_cls.extend = function(name, props) {
        if(typeof name == "object") {
            props = name;
            name = "anonymous";
        }
        return extend(new_cls, name, props);
    };

    return new_cls;
}

modules['object'] = extend(Object, "Object", {});
})();
(function() {
var ArrayProto = Array.prototype;
var ObjProto = Object.prototype;

var exports = modules['lib'] = {};

exports.TemplateError = function(message, lineno, colno) {
    var self = this;

    if (message instanceof Error) { // for casting regular js errors
        self = message;
        message = message.name + ": " + message.message;
    } else {
        Error.captureStackTrace(self);
    }

    self.name = "Template render error";
    self.message = message;
    self.lineno = lineno;
    self.colno = colno;
    self.firstUpdate = true;

    self.Update = function(path) {
        var message = "(" + (path || "unknown path") + ")";

        // only show lineno + colno next to path of template
        // where error occurred
        if (this.firstUpdate && this.lineno && this.colno) {
            message += ' [Line ' + this.lineno + ', Column ' + this.colno + ']';
        }

        message += '\n ';
        if (this.firstUpdate) {
            message += ' ';
        }

        this.message = message + (this.message || '');
        this.firstUpdate = false;
        return this;
    };
    return self;
};
exports.TemplateError.prototype = Error.prototype;

exports.isFunction = function(obj) {
    return ObjProto.toString.call(obj) == '[object Function]';
};

exports.isArray = Array.isArray || function(obj) {
    return ObjProto.toString.call(obj) == '[object Array]';
};

exports.isString = function(obj) {
    return ObjProto.toString.call(obj) == '[object String]';
};

exports.isObject = function(obj) {
    return obj === Object(obj);
};

exports.groupBy = function(obj, val) {
    var result = {};
    var iterator = exports.isFunction(val) ? val : function(obj) { return obj[val]; };
    for(var i=0; i<obj.length; i++) {
        var value = obj[i];
        var key = iterator(value, i);
        (result[key] || (result[key] = [])).push(value);
    }
    return result;
};

exports.toArray = function(obj) {
    return Array.prototype.slice.call(obj);
};

exports.without = function(array) {
    var result = [];
    if (!array) {
        return result;
    }
    var index = -1,
    length = array.length,
    contains = exports.toArray(arguments).slice(1);

    while(++index < length) {
        if(contains.indexOf(array[index]) === -1) {
            result.push(array[index]);
        }
    }
    return result;
};

exports.extend = function(obj, obj2) {
    for(var k in obj2) {
        obj[k] = obj2[k];
    }
    return obj;
};

exports.repeat = function(char_, n) {
    var str = '';
    for(var i=0; i<n; i++) {
        str += char_;
    }
    return str;
};

exports.each = function(obj, func, context) {
    if(obj == null) {
        return;
    }

    if(ArrayProto.each && obj.each == ArrayProto.each) {
        obj.forEach(func, context);
    }
    else if(obj.length === +obj.length) {
        for(var i=0, l=obj.length; i<l; i++) {
            func.call(context, obj[i], i, obj);
        }
    }
};

exports.map = function(obj, func) {
    var results = [];
    if(obj == null) {
        return results;
    }

    if(ArrayProto.map && obj.map === ArrayProto.map) {
        return obj.map(func);
    }

    for(var i=0; i<obj.length; i++) {
        results[results.length] = func(obj[i], i);
    }

    if(obj.length === +obj.length) {
        results.length = obj.length;
    }

    return results;
};
})();
(function() {

var lib = modules["lib"];

var filters = {
    abs: function(n) {
        return Math.abs(n);
    },

    batch: function(arr, linecount, fill_with) {
        var res = [];
        var tmp = [];

        for(var i=0; i<arr.length; i++) {
            if(i % linecount === 0 && tmp.length) {
                res.push(tmp);
                tmp = [];
            }

            tmp.push(arr[i]);
        }

        if(tmp.length) {
            if(fill_with) {
                for(var i=tmp.length; i<linecount; i++) {
                    tmp.push(fill_with);
                }
            }

            res.push(tmp);
        }

        return res;
    },

    capitalize: function(str) {
        str = str.toLowerCase();
        return str[0].toUpperCase() + str.slice(1);
    },

    center: function(str, width) {
        width = width || 80;

        if(str.length >= width) {
            return str;
        }

        var spaces = width - str.length;
        var pre = lib.repeat(" ", spaces/2 - spaces % 2);
        var post = lib.repeat(" ", spaces/2);
        return pre + str + post;
    },

    default: function(val, def) {
        return val ? val : def;
    },

    escape: function(str) {
        return str.replace(/&/g, '&')
            .replace(/"/g, '"')
            .replace(/'/g, ''')
            .replace(/</g, '<')
            .replace(/>/g, '>');
    },

    first: function(arr) {
        return arr[0];
    },

    groupby: function(arr, attr) {
        return lib.groupBy(arr, attr);
    },

    indent: function(str, width, indentfirst) {
        width = width || 4;
        var res = '';
        var lines = str.split('\n');
        var sp = lib.repeat(' ', width);

        for(var i=0; i<lines.length; i++) {
            if(i == 0 && !indentfirst) {
                res += lines[i] + '\n';
            }
            else {
                res += sp + lines[i] + '\n';
            }
        }

        return res;
    },

    join: function(arr, del, attr) {
        del = del || '';

        if(attr) {
            arr = lib.map(arr, function(v) {
                return v[attr];
            });
        }

        return arr.join(del);
    },

    last: function(arr) {
        return arr[arr.length-1];
    },

    length: function(arr) {
        return arr.length;
    },

    list: function(val) {
        if(lib.isString(val)) {
            return val.split('');
        }
        else if(lib.isObject(val)) {
            var keys = [];

            if(Object.keys) {
                keys = Object.keys(val);
            }
            else {
                for(var k in val) {
                    keys.push(k);
                }
            }

            return lib.map(keys, function(k) {
                return { key: k,
                         value: val[k] };
            });
        }
        else {
            throw new lib.TemplateError("list filter: type not iterable");
        }
    },

    lower: function(str) {
        return str.toLowerCase();
    },

    random: function(arr) {
        var i = Math.floor(Math.random() * arr.length);
        if(i == arr.length) {
            i--;
        }

        return arr[i];
    },

    replace: function(str, old, new_, maxCount) {
        var res = str;
        var last = res;
        var count = 1;
        res = res.replace(old, new_);

        while(last != res) {
            if(count >= maxCount) {
                break;
            }

            last = res;
            res = res.replace(old, new_);
            count++;
        }

        return res;
    },

    reverse: function(val) {
        var arr;
        if(lib.isString(val)) {
            arr = filters.list(val);
        }
        else {
            // Copy it
            arr = lib.map(val, function(v) { return v; });
        }

        arr.reverse();

        if(lib.isString(val)) {
            return arr.join('');
        }
        return arr;
    },

    round: function(val, precision, method) {
        precision = precision || 0;
        var factor = Math.pow(10, precision);
        var rounder;

        if(method == 'ceil') {
            rounder = Math.ceil;
        }
        else if(method == 'floor') {
            rounder = Math.floor;
        }
        else {
            rounder = Math.round;
        }

        return rounder(val * factor) / factor;
    },

    slice: function(arr, slices, fillWith) {
        var sliceLength = Math.floor(arr.length / slices);
        var extra = arr.length % slices;
        var offset = 0;
        var res = [];

        for(var i=0; i<slices; i++) {
            var start = offset + i * sliceLength;
            if(i < extra) {
                offset++;
            }
            var end = offset + (i + 1) * sliceLength;

            var slice = arr.slice(start, end);
            if(fillWith && i >= extra) {
                slice.push(fillWith);
            }
            res.push(slice);
        }

        return res;
    },

    sort: function(arr, reverse, caseSens, attr) {
        // Copy it
        arr = lib.map(arr, function(v) { return v; });

        arr.sort(function(a, b) {
            var x, y;

            if(attr) {
                x = a[attr];
                y = b[attr];
            }
            else {
                x = a;
                y = b;
            }

            if(!caseSens && lib.isString(x) && lib.isString(y)) {
                x = x.toLowerCase();
                y = y.toLowerCase();
            }

            if(x < y) {
                return reverse ? 1 : -1;
            }
            else if(x > y) {
                return reverse ? -1: 1;
            }
            else {
                return 0;
            }
        });

        return arr;
    },

    string: function(obj) {
        return obj.toString();
    },

    title: function(str) {
        return str.toUpperCase();
    },

    trim: function(str) {
        return str.replace(/^\s*|\s*$/g, '');
    },

    upper: function(str) {
        return str.toUpperCase();
    },

    wordcount: function(str) {
        return str.match(/\w+/g).length;
    },

    float: function(val, def) {
        return parseFloat(val) || def;
    },

    int: function(val, def) {
        return parseInt(val) || def;
    }
};

// Aliases
filters.d = filters.default;
filters.e = filters.escape;

modules['filters'] = filters;
})();
(function() {

var Object = modules["object"];

// Frames keep track of scoping both at compile-time and run-time so
// we know how to access variables. Block tags can introduce special
// variables, for example.
var Frame = Object.extend({
    init: function(parent) {
        this.variables = {};
        this.parent = parent;
    },

    set: function(name, val) {
        // Allow variables with dots by automatically creating the
        // nested structure
        var parts = name.split('.');
        var obj = this.variables;

        for(var i=0; i<parts.length - 1; i++) {
            var id = parts[i];

            if(!obj[id]) {
                obj[id] = {};
            }
            obj = obj[id];
        }

        obj[parts[parts.length - 1]] = val;
    },

    lookup: function(name) {
        var p = this.parent;
        var val = this.variables[name];
        if(val !== undefined && val !== null) {
            return val;
        }
        return p && p.lookup(name);
    },

    push: function() {
        return new Frame(this);
    },

    pop: function() {
        return this.parent;
    }
});

function makeMacro(argNames, kwargNames, func) {
    return function() {
        var argCount = numArgs(arguments);
        var args;
        var kwargs = getKeywordArgs(arguments);

        if(argCount > argNames.length) {
            args = Array.prototype.slice.call(arguments, 0, argNames.length);

            // Positional arguments that should be passed in as
            // keyword arguments (essentially default values)
            var vals = Array.prototype.slice.call(arguments, args.length, argCount);
            for(var i=0; i<vals.length; i++) {
                if(i < kwargNames.length) {
                    kwargs[kwargNames[i]] = vals[i];
                }
            }

            args.push(kwargs);
        }
        else if(argCount < argNames.length) {
            args = Array.prototype.slice.call(arguments, 0, argCount);

            for(var i=argCount; i<argNames.length; i++) {
                var arg = argNames[i];

                // Keyword arguments that should be passed as
                // positional arguments, i.e. the caller explicitly
                // used the name of a positional arg
                args.push(kwargs[arg]);
                delete kwargs[arg];
            }

            args.push(kwargs);
        }
        else {
            args = arguments;
        }

        return func.apply(this, args);
    };
}

function makeKeywordArgs(obj) {
    obj.__keywords = true;
    return obj;
}

function getKeywordArgs(args) {
    if(args.length && args[args.length - 1].__keywords) {
        return args[args.length - 1];
    }
    return {};
}

function numArgs(args) {
    if(args.length === 0) {
        return 0;
    }
    else if(args[args.length - 1].__keywords) {
        return args.length - 1;
    }
    else {
        return args.length;
    }
}

function suppressValue(val) {
    return (val !== undefined && val !== null) ? val : "";
}

function suppressLookupValue(obj, val) {
    obj = obj || {};
    val = obj[val];

    if(typeof val === 'function') {
        return function() {
            return suppressValue(val.apply(obj, arguments));
        };
    }
    else {
        return suppressValue(val);
    }
}

function contextOrFrameLookup(context, frame, name) {
    var val = context.lookup(name);
    return (val !== undefined && val !== null) ?
        val :
        frame.lookup(name);
}

modules['runtime'] = {
    Frame: Frame,
    makeMacro: makeMacro,
    makeKeywordArgs: makeKeywordArgs,
    numArgs: numArgs,
    suppressValue: suppressValue,
    suppressLookupValue: suppressLookupValue,
    contextOrFrameLookup: contextOrFrameLookup
};
})();
(function() {
var lib = modules["lib"];
var Object = modules["object"];
var lexer = modules["lexer"];
var compiler = modules["compiler"];
var builtin_filters = modules["filters"];
var builtin_loaders = modules["loaders"];
var runtime = modules["runtime"];
var Frame = runtime.Frame;

var Environment = Object.extend({
    init: function(loaders, tags, dev) {
        // The dev flag determines the trace that'll be shown on errors.
        // If set to true, returns the full trace from the error point,
        // otherwise will return trace starting from Template.render
        // (the full trace from within nunjucks may confuse developers using
        //  the library)
        this.dev = dev;

        if(!loaders) {
            // The filesystem loader is only available client-side
            if(builtin_loaders.FileSystemLoader) {
                this.loaders = [new builtin_loaders.FileSystemLoader()];
            }
            else {
                this.loaders = [new builtin_loaders.HttpLoader('/views')];
            }
        }
        else {
            this.loaders = lib.isArray(loaders) ? loaders : [loaders];
        }

        if(tags) {
            lexer.setTags(tags);
        }

        this.filters = builtin_filters;
        this.cache = {};
    },

    tryTemplate: function(path, func) {
        try {
            return func();
        } catch (e) {
            if (!e.Update) {
                // not one of ours, cast it
                e = lib.TemplateError(e);
            }
            e.Update(path);

            // Unless they marked the dev flag, show them a trace from here
            if (!this.dev) {
                var old = e;
                e = new Error(old.message);
                e.name = old.name;
            }

            throw e;
        }
    },

    addFilter: function(name, func) {
        this.filters[name] = func;
    },

    getFilter: function(name) {
        if(!this.filters[name]) {
            throw new Error('filter not found: ' + name);
        }
        return this.filters[name];
    },

    getTemplate: function(name, eagerCompile) {
        var info = null;
        var tmpl = this.cache[name];
        var upToDate;

        if(typeof name !== 'string') {
            throw new Error('template names must be a string: ' + name);
        }

        if(!tmpl || !tmpl.isUpToDate()) {
            for(var i=0; i<this.loaders.length; i++) {
                if((info = this.loaders[i].getSource(name))) {
                    break;
                }
            }

            if(!info) {
                throw new Error('template not found: ' + name);
            }

            this.cache[name] = new Template(info.src,
                                            this,
                                            info.path,
                                            info.upToDate,
                                            eagerCompile);
        }

        return this.cache[name];
    },

    registerPrecompiled: function(templates) {
        for(var name in templates) {
            this.cache[name] = new Template({ type: 'code',
                                              obj: templates[name] },
                                            this,
                                            name,
                                            function() { return true; },
                                            true);
        }
    },

    express: function(app) {
        var env = this;

        if(app.render) {
            // Express >2.5.11
            app.render = function(name, ctx, k) {
                var context = {};

                if(lib.isFunction(ctx)) {
                    k = ctx;
                    ctx = {};
                }

                context = lib.extend(context, this.locals);

                if(ctx._locals) {
                    context = lib.extend(context, ctx._locals);
                }

                context = lib.extend(context, ctx);

                var res = env.render(name, context);
                k(null, res);
            };
        }
        else {
            // Express <2.5.11
            var http = modules["http"];
            var res = http.ServerResponse.prototype;

            res._render = function(name, ctx, k) {
                var app = this.app;
                var context = {};

                if(this._locals) {
                    context = lib.extend(context, this._locals);
                }

                if(ctx) {
                    context = lib.extend(context, ctx);

                    if(ctx.locals) {
                        context = lib.extend(context, ctx.locals);
                    }
                }

                context = lib.extend(context, app._locals);
                var str = env.render(name, context);

                if(k) {
                    k(null, str);
                }
                else {
                    this.send(str);
                }
            };
        }
    },

    render: function(name, ctx) {
        return this.getTemplate(name).render(ctx);
    }
});

var Context = Object.extend({
    init: function(ctx, blocks) {
        this.ctx = ctx;
        this.blocks = {};
        this.exported = [];

        for(var name in blocks) {
            this.addBlock(name, blocks[name]);
        }
    },

    lookup: function(name) {
        return this.ctx[name];
    },

    setVariable: function(name, val) {
        this.ctx[name] = val;
    },

    getVariables: function() {
        return this.ctx;
    },

    addBlock: function(name, block) {
        this.blocks[name] = this.blocks[name] || [];
        this.blocks[name].push(block);
    },

    getBlock: function(name) {
        if(!this.blocks[name]) {
            throw new Error('unknown block "' + name + '"');
        }

        return this.blocks[name][0];
    },

    getSuper: function(env, name, block) {
        var idx = (this.blocks[name] || []).indexOf(block);
        var blk = this.blocks[name][idx + 1];
        var context = this;

        return function() {
            if(idx == -1 || !blk) {
                throw new Error('no super block available for "' + name + '"');
            }

            return blk(env, context);
        };
    },

    addExport: function(name) {
        this.exported.push(name);
    },

    getExported: function() {
        var exported = {};
        for(var i=0; i<this.exported.length; i++) {
            var name = this.exported[i];
            exported[name] = this.ctx[name];
        }
        return exported;
    }
});

var Template = Object.extend({
    init: function (src, env, path, upToDate, eagerCompile) {
        this.env = env || new Environment();

        if(lib.isObject(src)) {
            switch(src.type) {
            case 'code': this.tmplProps = src.obj; break;
            case 'string': this.tmplStr = src.obj; break;
            }
        }
        else if(lib.isString(src)) {
            this.tmplStr = src;
        }
        else {
            throw new Error("src must be a string or an object describing " +
                            "the source");
        }

        this.path = path;
        this.upToDate = upToDate || function() { return false; };

        if(eagerCompile) {
            var self = this;
            this.env.tryTemplate(this.path, function() { self._compile(); });
            self = null;
        }
        else {
            this.compiled = false;
        }
    },

    render: function(ctx, frame) {
        var self = this;

        var render = function() {
            if(!self.compiled) {
                self._compile();
            }

            var context = new Context(ctx || {}, self.blocks);

            return self.rootRenderFunc(self.env,
                context,
                frame || new Frame(),
                runtime);
        };
        return this.env.tryTemplate(this.path, render);
    },

    isUpToDate: function() {
        return this.upToDate();
    },

    getExported: function() {
        if(!this.compiled) {
            this._compile();
        }

        // Run the rootRenderFunc to populate the context with exported vars
        var context = new Context({}, this.blocks);
        this.rootRenderFunc(this.env,
                            context,
                            new Frame(),
                            runtime);
        return context.getExported();
    },

    _compile: function() {
        var props;

        if(this.tmplProps) {
            props = this.tmplProps;
        }
        else {
            var func = new Function(compiler.compile(this.tmplStr, this.env));
            props = func();
        }

        this.blocks = this._getBlocks(props);
        this.rootRenderFunc = props.root;
        this.compiled = true;
    },

    _getBlocks: function(props) {
        var blocks = {};

        for(var k in props) {
            if(k.slice(0, 2) == 'b_') {
                blocks[k.slice(2)] = props[k];
            }
        }

        return blocks;
    }
});

// var fs = modules["fs"];
// var src = fs.readFileSync('test.html', 'utf-8');
// //var src = '{% macro foo(x, y, z=3) %}h{% endmacro %}';
// //var src = '{% macro foo() %}{{ h }}{% endmacro %} {{ foo() }}';

// var env = new Environment();
// console.log(compiler.compile(src));

// var tmpl = new Template(src, env);
// console.log("OUTPUT ---");
// console.log(tmpl.render({ username: "James" }));

modules['environment'] = {
    Environment: Environment,
    Template: Template
};
})();

var env = modules["environment"];
var compiler = modules["compiler"];
var parser = modules["parser"];
var lexer = modules["lexer"];
var loaders = modules["loaders"];

window.nunjucks = {};
window.nunjucks.Environment = env.Environment;
window.nunjucks.Template = env.Template;

// loaders is not available when using precompiled templates
if(loaders) {
    if(loaders.FileSystemLoader) {
        window.nunjucks.FileSystemLoader = loaders.FileSystemLoader;
    }
    else {
        window.nunjucks.HttpLoader = loaders.HttpLoader;
    }
}

window.nunjucks.compiler = compiler;
window.nunjucks.parser = parser;
window.nunjucks.lexer = lexer;

window.nunjucks.require =
   function(name) { return modules[name]; };

})();

redpajama_set_name: RedPajamaGithub


! - İzdihër - ! : Sunday was fun.
Having a relaxed Sunday is blessing for me.
My mother had her NTS test in St. Patrick's College, Saddar. I did my Intermediate (high school) from there in 2005. After passing out, I never got the chance to re-visit it. When my mom told me about her test center, I decided to go with her. Her test timing was 2:00pm. We reached there at 1:30 pm by auto.
I was amazed to see how well managed and decent it turned out after going back to the missionary management. At my time it was under government. Its condition was so worst. I am glad they took it back from the government.
But somehow it was still my collage. It still had same calmness, peace and serenity I used to feel on 2005. Meanwhile waiting for her, I read the novel.
Due to the test, there was strict security. Two cops deployed. They were not even letting us go in the building. Clicking wasn't that possible. I somehow managed to click few pics.


text:
Bond is back in thrilling 'No Time to Die' trailer
Lisa Respers France	CNN Published Wednesday, December 4, 2019 6:08PM EST
A teaser for the new Bond film 'No Time to Die' has been released. (Metro-Goldwyn-Mayer / CNN)
The new trailer for the latest James Bond film, "No Time to Die," debuted Wednesday and boy is it meant to excite the senses.
So much has changed since Bond (played by Daniel Craig) decided to leave the spy game at the end of "Spectre" in 2015.
But you didn't think 007 was just going to rest on a beach in Jamaica, did you?
"His peace is short-lived when his old friend Felix Leiter from the CIA turns up asking for help," according to the trailer's description on YouTube. "The mission to rescue a kidnapped scientist turns out to be far more treacherous than expected, leading Bond onto the trail of a mysterious villain armed with dangerous new technology."
It also puts him in the crosshairs of a new villain played by Academy Award winner Rami Malek.
Directed by Cary Fukunaga, the film also stars Ralph Fiennes, Naomie Harris, Rory Kinnear, Lea Seydoux, Ben Whishaw and Jeffrey Wright.
"No Time to Die" hits theaters on April 8, 2020.
James Bond's Aston Martin DB5 sold for US$6.4M
25th Bond movie gets a title: 'No Time to Die'
Studio Ghibli films are coming to Netflix, but not in North America or Japan
'Bad Boys For Life' wins the box office with huge U.S. holiday weekend
The latest from Pop Life
The impact of Star Wars on pop culture
Air Date: December 14, 2019
Anthony Daniels on the Star Wars saga, new book
Panel discussion: What does it take to write hits?
Air Date: December 7, 2019
Stars on the red carpet at Critics' Choice Awards
Royal fashion at a glance
IN PHOTOS: Celebrities walk the red carpet at 2020 Golden Globes


Why Richard Nixon Deserves to Be Remembered Along with "Brown"
Mr. Sabia is a Ph.D. candidate in economics at Cornell University.
In recent weeks Americans gathered to celebrate the 50th anniversary of the Brown decision, which overturned the "separate, but equal" doctrine and ordered the desegregation of public schools "with all deliberate speed." However, many Southern schools dragged their feet on integration, with districts steadfastly refusing to obey the court order. When federal bureaucrats tried to intervene to force desegregation, tensions grew. Summing up the situation, Senator Richard Russell, D-GA, stated in 1970, "The people of (the South) are more worked up over this problem than anything I've seen in all my years in politics." Enter Richard Nixon: racial healer.
In the fall of 1968, 68 percent of black children in the South were attending all-black schools. By 1974, that number had fallen to 8 percent. This extraordinary accomplishment was achieved through the shrewd political skills and raw courage of President Nixon, Secretary of Labor George Schultz, and Attorney General John Mitchell.
Nixon's aim was to use the minimum coercion necessary to achieve the essential national goal, to encourage local initiative, to respect diversity, and, to the extent possible, to treat the entire nation equally – blacks equally with whites, the South equally with the North.
Vice President Spiro Agnew was chosen to chair a special Cabinet Committee on Education, the purpose of which was to find the best course of action to peacefully desegregate Southern schools in accordance with a 1969 court order. This Cabinet committee voted to create several state advisory panels, which were staffed with a diverse cross-section of leaders from each Southern state. These committees included white segregationists, black leaders, and other government officials.
The day before yesterday I was in jail for going to the wrong beach. Today, Mr. President, I am meeting you. If that's possible anything can happen.
If you and I can't do this, nobody else in the state of Mississippi can. We're probably the only black and white men in the state who can get together on something like this.
With each of (the committees) I stressed the same points. First, I condemned the hypocrisy in much of the North about the segregation problem. I affirmed my belief that the South should be treated with understanding and patience, but I also stressed the need to solve the problem through peaceful compliance. Second, I emphasized my commitment to the principle of local leadership to solve local problems.
During the 1960s, many liberals self-righteously screamed about racism, demanding that the federal government coerce Southerners into racial integration. The result of their heavy-handed tactics was more racial antagonism.
The president tried a different approach – cooperation. Thanks to Nixon's strong leadership, Shultz's masterful negotiating skills and Mitchell's ability to keep overzealous Justice Department officials in check, the state advisory committees were an overwhelming success.
In a 1970 memo, presidential counselor Daniel Patrick Moynihan wrote, "There has been more change in the structure of American public school education in the last month than in the past 100 years." And, like going to China, only Nixon could have done it.
While much is made over his "Southern strategy" in 1968, few understand that the Southern strategy brought the South back into the nation's body politic by appealing to sentiments that united all Americans: patriotism, duty, and cooperation. Nixon refused to condescend to Southerners. He treated them as Americans, equal in every way to Northerners. And because Nixon took that course, he was able to achieve one of the greatest civil rights triumphs of the twenty-first century: the peaceful desegregation of Southern schools.
Nixon gets almost no credit for his civil rights efforts. Thanks to the liberal press, most Americans think that Nixon's civil rights record consists of him making a few racist statements in the Oval Office. Given the historical record, this is a tragedy.
Since [Nixon assumed office]...the great symbol of racial subjugation, the dual school system of the South, virtually intact two years ago, has quietly and finally been dismantled. All in all, a record of good fortune and much genuine achievement. And yet how little the administration seems to be credited with what it has achieved.
If we are to honor the Supreme Court for its decision in Brown, we should also honor Richard Nixon for peacefully carrying out its historic judgment.
Nixon's southern strategy finally brought the south into the fold. As a result of Nixon's efforts blacks have been relocating from the north to the south in great numbers over the past 2 census'. I suspect that for reasonable unbiased people the south is accepted to be no more of a racist threat that any other region in the nation. Thank-you, Richard Millhouse Nixon.
Another accomplishment that Nixon is never credited with is that he did more to help the poor in America than any other president. Nixon's incomparable record of expansion of the welfare system for the disenfranchised is unchallenged by any administration prior or since.
An interesting article, and certainly an issue that needs to be more broadly discussed. Unfortunately, a very reasonable article was all but ruined with a specious remark about the "Liberal press".
Firstly, take an honest look around and it becomes quickly apparent that the majority of the press in the USA is decidedly not Liberal. I'm not going to attempt to make the argument that the press is in fact conservative, I don't think that label applies with any more validity than the first. I think the public is more supportive of traditional and conservative values, but I'll leave that discussion to another day.
This article would have been better served with no opinion expressed on why the general public has limited (at best) knowledge of the successes of the Nixon administration. This is certainly too broad a topic to attempt with a single glib expression near the end of the article. In the end, the paragraph adds no value and gives the reader (rightly or wrongly) an impression of a dogmatic political perspective.
I agree we can honour Nixon for the positive contributions he made. I think we also need to honestly remember the less pleasant aspects of his administration. Like everyone else, his life and contribution cannot be summed up meaningfully is a short essay.
If the author would examine the voluminous writing on race and segregation in the last half century, he would find that the Nixon administration looks good only in comparison with such retrograde groups as the current Bush administration. Furthermore, if he cares to examine recent elections, he might notice that the majority in the South, for the most part, supports mainly those politicians who cater to the least common denominator of racism and bigotry. That is truly sad, of course. But too many, especially those who write for frontpagemag.com, are interested in viewing the facts only through their own political prism--and, interestingly, charge that the only ones who do that are the ones who happen to disagree with their interpretation.
An excellent article which has illuminated a piece of history which, regretably, has been all-too-overlooked, perhaps intentionally by some.


Scenes from the new Chinese garden. Photos by Peter McIntosh.
It has been a long, 11-year wait for Dunedin residents, but they will be allowed the first glimpses of the completed Chinese garden within two weeks.
The garden, at the end of Rattray St, will open to the public at 2pm on June 10.
In 1997, Dunedin historian Dr Jim Ng announced plans for a classical walled Chinese garden on the site near the Otago Settlers Museum.
The breakthrough came in May 2006, when Prime Minister Helen Clark announced the Government would contribute $3.75 million towards the garden from its Significant Community Based Projects Fund.
Official work on the site began in January last year.
Chinese Gardens Trust design manager John Henderson said "last-minute details" were being finished this week and the remaining five Chinese artisans would leave the city tomorrow.
Contractors would complete an access road between the garden and the Otago Settlers Museum, install gates, change bollards around the garden and finish off some wiring.
Staff for the garden would be trained in the days before the garden was opened.
There would be a blessing of the garden before its opening to the public.
An official opening would be held in September, attended by delegates from the Shanghai Municipal People's Government.
The garden hosted its first wedding on Saturday, when Dunedin couple Emma Caffell (21) and Isaac Beadle (22) exchanged their vows beside the goldfish-filled pond.
The couple had postponed their vows a month in order to get a booking at the garden.
• Location: On Dunedin City Council-owned land at the harbour end of Rattray St, between the Otago Settlers Museum and the main trunk railway line.
• Main Features: Pavilions, covered walkways, observation tower, ponds, water rocks and plants replicating an authentic 17th-century walled garden from the Ch'ing dynasty (1644-1911).
• Designed by: Shanghai Museum, Shanghai Construction and Decoration Company, Bruce Young.
• Built by: Foundations by Amalgamated Builders, main construction work by artisans from from Shanghai Construction and Decoration Company, and other companies for landscape, planting.
• Who is paying: New Zealand Government $3.75 million, Dunedin City Council $1 million, Community Trust of Otago $1 million, fund-raising by Chinese community $800,000.
• Ongoing operational and maintenance costs: Dunedin City Council.
• Admission Charges: Adults $8, students $5, season ticket $15.