text:
A TRIBUTE TO MY FATHER - 28 YEARS LATER
My father has been gone a lifetime, and there is so much I wish I could say to him. Here is a tribute video to his memory...
Posted by David Lobosco at 8:57 AM 3 comments:
Labels: my father, tributes
HOLLYWOOD URBAN LEGEND: WALT DISNEY
URBAN LEGEND: Walt Disney was cryogenically frozen.
STATUS: 100% Not True
Beloved animator and theme park-founder Walt Disney passed away in 1966, at the age of 65. The movie legend had been a heavy smoker all of his life, and eventually contracted lung cancer, dying in hospital of circulatory collapse only a month after his diagnosis. His remains were cremated two days later, and his ashes scattered at Forest Lawn Memorial Lake in Glendale, California.
Although that's the official story, there is a persistent rumor that Disney decided to try and extend his life by having his body cryogenically frozen, in the hope that he could be revived sometime in the future. However, this rumor is definitely false.
The urban legend came about because Bob Nelson, head of the California Cryogenics Society, said that Disney wanted to be frozen, but as he didn't state it in writing his family opted to cremate him instead.
The first instance of a corpse being cryogenically frozen was performed in 1967, after a year after Disney's death, meaning if he had gone ahead with it he would have been the first person to ever do so...
Posted by David Lobosco at 6:15 AM No comments:
Labels: urban legend, Walt Disney
RIP: KAYE BALLARD
Kaye Ballard, whose long career as a comedian, actress and nightclub performer included well-regarded runs in "The Golden Apple" and "Carnival!" on Broadway and a classic turn as a television mother-in-law, died on Tuesday at her home in Rancho Mirage, Calif. She was 93.
Her death was announced by her lawyer, Mark Sendroff.
Ms. Ballard wasn't a top-flight singer, an Oscar-caliber actress or a drop-dead beauty — she once played one of Cinderella's ugly stepsisters — but she made up for any shortcomings with determination and a sheer love of performing.
Even after she became well known, Ms. Ballard was not above taking parts in touring shows and regional theaters, and she rode the nightclub circuit for years, though she found the pace exhausting. In 2000, in her mid-70s, she brought a cabaret show to Arci's Place in Manhattan called "Another Final Farewell Appearance," but there was nothing final about it: Later in the decade she was still hard at work, including in tours of "The Full Monty" and "Nunsense."
For the last 40 years or so of her performing career, wherever she was appearing people would mention one particular item from her lengthy résumé: "The Mothers-in-Law," an NBC sitcom in which she and Eve Arden played neighbors whose children married, turning the newly minted mothers-in-law into partners in meddling.
Ms. Ballard was born Catherine Gloria Balotta in Cleveland on Nov. 20, 1925, the second of four children. Her father, Vincenzo, and her mother, Lena (Nacarato) Balotta, had both immigrated from Italy. Her father laid concrete sidewalks for a living. "He used to take me all over Cleveland showing me his work," Ms. Ballard wrote.
Even as a child she wanted to be an entertainer, and she passed up a scholarship to Cleveland Art College to pursue that goal. She got her first laughs doing impressions, a skill that served her well for decades in her nightclub acts. (She did a pretty good Bette Davis. She and a second impressionist once appeared on the TV game show "To Tell the Truth" along with Davis herself; four masked panelists asked questions and tried to guess which of the three was the real thing. Davis received three votes, but Ms. Ballard got the other.)
Ms. Ballard found an agent in Cleveland and played some local spots, calling herself Kay Ballad; the first name soon acquired an E and the last an R. Then, not yet 20, she was booked on a burlesque tour, doing impressions and skits, which led to a job in Detroit at the Bowery Room, whose owner knew the bandleader Spike Jones and spoke highly of her to him. She hopped a plane to Los Angeles to try to talk her way into Jones's show and succeeded, winding up singing and also, using her high school band skills, playing flute and tuba.
Stage appearances all over the country followed in the next several years. Then, in 1954, she won the part of Helen (as in "of Troy") in "The Golden Apple," an unusual musical with book and lyrics by John Latouche and music by Jerome Moross that drew on "The Iliad" to tell a story set in early-20th-century Washington State.
The show opened at the Phoenix Theater in the East Village and, riding strong reviews, moved to Broadway soon after, running there for 125 performances. Ms. Ballard's part included the song "Lazy Afternoon," which Brooks Atkinson, in The New York Times, called "a triumphant number and the high point of the show." The song was later recorded by many artists, including Barbra Streisand, but Ms. Ballard was the first to release it as a single; on the flip side of that record she introduced another song later made far more famous by others (including, memorably, Peggy Lee and Frank Sinatra), Bart Howard's "Fly Me to the Moon" (then called "In Other Words").
Her next Broadway role, in 1961, was also in an atypical musical: "Carnival!," with music and lyrics by Bob Merrill and a book by Michael Stewart. Unlike "The Golden Apple," though, this one enjoyed a sustained Broadway run, lasting almost two years. Ms. Ballard was the Incomparable Rosalie, a magician's assistant. For one song, "Always, Always You," she was in a basket into which her boss, Marco the Magnificent (James Mitchell), kept thrusting swords.
Breast cancer, diagnosed in 1994, slowed her down only briefly. Her successes after that included an appearance in a widely acclaimed revival of "Follies" at the Paper Mill Playhouse in New Jersey in 1998.
Ms. Ballard, who never married but said she had been engaged four times, leaves no immediate survivors.
Last week, a new documentary about her career by Dan Wingate, "Kaye Ballard — The Show Goes On!," was screened at the Palm Springs International Film Festival.
Despite her name recognition, Ms. Ballard knew that she was never an A-list star. Instead, she viewed herself as being in the honorable second tier of performers who work hard but might not achieve lasting fame. Another was Billy De Wolfe, a character actor and friend who died in 1974, and whom she honored with a brief chapter in her book.
"He's yet another performer who falls into the category of brilliant 'supporting players' who I feel left the public's consciousness much too soon after they passed away," she wrote. "Who knows, perhaps I have a fear that the same thing will happen to me."
Posted by David Lobosco at 12:37 PM No comments:
Labels: actress, comedian, deaths, entertainers, Eve Arden, Kaye Ballard, news
FIVE THINGS YOU DIDN'T KNOW ABOUT BETTY GRABLE
Her movie career is a distant memory now, but there was a time when Betty Grable was the hottest thing going in Hollywood. Born 100 years ago Dec. 18, 1916, Grable was a massive star of the 1940s, one whose airy comedies and musicals helped lighten the national mood during the tense times of World War II. And her famous pinup picture was beloved by countless soldiers and sailors while they served, her sunny smile reminding them of home.
Whether you're a fan from way back or just discovering her recently, here are five facts you might not know about Betty Grable....
1. She was the highest-paid woman in America.
When we say Grable's career was hot, we mean it was sizzling. Throughout the 1940s, she was the top-earning female star in Hollywood, and in 1943, she was named by theater owners as the top box office draw of them all, beating out major competition including Cary Grant, Bing Crosby, and Humphrey Bogart. Her unbeatable star power was thanks in large part to cheerful, fun films including "Springtime in the Rockies," "Coney Island," and "Pin Up Girl." Back then Grable was paid reportedly paid $300,000 a year.
2. She had the ideal legs.
You may have heard that Grable's legs were insured for $1 million by Lloyd's of London – her studio, Twentieth Century Fox, took out the ostentatious policy as a publicity stunt after promoting a dubious beauty contest and naming their top star the winner of the "best legs" competition. But her legs really were the best, according to hosiery specialists. The proportions of her legs – 18.5-inch thigh, 12-inch calf, and 7.5-inch ankle – were considered the ideal of the time.
3. That famous pinup inspired an empire.
Grable's was the most popular pinup photo of the World War II era, surpassing other beloved and beautiful stars like Rita Hayworth and Veronica Lake. The 1943 image is unforgettable – her back to the camera, Grable turns her head and shoulders back to grin at the camera. Her blond hair is piled high on her head, but it's her legs that we notice first, revealed by her bathing suit and enhanced by high-heeled pumps. It sold millions of copies – one out of five U.S. servicemen in World War II owned a copy. One of the many soldiers who stared at it from their overseas bunks was a young Hugh Hefner, who served in the U.S. Army from 1944 to 1946. He later reported that Grable's unforgettable pinup gave him the early germ of the idea for the magazine that would become a media empire, Playboy.
4. She was good friends with Marilyn Monroe.
You're excused if you thought the opposite because Hollywood gossip portrayed the two blond stars as bitter rivals. Grable, 10 years older, was nearing the end of her career as Monroe's star began to rise, and she was supposed to have been jealous of the young and beautiful woman who was being touted as "the next Betty Grable." But when they starred together in 1953's "How To Marry a Millionaire," they didn't clash – in fact, they formed a close friendship. Monroe greatly admired Grable, looking to her as an inspiration for her career. And for her part, Grable found in Monroe a source of friendly support.
5. She was the namesake of an atomic bomb.
On May 25, 1953, at the height of the era of nuclear testing in the Nevada desert, the U.S. detonated a weapon as part of the Upshot-Knothole series of tests. The weapon was named "Grable" – one of many tested nuclear weapons named after people, this one was dubbed in direct homage to the big-screen star. Talk about a bombshell...
Posted by David Lobosco at 10:49 AM 2 comments:
Labels: actress, Betty Grable, musicals
RIP: CAROL CHANNING
Carol Channing's trademark platinum blond hair framed a face that always seemed to be smiling, her wide-eyed innocent style belied a very savvy mind, and her voice was unmistakable. She died Tuesday morning, her publicist told Broadway World. She was 97 years old.
Born in Seattle, Wa., in 1923, Channing's parents were Christian Scientists. She recalls that she got her first glimpse of backstage delivering copies of The Christian Science Monitor to theaters.
"Some nights they're hyper, some nights they're slow, some nights they're sleepy, we have to nurse them; we have to find the way in to communicate with them. ... It's an electric thing for the performer; it's like plugging me in the wall."
"It came over me that I was looking at the stage and backstage of a cathedral, a temple, a mosque, a mother church," Channing wrote in her memoir Just Lucky, I Guess. "I know I'm using adult words to describe a child's feelings, but I don't know how else to tell you this simple reaction of a child to a holy place."
Channing's near religious connection to her audience gave her an astounding amount of energy, and she grew irritated with those who tried to diminish the importance of theater in people's lives.
"Live theater is something that can't possibly die because we're working on their metabolism," said Channing. "Some nights they're hyper, some nights they're slow, some nights they're sleepy, we have to nurse them; we have to find the way in to communicate with them and slowly the anodes and cathodes in and it's an electric thing for the performer; it's like plugging me in the wall."
Channing's first great role was also her first big break as Lorelei Lee in the 1949 original Broadway production of Gentlemen Prefer Blondes. But the role with which Channing will always be identified is Dolly.
It was this role in Hello, Dolly! that Channing loved most because it was life affirming in every sense. She had great respect for the show's creator, Thorton Wilder, and was deeply touched by the character's gradual ascent in this most optimistic of Broadway shows.
As a film actress, she won the Golden Globe Award and was nominated for the Academy Award for Best Supporting Actress for her performance as Muzzy in Thoroughly Modern Millie (1967). Other film appearances include The First Traveling Saleslady (1956) and Skidoo (1968). On television, she appeared as an entertainer on variety shows, from The Ed Sullivan Show in the 1950s to Hollywood Squares. She had a standout performance as The White Queen in the TV production of Alice in Wonderland (1985), and had the first of many TV specials in 1966, An Evening with Carol Channing.
"It's easy to slide downhill, but who are the ones that just won't do it? Who are the diamonds in the rough that go upstream against everything?" said Channing. "That's what it was all about, that's what Thornton Wilder kept writing about."
It was the same lesson she shared with the audiences who watched her perform thousands of times in Hello, Dolly!: "Dolly Gallagher Levi stop talking to your dead husband and rejoin the human race!"
On a personal note, I had the honor to see Miss Channing performing live in Hello Dolly in 1994 when she came to Pittsburgh. It was the best performance I ever saw live. Carol Channing will be missed...
Labels: actress, broadway, Carol Channing, deaths, news, singers
WHAT A CHARACTER: EDMOND O' BRIEN
What I love about character actors is that even though they may not be top billed in a movie or have the most lines, they usually will steal the movie away from the star. One such character actor like this was Edmond O'Brien. O'Brien was born Eamon Joseph O'Brien in Brooklyn, New York, on Septmeber 10, 1915.
He put on magic shows for children in his neighborhood with coaching from a neighbor, Harry Houdini. He performed under the title, "Neirbo the Great" ("neirbo" being "O'Brien" spelled backwards). An aunt who taught high school English and speech took him to the theatre from an early age and he developed an interest in acting. O'Brien began acting in plays at school. After attending Fordham University for six months, he went to Neighborhood Playhouse School of the Theatre on a scholarship. He studied for two years under such teachers as Sanford Meisner; his classmates included Betty Garrett.
O'Brien's subsequent theatre work attracted the attention of Pandro Berman at RKO, who offered him a role as the romantic lead in The Hunchback of Notre Dame (1939). He returned to Broadway to play Mercutio opposite Laurence Olivier and Vivien Leigh in Romeo and Juliet.
RKO offered O'Brien a long term contract. His roles included A Girl, a Guy, and a Gob (1941) and Parachute Battalion (1941). The latter starred Nancy Kelly who O'Brien would later marry, although the union lasted less than a year.
During World War II, O'Brien served in the U.S. Army Air Forces and appeared in the Air Forces' Broadway play Winged Victory by Moss Hart. He appeared alongside Red Buttons, Karl Malden, Kevin McCarthy, Gary Merrill, Barry Nelson, and Martin Ritt. When the play was filmed in 1944, O'Brien reprised his stage performance, co-starring with Judy Holliday. He toured in the production for two years, appearing alongside a young Mario Lanza.
In 1948, O'Brien signed a long-term contract with Warner Bros., who cast him in the screen version of Lillian Hellman's Another Part of the Forest. This starred Fredric March, who also appeared with O'Brien in An Act of Murder(1948).
He was then cast as the undercover cop in White Heat (1949) opposite James Cagney. "He [Cagney] said he had only one rule," O'Brien noted. "He would tap his heart and he would say, "Play it from here, kid." He always did and I believe it's the best rule for any performer. He could play a scene 90 ways and never repeat himself. He did this to keep himself fresh. I try to do this whenever possible. O'Brien's role in this film was my personal favorite of his career, and it is one of my all-time favorite movies.
Following an appearance in Backfire (1950), his contract with Warner Bros. ended. Struggling with his weight and health problems, his career in movies suffered. He did more work in the 1950s on television. However, O'Brien hit the plateau of his moving actor when he won a Best Supporting Oscar for his role in 1955's The Barefoot Contessa. By the mid 1960s, his film career was winding down. Fantastic Voyage was his only movie in 1966, with two foreign flicks in 1967.
O'Brien seemed to have aged dramatically, looking much older than his 50-something years. He was still guest starring on episodic television, but made only one small, indie film over the next two years.
In 1972, he had a small role in They Only Kill Their Masters with James Garner. Orson Welles had cast him in a similarly minor role in his The Other Side of the Wind, which remained unfinished for decades. A few years ago, Peter Bogdanovich (who was an actor in the film) was trying to complete and release the film but the rights were split up between three competing parties. He did complete and edit the film but distribution is now being held up by the Iranian government, which owns the rights.
He made one more film, 99 and 44/100% Dead, a low-budget gobbler. Now on DVD, most critics originally hated the film but today there are a few fans. One of the latter calls it "mind-bending psychedelic neo-noir" and "pop art gangster satire." TV Guide describes it as "a perplexing mix of styles (that) clash and sputter." Variety is more vehement. "(It) starts like a house on fire, with directorial style to burn, but self-incinerates within the first half hour . . . a sophomoric and repulsive screenplay." O'Brien's role is described as "an elderly mobster" who hires hit man Richard Harris to eliminate his rival. Characterizing O'Brien as elderly at 59 inadvertently revealed the ravages of his illnesses.
By this time, the Alzheimer's disease which ultimately claimed him was becoming much more apparent. Little is known about his life during these years, but his children in later interviews says that the disease ravaged O'Brien quickly. Then, the Motion Picture Country Home in Woodland Hills did not accept patients with any kind of mental disease, so O'Brien lived out his final years in a rest home in Santa Monica. He died on May 9, 1985 at 69 and is buried in Culver City, CA. It was a sad end to a versatile and gifted character actor...
Labels: actors, character, Edmond O'Brien, James Cagney
HEALTHWATCH: JERRY STILLER
Actor Jerry Stiller is doing OK after a medical scare Wednesday night put him in the hospital.
The 91-year-old "Seinfeld" and "King of Queens" star was taken to a New York City medical facility after the person he was with grew concerned about his health. But after a complete evaluation, doctors said all was well.
"There are no signs of a stroke. He's resting and they're going to send him home in a couple days. He's totally fine," a source close to the family told the Daily News.
Stiller's family was with him Wednesday night, the source added.
The beloved comic is the father of fellow actors Ben Stiller and Amy Stiller. His longtime wife and comedy partner, Anne Meara, died in 2015.
Stiller's most famous for portraying two offbeat TV fathers: Frank Costanza, dad to the hapless George, played by Jason Alexander in "Seinfeld," and later Arthur Spooner, parent of Leah Remini's character Carrie Heffernan, on "The King of Queens."
Posted by David Lobosco at 12:06 PM 2 comments:
Labels: actors, comedian, healthwatch, Jerry Stiller
THE FINAL WORD ON YLENIA CARRISI
While searching for updates on the disappearance of Tyrone Power's granddaughter 25 years ago, I came across this story by the investigator from 2017...
I still receiving many e-mails from different part of the world in different languages in reference to Ylenia Carrisi case,and once for all I will make this statement I will NOT give out ANY information on Ylenia case. And this is the last time that I will give you my final report on this case, therefore read it very careful with an open mind and I am sure you will get the answer to your question's.:
Getting lost in New Orleans has long had a certain cachet. The people who lives there saying the city is unique, the food spicier, the music livelier, the mysteries stranger. But the mystery of Ylenia is distinctive even by New Orleans standards.
The main characters are a former American matinee idol's granddaughter and a mesmerizing street musician. The scene is the waterfront and the streets of the French Quarter. Swirling in the background is the blend of Spanish, French and African cultures that has drawn writers like Lafcadio Hearn and William Faulkner and apparently Ylenia working on her book.
The Italian news media, which has recounted every twist of the mystery on newscasts and in newspapers news full of incorrect information's and defamatory accusation's including a possible sic relation with Masakela and the uses of narcotics from Ylenia all shallow low blows to increment the sale of a magazine. In addition they (Italian Media) even hinted of voodoo. Semi celebrity in Italy, simply horrible individuals like GENTE, STOP, CHI L'HA VISTO and the surrounding sharks in the picture like Roberto Fiasconaro only there for the news and the $.
Ylenia Carrisi, a 23-year-old blonde with green eyes, disappeared on Jan. 6, a week after arriving in New Orleans, leaving behind her passport and some baggage. That night A young woman, whose body has never been found, jumped into the Mississippi River at the edge of the French Quarter and vanished. The questions she left behind are still unanswered.
Ylenia is a minor television celebrity in Italy, for a short time a counterpart of Vanna White on an Italian game show. But she is best known as the daughter of two Italian singers, Al Bano and Romina Power, and as the granddaughter of the American actor Tyrone Power and his actress wife, Linda Christian.
Ylenia and her parents came to New Orleans on vacation last July, says Fabrizio Mazza, the Italian Consul in New Orleans, and Ylenia meat again street musician, Alexander Masakela, a 54-year-old cornet player Individual that already meet the Carrisi and Ylenia in Italy at the Carrisi city of Cellino with a Jamaican accent. Enchanted by the city and apparently by Masakela, Ylenia stayed behind when her parents went on to Florida, saying she wanted to continued write her book.
According to our investigative discovery Ylenia rushed to Florida two days later, telling her parents that she feared that two men were trying to drug and kill her.
Nevertheless, Ylenia, who was on leave from her studies at the University of London, returned to New Orleans on Dec. 30. Our investigative discovery quoted that Romina as saying that her daughter wanted to "find characters for a book she was writing." And no fear for her daughter to return after Ylenia clearly stated "two men trying to drug me and kill me" No Police report nothing!!
Then Ylenia mingled with street musicians and the homeless, and took notes. She stayed with Masakela in a scruffy hotel on St. Charles Street, five blocks from the French Quarter, where Masakela played his cornet for donations.
Mike Stark, who owns a French Quarter mask and hat store called The Little Shop of Fantasy, said that some homeless people he knows told him that Ylenia worked "very hard at being a street person."
On Jan 6. At 11 P.M., A young woman jumped into the Mississippi River near the Aquarium of the Americas, on the edge of the French Quarter. Shortly before, she had told a security guard, Albert Cordova wearing very thick vision glasses "I belong in the water." The woman swam through the fast brown currents about 100 yards toward the middle of the river.
A barge then came by, making waves. The woman screamed for help and then vanished. The Coast Guard searched 90 miles of the river, almost to the Gulf of Mexico, and found only the body of an unidentified man.
The security guard, Albert Cordova, has uncertainly identified photos of Ylenia as depicting the woman who spoke to him.
According to our investigations and interview's local residences told us there is a magic about that river. People who've been drinking too much can believe, 'I can swim that damn thing.' "
Ylenia parents last heard from their daughter on Jan. 1, and despite her deceptive drowning, they say they fear she is being held hostage. Why??
On Feb. 18 they issued a statement from Switzerland, saying, "The investigations to find our daughter alive, and probably held against her will, are actively being pursued." It also said "there have been numerous and reliable sightings worthy of pursuit." That very week, for example, came an unconfirmed report that Ms. Carrisi had been seen in St. Augustine, Fla. But an NCIC was issued to Ylenia Maria Sole Carrisi that # M705944984 number that later on will disappeared.
Masakela has not been accused of any wrongdoing, but Ylenia parents say they are suspicious of him. He had "some kind of power over her, Romina said at a New Orleans news conference after her daughter vanished.
Masakela has no official address and has proved elusive in recent weeks, but in an interview he said Ylenia "I believe she is safe."
The police say only that the investigation is continuing as an inactive case!
During our investigations in New Orleans we interview many residents, who note that it would not be the first time a stranger has come to the city and disappeared from her previous life.
And many including laws officers told me New Orleans is "a magical town" that attracts many people "who are trying to escape from wherever they've been." This what append to Ylenia? That she was trying to escape from wherever she's been? We know and we can prove that the jumping into the river was the biggest untruth story ever told. And in addition Ylenia body was never found therefore my friends no body Ylenia Maria Sole Carrisi she is alive and I be acquainted with this facts and why all this happened? Remember some peoples trying to escape from wherever they've been and live a new life! And I am ok with this now that I know the actuality of the facts.
Frank Crescentini
California, State License PI # 18368
Missing Persons, Evidence Investigator
AXJ MEMBER and CEO in charge of Cold Cases, Missing Children or Adults
Labels: disappearance, Tyrone Power, Ylenia Carrisi
MUSIC BREAK: JUNE CHRISTY - WHAT DID I HAVE THAT I DON'T HAVE
Posted by David Lobosco at 3:56 PM 4 comments:
Labels: June Christy, music break, What Did I Have That I Don't Have
RIP: CHRISTINA MCGUIRE
Christine McGuire, the eldest of the singing McGuire Sisters, who struck gold on the pop charts in the 1950s with "Sincerely," "Sugartime" and other close-harmony hits that won young American hearts not quite ready for rock ′n' roll, died on Dec. 28 at her home in Las Vegas. She was 92. It was not reported until January 4th.
Ms. McGuire's family confirmed her death in a statement released on Friday. No cause was given.
With their identical dresses and hairdos, synchronized movements and sweetly innocent voices, the McGuire Sisters — Christine, Dorothy and Phyllis — were the musical embodiment of popular culture in their day, singing for audiences who watched "Your Hit Parade" on television and listened to Perry Como, Patti Page and the lingering postwar strains of the big band era.
After appearing on "Arthur Godfrey's Talent Scouts" in 1952, the McGuire Sisters soared to national fame. They were regulars on Mr. Godfrey's morning shows for six years and remained one of the nation's most popular vocal groups into the 1960s, singing on television, in nightclubs and on records that sold millions, even as teenage rebellion, Elvis Presley and rock ′n' roll transformed the music world.
The fashion-conscious Christine chose the sisters' matching wardrobes, Dorothy kept track of finances, and Phyllis did most of the talking for the trio. Their million-selling records included two No. 1 hits, "Sincerely" in 1955 and "Sugartime" in 1958. Like other white performers of their generation, they recorded what critics called blander (but often better-selling) covers of rhythm-and-blues hits by black artists.
In 1965, Phyllis McGuire's idealized image was shattered by a grand jury appearance that exposed her longtime affair with a Chicago mobster, Sam Giancana. By then, the sisters' popularity had begun to fade, and in 1968 the trio broke up, Christine and Dorothy to raise families and Phyllis to perform solo.
But they made a successful comeback in 1985, and went on to perform for almost two decades at casinos and clubs in Las Vegas, Atlantic City and elsewhere, capitalizing on the nostalgia of fans who aged with them. Their last gig was a 2004 PBS special, "Magic Moments: The Best of '50s Pop."
The McGuire Sisters performing a medley of their hits on PBS in 2004.CreditCreditVideo by LMUK
Ruby Christine McGuire was born in Middletown, Ohio, on July 30, 1926, to Asa and Lillie (Fultz) McGuire. Her father was a steelworker and her mother a minister of the First Church of God in Miamisburg, Ohio.
Christine McGuire was married four times. Her marriage to Harold Ashcraft in 1942 ended in divorce in 1950. They had two sons, Harold and Asa. In 1952 she married John Teeter. They were divorced in 1962. Her 1967 marriage to Robert H. Spain, a financier, also ended in divorce. In 2002 she married David Mudd, a Long Island vintner, who died in 2011. Her son Asa Ashcraft died at 68 in 2015. Dorothy McGuire died in 2012.
Ms. McGuire is survived by her son, Harold Ashcraft; her sister, Phyllis; and many grandchildren and great-grandchildren. One grandchild, Cpl. Evan Asa Ashcraft, was killed in the Iraq war in 2003 when an Army vehicle he was in was hit by a rocket-propelled grenade near the northern city of Mosul.
The McGuire Sisters performed for Presidents Richard M. Nixon, Gerald R. Ford, Jimmy Carter, Ronald Reagan and George H. W. Bush and for Queen Elizabeth II. They entered the National Broadcasting Hall of Fame in 1994, the Vocal Group Hall of Fame in 2001 and the Hit Parade Hall of Fame in 2009...
Labels: Christina McGuire, deaths, McGuire Sisters, news, singers
RECENTLY VIEWED: GAME NIGHT
I love having HBO, because that network shows a lot of movies that I missed in the theater. With a busy schedule, I may only see half a dozen movies in the theater. One movie that I wanted to see when it was new with Game Night. Unfortunately, that film came and went in theaters, but I got to catch it on HBO. Game Night is a 2018 American dark comedy film directed by John Francis Daley and Jonathan Goldstein and written by Mark Perez. It stars Jason Bateman and Rachel McAdams, and follows a group of friends whose game night turns into a real-life mystery after one of them is kidnapped by apparent burglars. The film's supporting cast includes Billy Magnussen, Sharon Horgan, Lamorne Morris, Kylie Bunbury, Jesse Plemons, Michael C. Hall, and Kyle Chandler. Warner Bros. Pictures released the film on February 23, 2018. It was a commercial and critical success, grossing $117 million worldwide and receiving praise for its dark humor and performances.
Six close friends meet each week for a game night involving board games, charades and pop culture trivia quizzes. Being the most competitive of the bunch, Max (Jason Bateman) and his wife Annie (Rachel McAdams), who seem to be a perfect match in every way, usually win every time. However, their marriage is on rocky ground as Annie fears that Max doesn't want to have children. When Max's shady brother Brooks (Kyle Chandler) reappears after a long mysterious absence and suggests that they have their next gathering at his place, no one expects that their weekly game night is about to go to the next level as Brooks organizes a full blown murder mystery party complete with actors as criminals and cops for them.
However, when Brooks is violently kidnapped in front of everyone, it turns out that the game is all too real. Now, Max, Annie, their womanizing dimwitted friend Ryan, his domineering Irish date Sarah, and their childhood friends Michelle and her husband Kevin, who's obsessed with finding out with which mysterious celebrity Michelle cheated him on once, must join forces and their wits to rescue Brooks from two dangerous rival criminals who seemingly want his head. Unfortunately, they'll also need help from their creepy introverted next door neighbor Gary, a grieving divorcee cop who desperately wants to be their friend.
The best of the movie (and any movie for that matter) is Jason Bateman. He is every average married white man! Another high point were the friends Michelle and Kevin. Kevin is obsessed with finding out what famous person his wife slept with. The gag runs through the whole movie, and end hilariously. At times the movie sort of drags, but the dark comedy in the film is great. When Max and Annie try to figure out how to get a bullet out, it is like they are looking for directions on how to make a turkey or something. This is a good movie to see on HBO. I might not have been as satisfied if I saw the film in the theater, but it is definitely worth your time...
Labels: comedy, Game Night, Jason Bateman, Kyle Chandler, movie review, Rachel McAdams, recently viewed
MUSIC BREAK: JUNE CHRISTY - WHAT DID I HAVE THAT I...


← Michelle Tells Crowd Barack Was Great President, Gets Told To Shut Up & Sit Down!
There are times I forget the Republican Party won the 2016 election. The reason is simple: because most of the establishment GOP continues the loveable loser act. The Republicans appear to be appealing to some invisible referee who will wade into the great debate between those on the American Right and those on the Satanic Left and adjudicate the arguments fairly.
Sorry, there is no referee. There never was. Besides, if one were to be appointed, then that referee most assuredly would be a leftist (most "experts" are these days). President Trump was not wrong when he cautioned his supporters in 2016 about the rigged nature of the present political system in the United States. It was by sheer force of Trump's persuasive personality, and the need for a human wrecking ball like Trump among the electorate, that such a rigged political system did not elevate the unworthy Hillary Clinton to the presidency.
What the Republicans face today is more of a free-for-all WWE style wrestling match for power between themselves and the Democrats—one in which hair-pulling, lying, and a handful of other uncouth actions are not only necessary, but encouraged. Thus, the rules of reality TV are more apt than those of the old Oxford Debating Society. But, the Republicans have not sent their best fighters to the field. Instead, they have deployed the pampered princes of the decadent Emerald City. These "leaders" neither understand their supporters' desire to win nor do they grasp the nature of the match. This lack of understanding has created friction within the ranks of the GOP, as it faces off against a united—and radicalized—Leftist foe.
Not only is this tweet the embodiment of everything wrong with the GOP today, it also shows why, if not for Trump, the Right would be consigned to permanent minority status (which is how most Washington Republicans seem to prefer it).
If elected Republicans stood together the way the Democrats somehow manage, there is no policy that the GOP could not push through. Yet the Republicans struggle because their leadership is weak and malleable.
Former colleagues of mine from Capitol Hill argue that the Republicans on the Judiciary Committee are only as strong as its weakest member (in this case, Republican Senator Jeff Flake of Arizona, who has made it his mission to stymie Trump's agenda at every turn). Senators Lisa Murkowski (R-Alaska) and Susan Collins (R-Maine) are also concerned about how women voters will view their handling of sexual assault charges made by a former high school classmate of Brett Kavanaugh. In fact, most elected Republicans (especially in the leadership) are petrified of being castigated as anti-women in the age of #MeToo.
In their fear, they are willing to be led around by the nose by the minority party on Capitol Hill. Too many seem like they don't want to win—at least they don't want to win if it means winning the way that Donald Trump wins. The Democrats don't care how they win.
Have you ever wondered how all but two items on President Trump's legislative agenda have failed to pass, despite the GOP allegedly holding the dominant place in Washington? This failure is not the fault of the Left. It's entirely the fault of weak-kneed Republicans.
Are you expecting the elected GOP to pass a repeal bill of Obamacare? No can do, Republican voters! Despite campaigning on that promise, the GOP now tells us that the American people would revolt because healthcare is now an entitlement, just like Medicare, Social Security, and Medicaid, and we'll be labeled by the Left as being extremists (as if there is anything they might plausibly do to prevent that labeling). Want the GOP to pass a spending bill that actually reduces federal spending? Not going to happen. Have to keep those handouts flowing in the vain hope that the Democrats won't be mean to us!
Now, the RNC is reluctant to give vital campaign funds to any overtly pro-Trump candidate in "purple" congressional districts. Better to push forward Paul Ryan clones who are destined to lose. Until the Republican voters band together and support only those candidates who are committed to winning on the issues that propelled Trump's historic victory, the GOP will be the conduit rather than the blockade for Democratic Party victories.


text:
PART 2 SGAELIC MEDIUM EDUCATION
Assessments: primary educationS
7Assessment requestsS
(1)A person who is the parent of a child who is under school age and has not commenced attendance at a primary school may request the education authority in whose area the child is resident to assess the need for Gaelic medium primary education (in this Part, "GMPE").
(2)A request under subsection (1) must—
(a)relate to only one child (in this Part, the "specified child"), and
(b)set out, or be accompanied by, evidence that there is a demand for GMPE from parents of other children who are—
(i)resident in the area of the authority to which the request is made, and
(ii)in the same year group as the specified child.
(3)A request under subsection (1) may set out, or be accompanied by, evidence that there is a demand for GMPE from parents of other children who are—
(a)resident in the area of the authority to which the request is made, and
(b)in a different year group in relation to the specified child.
(4)In this Part, "year group", in relation to an education authority, means the group of children under school age all of whom, on commencing primary education at a primary school in the area of the authority, will be in the same yearly stage of primary education; and references in this Part to a child being in the same or a different year group as or in relation to other children are to be construed accordingly.
(5)The Scottish Ministers may by regulations make further provision about requests under subsection (1).
(6)Regulations under subsection (5) may in particular include provision for or in connection with—
(a)the form of the request and the manner in which it is to be made,
(b)information (including evidence in addition to that mentioned in subsection (2)) that is to be set out in, or accompany, the request,
(c)evidence as mentioned in subsections (2) and (3).
I1S. 7 in force at 1.8.2016 for specified purposes by S.S.I. 2016/192, reg. 2, sch.
I2S. 7 in force at 1.2.2017 in so far as not already in force by S.S.I. 2016/386, reg. 2, sch.
8GMPE assessment areasS
(1)This section applies where an education authority receives a request under section 7(1).
(2)The authority must designate an area within the area of the authority in respect of which the need for GMPE is to be assessed.
(3)An area designated under subsection (2) is referred to in this Part as a "GMPE assessment area".
(4)In considering what area to designate as a GMPE assessment area, an authority must—
(a)so far as reasonable, seek to accommodate—
(i)demand for GMPE evidenced in the request or contained in evidence accompanying the request, or
(ii)any other demand for GMPE of which the authority is aware in respect of children resident in the area of the authority who are under school age and have not commenced attendance at a primary school, and
(b)take into account factors which affect, or might affect, how any demand for GMPE could reasonably be met in the GMPE assessment area.
(5)In taking those factors into account, the authority must have regard in particular to—
(a)any guidance under section 9 of the Gaelic Language (Scotland) Act 2005,
(b)accessibility in relation to the provision (or potential provision) of GMPE in the GMPE assessment area, and
(c)the residence of children who are under school age and have not commenced attendance at a primary school in respect of whom there is a demand for GMPE as mentioned in subsection (4)(a).
I3S. 8 in force at 1.2.2017 by S.S.I. 2016/386, reg. 2, sch.
9Initial assessmentsS
(1)This section applies where an education authority receives a request under section 7(1) from the parent of a specified child.
(2)The authority must make an assessment (an "initial assessment") of the need for GMPE—
(a)in relation to the GMPE assessment area designated under section 8(2), and
(b)in the specified child's year group.
(3)In making an initial assessment, the authority must take into account any information it has which—
(a)relates to the demand for GMPE in the GMPE assessment area from parents of children—
(i)who are resident in the GMPE assessment area, and
(ii)who are in the same year group as the specified child, and
(b)indicates that there is a demand for GMPE in the GMPE assessment area from parents of children—
(ii)who are in a different year group in relation to the specified child.
(4)The information mentioned in subsection (3) includes information set out in or accompanying the request.
(5)Where, following an initial assessment in relation to a GMPE assessment area—
(a)the authority is satisfied that the condition in subsection (6) is met, the authority must determine that there is a potential need for GMPE in the area,
(b)the authority is not satisfied that that condition is met, the authority must determine that there is no potential need for GMPE in the area.
(6)The condition is that the specified child and the children in respect of whose parents the authority has information as mentioned in subsection (3)(a) number 5 or more.
(7)The Scottish Ministers may by regulations—
(a)amend subsection (6) so as to substitute for the number of children for the time being specified there a different number,
(b)provide for the number of children for the time being specified in that subsection to be read as a different number in the application of that subsection to such education authorities as may be specified in the regulations.
(8)This section is subject to section 11.
10Duties of education authorityS
(1)Where an education authority makes a determination under section 9(5)(a) in relation to a GMPE assessment area, the authority must—
(a)carry out a full assessment of the need for GMPE in the area in accordance with section 12, or
(b)take such steps as are necessary to secure the provision of such GMPE in the area as it considers appropriate.
(2)Where an education authority makes a determination under section 9(5)(b) in relation to a GMPE assessment area, the authority must—
(a)take no further action to secure the provision of GMPE in the area so far as relating to the request in respect of which the determination is made,
(b)carry out a full assessment of the need for GMPE in the area in accordance with section 12, or
(c)take such steps as are necessary to secure the provision of such GMPE in the area as it considers appropriate.
(3)An education authority must, no later than 6 weeks after receiving the request in respect of which a determination mentioned in subsection (1) or (2) is made, send to the persons mentioned in subsection (4) notification of––
(a)its determination,
(b)its decision to act as mentioned in subsection (1)(a) or (b) or, as the case may be, subsection (2)(a), (b) or (c), and
(c)the reasons for its determination and decision.
(4)The persons are—
(a)the parent who made the request,
(b)parents of other children as mentioned in section 7(2), and
(c)where the request set out, or was accompanied by, evidence from parents of other children as mentioned in section 7(3), those parents.
(5)An education authority must, before the expiry of the period mentioned in subsection (3), publish on its website—
(a)its determination as mentioned in subsection (1) or (2),
(b)its decision to act as mentioned in subsection (1)(a) or (b) or, as the case may be, subsection (2)(a), (b) or (c),
(c)the reasons for its determination and decision, and
(d)information about the GMPE assessment area in respect of which its determination was made.
(6)For the purposes of complying with the duty imposed by subsection (1)(b) or (2)(c), the authority must ensure that the GMPE is provided in the GMPE assessment area within such period after making the determination as is reasonable in all the circumstances.
I5S. 10 in force at 1.2.2017 by S.S.I. 2016/386, reg. 2, sch.
11Requests that need not be consideredS
(1)Subsection (2) applies where—
(a)a request under section 7(1) (the "original request") is made,
(b)in pursuance of the original request, the education authority that receives the original request carries out an initial assessment under section 9 in relation to a GMPE assessment area,
(c)the authority receives another request under section 7(1) (a "further request") which would (but for subsection (2)) require the authority to carry out an initial assessment in relation to the GMPE assessment area, and
(d)the further request is received within the period of 2 years beginning with the day on which the original request is received.
(2)The education authority need not comply with the duty imposed by section 9(2) in relation to the further request (subject to subsection (4)).
(3)For the purposes of this section, it is irrelevant—
(a)whether the further request—
(i)is made by the same person who made the original request or by another person, or
(ii)is made by a parent of a child in the same year group as, or a different year group from, the child whose parent made the original request, or
(b)whether GMPE is being provided in the GMPE assessment area to which the requests relate.
(4)Despite subsection (2), the Scottish Ministers may, in such cases as they consider appropriate, direct an education authority to comply with the duty imposed by section 9(2) in relation to the further request.
12Full assessmentsS
(1)This section applies where an education authority—
(a)receives a request under section 7(1), and
(b)decides, under section 10(1)(a) or (2)(b), to carry out a full assessment of the need for GMPE in a GMPE assessment area.
(2)The authority must—
(a)notify the persons mentioned in subsection (3) of the request,
(b)provide those persons with information about the request,
(c)provide those persons with the information the authority took into account under section 9(3) in making an initial assessment, and
(d)seek the views of those persons on—
(i)the information mentioned in paragraphs (b) and (c), and
(ii)the authority's determination under section 9(5).
(a)Her Majesty's inspectors of schools (that is to say, the inspectors of schools appointed by Her Majesty under the 1980 Act),
(b)Bòrd na Gàidhlig,
(c)the body known as Comann nam Pàrant,
(d)the body known as the National Parent Forum of Scotland.
(4)The persons mentioned in subsection (3)(a) and (b) must—
(a)provide the views sought under subsection (2)(d), and
(b)do so before the end of the period of 4 weeks beginning with the day on which the views are sought.
(5)Subject to subsection (7), the education authority must decide whether to secure the provision of GMPE in the GMPE assessment area.
(6)In making a decision under subsection (5), the education authority must have regard to—
(a)views provided by virtue of subsection (2)(d) before the end of the period of 4 weeks beginning with the day on which the views are sought,
(b)any guidance under section 9 of the Gaelic Language (Scotland) Act 2005,
(c)information that the education authority took into account in making an initial assessment under section 9(2),
(d)in relation to the demand for GMPE mentioned in section 9(3) from parents of children, where those children reside,
(e)any information the education authority has relating to the demand for GMPE in the area of the authority from parents of children who are under school age and have not commenced attendance at a primary school,
(f)where GMPE is provided in the area of the education authority, or the area of another education authority adjacent to that area, the location of that provision,
(g)the extent to which—
(i)children resident in the area of an education authority adjacent to the area of the education authority mentioned in subsection (5) could access GMPE in the GMPE assessment area,
(ii)children resident in the GMPE assessment area could access GMPE in the area of an education authority adjacent to the area of the education authority mentioned in subsection (5),
(h)the availability and suitability of any premises in the education authority's area in which GMPE is being, or could reasonably be, provided,
(i)the costs of providing GMPE in the GMPE assessment area,
(j)the potential to assign or recruit persons to teach GMPE in the GMPE assessment area,
(k)any Gaelic language plan published by the education authority under section 5(9) of the Gaelic Language (Scotland) Act 2005 in force at the time of making the decision mentioned in subsection (5),
(l)the potential to develop or increase—
(i)the use of the Gaelic language in the education authority's area, and
(ii)the carrying out of activities relating to the Gaelic language in the authority's area.
(7)The education authority must decide to secure the provision of GMPE in the GMPE assessment area unless, having regard to the matters mentioned in subsection (6), it would be unreasonable to do so.
(a)modify subsection (3),
(b)modify subsection (6) so as to amend, remove or add to the matters for the time being mentioned in that subsection,
(c)make such other modifications of this section as the Scottish Ministers think necessary or expedient in consequence of any modification of subsection (3).
13Procedure following full assessmentS
(1)This section applies where an education authority has carried out a full assessment of the need for GMPE in a GMPE assessment area in accordance with section 12.
(2)The authority must prepare a report setting out—
(a)its decision on whether or not to secure the provision of GMPE in the area,
(b)the reasons for its decision with reference to—
(i)each of the matters mentioned in section 12(6), and
(ii)its duty under section 12(7), and
(c)where the decision is to secure the provision of GMPE in the area, the period within which the authority considers it would be reasonable for GMPE to be provided in the area.
(3)The authority must send a copy of the report to—
(a)the parent who made the request in relation to which the full assessment was carried out,
(c)where the request contained, or was accompanied by, evidence from parents of other children as mentioned in section 7(3), those parents.
(4)The authority must publish the report on its website.
(5)Publication of the report under subsection (4) must be no later than 10 weeks after the authority decides to carry out the full assessment.
(6)Where the authority decides to secure the provision of GMPE in the GMPE assessment area, it must take such steps as are necessary to secure the provision of such GMPE in the area as it considers appropriate.
(7)In taking those steps, the authority must ensure GMPE is provided in the GMPE assessment area within such period after making the decision mentioned in subsection (6) as is reasonable in all the circumstances.

redpajama_set_name: RedPajamaCommonCrawl


text:
More Horticulture, Pakistan Agriculture News
May 12, 2019, 11:00 am May 12, 2019 403
KARACHI: Owing to a lack of innovation, the dates industry of Pakistan, which is the fifth largest producer in the world, is on a downward trajectory.
In 1999, Pakistan produced 540,000 tonnes of dates annually. Instead of growing, this number went down to 467,000 tonnes in 2015-16, according to data collected by the Trade Development Authority of Pakistan (TDAP).
Balochistan is the major producer of dates in Pakistan as it produces 45% of the total production. Sindh stands at the second place with 43% share, followed by Khyber-Pakhtunkhwa (K-P) with 2% and Punjab with 1%.
Balochistan's Turbat district produces 100,000 tonnes of dates, almost one-fourth of the total production of Pakistan, while Panjgur produces 83,000 tonnes. On the other hand, Sindh's Khairpur district produces 237,000 tonnes, which is 42% of the total production of the country. "This makes Khairpur a densely palm populated area," said a source at the Sindh Enterprise Development Fund (SEDF). In 2016, Pakistan exported dates worth $102 million, which could go up to $200 million, said Mir Mohsin Bullo, Assistant Manager TDAP Sub-Regional Office, Sukkur.
"The government needs to pay urgent attention to production, processing and quality enhancement, preservation, research and marketing to save and ensure growth of this potent source of foreign exchange," he wrote in his report in October 2017. Yet, these issues still persist to date.
There are myriad of problems, resulting in a decline in Pakistan's date production, according to the SEDF source. A palm tree, which is the source of date production, grows in seven to eight years and produces the fruit at its optimal level for 25 years, after which its production starts declining, therefore, the tree needs to be replaced.
READ MORE: Food group exports increase by 17.52pc
The 300 varieties of dates, which Pakistan produces, are also 50 years old and are not in great demand internationally, he said, adding due to that prices of Pakistani dates range between Rs100 and Rs250 per kg in the international market whereas other date varieties are sold for up to Rs700.
Due to the lack of innovation, Pakistan is losing potential revenue. Pakistan exports fresh dates to the US, Canada, France, Bangladesh, Indonesia, Malaysia and the UAE, but these comprise only 10% of total production, while most of the dates are dried and exported to India, which is a great loss.
The scope of value addition and profitability is immense. With a little value addition, dates can be used to make syrup, juice, paste, vinegar and so on, the source said.
"Instead of value addition, Pakistani traders push down the value of their dates by drying them," he said. Pakistan mainly exports dates to India, which itself is a big producer, but due to immense consumption of dates and coconut in religious activities, India also imports dates from Pakistan. "These days due to tensions between the two countries, India has slapped 200% duty on Pakistani products, which is badly impacting the export of Pakistani dates," said Sukkur Chamber of Commerce and Industry Vice President Gurdas Wadhwani.
"Dried dates cause a 60% weight and value loss," said the SEDF source. Pakistan does not have processing units or cold storages, especially for dates, so drying them remains the only option. Dates contain more heat, so they need special cold storages, but Pakistan does not have even one such facility.
READ MORE: Cost-Cutting Tips for Horse Farm Owners
Pakistan does not have a storage system due to which date growers cannot save their crop and go for the second best option, which is to dry the dates, and that too is carried out in a very unhygienic way, and not through mechanised dryers. "If you travel to Khairpur, you will see dates lying at the roadside. Due to this unhygienic way of drying, dates carry about 21% aflatoxin, a family of toxins produced by certain fungi on agricultural crops, while internationally only 2.3-7.15% is acceptable," stated the source.
Mechanised dryers are not difficult to build, he said, adding students of Karachi University and IBA have often presented their prototypes, which can dehydrate 1,000 to 2,000 dates. This can be taken to a massive level if the government or private sector supports these students. Pakistan's dates varieties are over 50 years old, which do not look or taste good, unlike the juicy Middle Eastern dates. Even Pakistanis themselves do not prefer local dates, due to which the country, despite being the fifth largest producer, imports dates in Ramazan, the source added.
Pakistan's first dates dehydration plant and cold storage is going to be built soon by a private firm in the Khairpur Special Economic Zone (SEZ). The Sindh government is offering opportunities to the businessmen who want to set up the processing and storage facilities. Date processing plants can ideally be established at the Khairpur SEZ, developed by the district administration of Khairpur under the supervision of Sindh investment department.


text:
(function () {
var _p = {
    r: function(index) {
        if (_p[index].inited) {
            return _p[index].value;
        }
        if (typeof _p[index].value === "function") {
            var module = {
                exports: {}
            }, returnValue = _p[index].value(null, module.exports, module);
            _p[index].inited = true;
            _p[index].value = returnValue;
            if (returnValue !== undefined) {
                return returnValue;
            } else {
                for (var key in module.exports) {
                    if (module.exports.hasOwnProperty(key)) {
                        _p[index].inited = true;
                        _p[index].value = module.exports;
                        return module.exports;
                    }
                }
            }
        } else {
            _p[index].inited = true;
            return _p[index].value;
        }
    }
};

//src/expose.js
_p[0] = {
    value: function(require, exports, module) {
        module.exports = window.HotBox = _p.r(1);
    }
};

//src/hotbox.js
_p[1] = {
    value: function(require, exports, module) {
        var key = _p.r(2);
        var KeyControl = _p.r(3);
        /**** Dom Utils ****/
        function createElement(name) {
            return document.createElement(name);
        }
        function setElementAttribute(element, name, value) {
            element.setAttribute(name, value);
        }
        function getElementAttribute(element, name) {
            return element.getAttribute(name);
        }
        function addElementClass(element, name) {
            element.classList.add(name);
        }
        function removeElementClass(element, name) {
            element.classList.remove(name);
        }
        function appendChild(parent, child) {
            parent.appendChild(child);
        }
        /*******************/
        var IDLE = HotBox.STATE_IDLE = "idle";
        var div = "div";
        /**
     * Simple Formatter
     */
        function format(template, args) {
            if (typeof args != "object") {
                args = [].slice.apply(arguments, 1);
            }
            return String(template).replace(/\{(\w+)\}/g, function(match, name) {
                return args[name] || match;
            });
        }
        /**
     * Hot Box Class
     */
        function HotBox($container) {
            if (typeof $container == "string") {
                $container = document.querySelector($container);
            }
            if (!$container || !($container instanceof HTMLElement)) {
                throw new Error("No container or not invalid container for hot box");
            }
            // 创建 HotBox Dom 解构
            var $hotBox = createElement(div);
            addElementClass($hotBox, "hotbox");
            appendChild($container, $hotBox);
            // 保存 Dom 解构和父容器
            this.$element = $hotBox;
            this.$container = $container;
            // 标示是否是输入法状态
            this.isIME = false;
            /**
         * @Desc: 增加一个browser用于判断浏览器类型,方便解决兼容性问题
         * @Editor: Naixor
         * @Date: 2015.09.14
         */
            this.browser = {
                sg: /se[\s\S]+metasr/.test(navigator.userAgent.toLowerCase())
            };
            /*
        * added by zhangbobell
        * 2015.09.22
        * 增加父状态机,以解决在父 FSM 下状态控制的问题,最好的解决办法是增加一个函数队列
        * 将其中的函数一起执行。//TODO
        * */
            this._parentFSM = {};
            // 记录位置
            this.position = {};
            // 已定义的状态(string => HotBoxState)
            var _states = {};
            // 主状态(HotBoxState)
            var _mainState = null;
            // 当前状态(HotBoxState)
            var _currentState = IDLE;
            // 当前状态堆栈
            var _stateStack = [];
            // 实例引用
            var _this = this;
            var _controler;
            /**
         * Controller: {
         *     constructor(hotbox: HotBox),
         *     active: () => void
         * }
         */
            function _control(Controller) {
                if (_controler) {
                    _controler.active();
                    return;
                }
                Controller = Controller || KeyControl;
                _controler = new Controller(_this);
                _controler.active();
                $hotBox.onmousedown = function(e) {
                    e.stopPropagation();
                    e.preventDefault();
                };
                return _this;
            }
            function _dispatchKey(e) {
                var type = e.type.toLowerCase();
                e.keyHash = key.hash(e);
                e.isKey = function(keyExpression) {
                    if (!keyExpression) return false;
                    var expressions = keyExpression.split(/\s*\|\s*/);
                    while (expressions.length) {
                        if (e.keyHash == key.hash(expressions.shift())) return true;
                    }
                    return false;
                };
                e[type] = true;
                // Boot: keyup and activeKey pressed on IDLE, active main state.
                if (e.keyup && _this.activeKey && e.isKey(_this.activeKey) && _currentState == IDLE && _mainState) {
                    _activeState("main", {
                        x: $container.clientWidth / 2,
                        y: $container.clientHeight / 2
                    });
                    return;
                }
                var handleState = _currentState == IDLE ? _mainState : _currentState;
                if (handleState) {
                    var handleResult = handleState.handleKeyEvent(e);
                    if (typeof _this.onkeyevent == "function") {
                        e.handleResult = handleResult;
                        _this.onkeyevent(e, handleResult);
                    }
                    return handleResult;
                }
                return null;
            }
            function _addState(name) {
                if (!name) return _currentState;
                if (name == IDLE) {
                    throw new Error("Can not define or use the `idle` state.");
                }
                _states[name] = _states[name] || new HotBoxState(this, name);
                if (name == "main") {
                    _mainState = _states[name];
                }
                return _states[name];
            }
            function _activeState(name, position) {
                _this.position = position;
                // 回到 IDLE
                if (name == IDLE) {
                    if (_currentState != IDLE) {
                        _stateStack.shift().deactive();
                        _stateStack = [];
                    }
                    _currentState = IDLE;
                } else if (name == "back") {
                    if (_currentState != IDLE) {
                        _currentState.deactive();
                        _stateStack.shift();
                        _currentState = _stateStack[0];
                        if (_currentState) {
                            _currentState.active();
                        } else {
                            _currentState = "idle";
                        }
                    }
                } else {
                    if (_currentState != IDLE) {
                        _currentState.deactive();
                    }
                    var newState = _states[name];
                    _stateStack.unshift(newState);
                    if (typeof _this.position == "function") {
                        position = _this.position(position);
                    }
                    newState.active(position);
                    _currentState = newState;
                }
            }
            function setParentFSM(fsm) {
                _this._parentFSM = fsm;
            }
            function getParentFSM() {
                return _this._parentFSM;
            }
            this.control = _control;
            this.state = _addState;
            this.active = _activeState;
            this.dispatch = _dispatchKey;
            this.setParentFSM = setParentFSM;
            this.getParentFSM = getParentFSM;
            this.activeKey = "space";
            this.actionKey = "space";
        }
        /**
     * 表示热盒某个状态,包含这些状态需要的 Dom 对象
     */
        function HotBoxState(hotBox, stateName) {
            var BUTTON_SELECTED_CLASS = "selected";
            var BUTTON_PRESSED_CLASS = "pressed";
            var STATE_ACTIVE_CLASS = "active";
            // 状态容器
            var $state = createElement(div);
            // 四种可见的按钮容器
            var $center = createElement(div);
            var $ring = createElement(div);
            var $ringShape = createElement("div");
            var $top = createElement(div);
            var $bottom = createElement(div);
            // 添加 CSS 类
            addElementClass($state, "state");
            addElementClass($state, stateName);
            addElementClass($center, "center");
            addElementClass($ring, "ring");
            addElementClass($ringShape, "ring-shape");
            addElementClass($top, "top");
            addElementClass($bottom, "bottom");
            // 摆放容器
            appendChild(hotBox.$element, $state);
            appendChild($state, $ringShape);
            appendChild($state, $center);
            appendChild($state, $ring);
            appendChild($state, $top);
            appendChild($state, $bottom);
            // 记住状态名称
            this.name = stateName;
            // 五种按钮:中心,圆环,上栏,下栏,幕后
            var buttons = {
                center: null,
                ring: [],
                top: [],
                bottom: [],
                behind: []
            };
            var allButtons = [];
            var selectedButton = null;
            var pressedButton = null;
            var stateActived = false;
            // 布局,添加按钮后,标记需要布局
            var needLayout = true;
            function layout() {
                var radius = buttons.ring.length * 15;
                layoutRing(radius);
                layoutTop(radius);
                layoutBottom(radius);
                indexPosition();
                needLayout = false;
                function layoutRing(radius) {
                    var ring = buttons.ring;
                    var step = 2 * Math.PI / ring.length;
                    if (buttons.center) {
                        buttons.center.indexedPosition = [ 0, 0 ];
                    }
                    $ringShape.style.marginLeft = $ringShape.style.marginTop = -radius + "px";
                    $ringShape.style.width = $ringShape.style.height = radius + radius + "px";
                    var $button, angle, x, y;
                    for (var i = 0; i < ring.length; i++) {
                        $button = ring[i].$button;
                        angle = step * i - Math.PI / 2;
                        x = radius * Math.cos(angle);
                        y = radius * Math.sin(angle);
                        ring[i].indexedPosition = [ x, y ];
                        $button.style.left = x + "px";
                        $button.style.top = y + "px";
                    }
                }
                function layoutTop(radius) {
                    var xOffset = -$top.clientWidth / 2;
                    var yOffset = -radius * 2 - $top.clientHeight / 2;
                    $top.style.marginLeft = xOffset + "px";
                    $top.style.marginTop = yOffset + "px";
                    buttons.top.forEach(function(topButton) {
                        var $button = topButton.$button;
                        topButton.indexedPosition = [ xOffset + $button.offsetLeft + $button.clientWidth / 2, yOffset ];
                    });
                }
                function layoutBottom(radius) {
                    var xOffset = -$bottom.clientWidth / 2;
                    var yOffset = radius * 2 - $bottom.clientHeight / 2;
                    $bottom.style.marginLeft = xOffset + "px";
                    $bottom.style.marginTop = yOffset + "px";
                    buttons.bottom.forEach(function(bottomButton) {
                        var $button = bottomButton.$button;
                        bottomButton.indexedPosition = [ xOffset + $button.offsetLeft + $button.clientWidth / 2, yOffset ];
                    });
                }
                function indexPosition() {
                    var positionedButtons = allButtons.filter(function(button) {
                        return button.indexedPosition;
                    });
                    positionedButtons.forEach(findNeightbour);
                    function findNeightbour(button) {
                        var neighbor = {};
                        var coef = 0;
                        var minCoef = {};
                        var homePosition = button.indexedPosition;
                        var candidatePosition, dx, dy, ds;
                        var possible, dir;
                        var abs = Math.abs;
                        positionedButtons.forEach(function(candidate) {
                            if (button == candidate) return;
                            candidatePosition = candidate.indexedPosition;
                            possible = [];
                            dx = candidatePosition[0] - homePosition[0];
                            dy = candidatePosition[1] - homePosition[1];
                            ds = Math.sqrt(dx * dx + dy * dy);
                            if (abs(dx) > 2) {
                                possible.push(dx > 0 ? "right" : "left");
                                possible.push(ds + abs(dy));
                            }
                            if (abs(dy) > 2) {
                                possible.push(dy > 0 ? "down" : "up");
                                possible.push(ds + abs(dx));
                            }
                            while (possible.length) {
                                dir = possible.shift();
                                coef = possible.shift();
                                if (!neighbor[dir] || coef < minCoef[dir]) {
                                    neighbor[dir] = candidate;
                                    minCoef[dir] = coef;
                                }
                            }
                        });
                        button.neighbor = neighbor;
                    }
                }
            }
            function alwaysEnable() {
                return true;
            }
            // 为状态创建按钮
            function createButton(option) {
                var $button = createElement(div);
                addElementClass($button, "button");
                var render = option.render || defaultButtonRender;
                $button.innerHTML = render(format, option);
                switch (option.position) {
                  case "center":
                    appendChild($center, $button);
                    break;

                  case "ring":
                    appendChild($ring, $button);
                    break;

                  case "top":
                    appendChild($top, $button);
                    break;

                  case "bottom":
                    appendChild($bottom, $button);
                    break;
                }
                return {
                    action: option.action,
                    enable: option.enable || alwaysEnable,
                    beforeShow: option.beforeShow,
                    key: option.key,
                    next: option.next,
                    label: option.label,
                    data: option.data || null,
                    $button: $button
                };
            }
            // 默认按钮渲染
            function defaultButtonRender(format, option) {
                return format('{label}{key}', {
                    label: option.label,
                    key: option.key && option.key.split("|")[0]
                });
            }
            // 为当前状态添加按钮
            this.button = function(option) {
                var button = createButton(option);
                if (option.position == "center") {
                    buttons.center = button;
                } else if (buttons[option.position]) {
                    buttons[option.position].push(button);
                }
                allButtons.push(button);
                needLayout = true;
            };
            function activeState(position) {
                position = position || {
                    x: hotBox.$container.clientWidth / 2,
                    y: hotBox.$container.clientHeight / 2
                };
                if (position) {
                    $state.style.left = position.x + "px";
                    $state.style.top = position.y + "px";
                }
                allButtons.forEach(function(button) {
                    var $button = button.$button;
                    if ($button) {
                        $button.classList[button.enable() ? "add" : "remove"]("enabled");
                    }
                    if (button.beforeShow) {
                        button.beforeShow();
                    }
                });
                addElementClass($state, STATE_ACTIVE_CLASS);
                if (needLayout) {
                    layout();
                }
                if (!selectedButton) {
                    select(buttons.center || buttons.ring[0] || buttons.top[0] || buttons.bottom[0]);
                }
                stateActived = true;
            }
            function deactiveState() {
                removeElementClass($state, STATE_ACTIVE_CLASS);
                select(null);
                stateActived = false;
            }
            // 激活当前状态
            this.active = activeState;
            // 反激活当前状态
            this.deactive = deactiveState;
            function press(button) {
                if (pressedButton && pressedButton.$button) {
                    removeElementClass(pressedButton.$button, BUTTON_PRESSED_CLASS);
                }
                pressedButton = button;
                if (pressedButton && pressedButton.$button) {
                    addElementClass(pressedButton.$button, BUTTON_PRESSED_CLASS);
                }
            }
            function select(button) {
                if (selectedButton && selectedButton.$button) {
                    if (selectedButton.$button) {
                        removeElementClass(selectedButton.$button, BUTTON_SELECTED_CLASS);
                    }
                }
                selectedButton = button;
                if (selectedButton && selectedButton.$button) {
                    addElementClass(selectedButton.$button, BUTTON_SELECTED_CLASS);
                }
            }
            $state.onmouseup = function(e) {
                if (e.button) return;
                var target = e.target;
                while (target && target != $state) {
                    if (target.classList.contains("button")) {
                        allButtons.forEach(function(button) {
                            if (button.$button == target) {
                                execute(button);
                            }
                        });
                    }
                    target = target.parentNode;
                }
            };
            this.handleKeyEvent = function(e) {
                var handleResult = null;
                /**
             * @Desc: 搜狗浏览器下esc只触发keyup,因此做兼容性处理
             * @Editor: Naixor
             * @Date: 2015.09.14
             */
                if (hotBox.browser.sg) {
                    if (e.isKey("esc")) {
                        if (pressedButton) {
                            // 若存在已经按下的按钮,则取消操作
                            if (!e.isKey(pressedButton.key)) {
                                // the button is not esc
                                press(null);
                            }
                        } else {
                            hotBox.active("back", hotBox.position);
                        }
                        return "back";
                    }
                }
                if (e.keydown || hotBox.isIME && e.keyup) {
                    allButtons.forEach(function(button) {
                        if (button.enable() && e.isKey(button.key)) {
                            if (stateActived || hotBox.hintDeactiveMainState) {
                                select(button);
                                press(button);
                                handleResult = "buttonpress";
                                // 如果是 keyup 事件触发的,因为没有后续的按键事件,所以就直接执行
                                if (e.keyup) {
                                    execute(button);
                                    handleResult = "execute";
                                    return handleResult;
                                }
                            } else {
                                execute(button);
                                handleResult = "execute";
                            }
                            e.preventDefault();
                            e.stopPropagation();
                            if (!stateActived && hotBox.hintDeactiveMainState) {
                                hotBox.active(stateName, hotBox.position);
                            }
                        }
                    });
                    if (stateActived) {
                        if (e.isKey("esc")) {
                            if (pressedButton) {
                                // 若存在已经按下的按钮,则取消操作
                                if (!e.isKey(pressedButton.key)) {
                                    // the button is not esc
                                    press(null);
                                }
                            } else {
                                hotBox.active("back", hotBox.position);
                            }
                            return "back";
                        }
                        [ "up", "down", "left", "right" ].forEach(function(dir) {
                            if (!e.isKey(dir)) return;
                            if (!selectedButton) {
                                select(buttons.center || buttons.ring[0] || buttons.top[0] || buttons.bottom[0]);
                                return;
                            }
                            var neighbor = selectedButton.neighbor[dir];
                            while (neighbor && !neighbor.enable()) {
                                neighbor = neighbor.neighbor[dir];
                            }
                            if (neighbor) {
                                select(neighbor);
                            }
                            handleResult = "navigate";
                        });
                        // 若是由 keyup 触发的,则直接执行选中的按钮
                        if (e.isKey("space") && e.keyup) {
                            execute(selectedButton);
                            e.preventDefault();
                            e.stopPropagation();
                            handleResult = "execute";
                        } else if (e.isKey("space") && selectedButton) {
                            press(selectedButton);
                            handleResult = "buttonpress";
                        } else if (pressedButton && pressedButton != selectedButton) {
                            press(null);
                            handleResult = "selectcancel";
                        }
                    }
                } else if (e.keyup && (stateActived || !hotBox.hintDeactiveMainState)) {
                    if (pressedButton) {
                        if (e.isKey("space") && selectedButton == pressedButton || e.isKey(pressedButton.key)) {
                            execute(pressedButton);
                            e.preventDefault();
                            e.stopPropagation();
                            handleResult = "execute";
                        }
                    }
                }
                /*
             * Add by zhangbobell 2015.09.06
             * 增加了下面这一个判断因为 safari 下开启输入法后,所有的 keydown 的 keycode 都为 229,
             * 只能以 keyup 的 keycode 进行判断
             * */
                hotBox.isIME = e.keyCode == 229 && e.keydown;
                return handleResult;
            };
            function execute(button) {
                if (button) {
                    if (!button.enable || button.enable()) {
                        if (button.action) button.action(button);
                        hotBox.active(button.next || IDLE, hotBox.position);
                    }
                    press(null);
                    select(null);
                }
            }
        }
        module.exports = HotBox;
    }
};

//src/key.js
_p[2] = {
    value: function(require, exports, module) {
        var keymap = _p.r(4);
        var CTRL_MASK = 4096;
        var ALT_MASK = 8192;
        var SHIFT_MASK = 16384;
        function hash(unknown) {
            if (typeof unknown == "string") {
                return hashKeyExpression(unknown);
            }
            return hashKeyEvent(unknown);
        }
        function is(a, b) {
            return a && b && hash(a) == hash(b);
        }
        exports.hash = hash;
        exports.is = is;
        function hashKeyEvent(keyEvent) {
            var hashCode = 0;
            if (keyEvent.ctrlKey || keyEvent.metaKey) {
                hashCode |= CTRL_MASK;
            }
            if (keyEvent.altKey) {
                hashCode |= ALT_MASK;
            }
            if (keyEvent.shiftKey) {
                hashCode |= SHIFT_MASK;
            }
            // Shift, Control, Alt KeyCode ignored.
            if ([ 16, 17, 18, 91 ].indexOf(keyEvent.keyCode) == -1) {
                hashCode |= keyEvent.keyCode;
            }
            return hashCode;
        }
        function hashKeyExpression(keyExpression) {
            var hashCode = 0;
            keyExpression.toLowerCase().split(/\s*\+\s*/).forEach(function(name) {
                switch (name) {
                  case "ctrl":
                  case "cmd":
                    hashCode |= CTRL_MASK;
                    break;

                  case "alt":
                    hashCode |= ALT_MASK;
                    break;

                  case "shift":
                    hashCode |= SHIFT_MASK;
                    break;

                  default:
                    hashCode |= keymap[name];
                }
            });
            return hashCode;
        }
    }
};

//src/keycontrol.js
_p[3] = {
    value: function(require, exports, module) {
        var key = _p.r(2);
        var FOCUS_CLASS = "hotbox-focus";
        var RECEIVER_CLASS = "hotbox-key-receiver";
        function KeyControl(hotbox) {
            var _this = this;
            var _receiver;
            var _actived = true;
            var _receiverIsSelfCreated = false;
            var $container = hotbox.$container;
            _createReceiver();
            _bindReceiver();
            _bindContainer();
            _active();
            function _createReceiver() {
                _receiver = document.createElement("input");
                _receiver.classList.add(RECEIVER_CLASS);
                $container.appendChild(_receiver);
                _receiverIsSelfCreated = true;
            }
            function _bindReceiver() {
                _receiver.onkeyup = _handle;
                _receiver.onkeypress = _handle;
                _receiver.onkeydown = _handle;
                _receiver.onfocus = _active;
                _receiver.onblur = _deactive;
                if (_receiverIsSelfCreated) {
                    _receiver.oninput = function(e) {
                        _receiver.value = null;
                    };
                }
            }
            function _bindContainer() {
                $container.onmousedown = function(e) {
                    _active();
                    e.preventDefault();
                };
            }
            function _handle(keyEvent) {
                if (!_actived) return;
                hotbox.dispatch(keyEvent);
            }
            function _active() {
                _receiver.select();
                _receiver.focus();
                _actived = true;
                $container.classList.add(FOCUS_CLASS);
            }
            function _deactive() {
                _receiver.blur();
                _actived = false;
                $container.classList.remove(FOCUS_CLASS);
            }
            this.handle = _handle;
            this.active = _active;
            this.deactive = _deactive;
        }
        module.exports = KeyControl;
    }
};

//src/keymap.js
_p[4] = {
    value: function(require, exports, module) {
        var keymap = {
            Shift: 16,
            Control: 17,
            Alt: 18,
            CapsLock: 20,
            BackSpace: 8,
            Tab: 9,
            Enter: 13,
            Esc: 27,
            Space: 32,
            PageUp: 33,
            PageDown: 34,
            End: 35,
            Home: 36,
            Insert: 45,
            Left: 37,
            Up: 38,
            Right: 39,
            Down: 40,
            Direction: {
                37: 1,
                38: 1,
                39: 1,
                40: 1
            },
            Delete: 46,
            NumLock: 144,
            Cmd: 91,
            CmdFF: 224,
            F1: 112,
            F2: 113,
            F3: 114,
            F4: 115,
            F5: 116,
            F6: 117,
            F7: 118,
            F8: 119,
            F9: 120,
            F10: 121,
            F11: 122,
            F12: 123,
            "`": 192,
            "=": 187,
            "-": 189,
            "/": 191,
            ".": 190
        };
        // 小写适配
        for (var key in keymap) {
            if (keymap.hasOwnProperty(key)) {
                keymap[key.toLowerCase()] = keymap[key];
            }
        }
        var aKeyCode = 65;
        var aCharCode = "a".charCodeAt(0);
        // letters
        "abcdefghijklmnopqrstuvwxyz".split("").forEach(function(letter) {
            keymap[letter] = aKeyCode + (letter.charCodeAt(0) - aCharCode);
        });
        // numbers
        var n = 9;
        do {
            keymap[n.toString()] = n + 48;
        } while (n--);
        module.exports = keymap;
    }
};

var moduleMapping = {
    expose: 0
};

function use(name) {
    _p.r([ moduleMapping[name] ]);
}
use('expose');
})();

redpajama_set_name: RedPajamaGithub


text:
package jsettlers.main.android.gameplay.ui.fragments.menus.selection.features;

import static java8.util.J8Arrays.stream;

import java.util.List;

import jsettlers.common.buildings.IBuilding;
import jsettlers.common.material.EMaterialType;
import jsettlers.graphics.action.SetAcceptedStockMaterialAction;
import jsettlers.graphics.map.controls.original.panel.selection.BuildingState;
import jsettlers.main.android.R;
import jsettlers.main.android.core.controls.ActionControls;
import jsettlers.main.android.core.controls.DrawControls;
import jsettlers.main.android.core.controls.DrawListener;
import jsettlers.main.android.gameplay.navigation.MenuNavigator;
import jsettlers.main.android.utils.OriginalImageProvider;

import android.support.annotation.Nullable;
import android.support.v7.util.DiffUtil;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java8.util.stream.Collectors;

/**
 * Created by Tom Pratt on 10/01/2017.
 */
public class StockFeature extends SelectionFeature implements DrawListener {
	private final DrawControls drawControls;
	private final ActionControls actionControls;

	private final MaterialsAdapter materialsAdapter;
	private final RecyclerView recyclerView;
	private final ImageView buildingImageView;

	public StockFeature(View view, IBuilding building, MenuNavigator menuNavigator, DrawControls drawControls, ActionControls actionControls) {
		super(view, building, menuNavigator);
		this.drawControls = drawControls;
		this.actionControls = actionControls;

		buildingImageView = (ImageView) getView().findViewById(R.id.image_view_building);

		materialsAdapter = new MaterialsAdapter();
		recyclerView = (RecyclerView) getView().findViewById(R.id.recyclerView);
		recyclerView.setHasFixedSize(true);
	}

	@Override
	public void initialize(BuildingState buildingState) {
		super.initialize(buildingState);
		drawControls.addInfrequentDrawListener(this);

		materialsAdapter.setMaterialStates(materialStates());
		recyclerView.setAdapter(materialsAdapter);

		update();
	}

	@Override
	public void finish() {
		super.finish();
		drawControls.removeInfrequentDrawListener(this);
	}

	@Override
	public void draw() {
		if (hasNewState()) {
			getView().post(this::update);
		}
	}

	private void update() {
		if (getBuildingState().isStock()) {
			recyclerView.setVisibility(View.VISIBLE);
			buildingImageView.setVisibility(View.INVISIBLE);

			materialsAdapter.setMaterialStates(materialStates());
		}
	}

	private List<MaterialState> materialStates() {
		return stream(EMaterialType.STOCK_MATERIALS)
				.map(eMaterialType -> new MaterialState(eMaterialType, getBuildingState()))
				.collect(Collectors.toList());
	}

	/**
	 * materials adapter
	 */
	private class MaterialsAdapter extends RecyclerView.Adapter<MaterialViewHolder> {
		private final LayoutInflater inflater;

		private List<MaterialState> materialStates;

		MaterialsAdapter() {
			inflater = LayoutInflater.from(getContext());
		}

		@Override
		public int getItemCount() {
			return materialStates.size();
		}

		@Override
		public MaterialViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
			View view = inflater.inflate(R.layout.item_stock_material, parent, false);
			return new MaterialViewHolder(view);
		}

		@Override
		public void onBindViewHolder(MaterialViewHolder holder, int position) {
			MaterialState materialState = materialStates.get(position);
			holder.bind(materialState);
		}

		@Override
		public void onBindViewHolder(MaterialViewHolder holder, int position, List<Object> payloads) {
			if (payloads == null || payloads.size() == 0) {
				onBindViewHolder(holder, position);
			} else {
				holder.updateState(materialStates.get(position));
			}
		}

		void setMaterialStates(List<MaterialState> materialStates) {
			if (this.materialStates != null) {
				DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new MaterialsDiffCallback(this.materialStates, materialStates));
				diffResult.dispatchUpdatesTo(this);
			}

			this.materialStates = materialStates;
		}
	}

	/**
	 * stock item viewholder
	 */
	class MaterialViewHolder extends RecyclerView.ViewHolder {
		private final ImageView imageView;
		private MaterialState materialState;

		MaterialViewHolder(View itemView) {
			super(itemView);
			imageView = (ImageView) itemView.findViewById(R.id.imageView_material);
			itemView.setOnClickListener(v -> actionControls.fireAction(new SetAcceptedStockMaterialAction(getBuilding().getPos(), materialState.getMaterialType(), !materialState.isStocked(), true)));
		}

		void bind(MaterialState materialState) {
			this.materialState = materialState;
			OriginalImageProvider.get(materialState.getMaterialType()).setAsImage(imageView);
			itemView.setSelected(materialState.isStocked());
		}

		void updateState(MaterialState materialState) {
			this.materialState = materialState;
			itemView.setSelected(materialState.isStocked());
		}
	}

	/**
	 * Model for stock item
	 */
	private class MaterialState {
		private final EMaterialType materialType;
		private final boolean stocked;

		MaterialState(EMaterialType materialType, BuildingState state) {
			this.materialType = materialType;
			this.stocked = state.stockAcceptsMaterial(materialType);
		}

		EMaterialType getMaterialType() {
			return materialType;
		}

		boolean isStocked() {
			return stocked;
		}
	}

	/**
	 * Diff callback
	 */
	private class MaterialsDiffCallback extends DiffUtil.Callback {

		private final List<MaterialState> oldStates;
		private final List<MaterialState> newStates;

		MaterialsDiffCallback(List<MaterialState> oldStates, List<MaterialState> newStates) {
			this.oldStates = oldStates;
			this.newStates = newStates;
		}

		@Override
		public int getOldListSize() {
			return oldStates.size();
		}

		@Override
		public int getNewListSize() {
			return newStates.size();
		}

		@Override
		public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
			return oldStates.get(oldItemPosition).getMaterialType() == newStates.get(newItemPosition).getMaterialType();
		}

		@Override
		public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
			return oldStates.get(oldItemPosition).isStocked() == newStates.get(newItemPosition).isStocked();
		}

		@Nullable
		@Override
		public Object getChangePayload(int oldItemPosition, int newItemPosition) {
			return Boolean.TRUE;
		}
	}
}


16 Mar - 6 min - Uploaded by Sid's Sing Station Khamoshiyan Karaoke Track. KARAOKE WITH LYSIC'S |Badrinath ki Dulhania | by d4s. 17 Dec - 6 min - Uploaded by ravi patel ITS MANAGEABLE TRACK WHILE SINGING MAIN VOCAL Khamoshiyan karaoke track. 21 Jun - 6 min - Uploaded by hindi video karaoke I have added the lyrics, digitally enhanced the music, and corrected the scale/ tempo and bass.
13 Jun - 6 min - Uploaded by Deeptayan Banerjee Khamoshiyan (Instrumental) by Deeptayan Banerjee. Film: Khamoshiyan Singer: Arijit Singh. 15 Dec - 3 min - Uploaded by SonyMusicIndiaVEVO Watch the most romantic song of this season "Khamoshiyan" thnx ariji singh from saving the. 3 Mar - 5 min - Uploaded by Amar Dubey For full karaoke tracks of any old & Latest songs please contact Khamoshiyan Title.
Such third party cookies may track your use of the BBC website. If you continue without changing your settings, we'll assume that you are happy to receive all. See the lyrics and sing karaoke to Khamoshiyan [HQ] Track by Arijit Singh. Find your favorite song lyrics with Smule now! Song: Khamoshiyan - Title song. 10 Jan Khamoshiyan's music can be heard on a loop, feels Joginder Tuteja. | Music Review: Better than the title track is Tu Har Lamha, by Arijit. 20 Aug - 3 min Watch Khamoshiyan - Title Track _Full Song _ Arijit _ Gurmeet _ Sapna by HD VIDEO SONG on. 13 May - 3 min Watch Khamoshiyan Title Track HD p - [Hon3y] - By [Fresh Khamoshiyan Lyrics.
17 Dec - 3 min Song ▻ Title Track Khamoshiyan Movie ▻ Khamoshiyan - Silences Have Secrets Singer. 26 Dec Ankit Tiwari continues faithfully aligned to the Bhatt sound in his only track for Khamoshiyan, the sensuous Bheeg Loon. Decent track in fact. Khamoshiyan Soundtrack is the collection of the songs from the Indian film Khamoshiyan. The music album opens with the title song Khamoshiyan written. 29 Sep Download the original quality karaoke (background music) of the song ' Khamoshiyan' from the movie album 'Khamoshiyan'. This song is in the.