Georgia Stoneman Fine Art is one of Britain's leading contemporary art dealerships. From our base in London we offer art consultancy and the chance to view works in your own home, we also often work with interior designers and trade buyers. We specialise in Cornish artists and handle the print estates of the late greats Sir Terry Frost and Breon O'Casey. We also have an extensive collection of William Crozier prints and originals, alongside the full archive of Hugh Stoneman, Master Printer, whose collaborators include artists such as Eve Arnold, Fay Godwin Patrick Heron, John Hoyland and Grayson Perry. Georgia Stoneman Fine Art also represents a number of internationally known artists, sculptors, ceramicists and jewellers. The Breeze Fair 2018 stand will include works from Terry Frost, Sandra Blow and William Crozier as well Jeremy Annear, Henrietta Dubrey, Heath Hearn and Stella Maris in the company of some beautiful 20th century furniture and ceramics.


text:
Q: Cleaning Up Certificate Services Infrastructure I have inherited an Active Directory domain where certificate services were installed and not put to good use, and not documented.  I would like to revamp the infrastructure and actually use the services for many security related applications, but I am unsure what to expect or where to begin.  Basically, I am wondering if any one else has had a similar issue and what process was used.  I would ultimately like to start over and do things correctly, but I have not found out if this is possible, or if there are any applications that may break.  From what I have found so far, the service was mainly used to supply development sites with certificates.  Users are issued certificates, but I have never come across any instance of them being used.  Any information/help is much appreciated.
Thanks.

A: I've removed an Enterprise CA from an AD domain (Windows 2003) I "inhertied" and started w/ a new Enterprise CA with no ill effects. I followed the directions in this article http://support.microsoft.com/kb/889250 and then started with a fresh deployment.
All-in-all, I felt it went very smoothly.
(My Customer was similar to yours, probably. They'd installed it, didn't use it for anything, and then were on the verge of trashing the machine running the enterprise CA root. I needed certificates for WPA2-RADIUS authentication and ended up walking right into a rats nest of junk.)

A: If you are 100% positive that the certs aren't being used then you can follow KB 889250 and decomission.  But you have to make sure they are not being used first, because the worst case scenario is that half way thru superimportantapp is broken and you have to fix the PKI you just broke in order to get it back up and running.  Once you do certutil -delkey CertificateAuthorityName, getting the certs to work again get interesting to say the least.  Above all else take your time.

redpajama_set_name: RedPajamaStackExchange


text:
Middle EastTop StoriesWorld
Al-Nasr first Arab club to sign Israeli
A handout picture provided by the Emirati club Al-Nasr SC on September 27, 2020, shows Israeli midfielder Dia Saba (R) posing with a club official during his official presentation at the club. (Photo by - / various sources / AFP) / === RESTRICTED TO EDITORIAL USE - MANDATORY CREDIT "AFP PHOTO / HO / AL-NASR SC" - NO MARKETING NO ADVERTISING CAMPAIGNS - DISTRIBUTED AS A SERVICE TO CLIENTS ===
DUBAI: A handout picture shows Israeli midfielder Dia Saba posing with an official of Emirati club Al-Nasr SC during his official presentation at the club on Sunday. – AFP
DUBAI: An Arab club has for the first time signed an Israeli footballer, Diaa Sabia, less than two weeks after the UAE normalized ties with the Jewish state. Sabia, a 27-year-old Israeli Arab attacking midfielder with China's Guangzhou R&F, signed a two-year contract with Dubai's Al-Nasr, the club said in a statement Sunday. The transfer reportedly cost more than €2.5 million ($2.9 million).
"Al-Nasr has completed the procedures with Diaa Saba … in a contract that extends for two seasons after he successfully passed medical examinations this morning," it said in a statement. Al-Nasr tweeted footage of Sabia wearing the number 9 jersey, dribbling and shooting in the emirate's Al-Maktoum Stadium.
Sabia's move comes after the United Arab Emirates, of which Dubai is a member, signed a US-brokered accord to normalise ties with Israel on September 15, the first such deal with a Gulf nation. Also this month, Israeli media reported that an unnamed Emirati businessman has expressed an interest in investing in Israeli football club, Beitar Jerusalem.
The club is known for its links to the Israeli far-right and it has never fielded an Arab player. It has been fined several times for its fans' racist chants such as "death to Arabs". Sabia – who is of Palestinian origin – was born in northern Israel and rose through the ranks of a youth club before moving to Maccabi Tel Aviv in 2012.
He played for several Israeli clubs until signing in 2014 with Maccabi Netanya, where he stayed for four years. Sabia has scored 50 goals in 111 games in various competitions, including 24 in the 2018 season, and has 10 caps in the Israeli national team. He was sold to Guangzhou R&F for more than four million euros. – AFP
Al-Nasr Arab Club israeli sign
Death toll rises as Karabakh fighting enters second day
Global virus death toll tops 1m; India cases surpass 6m
5 killed as SUV plows through US Xmas parade
Trump asserts 'complete power' for pardon
Tehran urges UN court to halt 'economic strangulation' by US
Bahrain busts 'Iran-linked cell', arrests 116 members
Germany admits Namibia genocide, but critics want more

redpajama_set_name: RedPajamaCommonCrawl


1. Clothes by Bittersweet Paris are tailor-made to meet to the expectations of each customer. Despite that, every customer may withdraw from the Goods sale agreement without giving a reason. The time limits for withdrawal from the agreement shall expire following the expiry of 100 days of the date of taking possession of Goods by the Consumer or of the date of taking possession of Goods by a third party indicated by the Customer, other than the carrier. The above rule shall not apply to clothes bought at sales promotion, since they may not be returned.


species face extinction. Whose responsibility is it to conserve them?
May be all! But, where from will the fund come? The richer countries?
Convention on Biological Diversity, President Lula made these comments.


text:
Home DepartmentsFactory Tour
Freitag's Zurich Headquarters
When you arrive in Zürich, you arrive with a few certainties: The trams will run like clockwork, the city will be spotless, and at least a third of the population, it seems, will be carrying a Freitag messenger bag. During my weeklong stay in Switzerland this spring, the Freitag bag — with its recycled truck-tarp shell, seatbelt strap, and inner-tube edging — began to seem something like a national accessory, strapped across the chests of everyone from students to curators to actual bike messengers. Founded in 1993 by Swiss graphic-design brothers Markus and Daniel Freitag, the company's headquarters are now located in the middle of the city, near Zürich's Hardbrücke station and just a stone's throw from the tiny flat where the brothers sewed their first bag.
The administrative staff works on the second floor in container-like offices built atop a former crane track. Photo (c) Tobias Madörin
For its 15th anniversary in 2008, the company sent out invitations in the form of Swiss license plates, each embossed with the name of a Freitag employee. (The plates now identify workers and designers at their stations.) The party's theme? Trucker chic.
To produce 170,000 bags yearly, Freitag brings in nearly 300 tons of disused tarps from the soft-sided, long-distance freight trucks that travel across Europe. Freitag eventually discards more than half that due to buckles and cracks in the fabric, and the number of tarps that end up in use each year is equal to the yield from a line of trucks 15 miles long.
When soiled tarps arrive at the factory, they are first cut into smaller sections to make for easier handling. The tarps are then stored by color and type in the dirt warehouse.
Photo (c) Simon Johnston
After a wash cycle in the industrial-sized machines, clean tarps are photographed for later identification, rolled up, and sorted back into the warehouse.
The construction of a bag begins. Designers cut the tarps by hand using transparent templates — the better to figure out which area will create the most visual interest while using the most raw material possible. A single bag is typically made from random parts of a single tarp so as not to be too garish.
Stitching, the only part of the production cycle not completed on-site in Zürich, is outsourced to France, Portugal, and Tunisia.
A stack of finished bags awaits photography. A custom-built camera-and-rotating-drum system creates 360-degree views to show consumers and distributors what they're paying for, seeing as how no two bags are alike.
The Freitag brothers continue their commitment to sustainability in strange new ways — they recently installed a compost heap inside Vienna's Walking Chair gallery, giving away 100 limited edition bags on the condition that patrons would return food scraps to the gallery for a period of three months — and quotidian ones: The finished bags travel by bike to the Zürich F-shop, located just a few hundred yards away from the factory.
Freitag debuted its corrugated-steel Zürich flagship, made from 17 gutted and reinforced shipping containers, in 2006. On the roof, visitors can go "truckspotting" over the Autobahn A3 freeway, the view that inspired the original Freitag design.
Photo (c) Roland Tännler
The Freitags' first bag was added to MoMA's permanent design collection in 2003, but the brothers are also responsible for a slew of other designs, including iPhone cases, wallets, laptop bags, and this, the brand's packaging, logo, and identity.
Tags: Factory Tour, Fashion, Zürich
In a Box by Swatek Romanoff
There are more than 20,000 instances of great graphic design housed in the AIGA's online archives, but for every Pushpin or Chiat\Day, there's a Swatek Romanoff — a firm that churned out loads of wonderful work in its '70s/'80s heyday but that isn't the subject of much chatter among today's design circles. When we were first putting together ideas for this site, it was Randall Swatek and David Romanoff's whimsical 1979 "In a Box" series that inspired this column.


text:
Small firm took on big one and won
2015/11/14 9:20pmIndustry Updates China 1274
Trademark battles can be tough for little companies, but a Bellingham woman just beat apparel giant Nautica thanks to some East Coast law students. Also: Chinese investor left in dire straits after Path America deal, and Mercer Island home prices aren't quite in the U.S. top 20.
It isn't often that small, local companies go up against a nationally known brand and come out on top. But that's what happened recently when the federal Trademark Trial and Appeal Board ruled in favor of Bellingham-based NautiGirl in a case brought by apparel giant Nautica.
Christine Palmerton used to frequent the Seattle Boat Show representing her yacht rental company, and she noticed there were few items of clothing or accessories directed at women. What little she saw wasn't especially inspiring: "Seashells and whales don't say anything about loving boating," she says.
She decided to create a brand for female boaters that was fun and flirty, but also confident and ready to take the helm.
For her logo, Palmerton chose a determined-looking young woman in a green dress and scarf with blue, 1920s-style hair and a sailor's cap. The woman holds a martini in one hand and the wheel of a ship in the other. A sign across the wheel says, "NautiGirl — dare to be naughty."
She launched NautiGirl in January 2008 at the Boat Show, and received her trademark the following year. By 2011 she had sold the rental company to focus solely on NautiGirl, and was selling $50,000 a year in mugs, clothing and tote bags through her website, trade shows and a storefront in Bellingham that has since closed.
By 2013, she was gaining momentum and was on the cusp of hooking investors to take her business to the next level.
That's when she received a letter from Nautica, a "water-inspired global lifestyle" apparel and accessories brand with hundreds of stores.
Nautica told her to cease and desist, claiming she was copying its logo, which has a sailboat.
A lawyer told her she would basically go bankrupt trying to fight the "corporate bullying" of a company as large as Nautica. "I wanted to curl up in the fetal position and cry," she said. "But I pulled myself together, thinking this is not what NautiGirl is about."
Palmerton caught wind of a clinic where law students would take on cases pro bono: Suffolk University Law School's Intellectual Property and Entrepreneurship Clinic in Boston.
Over three years and 10 law students, the clinic fought NautiGirl's case for free, saving Palmerton more than $200,000 in legal fees.
The Trademark Trial and Appeal Board looked at whether the NautiGirl trademark — logo, name and tag line — taken as a whole could be mistaken for Nautica's trademark.
It concluded NautiGirl's trademark is "so dissimilar in appearance, sound, connotation, and commercial impression that it is unlikely to engender confusion" with what it called the "fairly staid and conservative depiction of a sailboat logo over the word NAUTICA."
Last month it dismissed Nautica's effort to cancel Palmerton's trademark. Spokespeople for Nautica said the company doesn't comment on legal matters.
Suffolk Law graduate Christina Mott, now working as a clerk for the Superior Court of Massachusetts, said that while working on Palmerton's case in 2013 and 2014 she ran across more than 100 similar cases Nautica had brought against other companies.
"A lot of small businesses are in the same boat and don't have the resources to be able to withstand a three-year-long process to defend their intellectual property," she said. "If (Palmerton) can win the David and Goliath fight against Nautica, it is possible for other small business owners."
Now — after three years — Palmerton can get back to running and growing her business, which last year was down to $25,000 in sales, she said.
"I had to put my company on hold because I couldn't get the investment I really needed, because the trademark was in jeopardy," she said. "Without a trademark you can't really take it the distance."
Centralia housing most affordable
Mercer Island is Washington state's most expensive housing market, while Centralia is the most affordable.
That's according to the Coldwell Banker Home Listing Report for 2015, which ranks some 2,700 markets across the U.S. based on the average listing price of a four-bedroom, two-bathroom home in each area.
The average listing price for such a house in Washington is $404,638, placing it eighth among most expensive states. Hawaii, where the average price is $654,648, came in first.
On Mercer Island, the average price for a four-bedroom, two-bath home is $1.06 million. Bellevue, Redmond, Sammamish and Kirkland rounded out the top five.
The average listing price in Centralia, in comparison, is $181,067. Spokane Valley, Spokane, Spanaway and Kelso are also among the five cities in the state with most affordable-housing cities in the state.
Despite its million-dollar average, Mercer Island, however, didn't crack the top 20 most expensive markets in the U.S., coming in at No. 23.
Cities in California dominated the most expensive housing markets, with Newport Beach No. 1 at $2.29 million.
The least expensive market in the study was Cleveland, Ohio, with an average listing price of $74,502.
The report uses statistical averages, as opposed to medians, "to make it useful to homebuyers in the market," according to a Coldwell Banker spokeswoman.
It also removes outliers such as pricey Medina and Clyde Hill. All cities compared had to have at least 10 four-bedroom, two-bath listings.
Chinese investors worried about loss
Shanghai resident Li can't bear to break the news to his wife and kids: They might lose their small apartment because their $500,000 investment in a downtown Seattle skyscraper project flopped.
The couple mortgaged their home to raise the funds to invest, hoping to get a U.S. visa through the EB-5 program so their 5- and 8-year-old sons can someday get an American education.
After being pitched to invest in Path America's 40-story Potala Tower, the family borrowed the money from a Chinese bank, pledging their apartment as collateral, according to Li.
But the tower project at 2116 Fourth Ave. was suspended in August after federal regulators filed a civil fraud lawsuit against Everett-based Path America and its founder, Lobsang Dargey, of Bellevue.
"I really hope I can get my money back to get our home back from the bank," said Li, 38, who sent an email to The Seattle Times describing his plight and asking for help. He agreed his story could be told if his full name was not used.
U.S. District Court Judge James Robart has granted refunds so far to 24 Path America investors whose funds were still in escrow.
But the interests of such investors are increasingly at odds with other investors whose money Path America has already tied up — those investors want to see the tower completed, or their visa prospects could be ruined.
The court appointed a receiver last month to run Path America and sort out what's best for investors.
The Portland-based receiver, Michael Grassmueck, said in a court filing he had no objection "in principle" to refunds for Potala Tower investors whose money is sitting in escrow.
But a Seattle attorney for 11 Chinese investors granted refunds says the California escrow agency that has their money is dragging its feet — and time is of the essence to his clients if they want to invest in another project. The EB-5 program will expire on Dec. 11, unless extended by Congress.
"We've been frustrated with the delay and lack of cooperation we've received, but we're confident these funds will ultimately be returned said attorney Kelly Sheridan.
The harsh reality facing the 170 Chinese investors and their families is that they bought into an illiquid partnership, hoping the construction of Path America's $188 million Potala Tower would secure them so-called EB-5 visas to live permanently in the United States. (Another 80 Chinese nationals invested in the firm's Farmer's Market project, but those investors's prospects are better because the Everett project is nearly complete.)
Foreigners who invest at least $500,000 in an eligible project that creates at least 10 full-time jobs over two years can apply for the EB-5 visa. Since 2010, more than two-thirds of approved petitions were from immigrants born in mainland China, federal records show.
Path America recruited Chinese nationals through brokers in China and at seminars in Shanghai and elsewhere. The brokers received a $45,000 finder's fee for every investor who subscribed to the offering.
While EB-5 investors tend to be affluent, with a net worth over $1 million, Li doesn't appear to fit that profile.
Li said he heard about Path America earlier this year from a broker who worked with Path America.
The broker said it was "a very low risk project which is handled by a very professional company," and that his family had a "very high chance to get our money refunded after receiving the green cards," Li said in an email.
On work trips to the United States, Li wrote, he was impressed by America's clean air, "nice people" and superior education system.
"Like every parents do, we just want to give our kids better educations and health environments to grow up," Li wrote.
So the couple decided to invest in Path America's Potala Tower project.
"We certainly don't have that much cash," Li said. But they did have equity in the apartment they had worked 11 years to buy.
In addition to mortgaging their home, the couple also had to shell out about $70,000 for Path America's administrative fee, an attorney to file the immigration petition and other charges, Li wrote.
In late July, the family's $500,000 capital contribution was wired to Path America's escrow agent in California.
A month later, Li was shocked to read about the SEC's lawsuit against Dargey.
The SEC alleges that Dargey misappropriated tens of millions of dollars from the Potala Tower account for his personal use, including buying a home in Bellevue and commercial properties in Shoreline and Kirkland. Dargey has denied wrongdoing.
"I haven't shared this news with my wife and kids yet because I don't know how to explain to them we may potentially [have] lost our money, the green card and our only apartment," Li wrote to The Seattle Times.
Attorney Steven Fogg, who along with Sheridan represents 11 Chinese investors in the tower project, said all of the investors he's worked with were affluent, but he didn't discount the possibility that a middle-class Chinese family might have invested in Path America.
"Many of these investors were coming through agencies," Fogg said. "Could there be holes in that process? Perhaps."
http://www.seattletimes.com/business/local-business/small-firm-took-on-big-one-and-won/
Path America
Lobsang Dargey
Potala Farmers' Market
Potala Tower Seattle
Litigation Cases
UNITED STATES SECURITIES AND EXCHANGE COMMISSION vs Path America & Lobsang Dargey & Path America Sonoco
* Author name
* Author email
Put your comment below
Introduction to Atlantic American Partners
Birch Tradepoint Atlantic Vietnam
Introduction to AAP
Sen. Patrick Leahy, D- VT, answers questions about EB5 fraud allegations surrounding Jay Peak resort owner Ariel Quiros and President and CEO Bill Stenger.
Birch TPA EB Advisors
Site Digest
EB-5 News & Updates #317 January 19-26
EB-5 News & Updates #314 December 29 - January 05
EB-5 News & Updates #313 December 22-29
Most Popular Posts (30 days)
NYC's development czars light up TRD Shanghai forum
Breaking News: Preliminary injunction ruling on EB-5 Regional Center Program! Investors can file immigration petitions under the RIA.
Marko Issever
COVID-19'S Impact On EB-5: A Panel Discussion
Mona Shah
A Year Of Applying Dangerously: Recapping EB-5'S 2022 & Predicting 2023
The Eagle Act: Another Round Of Potential Cap-Eliminating Legislation And What It Would Mean For EB-5
Join Professionals on EB5Projects.com →


text:
<?php
/**
 * Lists or enumerations—for example, a list of cuisines or music genres, etc.
 *
 * @see    http://schema.org/Enumeration
*/
abstract class TypeEnumeration extends TypeIntangible
{
	/**
	 * The Schema.org Type Scope
	 *
	 * @var string
	 */
	protected static $scope = 'https://schema.org/Enumeration';
}

redpajama_set_name: RedPajamaGithub


text:
Wohlers Report 2007 Finds Extraordinary Growth in Additive Fabrication
DETROIT, MICHIGAN, USA, May 1, 2007—Wohlers Associates, Inc. today released its most recent findings in Wohlers Report 2007, an in-depth global study on the state of the 3D printing, additive fabrication, and rapid manufacturing industry. Wohlers Associates has been tracking the developments and trends in additive fabrication, also known as rapid prototyping, since 1988. According to the report, average unit (machine) sales growth, compounded annually, was 37.4 percent over the past 18 years. Annual unit sales have grown by more than 26 times—157 units to 4,165—from 1993 to 2006.
"The popularity of 3D printers is driving the growth of the industry," said Terry Wohlers, principal author of Wohlers Report 2007 and president of Wohlers Associates. 3D printers are low-cost variations of additive systems that are office friendly, easier to use, and less expensive to operate. "3D printing grew from nothing to nearly 15 percent of the installed base in its first four years," Wohlers added. 3D printers sold over the past four years (2003–2006) represent 68 percent of the total number of additive systems installed during this period, according to the new report.
The report reveals that an estimated 77.4 percent of the 3D printers sold in 2006 came from Stratasys and Z Corp. Additive systems from these two companies have been the most popular in recent years and have led much of the industry's growth. Well over half (57 percent) of the Stratasys installed base was shipped in the past three years, even though the company has been shipping systems for 16 years. Nearly half (48.8 percent) of the Z Corp. installed base was shipped in the past two years. Z Corp. has been shipping systems for 11 years.
Rapid manufacturing—the direct production of finished goods from additive fabrication—is the next frontier. Many companies in the aerospace, motor sports, medical, dental, and consumer product industries are now using additive processes for custom and short-run production. Wohlers Associates believes that rapid manufacturing will eventually grow to become the largest application of additive fabrication. Wohlers Report 2007 cites a wide range of industrial examples of rapid manufacturing.
The release of the new report coincides with the Society of Manufacturing Engineers' RAPID 2007 Conference and Exposition, which began today and ends May 3 here in Detroit. Mr. Wohlers anchored this morning's plenary session with highlights from the new report in his 15th annual State of the Industry address.
Wohlers Report 2007 covers all facets of the industry, including business, product, market, technology, research, and application. Fifty co-authors, 56 service providers, and 29 system manufacturers assisted with its development. To support the review and analysis, the softbound publication includes 32 charts and graphs, 47 tables, 97 photographs and illustrations, and eight appendices.
The new 220-page report sells for $475 in the U.S. and $495 in all other countries. The report's table of contents, as well as additional information on the market and industry, are available at http://wohlersassociates.com.
Wohlers Associates, Inc. is a 20-year-old independent consulting firm that works closely with manufacturing organizations to identify the best approaches to rapid product development. The company has provided consulting assistance to 140 organizations in 19 countries around the world.
Andy Christensen Medical Modeling LLC
Kenneth Cooper NASA Marshall Space Flight Center
Vesna Cota Tyco Electronics (Canada)
Dena Braun Alchemy Models Inc.
Philip Dickens Loughborough University (England)
Thierry Dormal CRIF (Belgium)
Axel Henning FhG Institute for Mfg. Eng. & Automation (Germany)
Masato Imamura Sintokogio Ltd. (Japan)
Takeo Nakagawa Fine Tech Corp. (Japan)
Jeffrey Rowe Cairowest Digital Development
Max Ruffo Loughborough University (England)
Millan Yeung National Research Council (Canada)


Highway 101 south was closed on a Monday morning when a driver struck a pedestrian.
Just before 3 o'clock in the morning, a driver was giving his friend a lift. He was driving south on the 101 Freeway near San Francisco. After passing the Oyster Point Boulevard exit, he struck something.
The driver claims that he didn't know what he'd hit, so he kept driving.
The driver then left to drop off his friend at Millbrae before returning to the scene to figure out if he'd hit a pedestrian or an animal.
When the driver could not find a body or carcass, he eventually called 911. But, by that time, 45 minutes had passed since the driver hit the person.
California Highway Patrol officers found the body of the victim on the right shoulder of the 101 South Freeway.
It turned out, the pedestrian was an elderly man. He did not survive.
Several things are still unclear.
What was a pedestrian doing on the freeway, especially when it was still dark? Was he walking, biking or was he drunk or on drugs? Would he have survived if the driver had stayed and called 911 sooner?
It should be noted that the driver was reportedly not under the effects of alcohol or drugs. So why did he think it was more important to drop off his friend than check on who or what he'd hit? Will he face criminal charges?
One thing is clear, however. We must watch for pedestrians, no matter when or where we drive.
At 3 a.m., the sun is still tucked away, and the world is engulfed in darkness. In the eyes of the law, however, drivers must always watch for pedestrians while driving. It doesn't really matter if pedestrians are jaywalking or walking on the freeway in the dark. If a car hits a pedestrian, the driver may be liable…especially if the pedestrian is killed.
After all, do we really expect a pedestrian to survive against a car?
As with any serious injuries, a pedestrian's injuries can have lifelong consequences. This is especially true because pedestrians are exposed and aren't protected by the seatbelt or frame of their car.
If you are a pedestrian who has been injured by someone driving a car, you could have a legal claim against them. A personal injury lawyer experienced in pedestrian-related injuries can help you get all the compensation you deserve from the person responsible.
If you or a loved one were pedestrian(s) injured or killed in an accident, contact an attorney to help you. Schedule a free initial consultation with a lawyer experienced in pedestrian accidents. Contact the Law Offices of Sharona Hakim in Los Angeles County. Call 800-LAW-TALK (529-8255) or contact us online.


text:
namespace ImageEditor {

    class Canvas;

class MarkerTool: public AbstractDrawingTool  {
public:
    explicit MarkerTool( Canvas* canvas );
    ~MarkerTool();
    void beginDraw( int x, int y ) override;
    void continueDraw( int x, int y, DWORD flags = 0) override;
    void endDraw( int x, int y ) override;
    void render( Painter* gr ) override;
    CursorType getCursor(int x, int y) override;
protected:
    POINT oldPoint_;
    int circleStride_;
    uint8_t* circleData_;
    AffectedSegments segments_;
    Gdiplus::Region affectedRegion_;
    virtual void drawLine(int x0, int y0, int x1, int y1);
    void highlightRegion(RECT rc);
    void createCircle();

    void setPenSize(int size) override;

};
}

#endif // MarkerTool_h__


text:
Ludwig Buchner ist der Name folgender Personen:

* Ludwig Buchner (Musiker) (* 1957), deutscher Musiker und Musikpädagoge
 Ludwig Andreas Buchner (1813–1897), deutscher Arzt und Pharmakologe
 Ludwig Gottlieb Buchner (1711–1779), deutscher Bibliothekar

Siehe auch:

 Ludwig Büchner (1824–1899), deutscher Philosoph und Autor

redpajama_set_name: RedPajamaWikipedia


text:
Scentbird blog
Scentbird Perfume and Cologne Blog
Exclusive: Talking Floral Notes and Fantasia with Anna Sui5 min read
Marianne Mychaskiw
While the term "Fantasia" may trigger images of dancing broomsticks and Disney characters for many of us, Anna Sui thinks more along the lines of unicorns, floral notes, and juicy fruits like raspberry and pomelo.
Known for her dreamy, whimsical designs, Sui has solidified her spot as a runway legend, and each of her fragrances follow suit, perfectly bottling the designer's penchant for the fanciful. Her latest scent, Fantasia, in its unicorn-adorned glory, is no exception. Ahead of her show at NYFW, Scentbird caught up with the designer to get all the details on the scent.
Where do you draw inspiration to create your fragrances?
"Every fragrance I create illustrates another part of my world… People are attracted to my fashions because of all the elements I try to put into it. There's always a very sweet feminine, girly aspect…a touch of nostalgia. There's also the aspect of trendiness; the hipness I try to create by always adding a rock-and-roll coolness. There's always that ambiguity…the Good Girl/Bad Girl thing. All these facets have to go into my designs, or it doesn't look like Anna Sui".
Scent has so many close ties to memory — what are some of your most poignant scent memories?
"I always remember watching my Mother getting ready to go out for the evening. I was totally fascinated by the whole ritual of it…the beautiful dresses, the jewelry, the makeup. I remember she used to wear Chanel No 5, and for me, that scent will always take me back to those days. My Mom is still such an elegant woman, so polished. I learned a great deal from her."
Do you ever incorporate scent memory elements into the fragrances you create?
"I use a lot of flowers as they are a really important scent memory for me. My mother always grew roses in our yard, the association of roses takes me back to my earliest childhood memories.
Are there any notes you gravitate toward when concocting a new scent?
"There is a farmer's market in Union Square that sells fresh seasonal flowers. I adore springtime when there are peonies, tulips, lily of the valley and iris available all at once. After going there for a while and sampling what's new each week, I have come to realize my new favorite flower is the peony! I love to arrange armfuls of them in my bedroom! The scent of the peony is not as pronounced as the rose, but they do have their own fresh sweetness. Their subtle fragrance whisks me off to a dream of Imperial China!"
For Mermaid in particular, what was your inspiration for the scent?
"I loved the Fantasia world and wanted to expand it further. After finishing my beach themed SS19 collection, I was inspired by the imaginary world of the sea; I felt the mermaid perfectly exemplified its mystery. The ocean is alluring, but can also be dangerous. There are many hidden treasures in the ocean waiting to be discovered!"
Did you have a specific kind of person or personality in mind when creating Mermaid?
"She's a little bit of a rebel, independent, living life her own way. She's always looking to discover new and exciting things, exploring the world, looking for treasures. A beautiful smile and a slightly mysterious look is her signature. Like a mermaid, her personality has several facets and that is the reason why everyone is intrigued."
What's next for your fashion and fragrance houses?
A retrospective exhibition of my career opens this September at the Museum of Arts and Design in New York City. The history of Anna Sui fragrances is amply documented in the show…and each room will be scented with one of my signature fragrances!
Follow @Scentbird on Instagram for more exclusive interviews
Scentbird is your digital destination for all things fragrance, skincare, makeup, wellness and more – updated monthly. Upgrade your beauty and grooming routine: trying something new every month. Starting at just 14.95/mo.
anna suifruity fragrance
Step Up Your Self-Care Game with Pursoma
Marianne Mychaskiw 10/17/2019
Tapping Into the Fountain of Youth with Dr. Loretta
Scentbird's Exclusive Interview with Alicia Grande, Founder of Grande Cosmetics
Copyright ©2020 Scentbird Perfume and Cologne Blog
Neori theme, designed by litMotion Templates


Kinesiology helps prepare for babies!
If you have started trying to conceive or have recently found out that you are pregnant, you may have asked yourself is there a better way of thinking, feeling or approaching what is supposed to be a joyful time in a woman and the expectant couple's life?
If you could somehow ask your body directly what was wrong, would you take the first step and empower yourself to find out? Holistic Kinesiology can assist to resolve stresses in your life by asking your body directly where you hold or store stress around an issue-in this instance it could be around your beliefs about your own childhood, fears or anxieties around becoming a parent, or feeling worthy of bringing a child into this world. You may just want to work on releasing 'stuck' patterns, change how you view your current experience, or work towards a better way of being.
When stress (be it physical or emotional) is held in your body, it can get in the way of living life the way you want-stress can restrict you by limiting your mobility, affecting you with pain, even impacting on your physical structure, digestions, posture, and function.
Stress on an emotional level can feel as though you're going through life with someone else driving your car. Ever felt stuck in emotions and situations you don't want to be in but feel like you can't get out of? Holistic Kinesiology can assist you to move forward and facilitate healing and change by working with your body and mind together to resolve stress in your life.
Structural-helping to release tight muscles and rebalancing relationships between muscles, organs, the spine and fascia. By working with reactive compensation patterns and imbalances between the neck, posture, pelvis and back, and assisting to release these.
Biochemical-working with discovering stress patterns of chemical substances in the body, such as hormone levels, blood, toxins ingested through diet and environmental conditions, adrenal stress, nutrition and digestive issues.
Psychological/Emotional-identifying and diffusing limiting belief patterns that form our current atttudes and drive how we react to daily challenges and limit our capacity to just be ourselves and be less reactive in life.
Electromagnetic- assisting to release energetic blockages through holding acupressure points, and working to tonify or sedate points along the meridian channels to clear stress around the meridian system.
It's not enough to just look at the body, just as it's not enough to look only at the mind-Holistic Kinesiology allows us to look at all aspects of why you're here so we can get a complete picture of how you are in relation to your issue or health complaint.
Wouldn't you like to bring a child into this world consciously, with as minimal amount of stress and anxiety possible? If the answer is yes then Holistic Kinesiology may be just be what you are looking for.


text:
package opendct.tuning.discovery.discoverers;

import opendct.capture.CaptureDevice;
import opendct.capture.CaptureDeviceIgnoredException;
import opendct.config.Config;
import opendct.config.OSVersion;
import opendct.config.options.*;
import opendct.nanohttpd.pojo.JsonOption;
import opendct.tuning.discovery.*;
import opendct.tuning.upnp.UpnpDiscoveredDevice;
import opendct.tuning.upnp.UpnpDiscoveredDeviceParent;
import opendct.tuning.upnp.UpnpManager;
import opendct.tuning.upnp.config.DCTDefaultUpnpServiceConfiguration;
import opendct.tuning.upnp.listener.DiscoveryRegistryListener;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.fourthline.cling.model.meta.RemoteDevice;

import java.net.InetAddress;
import java.net.URI;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class UpnpDiscoverer implements DeviceDiscoverer {
    private static final Logger logger = LogManager.getLogger(UpnpDiscoverer.class);

    // Static information about this discovery method.
    private final static String name = "UPnP";
    private final static String description = "Discovers capture devices available via UPnP.";
    private final static OSVersion[] supportedOS = new OSVersion[] {
            OSVersion.WINDOWS,
            OSVersion.LINUX
    };

    // Global UPnP device settings.
    private final static Map<String, DeviceOption> deviceOptions;
    private static IntegerDeviceOption offlineDetectionSeconds;
    private static IntegerDeviceOption offlineDetectionMinBytes;
    private static LongDeviceOption streamingWait;
    private static BooleanDeviceOption smartBroadcast;
    private static BooleanDeviceOption devicePingDetection;
    private static IntegerDeviceOption devicePingTimeout;
    private static BooleanDeviceOption qamAlwaysRemapLookup;

    // Detection configuration and state
    private static boolean enabled;
    private static boolean requestBroadcast;
    private static String errorMessage;
    private DeviceLoader deviceLoader;

    private final ReentrantReadWriteLock discoveredDevicesLock = new ReentrantReadWriteLock();
    private final Map<Integer, UpnpDiscoveredDevice> discoveredDevices = new HashMap<>();
    private final Map<Integer, UpnpDiscoveredDeviceParent> discoveredParents = new HashMap<>();

    static {
        enabled = Config.getBoolean("upnp.discoverer_enabled", true);

        requestBroadcast = false;

        errorMessage = null;
        deviceOptions = new ConcurrentHashMap<>();

        while (true) {
            try {
                streamingWait = new LongDeviceOption(
                        Config.getLong("upnp.device.wait_for_streaming", 15000),
                        false,
                        "Return to SageTV",
                        "upnp.device.wait_for_streaming",
                        "This is the maximum number of milliseconds to wait before returning to" +
                                " SageTV regardless of if the requested channel is actually streaming."
                );

                offlineDetectionSeconds = new IntegerDeviceOption(
                        Config.getInteger("upnp.device.wait_for_offline_detection_s", 18),
                        false,
                        "Offline Channel Detection Seconds",
                        "upnp.dct.wait_for_offline_detection_s",
                        "This is the value in seconds to wait after tuning a channel before" +
                                " making a final determination on if it is tunable or not." +
                                " This applies only to offline scanning."
                );

                offlineDetectionMinBytes = new IntegerDeviceOption(
                        Config.getInteger("upnp.device.offline_detection_min_bytes", 18800),
                        false,
                        "Offline Channel Detection Bytes",
                        "upnp.dct.offline_detection_min_bytes",
                        "This is the value in bytes that must be consumed before a channel is" +
                                " considered tunable."
                );

                smartBroadcast = new BooleanDeviceOption(
                        Config.getBoolean("upnp.smart_broadcast", true),
                        false,
                        "Smart Broadcast Enabled",
                        "upnp.smart_broadcast",
                        "This tells the program to only broadcast for new UPnP devices if" +
                                " one is inaccessible possibly due to an IP address change or if" +
                                " an expected device has not yet loaded. When this is enabled," +
                                " Discovery Broadcast Interval is ignored since this makes the" +
                                " broadcast run on demand."
                );

                devicePingDetection = new BooleanDeviceOption(
                        Config.getBoolean("upnp.device.ping_detection", false),
                        false,
                        "Ping Detection",
                        "upnp.device.ping_detection",
                        "This enables pinging the UPnP device before tuning to ensure that it is" +
                                " currently accessible on the network. This when used in" +
                                " conjunction with device pooling will enable the program to skip" +
                                " capture devices that are not currently responsive when" +
                                " selecting a capture device."
                );

                devicePingTimeout = new IntegerDeviceOption(
                        Config.getInteger("upnp.device.ping_timeout_ms", 15000),
                        false,
                        "Ping Detection Timeout",
                        "upnp.device.ping_timeout_ms",
                        "This value is in milliseconds. This is the timeout used for Offline" +
                                " Detection. If the device does not respond within this timeout," +
                                " it will be considered offline."
                );

                qamAlwaysRemapLookup = new BooleanDeviceOption(
                        Config.getBoolean("upnp.always_remap_lookup", false),
                        false,
                        "Always QAM Channel Remap Lookup",
                        "upnp.always_remap_lookup",
                        "This will always look up ClearQAM channels based on an available" +
                                " CableCARD tuner. The only exception is if no CableCARD tuner is" +
                                " currently available and a previous mapping is known, then the" +
                                " previous mapping will be used."
                );

                Config.mapDeviceOptions(
                        deviceOptions,
                        offlineDetectionSeconds,
                        offlineDetectionMinBytes,
                        streamingWait,
                        smartBroadcast,
                        devicePingDetection,
                        devicePingTimeout,
                        qamAlwaysRemapLookup
                );

            } catch (DeviceOptionException e) {
                logger.error("Unable to configure device options for HDHomeRunDiscoverer." +
                        " Reverting to defaults. => ", e);

                Config.setInteger("upnp.device.wait_for_streaming", 15000);
                Config.setInteger("upnp.device.wait_for_offline_detection_s", 18);
                Config.setInteger("upnp.device.offline_detection_min_bytes", 18800);
                Config.setBoolean("upnp.smart_broadcast", true);
                Config.setBoolean("upnp.always_remap_lookup", false);

                continue;
            }

            break;
        }
    }

    @Override
    public String getName() {
        return UpnpDiscoverer.name;
    }

    @Override
    public String getDescription() {
        return UpnpDiscoverer.description;
    }

    @Override
    public synchronized boolean isEnabled() {
        return UpnpDiscoverer.enabled;
    }

    @Override
    public synchronized void setEnabled(boolean enabled) {
        UpnpDiscoverer.enabled = enabled;
        Config.setBoolean("upnp.discoverer_enabled", enabled);
    }

    @Override
    public OSVersion[] getSupportedOS() {
        return UpnpDiscoverer.supportedOS;
    }

    @Override
    public synchronized void startDetection(DeviceLoader deviceLoader) throws DiscoveryException {

        if (deviceLoader == null || !UpnpDiscoverer.enabled || UpnpManager.isRunning()) {
            return;
        }

        this.deviceLoader = deviceLoader;

        UpnpManager.startUpnpServices(
                DCTDefaultUpnpServiceConfiguration.getDCTDefault(),
                new DiscoveryRegistryListener(this));

    }

    @Override
    public boolean stopOnStandby() {
        return false;
    }

    @Override
    public synchronized void stopDetection() throws DiscoveryException {

        if (!UpnpManager.isRunning()) {
            return;
        }

        UpnpManager.stopUpnpServices();
    }

    @Override
    public synchronized void waitForStopDetection() throws InterruptedException {
        long timeout = System.currentTimeMillis() + 5000;

        try {
            while (timeout > System.currentTimeMillis()) {
                UpnpManager.stopUpnpServices();

                if (!UpnpManager.isRunning()) {
                    return;
                }

                Thread.sleep(100);
            }
        } catch (Exception e) {
            logger.error("UPnP shutdown created an exception => ", e);
        }
    }

    @Override
    public boolean isRunning() {
        return UpnpManager.isRunning();
    }

    @Override
    public String getErrorMessage() {
        return UpnpDiscoverer.errorMessage;
    }

    @Override
    public int discoveredDevices() {
        int returnValue = 0;

        discoveredDevicesLock.readLock().lock();

        try {
            returnValue = discoveredDevices.size();
        } catch (Exception e) {
            logger.error("discoveredDevices created an unexpected exception while using" +
                    " discoveredDevicesLock => ", e);
        } finally {
            discoveredDevicesLock.readLock().unlock();
        }

        return returnValue;
    }

    @Override
    public DiscoveredDevice[] getAllDeviceDetails() {
        DiscoveredDevice[] returnValues = null;

        discoveredDevicesLock.readLock().lock();

        try {
            returnValues = new DiscoveredDevice[discoveredDevices.size()];

            int i = 0;
            for (Map.Entry<Integer, UpnpDiscoveredDevice> discoveredDevice : discoveredDevices.entrySet()) {
                returnValues[i++] = discoveredDevice.getValue();
            }

        } catch (Exception e) {
            logger.error("getAllDeviceDetails created an unexpected exception while using" +
                    " discoveredDevicesLock => ", e);
        } finally {
            discoveredDevicesLock.readLock().unlock();
        }

        if (returnValues == null) {
            returnValues = new DiscoveredDevice[0];
        }

        return returnValues;
    }

    @Override
    public DiscoveredDevice getDeviceDetails(int deviceId) {
        DiscoveredDevice returnValue = null;

        discoveredDevicesLock.readLock().lock();

        try {
            returnValue = discoveredDevices.get(deviceId);
        } catch (Exception e) {
            logger.error("getDeviceDetails created an unexpected exception while using" +
                    " discoveredDevicesLock => ", e);
        } finally {
            discoveredDevicesLock.readLock().unlock();
        }

        return returnValue;
    }

    @Override
    public DiscoveredDeviceParent[] getAllDeviceParentDetails() {
        DiscoveredDeviceParent[] returnValues = null;

        discoveredDevicesLock.readLock().lock();

        try {
            returnValues = new UpnpDiscoveredDeviceParent[discoveredParents.size()];

            int i = 0;
            for (Map.Entry<Integer, UpnpDiscoveredDeviceParent> discoveredParent : discoveredParents.entrySet()) {
                returnValues[i++] = discoveredParent.getValue();
            }

        } catch (Exception e) {
            logger.error("getAllDeviceParentDetails created an unexpected exception while using" +
                    " discoveredDevicesLock => ", e);
        } finally {
            discoveredDevicesLock.readLock().unlock();
        }

        if (returnValues == null) {
            returnValues = new UpnpDiscoveredDeviceParent[0];
        }

        return returnValues;
    }

    @Override
    public DiscoveredDeviceParent getDeviceParentDetails(int parentId) {
        DiscoveredDeviceParent deviceParent = null;

        discoveredDevicesLock.readLock().lock();

        try {
            deviceParent = discoveredParents.get(parentId);
        } catch (Exception e) {
            logger.error("getDeviceParentDetails created an unexpected exception while using" +
                    " discoveredDevicesLock => ", e);
        } finally {
            discoveredDevicesLock.readLock().unlock();
        }

        return deviceParent;
    }

    public void addCaptureDevice(UpnpDiscoveredDeviceParent parent, UpnpDiscoveredDevice... devices) {
        discoveredDevicesLock.writeLock().lock();

        try {
            // This prevents accidentally re-adding a device after detection has stopped.
            if (!UpnpManager.isRunning()) {
                return;
            }

            // Any universal filtering can go here.

            UpnpDiscoveredDeviceParent updateDeviceParent =
                    discoveredParents.get(parent.getParentId());

            if (updateDeviceParent != null) {
                // This device has been detected before. We will only update the IP address.

                if (!(updateDeviceParent.getRemoteAddress().equals(parent.getRemoteAddress()))) {
                    logger.info("HDHomeRun device '{}' changed its IP address from {} to {}.",
                            updateDeviceParent.getFriendlyName(),
                            updateDeviceParent.getRemoteAddress().getHostAddress(),
                            parent.getRemoteAddress().getHostAddress()
                    );

                    updateDeviceParent.setRemoteAddress(parent.getRemoteAddress());
                }

                return;
            }

            discoveredParents.put(parent.getParentId(), parent);

            boolean addedDevices = false;

            for (UpnpDiscoveredDevice newDevice : devices) {

                // The array size will usually be 1-2 devices too big.
                if (newDevice == null) {
                    continue;
                }

                addedDevices = true;

                this.discoveredDevices.put(newDevice.getId(), newDevice);

                parent.addChild(newDevice.getId());

                deviceLoader.advertiseDevice(newDevice, this);
            }

            if (!addedDevices) {
                // Remove parents without any children.
                discoveredParents.remove(parent.getParentId());
            }

        } catch (Exception e) {
            logger.error("addDevices created an unexpected exception => ", e);
        } finally {
            discoveredDevicesLock.writeLock().unlock();
        }
    }

    @Override
    public CaptureDevice loadCaptureDevice(int deviceId)
            throws CaptureDeviceIgnoredException, CaptureDeviceLoadException {

        CaptureDevice returnValue = null;
        UpnpDiscoveredDevice discoveredDevice;
        CaptureDeviceLoadException loadException = null;

        discoveredDevicesLock.readLock().lock();

        try {
            discoveredDevice = discoveredDevices.get(deviceId);

            if (discoveredDevice != null) {
                returnValue = discoveredDevice.loadCaptureDevice();
            } else {
                loadException = new CaptureDeviceLoadException("Unable to create capture device" +
                        " because it was never detected.");
            }

        } catch (CaptureDeviceLoadException e) {
            loadException = e;
        } catch (CaptureDeviceIgnoredException e) {
            logger.warn("Capture device will not be loaded => {}", e.toString());
        } catch (Exception e) {
            logger.error("An unhandled exception happened in loadCaptureDevice while using" +
                    " discoveredDevicesLock => ", e);
        } finally {
            discoveredDevicesLock.readLock().unlock();
        }

        if (loadException != null) {
            throw loadException;
        }

        return returnValue;
    }

    public static InetAddress getRemoteIpAddress(RemoteDevice remoteDevice) {
        InetAddress returnAddress = null;

        if (remoteDevice.getDetails() != null &&
                remoteDevice.getDetails().getBaseURL() != null &&
                remoteDevice.getDetails().getBaseURL().getHost() != null) {

            try {
                returnAddress = InetAddress.getByName(remoteDevice.getDetails().getBaseURL().getHost());
            } catch (UnknownHostException e) {
                // Sometimes a URL doesn't show up in the base URL field soon enough.

                //(RemoteDeviceIdentity) UDN: uuid:24FB1FB3-38BF-39B9-AAC0-F1A177B8E8D5, Descriptor: http://x.x.x.x:80/dri/device.xml
                String encoderIPAddress = remoteDevice.getParentDevice().getIdentity().toString();

                try {
                    encoderIPAddress = encoderIPAddress.substring(encoderIPAddress.lastIndexOf("http://"));
                    returnAddress = InetAddress.getByName(new URI(encoderIPAddress).getHost());
                } catch (Exception e1) {
                    logger.error("Unable to parse '{}' into encoder IP address => ", encoderIPAddress, e);
                }
            }
        }

        return returnAddress;
    }

    @Override
    public DeviceOption[] getOptions() {
        return new DeviceOption[] {
                offlineDetectionSeconds,
                offlineDetectionMinBytes,
                streamingWait,
                smartBroadcast,
                devicePingDetection,
                devicePingTimeout,
                qamAlwaysRemapLookup
        };
    }

    @Override
    public void setOptions(JsonOption... deviceOptions) throws DeviceOptionException {
        for (JsonOption option : deviceOptions) {
            DeviceOption optionReference = UpnpDiscoverer.deviceOptions.get(option.getProperty());

            if (optionReference == null) {
                continue;
            }

            if (optionReference.isArray()) {
                optionReference.setValue(option.getValues());
            } else {
                optionReference.setValue(option.getValue());
            }

            Config.setDeviceOption(optionReference);
        }

        Config.saveConfig();
    }

    public static int getOfflineDetectionSeconds() {
        return offlineDetectionSeconds.getInteger();
    }

    public static int getOfflineDetectionMinBytes() {
        return offlineDetectionMinBytes.getInteger();
    }

    public static long getStreamingWait() {
        return streamingWait.getLong();
    }

    public static boolean getSmartBroadcast() {
        return smartBroadcast.getBoolean();
    }

    public synchronized static void requestBroadcast() {
        requestBroadcast = true;
    }

    public synchronized static boolean needBroadcast() {
        boolean returnValue = requestBroadcast;
        requestBroadcast = false;
        return returnValue;
    }

    public static int getDevicePingTimeout() {
        return devicePingTimeout.getInteger();
    }

    public static boolean getDevicePingDetection() {
        return devicePingDetection.getBoolean();
    }

    public static boolean getQamAlwaysRemapLookup() {
        return qamAlwaysRemapLookup.getBoolean();
    }
}


text:
package org.motechproject.mds.service;

import org.motechproject.mds.query.QueryParams;

import java.util.Collection;

/**
 * The TrashService provides methods related with the module trash mode (by default
 * the mode is active and it can be turned off by the user).
 */
public interface TrashService {

    /**
     * Checks if trash mode is active. This method should be used before executing the
     * {@link #moveToTrash(Object, Long)} method to resolve whether the given instance should be moved to
     * trash or removed permanently.
     *
     * @return true if delete mode is equal to
     * {@link org.motechproject.mds.config.DeleteMode#TRASH}; false otherwise.
     */
    boolean isTrashMode();

    /**
     * Moves the given instance to the trash. This method should only be executed, when the
     * module trash mode is active.
     *
     * @param instance an instance created from the given entity definition.
     * @see #isTrashMode()
     * @param schemaVersion the current version of the schema for the entity
     */
    void moveToTrash(Object instance, Long schemaVersion);

    /**
     * Return instance with given id from trash.
     *
     * @param trashId id of the trash instance
     * @param entityClassName the className of the entity
     */
    Object findTrashById(Long trashId, String entityClassName);

    /**
     * Deletes trashed instance from trash.
     *
     * @param trash trashed instance to be removed
     */
    void removeFromTrash(Object trash);

    /**
     * Sets the repeating schedule job that will be executed from time to time. Execution time
     * depends on the value of time value and time unit (defined in
     * {@link org.motechproject.mds.util.Constants.Config#MODULE_FILE}).
     *

     * Before scheduling new job, the old one should be unscheduled to prevent the errors.
     */
    void scheduleEmptyTrashJob();

    /**
     * Cleans the module trash. All instances in trash should be removed permanently and if they
     * contain any historical data they should also be removed permanently.
     *

     * This method should only be executed by the job created in the
     * {@link #scheduleEmptyTrashJob()} method.
     * @param entitiesClassNames the list of class names for which the trash should get cleared
     */
    void emptyTrash(Collection<String> entitiesClassNames);

    /**
     * Returns the collection of instances from trash of a certain entity.
     * Returned collection contains only instances that are on the current schema version.
     *
     * @param entityName Instances of what entity should be looked for
     * @param queryParams Query parameters such as page number, size of page and sort direction.
     *                    If null method will return all records in trash.
     * @return Collection of instances on the current schema version in trash
     */
    Collection getInstancesFromTrash(String entityName, QueryParams queryParams);

    /**
     * Gets a number of instances moved to trash, for entity with given class name.
     * This will only consider the instances, that have been moved to trash on the
     * current entity schema version.
     *
     * @param className fully qualified entity class name
     * @return trash instances count
     */
    long countTrashRecords(String className);
}