text:
Areas of Speciality
Pathology Direct
Our Health Professionals
Mr David Hartwright
MBChB (Glas), FRCS Ed, MSc (Tr&Ortho), FRCS (Tr&Ortho)
GMC number: 4102188
Practicing since: 1994
David Hartwright is an orthopaedic surgeon with a practice based at the Royal Hampshire County Hospital as well as Nuffield Health Wessex Hospital.
Although trained in general Orthopaedics and Trauma, he specialises in lower limb surgery particularly hip arthroplasty, hip replacement, knee replacement and knee arthroplasty and sports injuries. He completed his Surgical Training in London (based primarily at Guy's and St Thomas Hospitals) and undertook fellowship training in leading centres in both Australia (Sydney, Perth) and Europe (Switzerland).
Alongside his busy practice, he is actively involved in research and medical education. He was recently awarded an MSc in Orthopaedics (his thesis concerned Total Knee Arthroplasty Surgery) and is an educational supervisor for the Wessex Deanery. He acts as a reviewer for a number of journals and is on the faculty for AO education. He has presented at numerous national and international meetings and has published articles in several leading orthopaedic journals. He is committed to providing excellence in clinical and overall patient care.
Outside of work, David is a keen sportsman with a love of travel.
Treatments and tests offered by Mr David Hartwright at Nuffield Health
Knee arthroscopy surgery
Arthroplasty
Locations Mr David Hartwright works with
Winchester Road, Chandlers Ford, Eastleigh, SO53 2DW
Overall rating Good
Related experience
British Orthopaedic Association
BASKAO ALUMNI
Other post held
Consultant Orthopaedic Surgeon, Royal Hampshire County Hospital Winchester
Mr David Hartwright does not hold a share or financial interest in this hospital, another Nuffield Health hospital or the company.
Mr David Hartwright does not have a share or financial interest in equipment used at this hospital or another Nuffield Health hospital.
Mr David Hartwright does not hold any paid advisory role(s) at this hospital or on behalf of Nuffield Health.


text:
Q: Is it possible to make custom implementation for RememberMeAuthenticationFilter? greetings all
i am using spring security 3.0.2
and i want when a remembered user requests a page
after his token is being authenticated (onAuthenticationSuccess)
do some coding before landing him to his request
i got the idea to provide a custom implementation of the RememberMeAuthenticationFilter
but i don't know how to do so, so can anyone tell me
or if there's a better way to do what i am trying to do ?

A: Perhaps you can subscribe to AuthenticationSuccessEvent and check whether authentication is RememberMeAuthenticationToken.

redpajama_set_name: RedPajamaStackExchange


text:
Daphne native Michael Pierce talks NFL Playoffs and 2018 Senior Bowl
Thomas Gleaton
By Scott McInnerney
WNSP Reporter
MOBILE, AL – Baltimore Ravens nose tackle Michael Pierce joined The Opening Kickoff in the studio Friday.
Pierce graduated from Daphne High School, helping the Trojans to the Alabama 6-A state championship in 2010. He went on to play two years at Tulane before transferring to Samford University.
As an undrafted free agent, Pierce signed with Baltimore in 2016. In his time in the NFL, he has 84 tackles, three sacks, and two fumble recoveries.
Pierce gave some insight on what to expect from the upcoming NFL Playoff games this weekend. He touched on the matchup between New England's offensive line and the Jaguars' pass rush.
"Let's see how Marcell Dareus does against their interior," Pierce said. "He's a $100 million guy and a perennial pro-bowler when he's healthy. We'll see how Tom Brady does against their front. That's going to be the key to the game."
He continued, talking about the NFC Championship between the Eagles and Vikings.
"All the Eagles' hope relies on Nick Foles," Pierce said. "We'll see what he can come up with, but if it's anything like last week, he may be in trouble."
Pierce's younger brother Myles will be playing in the 2018 Reese's Senior Bowl, representing The Citadel.
"You're going to see a physical linebacker," Pierce said. "Playing at a Division 1 AA school, you don't get a lot of publicity. I think he's going to surprise some people."
Pierce concluded the interview by discussing his ideal play as a defensive lineman.
"Interception," he said. "I was fortunate enough to have a scoop-and-score. I didn't have to run anywhere. I kind of ended up in the end zone.
"Having an interception and running is special."
Listen to the full interview below. For more, tune in to The Opening Kickoff with Mark and Lee weekday mornings from 6 a.m. to 9 a.m.
Have you ever wondered how much money college football programs are spending on food?
WNSP interview with ESPN analyst, Tom Luginbill
WNSP interview with Paul Finebaum!
WNSP interview with SEC Director of Communications, Chuck Dunlap
WNSP interview with Captain Munnerlyn!

redpajama_set_name: RedPajamaCommonCrawl


Why do we need plaster casts?
A cast holds a hand that has been operated on in the right position and limits mobility. This is necessary for reducing pain and it will also stop sutured tissue from tearing.
What do you need to know about plaster casts?
Since it takes around 36 hours for plaster to fully harden, you must not support yourself on the cast for the first 2-3 days or it will fall apart. If the cast is on your leg, use crutches.
The cast must not get wet, since it will then start falling apart. When taking a shower, place a waterproof covering on the cast.
If the bandage around the cast gets dirty, do not remove the old bandage, but put a new one on top of it, making sure it is not too tight.
Swelling of the limb may increase. This is caused by operation trauma. If you feel like your cast is getting tight, contact your family physician.
If the bandage around the cast comes undone, put a new one around the cast without it being too tight.
Your cast should stay on for as long as your doctor recommends. You must not remove it yourself as this may negatively affect the outcome of the operation.


text:
Explorers Club President Lorie Karnath (Stefan Falke)
Adventure Exploration & Survival
Lorie Karnath, president of the Explorers Club
Abe Streep
Since 1904, the Manhattan-based Explorers Club has served as adventure's unofficial hall of fame, deciding which expeditions and explorers matter. Most of the inductees have been men: women weren't welcome as members until 1981. In 2009, Lorie Karnath, an investment banker turned philanthropist, became the second female president in the club's history. Her experience has paid quick dividends: in two years, Karnath, 50, has brought in more money than any of her predecessors. But can Karnath, the founder of an orphanage in Yunnan, China, liven up the club's old-guy image? She spoke with Outside senior editor Abe Streep about the future of the club—and how it might involve outer space.
STREEP: What's the biggest misconception about the Explorers Club?
KARNATH: Tell me what your conception is.
Maybe a little old and stodgy.
I've heard that people think it's a group of elderly men from New York, but if you meet me, that kind of thwarts that notion.
You just had your biggest event of the year, the annual dinner. How was it?
Great. You should've come. The theme was prophecy and separating scientific fact from fiction. Historically, explorers were told that if they sailed across the ocean, they would fall off the face of the earth. So it was about superstition and exploration's role in debunking that. It's an interesting idea, especially these days when we're having to discern fact from fiction, particularly with regard to climate change.
You decide which expeditions get funding and which don't. What projects appeal to you?
Well, we hear about the eureka experiences. Discovering Lucy propelled [Donald] Johansson to the top of everyone's understanding of who and what an explorer is. But he had been researching for decades. It's the years of devotion and dedication that produce results. I'm not taking away from some of the younger explorers who are doing things that are very high on adventure. Their work is valuable, too, but it doesn't perhaps add to our body of knowledge.
How does an investment banker become a member—then the president—of the Explorers Club?
On Wall Street in the eighties, a lot of people were interested in bonuses. I was interested in time off for expeditions. I did a program with Operation Raleigh, which Prince Charles founded, in the Borneo jungles. We climbed Mount Kinabalu, where a large percentage of the world's orchid species are, and did some studies along the way. The army captain I was climbing the mountain with had some problems, and in the end I was carrying not only my supplies but his supplies. At the top, someone said, "How did you train?" I said, "I trained in the jungles of Wall Street." I became a member of the Explorers Club in 1989.
What do you see the club doing in 50 years?
I think about this a lot, and not even 50 years from now but today. The club plays the role of a hub for the global—and, eventually, beyond global—network of explorers. Explorers tend to work in an isolated manner. We offer a neutral platform, a means to share results without concern for borders or competing governments.
Wait—beyond global?
Well, I think as we go into space…
Which of your members are going into space?
We have quite a few members who are astronauts. But what we're looking at now is increasingly how we'll use space going forward. We have Richard Garriott, who's looking at space travel as a logistical option. Just like I think more and more we're going to see work in the oceans—both of these as alternative habitats.
Do you think that's realistic?
I do. I think what happens on earth might decide how quickly it becomes realistic. I just think it's good planning, nothing more than that.
From Outside Magazine, Jul 2011
Lead Photo: Stefan Falke
10 Interesting Ways to (Almost) Die in the Wilderness
By: Alex Hutchinson
The Range of Light National Monument Would Link Yosemite and Sequoia–Kings Canyon National Parks
By: Alison Osius
An Exhilarating Dip in the Bone-Chilling Sea


text:
John Goodwin (14 March 1859 – 15 February 1938) was a Welsh sports shooter. He competed for Great Britain in the men's trap event at the 1912 Summer Olympics.

References

1859 births
1938 deaths
Welsh male sport shooters
Olympic shooters of Great Britain
Shooters at the 1912 Summer Olympics
Sportspeople from Powys
British male sport shooters

redpajama_set_name: RedPajamaWikipedia


Yes it is okay to install cabinets over tile. A cracked tile that is half covered by a cabinet can be replaced just as any tile would, it will just take a little bit more work. As with any tile install, I would recommend that a crack isolation membrane be installed on the slab prior to setting the tile. Tile set over a slab, on a crack isolation membrane, will rarely if ever crack unless your slab is failing below. As for your island cabinet, I would suggest creating a positive attachment between the floor and the island cabinet, but I do not think having tile down first is going to matter. Running tile or wood flooring under cabinets is quite common. It allows the installers to cut less material and work faster through the room. I would not worry about tile running under your cabinets.


I'm working on a ColdFusion project in a small team, and wanted to take advantage of CVS to prevent editing same files at the same time. Because of the nature of the project the components could not be tested on local systems, and recreating the actual .cfm, .cfc, .xml, etc. files after every edit didn't seem very much fun. I had previously used CVS on UNIX side and knew that autoupdate would be possible. However, to get it running on Windows required some extra steps.
The ampersand (inside the parentheses) forks the process and thus cicumvents the problem with CVS repository locking. Whenever a commit is made, the update is run, and you can view the latest files via the web browser.
… and initially thought that it works. But it soon dawned on me that the update was always one version behind the current. That's because the current version was still locked by the CVS when I called the batch file from loginfo.
Lots of searching on the web ensued. Finally, I came across Jouni Heikniemi's website on »CVS: Using loginfo to send mail with diffs on Win32/CVSNT». While I did not need the diff/mail functionality, the core problem was the same: how to bypass the CVS file locking in Windows's threaded environment? Jouni had solved the problem by creating two Perl files, one of which is called from loginfo, and the second one is subsequently called from the first one, thus spawning a new process that waits around for a few seconds for the CVS locks to be released, and then performs the update.
I adapted Jouni's Perl files for the purpose of auto-update. The resulting files are extremely simple.
# Spawn another process to avoid CVS locking.
# and releases repository locks. Then run update.
.. and when a commit is made, within few seconds the resulting files are updated as well, and I can hit refresh on my web browser pointing to the development directory to see whether the edit produced the desired result.
By the way, this all pertains to cvsnt! Client, on the other hand, can be anything that supports cvs. Eclipse, of course, is a nice IDE, but for many smaller projects TortoiseCVS is perhaps more suitable (it's lighter, and you can use any editor you like.. like UltraEdit :)).
If I have gone out of my way to do do something very simple in a very difficult way, please feel free to comment!


Depending on how you use the Site we may ask you to share personal information with us. Whether you choose to input information on the Site is completely up to you, but keep in mind that if you withhold information, you may not be able to use some of our Site services.
In order to become a registered user of the Site, you need to share some personal information, such as your name and e-mail address. You do not have to be a registered user to visit the Site. But, you will have to register if you want to place orders or make full use of our services. Once you register, you will have an account with JTT Enterprises Corporation and a password to access that account. You may never use another person's account without permission and you may not use anyone else's password. You should keep your registration current and complete. You are responsible for maintaining the confidentiality of your account and password. Please also let us know if there is any unauthorized use of your account or password. We recommend that you always log out from your account at the end of a session with us to prevent other people from accessing your account without your permission.
When you buy something on the Site, you have to supply a billing address, phone number, shipping address, and credit card information. By making a purchase, you become a registered user of nuwaenails.com. You can choose to store information needed to make a purchase, such as your credit card number, shipping and billing addresses in the My Account page. If you change your mind about storing this information, you can amend or delete it by going to the relevant area of the My Account page and following the instructions. You can access this section using your registration password.
If at nuwavenails.com you enter a sweepstakes or contest, or answer a survey, you will become a registered user (if you aren't one already). We may also ask you for some demographic information, such as your age. If you choose not to answer, you probably will not be able to participate in the sweepstakes, contest or survey.
When you use the Ratings & Reviews you will become a registered user (if you aren't already one) and any personal information you submit will become part of your profile, as maintained by JTT Enterprises Corporation.
Please note that if you choose to share information about yourself in an open format, such as through a Third Party Site like Facebook or Twitter or in the user-generated content elements of our own Site, we consider that information to be public information - and not personal information.
JTT Enterprises Corporation collects personal information primarily to make our services more rewarding for you to use. We usually use this information for internal purposes, such as studying our customers' preferences. We may also use your information to track your purchase history and to contact you for account and promotional purposes. In the event that another company buys the assets or stock of JTT Enterprises Corporation, your personal information may then belong to another entity.
We use e-mail addresses and mailing addresses to send out newsletters and other announcements with information about Nu Wave's new products, gifts and special features. After you become a registered user of nuwavenails.com, you can choose not to receive these announcements by opting-out of delivery. If you receive an e-mail and want to avoid further messages, look at the end of the e-mail for instructions on how to remove yourself from the mailing list. You can also edit your e-mail preferences at nuwavenails.com's My Account page.
JTT Enterprises Corporation may share your personal information with companies that perform services for us, such as fulfilling orders, delivering packages, sending postal mail and e-mails, analyzing customer data, providing marketing assistance, processing credit card payments, investigating fraudulent activity, conducting customer surveys, and providing customer service. They have access to personal information needed to perform their functions, but may not disclose your personally identifiable information for other purposes. Some personal information is stored on servers owned by other companies. Except as otherwise described below, only JTT Enterprises Corporation has the right to access this information. Personal information may be disclosed if required by law.
JTT Enterprises Corporation wants to give you the best possible experience when you visit our Site. We like to constantly update and improve the features on our Site, we like to personalize your browsing and shopping experience and we like to recognize you when you return to nuwavenails.com. We have a variety of ways of doing this.
We collect information about how you use our Site by setting and accessing cookies on your computer. A cookie is a small data file that identifies the web browser on a particular computer. No personal information is stored in the cookie itself. When you visit our Site, a cookie will be sent to your browser and then stored on your computer's hard drive. We use these cookies to track information about how often you visit our web site, what pages you view, and where you go after you leave the site. We also link the visitor ID from your cookie to a user ID in our database to help us analyze web traffic and statistics. Other companies help us with data research and analysis, but they are prohibited from using that data for any other purpose. Cookies also help us improve your shopping experience by, among other things, keeping track of your preferences, recognizing you if you are a registered user, and tracking your order as you shop on nuwavenails.com. If any of your personal information needs to be accessed during that process, you will have to log in or otherwise authenticate yourself. If you don't like cookies, you can set your browser to reject cookies or to notify you when you are sent a cookie, giving you the chance to decide whether or not to accept it. For instructions, look at your browser's Help menu. Note that certain features of nuwavenails.com may not be available if you delete or reject cookies.
We use pixel tags (also called web beacons or "clear" gifs) on our Site. They help us analyze what our clients like to do on our Site and the effectiveness of our features and advertising. They can also help us customize your browsing and shopping experience. We may use information collected through pixel tags or tracked links in combination with your personally identifiable information. We may also combine personally identifiable information you provide to JTT Enterprises Corporation with other personal information (such as purchase history and demographic information). We often work with other companies to help us track, collect and analyze this information but they are prohibited from using this information for any other purpose.
When you buy something on nuwavenails.com, you have to supply a billing address, phone number, shipping address, and credit card information. By making a purchase, you become a registered user of nuwavenails.com. You can choose to store information needed to make a purchase, such as your credit card number, shipping and billing addresses in the My Account page. If you change your mind about storing this information, you can amend or delete it by going to the relevant area of the My Account page and following the instructions. You can access this section using your registration password.
We comply with the Children's Online Privacy Protection Act of 1998. If you are under the age of 13, you can look at our Site, but you cannot make a purchase. You also cannot become a registered user, or use any service on our Site that asks for personal information. Our Site is not designed for children. We do not wish to collect personal information from children under 13. This policy is designed to protect children. Federal law requires us to take special steps to safeguard children's privacy.
We work with trusted third parties, including social network sites like Facebook, and with application developers who specialize in social commerce so we can connect to your social networks. Other social networks we may use include Twitter, Pinterest, Instagram, Facebook, and Google+. All of these companies operate Third Party Sites. We provide access to our Site by third parties and business partners so we can generate interest in our products among members of your social networks and to allow you to share product interests with friends in your network.The use of any features made available to you on our Site by a third party may result in information being collected or shared about you by us or by the third party. Information collected or shared through any such third party features is considered "public information" by us because the Third Party Site made it publicly available. If you do not want us to be able to access information about you from Third Party Site, you must instruct Third Party Sites not to share the information. We cannot control how your data is collected, stored, used or shared by Third Party Sites or to whom it is disclosed. Please be sure to review the privacy policies and privacy settings on your social networking sites to make sure you understand the information they are sharing. If you do not want a Third Party Site to share information about you, you must contact that site and determine whether it gives you the opportunity to opt-out of sharing such information. JTT Enterprises Corporation is not responsible for how these third parties may use information collected from or about you. However, we do identify any areas on our Site where third parties share information about you.


text:
Jake Stein
Still Bipartisan, Still AIPAC
On March 21st, 2016, Donald Trump delivered a twenty-minute speech at the American Israel Public Affairs Committee (AIPAC) Policy Conference, which I attended as a student delegate. Many cheered for Trump, but many did not. Some boycotted the speech, some laughed throughout, and others sat quietly and listened. The wide range of responses to his speech demonstrated the microcosm of American politics that AIPAC supporters represent; aside from a common support of Israel, mixed political denominations led to a mixed reception of his controversial speech.
Despite this complex reality, many media outlets have focused on those who received Trump warmly to unfairly and inaccurately guide their readers toward false conclusions about the political leanings of AIPAC.
One Ha'aretz article wrote that Trump turned AIPAC into "gushing cheerleaders." Brendan Gauthier of Salon went as far as to write that Trump received a "positive reaction and standing ovation from the AIPAC crowd." In reality, Trump was the only candidate who did not receive a full standing ovation at any point during his speech. While there were warm responses to many of his pro-Israel remarks, Trump still received noticeably less approval than any other candidate for President of the United States. If the lukewarm reception for Trump implies that AIPAC supports the candidate, then the organization would also support Clinton, Cruz, and Kasich, each of whom drew even larger ovations. The cliché "actions speak louder than words" was true on Monday night; those who enthusiastically applauded Trump's speech made considerable noise for the media, but were not more prevalent than those who sat quietly or walked out.
While implying that the reaction to Trump's speech signals a rightward-shift in AIPAC, most media outlets conveniently ignored other content of the Conference which suggested otherwise. Vice President Joe Biden's claim that "we need bridge builders, not wall builders," drew tremendous applause. There were no major articles covering the Conference's beautiful closing address, which was delivered by a Democratic Senator, Robert Menendez. And there was certainly no coverage of the multiple sessions which featured Israeli and American leftists who criticized Netanyahu, the Likud government, and the GOP. Instead, much of media continued to disproportionately focus on only one candidate, thereby turning a non-story into misleading articles and conclusions.
Indeed, Trump's reception was disturbingly warm considering a crowd that knew the dangers of bigotry all too well. I was embarrassed to be a member of the same organization as the woman who sat in front of me during the speech, screaming in support of Trump and frequently calling President Obama a "traitor." It is a mistake, however, to consider this a symptom of political shift solely within AIPAC. It is the result of political shift nationwide. As ideologies gain speed in America, so too do they within AIPAC; this is, by definition, nonpartisanism. AIPAC's dedication to respecting the US-Israel relationship from both sides was proven the next morning, when AIPAC President Lillian Pinkus rebuked the applause Trump received for his anti-Obama remarks. "While we may have policy differences," Pinkus passionately claimed, "we deeply respect the office of the President of the United States and our President, Barack Obama." It is delusional to think that the subjective, non-quantifiable sound of applause by some AIPAC members signals a shift in ideology, but that an official statement by the organization's President does not.
It was an unfortunate necessity for AIPAC to invite Donald Trump to speak at the Policy Conference; the Organization could not legitimately claim to be bipartisan without inviting the frontrunner from the Republican Party. AIPAC knows, however, that engagement is not the same as endorsement. By holding steadfast to their values of cooperation, even in a difficult time of extreme polarization, AIPAC succeeded in bringing a politically diverse crowd of 18,000 together to support the mutually beneficial relationship between the two nations.
Jake Stein is a Senior at James Madison Memorial High School in Madison, Wisconsin. He will attend Northwestern University next year.
AIPAC
American Jewry
Israel-US Relations
Someone Said Something – Resulting In The Imminent Launch of Of The Iron D(omar) Mitzvah Missile Project
Tzemach Yehudah Richter
Former Trump supporter stands with Dem Squad
David Weissman


Looking for the ball joint that the throttle cable snaps into mounted on the carburetor throttle arm.
I think Holley sells them.
Try looking for Holley PN 20-2. It has 4 different studs in the kit. I of the 4 is likely to be what you want.
I may have one in our pile of junk carbs. Can you send me a pic of what all you need and I we have one you can have it for shipping cost.
i'll let you guys know if it includes the right ball joint connector.
Tnfastbk Thanks, i'll drop you a note if the PN 20-2 is wrong.
got the ball links, Holley PN 20-2, just to report the correct ball link was in the kit.


Mumbai: A local train on Sunday rammed into the dead end at Churchgate railway station in Mumbai, leaving a woman seriously injured and disrupting suburban train services on the Western line. The fast train coming from Bhayander rammed into the dead end on platform no.3 of Churchgate station at around 11.25 am when the motorman could not stop the local.
As a result, the first coach of the train jumped onto the south-end concourse of the platform and was seen lying in a tilted position.
The reason for the motorman not being able to halt the train was yet to be ascertained.
"It would be premature to speak about the cause of the accident. The exact reason can be ascertained only after proper investigation," Western Railway's chief public relations officer Sharat Chandrayan said.
WR General Manager S K Sood and Divisional Railway Manager Shailendra Kumar along with other senior officials reached the spot and launched restoration operation of the suburban services.
"We are enquiring with the motorman, L S Tiwary, who received mild injuries, and as per the normal procedure, we would also be checking whether he was under the influence of alcohol," said another senior official involved in the process of investigation.
The impact of the train's collision with the platform's dead end was so huge that the wheels of the first coach got hanged into the air, ripping apart all the technical equipment in its lower part and also the overhead wire.
After the incident, services originating from and terminating at platform no.3 were suspended till the restoration of services, Chandrayan said.
The injured woman was admitted to hospital, he said. The mishap affected the train services which were running late by almost an hour.
"I boarded the train at Vile Parle station at 12.15 pm which reached Churchgate at 2 pm when it should have ideally reached by around 1 pm," said Manisha Rege, a media professional.
Commuters were seen clicking pictures at the site from their mobile phones.


text:
<?php

namespace Symfony\Component\Ldap\Adapter\ExtLdap;

use Symfony\Component\Ldap\Adapter\CollectionInterface;
use Symfony\Component\Ldap\Entry;
use Symfony\Component\Ldap\Exception\LdapException;

/**
 * @author Charles Sarrazin <charles@sarraz.in>
 */
class Collection implements CollectionInterface
{
    private Connection $connection;
    private Query $search;
    /** @var list<Entry> */
    private array $entries;

    public function __construct(Connection $connection, Query $search)
    {
        $this->connection = $connection;
        $this->search = $search;
    }

    public function toArray(): array
    {
        return $this->entries ??= iterator_to_array($this->getIterator(), false);
    }

    public function count(): int
    {
        $con = $this->connection->getResource();
        $searches = $this->search->getResources();
        $count = 0;
        foreach ($searches as $search) {
            $searchCount = ldap_count_entries($con, $search);
            if (false === $searchCount) {
                throw new LdapException('Error while retrieving entry count: '.ldap_error($con));
            }
            $count += $searchCount;
        }

        return $count;
    }

    public function getIterator(): \Traversable
    {
        if (0 === $this->count()) {
            return;
        }

        $con = $this->connection->getResource();
        $searches = $this->search->getResources();
        foreach ($searches as $search) {
            $current = ldap_first_entry($con, $search);

            if (false === $current) {
                throw new LdapException('Could not rewind entries array: '.ldap_error($con));
            }

            yield $this->getSingleEntry($con, $current);

            while (false !== $current = ldap_next_entry($con, $current)) {
                yield $this->getSingleEntry($con, $current);
            }
        }
    }

    public function offsetExists(mixed $offset): bool
    {
        $this->toArray();

        return isset($this->entries[$offset]);
    }

    public function offsetGet(mixed $offset): ?Entry
    {
        $this->toArray();

        return $this->entries[$offset] ?? null;
    }

    public function offsetSet(mixed $offset, mixed $value): void
    {
        $this->toArray();

        $this->entries[$offset] = $value;
    }

    public function offsetUnset($offset): void
    {
        $this->toArray();

        unset($this->entries[$offset]);
    }

    private function getSingleEntry($con, $current): Entry
    {
        $attributes = ldap_get_attributes($con, $current);

        if (false === $attributes) {
            throw new LdapException('Could not fetch attributes: '.ldap_error($con));
        }

        $attributes = $this->cleanupAttributes($attributes);

        $dn = ldap_get_dn($con, $current);

        if (false === $dn) {
            throw new LdapException('Could not fetch DN: '.ldap_error($con));
        }

        return new Entry($dn, $attributes);
    }

    private function cleanupAttributes(array $entry): array
    {
        $attributes = array_diff_key($entry, array_flip(range(0, $entry['count'] - 1)) + [
                'count' => null,
                'dn' => null,
            ]);
        array_walk($attributes, function (&$value) {
            unset($value['count']);
        });

        return $attributes;
    }
}

redpajama_set_name: RedPajamaGithub


The city of Gouda in the Netherlands will host the FINA Women's Water Polo Olympic Games Qualification Tournament to take place from March 21-28.
Twelve of the world's best women's teams from the five continents will battle it out for a spot in the upcoming Olympic Games in Rio de Janeiro. The participating teams were selected through Continental Qualification Tournaments or Continental Championships. The host country of the Olympic Qualification Tournament (NED) is considered to be a representative for its own continent.
A total of 42 games will be held during the eight-day competition in Gouda, with a preliminary phase running from March 21 through March 25 and the quarter final on March 26. The semi final and final rounds will respectively be hosted on March 27 and 28.
The matches' schedule is available here.
The four best teams in Gouda (gold, silver, bronze medallists and fourth place) will secure a spot for the Olympic Games.
*Four teams (Australia, Brazil, China, Hungary) have already secured a place for the Olympic Games by winning their respective Continental Championships. Brazil, as Olympic Games host, will represent the Americas.


To get the best result, take your measurements a few times and ideally get someone to help measure you. Ensure you are not holding the measuring tape too loosely or too tightly.
Wrap the tape measure around the fullest part of your bust (not under the bust), below your underarms, around your shoulder blades, and back to the front to get the measurement. Check in the mirror that the tape measurements hasn't slipped down the back.
While standing up straight, use the tape to circle your waist (like you would for a belt) at your natural waistline. If you bend at the waist to one side, the crease that forms is your natural waistline.
Standing naturally with your heels together in a relaxed posture, measure the circumference of your hips at the fullest part. Make sure the tape is level so try to do it in front of a mirror.
You may find that you will need to take a size larger than you do in other brands.
Elma Lingerie specialises in bralettes that are designed to fit and flatter the petite bust. Small busts require a different fit from the average B through DD cup size. Our bralettes are made specially to fit AA through C cup, with less fullness and slightly wider set cups, and removable padding for light shaping and coverage.


text:
package jada.ngeditor.model.elements;

import de.lessvoid.nifty.builder.ControlBuilder;

public class GCostumControl extends GControl{

    public GCostumControl(String name,String id) throws IllegalArgumentException {
        super(id);
        this.builder = new ControlBuilder(id,name);
        this.name = name;

    }

}


text:
MAR Graphics
In case you haven't heard, digital print is an expanding sector—and if you're not selling it, now's the time to start. Within the next three years, it's expected to consume 20.6 percent of the print market and rake in $187.7 billion, according to the Smithers Pira study, "The Future of Offset vs. Digital Printing to 2018."
MAR Graphics Increases Digital Print Capacity
MAR Graphics, Valmeyer, Ill., recently completed the installation of a Xerox iGen4-26", and is the first to take advantage of the color precision and speed of the new Xerox Color 8250 Production Printer.
Business Strategy, Sales + Marketing
Nearly three years have passed since the Print Services & Distribution Association (PSDA) joined forces with management firm SmithBucklin and relocated its headquarters from Alexandria, Va., to Chicago. Now the PSDA is making bold moves once again.
Industry News, Sales + Marketing
A Meeting of the Minds
The Print Services & Distribution Association (PSDA) is adding even more charm to Baltimore this year.
Past, Present, Future
Almost one year ago, the Print Services and Distribution Association (PSDA) made a decision to shake things up in the name of revamping the 65-year-old organization.
Sales + Marketing, Print Products
If there's one positive that can come out of postal rate increases, it's this: large mailers must be more efficient to keep costs down. But that's not enough to win over potential customers—especially if all mailers follow this same formula.
Industry News, Business Strategy, Sales + Marketing
It was Frank Sinatra's kind of town. And the Print Services & Distribution Association (PSDA) agrees with Ol' Blue Eyes.
Springtime in Baltimore
It's not just famous for its inner harbor and crab cakes. It's not just the backdrop of HBO's now defunct The Wire. Many know it as "Charm City," but for the printing industry it's the site of PSDA's annual Print Solutions Conference and Expo from May 24 to 26 at the Baltimore Convention Center.
A Perfect Combination
Do you think outside of the box? If so, you might consider adding integrated or affixed items to your product line. Here is a collection of the latest styles companies have to offer.
BIG in Baltimore
A little change never hurt anyone. With that in mind, this year's big show promises a change of pace, a change of scenery and a change in demand. The newly revamped PSDA (formerly DMIA) will host its annual Print Solutions Conference and Exposition on Oct. 23-25 at the Baltimore Convention Center, Baltimore. This year's featured general session keynote speaker will be Charlie Pesko, founder and president of InfoTrends, a leading market research and consulting firm in the digital imaging and document solutions industries. Technological advances and refined marketing strategies are just some of the issues gaining momentum in a slowing economy. To encourage print


Jonathan Patz, M.D., MPH, (@jonathanpatz) is director of the Global Health Institute at the University of Wisconsin-Madison. He is a professor and the John P. Holton Chair in Health and the Environment with appointments in the Nelson Institute for Environmental Studies and the Department of Population Health Sciences. For 15 years, Patz served as a lead author for the United Nations Intergovernmental Panel on Climate Change (or IPCC)—the organization that shared the 2007 Nobel Peace Prize with Al Gore. He also co-chaired the health expert panel of the U.S. National Assessment on Climate Change, a report mandated by the U.S. Congress.
Patz is committed to connecting colleagues from across campus and communities around the world to improve health for all and is continually striving to integrate his research into teaching for students and communication to policy makers and the general public.
He has been invited to brief both houses of Congress and has served on several scientific committees of the National Academy of Sciences. Patz served as Founding President of the International Association for Ecology and Health.
In addition to directing the university-wide Global Health Institute, Patz has faculty appointments in the Nelson Institute, Center for Sustainability & the Global Environment (SAGE) and the Department of Population Health Sciences. He also directs the NSF sponsored Certificate on Humans and the Global Environment (CHANGE).
Patz is double board-certified, earning medical boards in both Occupational/Environmental Medicine and Family Medicine and received his medical degree from Case Western Reserve University (1987) and his Master of Public Health degree (1992) from Johns Hopkins University.
Patz presents at Drexel University's Dornsife School of Public Health.


text:
Home > News > Bond Special Effects Supervisor Chris Corbould to receive OBE
Bond Special Effects Supervisor Chris Corbould to receive OBE
December 31, 2013 by David Leigh
Special effects supervisor Chris Courbould, long been part of the Bond family after working along side Derek Meddings in The Spy Who Loved Me, has been recognised for services to film in the New Year Honour's List and is to be awarded the OBE.
Corbould was responsible for the effects on Skyfall, but as well as the Bond films he has worked on Christopher Reeve's Superman films, Christopher Nolan's recent Batman trilogy and many others; with him scheduled to work on Star Wars VII (according to IMDB) there must be some doubt whether he will work on Bond 24 though.
Source: Telegraph
Chris Corbould -Special Effects Supervisor on Quantum of Solace
Chris Corbould talks about his work on Quantum of Solace, from explosions to producing snow…
Chris Corbould confirms Bond 25 involvement
Daily Express confirms special effects supervisor Chris Corbould is involved in pre-production for the next…
Bond... James Bond
Bond... James Bond. It wasn't in Quantum of Solace, but it's certainly back for Skyfall.


Welcome Home! We have just what your looking for! This spacious 2 Bedroom, 2 Bathroom Log Home with Custom Touches and Attention to Detail is sure to Please. Updated w/New Hardwood Floors, New Windows, STEAM SHOWER. 1200sqft. Basement for the Growing Family! BONUS LOFT, Large Greenhouse, Fire Ring, Studio over the 2 Car Garage, Wired for Back Up Generator. Covered Decks and Lush Landscaping!


text:
9 Games Like Tiger Woods PGA Tour 14 for Playstation 4
The Golf Club 2019 featuring PGA Tour, Rory McIlroy PGA Tour, and Infinite Minigolf are our top selection to play today.
The latest addition in this selection are The Golf Club 2019 featuring PGA Tour released the 28 August 2018 and ranked #1, 3D MiniGolf released the 15 August 2017 and ranked #8, Party Golf released the 25 October 2016 and ranked #5.
9 Games like Tiger Woods PGA Tour 14 for Playstation 4, daily generated comparing over 40 000 video games across all platforms.
This suggestion collection includes online golf games. The order in this selection is not absolute, but the best games tends to be up in the list.
Go back in time and step onto the course with Palmer, Nicklaus, Player, and more legends in their prime. Overtake each star on the biggest stages in the world of golf using equipment and wearing clothing from that era. Eclipse their legacies and cement your seat at the table of legends with Tiger Woods PGA TOUR® 14.
Tags associated with Tiger Woods PGA Tour 14: golfsportonlinesimulationcompetitiverealisticcouchsimuladorlong-runninghistorical
Filter on specific platformAll PS4 (Playstation 4)Xbox OneSwitch PC WindowsMac OS
1# The Golf Club 2019 featuring PGA Tour - 2018
Windows PS4 One
Do you have what it takes to win PGA TOUR's FedExCup? Compete in the all new officially licensed PGA TOUR Career mode. Play on famous courses like TPC Boston, TPC Sawgrass and more.
The Golf Club 2019 featuring PGA Tour similarities with Tiger Woods PGA Tour 14:
golf100%
sport100%
competitive100%
online80%
realistic70%
simulador70%
simulation50%
2# Rory McIlroy PGA Tour - 2015
PS4 One
Rory McIlroy PGA Tour is an upcoming golf video game under development by EA Tiburon. First announced at E3 2014 under the working title EA Sports PGA Tour, it is expected to be released in June 2015. The game will mark the franchise's shift to PlayStation 4 and Xbox One, adopting the Frostbite 3 engine for more "lifelike" environments, and is also the first entry in EA Sports' PGA Tour series to not feature Tiger Woods as its namesake, replacing him with current World Number One Rory McIlroy.
Rory McIlroy PGA Tour similarities with Tiger Woods PGA Tour 14:
online100%
sport90%
long-running60%
3# Infinite Minigolf - 2016
Windows One PS4 Switch
Take part in competitive tournaments and challenges, unlock and utilize powerups, and experience unique gameplay, amazing graphics, and more wrapped up in the coolest minigolf game available. Infinite Minigolf crafts an astounding minigolf experience with accurate physics, dazzling graphics and detailed environments, each one with a distinct visual theme and gameplay features. Use the games robust toolset to create your own amazing minigolf courses and share them with the community, showcasing your creative abilities to other players worldwide.
Infinite Minigolf similarities with Tiger Woods PGA Tour 14:
competitive30%
4# 3D Mini Golf - 2015
Score with precision at this sporting event on 54 challenging MiniGolf holes! In three different scenarios MiniGolf enthusiasts can enjoy two solo modes or take on up to three other players in multiplayer mode on one computer.
3D Mini Golf similarities with Tiger Woods PGA Tour 14:
couch60%
5# Party Golf - 2016
Windows PS4 Switch
Party Golf is a crazy and competitive couchplay game for one to eight players. Party Golf combines simple 2D physics, a procedurally generated world and over a trillion different gameplay combinations.
Party Golf similarities with Tiger Woods PGA Tour 14:
6# EA SPORTS Rory McIlroy PGA TOUR - 2015
Golf without limits in EA SPORTS Rory McIlroy PGA TOUR. Usher in the next generation of golf with the power of the Frostbite 3 engine and play the most beautiful sports game to date with no load times, enabling you to explore authentic tournament courses or unique fantasy environments, opening up your golf experience like never before. Don't just play the course, explore it!
EA SPORTS Rory McIlroy PGA TOUR similarities with Tiger Woods PGA Tour 14:
historical50%
7# Dangerous Golf - 2016
Have a burning desire to change the way you play golf? Then here's a smashing way to lower your handicap. Mixing arcade styling with humorous irreverence, Dangerous Golf's aim isn't for the likes of a Par or Birdie – but to cause maximum damage over 100 holes and four rather… unusual locations.
Dangerous Golf similarities with Tiger Woods PGA Tour 14:
8# 3D MiniGolf - 2011
Mac Windows PS4 Switch
3D MiniGolf similarities with Tiger Woods PGA Tour 14:
9# Everybody's Golf - 1997
Now you can experience golf with a variety of character customizations, fishing, and karting across the courses. Online features require an account and are subject to terms of service and applicable privacy policy (playstationnetwork.com/terms-of-service & playstationnetwork.com/privacy-policy). Online features require an account and are subject to terms of service and applicable privacy policy (playstationnetwork.com/terms-of-service & playstationnetwork.com/privacy-policy).
Everybody's Golf similarities with Tiger Woods PGA Tour 14:
Best games likeTiger Woods PGA Tour 14 per platform
Find similar games to Tiger Woods PGA Tour 14 by genre
The Best 50 Simulation games The Best 50 Online games The Best 50 Realistic games The Best 50 Sport games The Best 50 Competitive games
Games like Tiger Woods PGA Tour 14 by platform


text:
Nathan Slavik
Artist: Rihanna
Track: Russian Roulette
Producer: Chuck Harmony, Ne-Yo
Album: Rated R
Rihanna was a superstar in her own right, but the Chris Brown assault made her perhaps the most watched young woman on the planet. So when Rihanna drops a new single, and it's off a mysterious upcoming album, and it was produced by Ne-Yo, and it's accompanied by what can only be described as porn-esque photo, well, let's just say I'm surprised the Internet didn't explode today. Flashing lights aside, Russian Roulette is a sparse, dark track that explodes into a cinematic chorus, a task Rihanna doesn't sound completely up to, especially without a memorable hook. In other words, Russian Roulette's momentum alone will likely make it a hit, but I'm not convinced it's actually that good of a track. By the way, I've got money that says her new album Rated R outsells Chris Brown's next project, whatever that is. Revenge is a dish best served on the Billboard charts. Keep it locked to DJBooth for all the latest from the unbelievably famous Rihanna.
music videosBest R&B / Pop Songs Chart, 2006-2018hitmaker
Rihanna ft. Young Jeezy - Hard
Rihanna - Disturbia
Rihanna - Man Down
Rihanna - Take A Bow
Rihanna - You Da One


Potentially endless set of pieces.
Workshop at RomaTre University, School of Architecture in Rome.
In his History of Rome, Livy mentions a monumental porticus outside the Trigemina Gate in the southern part of the city, a warehouse built along the Tiber in 193 b.C by the aediles M. Aemilius Lepidus and L. Aemilius Paullus (later restored in 174 b.C by the censors Q. Fulvius Flaccus and A. Postumius Albinus), completed by an Emporium, a market connected to the river harbor.
The archeologist Guglielmo Gatti in 1934 found possible traces of such a building in the fragments 23 and 24a-c of the Severian Forma Urbis Romae, whose outlines presented rows of squared piers marked by an uncompleted inscription "lia" which Gatti integrated with [Aemi]lia implying a portion of the porticus described by Livy.
Recent studies have instead demonstrated that the homogeneous seriality and the sloped progression of the building could be attributed neither to a simple porticus, a covered passages supported by columns, nor to a traditional horrea, a stocking warehouse with courtyards and a single access, suggesting that its supposed commercial use emerged only at a later stage. The building instead most probably worked previously as military navalia, or an arsenal to recover war ships, made of sloping docks sheltered by a stepped roof and supported by a limited amount of linear supports.
Nevertheless, besides its doubtful origins, the building on the Tiber constituted the earliest known use of concrete at a large scale: an impressive extended structure covering approximately 25.000 squared meters through 50 barrel vaults in opus caementitium of 8.30m span. 294 tuff piers in opus incertum were arranged in 7 rows at different levels to protect the boats from the flood variations and ensuring sufficient aeration and light conditions through the articulation of the roof as in a modern factory, where all the facilities and technical paraphernalia are usually compressed either in the plinth or in the ceiling to leave the manufacturing floor totally uncluttered.
At the end of the XVIII century Giovanni Battista Piranesi conjectured different reconstructions of the porticus, operatively reusing the generative potential of the plan in his Ichnographia, while in 1978 Rowe and Koetter briefly mentioned the porticus Aemilia among the 'potentially endless set of pieces' in their Collage City.
Yet the building remained largely underestimated, despite its experimental use of concrete and the absoluteness of its functional organization, harbinger of an architecture devoid of quality and reduced to a zero-degree language.
In this sense, the porticus manifested a radically new conception of space, a purely utilitarian structure - an architecture that simply coincides with what it does: no longer based on hierarchical compositions of orders, forms or rooms but on the horizontal continuity of an unique environment, able to host whatever activity, adapt to any topographical circumstance and shelter any forms-of-life within the measured intervals of its repetitive frame: an infrastructure that would rapidly become the algorithm for any space of production.
Livy, History of Rome, XXXV, 10, 12; XL, 51, 4; XLI, 27, 8 The aedileship of Marcus Aemilius Lepidus and Lucius Aemilius Paullus [193 BC] was a distinguished one. They collected numerous fines from people illegally grazing animals on public lands and with that money…built a covered warehouse [porticus] outside the Porta Trigemina, fronted by a commercial market [emporium] along the Tiber.
 See Giovanni Battista Piranesi, Le Antichità Romane (1756) Pianta degli avanzi del Portico fabbricato da M. Emilio Lepido e P. Emilio Paolo fuori della porta Trigemina nell'Emporio alla ripa del Tevere, but also the Porticus Septorum Juliorum in his fictious Ichnographia Campi Martii, (1757-62).


thumbelina coloring page coloring barbie coloring page free barbie barbie barbie cartoon coloring pages barbie cartoon coloring pages cartoon thumbelina 1994 coloring pages.
thumbelina coloring page barbie coloring pages thumbelina colouring pages to print.
thumbelina coloring page best coloring images on for coloring pages thumbelina coloring pages to print.
thumbelina coloring page thumbelina coloring pages to print.
thumbelina coloring page we always effort to show a picture with resolution or at least with perfect images barbie coloring page can be thumbelina coloring pages.
thumbelina coloring page download coloring page stock illustration illustration of line thumbelina colouring pages to print.
thumbelina coloring page by on thumbelina coloring pages to print.
thumbelina coloring page barbie presents coloring pages princesses dot to printable and barbie coloring pages thumbelina coloring pages to print.
thumbelina coloring page clip art of a cute black and white coloring page outline with a chubby frog barbie thumbelina coloring pages free.
thumbelina coloring page index coloring pages thumbelina colouring pages to print.
thumbelina coloring page pictures barbie coloring page for barbie thumbelina coloring pages free.
thumbelina coloring page royalty illustration of a black and white coloring page outline pages cartoons thumbelina colouring pages to print.
thumbelina coloring page barbie coloring pages thumbelina 1994 coloring pages.
thumbelina coloring page barbie coloring picture barbie presents thumbelina coloring pages.
thumbelina coloring page barbie disney thumbelina coloring pages.
thumbelina coloring page barbie coloring page barbie presents thumbelina coloring pages.
thumbelina coloring page barbie coloring page disney thumbelina coloring pages.
thumbelina coloring page coloring page and a flower fairy king thumbelina colouring pages to print.
thumbelina coloring page thumbelina colouring pages to print.
thumbelina coloring page black and white coloring page outline 3 posters art prints thumbelina 1994 coloring pages.
thumbelina coloring page free barbie coloring pages to print for kids download print and color disney thumbelina coloring pages.
thumbelina coloring page coloring page royalty illustration of a black and white coloring page outline by coloring coloring page thumbelina coloring pages to print.
thumbelina coloring page how to draw barbie coloring pages thumbelina coloring pages.
thumbelina coloring page barbie coloring page 4 disney thumbelina coloring pages.
thumbelina coloring page barbie coloring pages thumbelina coloring pages.
thumbelina coloring page barbie love coloring pages barbie coloring thumbelina coloring pages to print.
thumbelina coloring page barbie coloring pages coloring pages for kids thumbelina 1994 coloring pages.
thumbelina coloring page coloring page and a flower fairy king barbie thumbelina coloring pages free.
thumbelina coloring page black and white coloring page outline 6 barbie thumbelina coloring pages free.
thumbelina coloring page wedding black and white coloring page outline pages cartoons barbie presents thumbelina coloring pages.


text:
package dk.bemyndigelsesregister.xmlschema;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class FindReferencedSchemaFiles {
	private DocumentBuilderFactory documentBuilderFactory;
	private Set<SchemaFile> schemaFiles = new HashSet<SchemaFile>();

	/**
	 * Map from schemaLocation to SchemaFile, so that multiple references to the same
	 * schema file can be resolved to the same SchemaFile instance.
	 */
	private Map<String, SchemaFile> schemaFileMap = new HashMap<String, SchemaFile>();

	/**
	 * This class is used to build a simple graph of the referenced schema files.
	 * The "root" of the graph is a set of schema files (instance of Set<SchemaFile>) referenced from the WSDL file.
	 *
	 * When the graph is built, it is insured that references to the same file will
	 * be represented as a reference to a shared SchemaFile instance.
	 */
	public static class SchemaFile {
		public String targetNamespace;
		public String location;
		public URL url;
		public Element domSchemaNode;

		private boolean hasBeenAnalyzed = false;
		public boolean hasBeenCopied = false;

		public Set<SchemaFile> references = new HashSet<SchemaFile>();
	}

	public static Map<String,Set<SchemaFile>> run(Document wsdlDocument, File basedir) {
		FindReferencedSchemaFiles findReferencedSchemaFiles = new FindReferencedSchemaFiles();
		findReferencedSchemaFiles.doRun(wsdlDocument, basedir);

		Map<String, Set<SchemaFile>> ns2schemaFilesMap = new HashMap<String, Set<SchemaFile>>();
		for (SchemaFile schemaFile : findReferencedSchemaFiles.schemaFiles) {
			Set<SchemaFile> set = ns2schemaFilesMap.get(schemaFile.targetNamespace);
			if (set == null) {
				set = new HashSet<SchemaFile>();
				ns2schemaFilesMap.put(schemaFile.targetNamespace, set);
			}
			set.add(schemaFile);
		}
		return ns2schemaFilesMap;
	}

	private void doRun(Document wsdlDocument, File basedir) {
		try {
			Set<SchemaFile> referredSchemaFiles = findReferencedSchemaFilesInWsdl(wsdlDocument, basedir);

			for (SchemaFile schemaFile : referredSchemaFiles) {
				findReferencedSchemaFilesInSchemaFile(schemaFile);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private DocumentBuilderFactory getDocumentBuilderFactory() {
		if (documentBuilderFactory == null) {
			documentBuilderFactory = DocumentBuilderFactory.newInstance();
			documentBuilderFactory.setNamespaceAware(true);
		}
		return documentBuilderFactory;
	}

	private Document parseXmlFile(File file) throws ParserConfigurationException, SAXException, IOException  {
		//System.out.println("Parsing file '" + file.getName() + "'");
		return getDocumentBuilderFactory().newDocumentBuilder().parse(file);
	}

	private Document parseXmlFile(URL url) throws ParserConfigurationException, SAXException, IOException  {
		System.out.println("Parsing file from URL '" + url.toExternalForm() + "'");
		InputStream stream = null;
		try {
			stream = url.openStream();
			return getDocumentBuilderFactory().newDocumentBuilder().parse(new InputSource(stream));
		} finally {
			if (stream != null) {
				stream.close();
			}
		}
	}

	private Set<SchemaFile> findReferencedSchemaFilesInWsdl(Document dom, File basedir) throws IOException {
		Element rootElm = dom.getDocumentElement();

		// Find definitions/types/schema/ section of wsdl
		if (!"definitions".equals(rootElm.getLocalName())) {
			throw new RuntimeException("Expected 'definitions' element, found '" + rootElm.getLocalName() + "'");
		}
		String wsdlTargetNamespace = getAttribute(rootElm, "targetNamespace");

		Node typesNode = rootElm.getFirstChild();
		while (typesNode != null && !"types".equals(typesNode.getLocalName())) {
			typesNode = typesNode.getNextSibling();
		}
		if (typesNode == null) {
			throw new RuntimeException("Expected a 'types' element in WSDL file");
		}

		SchemaFile dummyWsdlSchemaFile = new SchemaFile();
		dummyWsdlSchemaFile.location = new File(basedir, "dummy.wsdl").getCanonicalPath();

		// Traverse child nodes to 'types' and proces 'schema' elements
		Node node = typesNode.getFirstChild();
		while (node != null) {
			if ("schema".equals(node.getLocalName())) {
				String targetNamespace = getAttribute(node, "targetNamespace");
				if (targetNamespace == null) {
					targetNamespace = wsdlTargetNamespace;
				}

				findReferencedSchemaFilesInSchemaNode(node, dummyWsdlSchemaFile, targetNamespace);
			}
			node = node.getNextSibling();
		}

		return dummyWsdlSchemaFile.references;
	}

	private void findReferencedSchemaFilesInSchemaFile(SchemaFile schemaFile)
			throws ParserConfigurationException, SAXException, IOException {

		// Schema files may be referred to from multiple paths, so check if this one has
		// already been parsed and analyzed
		if (schemaFile.hasBeenAnalyzed) {
			return;
		}
		schemaFile.hasBeenAnalyzed = true;

		if (schemaFile.location != null) {
			// schemaLocation has been converted to an absolute path in schemaFile.location
			File file = new File(schemaFile.location);
			Document dom = parseXmlFile(file);
			schemaFile.domSchemaNode = dom.getDocumentElement();
		} else {
			Document dom = parseXmlFile(schemaFile.url);
			schemaFile.domSchemaNode = dom.getDocumentElement();
		}

		if (!"schema".equals(schemaFile.domSchemaNode.getLocalName())) {
			throw new RuntimeException("Expected root element 'schema' in schema file");
		}

		//registerSchemaFile(schemaFile);
		findReferencedSchemaFilesInSchemaNode(schemaFile.domSchemaNode, schemaFile, schemaFile.targetNamespace);
		//System.out.println("Found " + schemaFile.references.size() + " references in " + schemaFile.location);

		// Recurse into the schema files referenced by the current schema file
		for (SchemaFile ref : schemaFile.references) {
			findReferencedSchemaFilesInSchemaFile(ref);
		}
	}

	/**
	 * Helper method that is used both when finding references directly in the wsdl file
	 * and when finding references in the schema files.
	 *
	 * @param node The 'schema' node (from WSDL or XSD file) to be processed.
	 * @param referredSchemaFiles A Set instance to be filled with a SchemaFile instance for each import/include
	 * 		found in this file.
	 * @param removeReferenceNodes If true this method will remove the import/include nodes as they are found.
	 * @throws IOException
	 */
	private void findReferencedSchemaFilesInSchemaNode(Node node, SchemaFile referringSchemaFile, String referringFileTargetNamespace)
			throws IOException {
		// Traverse child nodes to 'schema' and proces 'import' and 'include' elements
		Node child = node.getFirstChild();
		while (child != null) {
			// Now check if child is an include or import element
			if ("import".equals(child.getLocalName()) || "include".equals(child.getLocalName())) {
				String schemaLocation = getAttribute(child, "schemaLocation");
				if (schemaLocation == null) {
					throw new RuntimeException("'" + child.getLocalName() + "' element is missing schemaLocation");
				}
				//System.out.println("Found " + child.getLocalName() + " schemaLocation=" + schemaLocation);
				SchemaFile schemaFile = getSchemaFile(schemaLocation, referringSchemaFile);
				String targetNamespace;
				if ("include".equals(child.getLocalName())) {
					targetNamespace = referringFileTargetNamespace;
				} else {
					targetNamespace = getAttribute(child, "namespace");
				}

				if (schemaFile.targetNamespace == null) {
					schemaFile.targetNamespace = targetNamespace;
				} else if (targetNamespace != null && !schemaFile.targetNamespace.equals(targetNamespace)) {
					throw new RuntimeException("Different namespaces expected from import of schema file: " + schemaFile.location);
				}
				referringSchemaFile.references.add(schemaFile);

				if ("include".equals(child.getLocalName())) {
					// Remove the import/include element from the DOM (because this will be copied into the WSDL)
					Node oldChild = child;
					child = child.getNextSibling();
					oldChild.getParentNode().removeChild(oldChild);
					continue;
				} else {
					child.getAttributes().removeNamedItem("schemaLocation");
				}
			}
			child = child.getNextSibling();
		}
	}

	private String getAttribute(Node node, String attributeName) {
		Node attribute = node.getAttributes().getNamedItem(attributeName);
		return attribute == null ? null : attribute.getNodeValue();
	}

	private SchemaFile getSchemaFile(String schemaLocation, SchemaFile referringSchemaFile) throws IOException {
		String canonicalSchemaLocation = null;
		URL url = null;
		String key;
		try {
			if (referringSchemaFile.url != null) {
				// If the referring schema file was referenced by an URL, then interprete the schemaLocation
				// in that context, ie. as a possible relative URL.
				url = new URL(referringSchemaFile.url, schemaLocation);
			} else {
				// Otherwise, just try to interprete the schemaLocation as an URL
				url = new URL(schemaLocation);
			}
			key = schemaLocation;
		} catch (MalformedURLException e) {
			File basedir = new File(referringSchemaFile.location).getParentFile();
			canonicalSchemaLocation = new File(basedir, schemaLocation).getCanonicalPath();
			key = canonicalSchemaLocation;
		}

		SchemaFile schemaFile = schemaFileMap.get(key);
		if (schemaFile == null) {
			schemaFile = new SchemaFile();
			schemaFile.location = canonicalSchemaLocation;
			schemaFile.url = url;

			schemaFiles.add(schemaFile);
			schemaFileMap.put(key, schemaFile);
		}

		return schemaFile;
	}

}