text:
Coach Gardner
NE10 Football
Donate to Football Program
Lutton Earns Spot on D2CCA All-Super Region 1 Second Team
Middletown, Connecticut, sophomore tight end is program's sixth All-Region performer
2016 D2CCA All-Super Region 1 Teams
EASTON, Mass. (December 2, 2016) – Stonehill College sophomore tight end Kaleb Lutton (Middletown, Connecticut/Xavier) has been selected to the 2016 NCAA Division II Conference Commissioner's Association (D2CCA) All-Super Region 1 second team, as selected by the athletic communications offices in the region.
Lutton, who earns All-Super Region 1 honors for the first time in his career, is the sixth Stonehill student-athlete to earn D2CCA All-Region honors (formerly Daktronics) in program history and just the second offensive player to be named. He joins two-time All-Super Region 1 honorees Brian Harrington, '15 (2003 & 2014) and Jareed Gaines, '13 (2011 & 2012), as well as Nate Robitaille, '15 (2013) as D2CCA All-Region selections, with Robitaille the only other offensive player as a wide receiver. Lutton is one of 13 Northeast-10 Conference student-athletes named to the first and second teams.
Lutton, who also earned a spot on the New England Football Writers Division II/III All-Star team earlier this week, is a two-time All-NE10 selection. He was named to the All-NE10 first team this fall after collecting second team honors as a freshman when he was also selected to the NE10 All-Rookie team. Lutton finished his sophomore season second on the team with 45 receptions and 539 yards and a touchdown. He averaged 12.0 yards per catch and finished the season ranked 13th among NE10 leaders for receptions and receiving yards and eighth in yards per catch.
Lutton posted his second career 100-yard receiving game with a season-high 125 yards on a season-best seven catches in Stonehill's 21-17 win over the University of New Haven, which was streamed live via ESPN3/Watch ESPN, on October 15. He added six receptions for 55 yards and his lone touchdown of the year, which was the game winning score in overtime of the Skyhawks 17-10 victory at Pace University on November 5.
Lutton has played all 22 games over his two seasons at Stonehill, starting 14, including the last nine games of the 2016 season, totaling 72 receptions for 884 yards and nine touchdowns. His eight touchdown receptions as a freshman led the Skyhawks in 2015 and he is averaging 12.3 yards per catch and 40.2 receiving yards per game over his career. He will enter his junior year ranked 14th in program history for receiving yards and 13th for receptions and receiving touchdowns. Lutton posted his first career 100-yard game in Stonehill's 40-37 win at LIU Post in 2015, when he had career-high totals of eight receptions, 131 yards and three touchdowns.
Stonehill finished its first season under head coach Eli Gardner with a 5-6 record overall, including 4-5 in the NE10 to finish in sixth place, winning its last two games of the season and five of its last eight overall. The Skyhawks capped the season with a 38-21 triumph at rival Bentley University in the No. 5 vs. 6-seed game as part of the NE10's Championship Weekend.
For the latest on Stonehill Athletics, follow the Skyhawks via social media on Twitter, Facebook and Instagram. Fans can also download the Stonehill Skyhawks "Front Row" mobile app, powered by PrestoSports, on iTunes and the Android Market.
April 7, 2017 Stonehill Holds Annual Academic Excellence Recognition Breakfast
April 6, 2017 Football Announces Coaching Staff Additions
April 3, 2017 Wright Receives Newman Civic Fellowship
March 21, 2017 Football Opens Spring Practice on Thursday
February 1, 2017 Football #NSD2017 Updates
January 16, 2017 Lutton Named to Don Hansen Football Gazette Super Region 1 Third Team
December 2, 2016 Lutton Earns Spot on D2CCA All-Super Region 1 Second Team
November 28, 2016 Lutton Named New England Football Writers Division II/III All-Star
November 21, 2016 Jamiel Named NE-10 Rookie of the Year, Headlines Five All-NE-10 Selections for Football with Lutton
November 12, 2016 Football Finishes Strong at Bentley, 38-21
November 11, 2016 GAMEDAY CENTRAL: Football Looks to Send Seniors Out on Winning Note
November 8, 2016 Jamiel Named NE-10 Rookie of the Week for Fourth Time
November 5, 2016 Football Pulls Out Overtime Win at Pace, 17-10
November 4, 2016 GAMEDAY CENTRAL: Football Closes Our Regular Season at Pace
October 29, 2016 GAMEDAY CENTRAL: Football Hosts #16/25 Assumption for Senior Day
October 29, 2016 #16/25 Assumption Pulls Away Against Stonehill in Second Half, 30-6
October 22, 2016 Second Quarter Surge Sends Bentley Past Football, 27-7
October 21, 2016 GAMEDAY CENTRAL: Football Visits Bentley Looking to Even Record
October 18, 2016 Jamiel Earns NE-10 Player & Rookie of the Week Honors
October 15, 2016 Fourth Quarter Rally Lifts Football Past New Haven, 21-17
October 14, 2016 GAMEDAY CENTRAL: Football and New Haven Battle on Big Stage Again
October 10, 2016 Stonehill vs. New Haven Football Ticket Information
October 8, 2016 Football Shut Out at AIC, 19-0
October 7, 2016 GAMEDAY CENTRAL: Football Looks to Even Up at AIC
October 1, 2016 Football Grounds Merrimack, 31-6
September 30, 2016 62 Stonehill Student-Athletes Earn Division II ADA Academic Achievement Awards
September 30, 2016 Haite Named to Fred Mitchell Award September Watch List
September 30, 2016 GAMEDAY CENTRAL: Football Hosts Merrimack for Family Weekend Matchup
September 29, 2016 Siciliano Named Campbell Trophy & National Scholar-Athlete Semifinalist
September 28, 2016 Foltz Earns Second Career Gold Helmet Award
September 26, 2016 Football Offensive Duo Earn NE-10 Weekly Honors
September 24, 2016 Football Powers by Saint Anselm, 45-34
September 23, 2016 GAMEDAY CENTRAL: Football Heads to Saint Anselm for 11th "Battle for the Ol' Bronze Hawk"
September 17, 2016 LIU Post Pulls Away From Football in Second Half, 51-20
September 16, 2016 GAMEDAY CENTRAL: Football Hosts LIU Post for Saturday Night Matchup
September 12, 2016 Jamiel Earns NE-10 Rookie of the Week Accolades
September 9, 2016 Big Plays Key as Southern Conn. State Holds Off Football, 31-27
September 8, 2016 GAMEDAY CENTRAL: Football Heads to Southern Connecticut State for NE-10 Opener Friday Night
September 6, 2016 Haite Named NE-10 Special Teams Player of the Week
September 2, 2016 GAMEDAY CENTRAL: Football Hosts Bloomsburg to Tip Off Skyhawks Kickoff Weekend
September 2, 2016 Bloomsburg Hangs On Against Football, 24-20
August 23, 2016 Football Picked Fifth in NE-10 Preseason Poll
August 18, 2016 BROCKTON ENTERPRISE: "Stonehill makes transition to new coach Eli Gardner"
August 8, 2016 2016 Football Training Camp Schedule
August 1, 2016 BROCKTON ENTERPRISE: "New head coach Eli Gardner has settled in at Stonehill"
June 23, 2016 ESPN3 Broadcast Headlines 2016 Stonehill Football Slate
June 21, 2016 BROCKTON ENTERPRISE: "Second annual football clinic honors former Brockton High/Stonehill standout"
June 17, 2016 Moody Promoted to Offensive Coordinator for Stonehill Football
June 9, 2016 Gardner Named Seventh Stonehill Football Head Coach in Program's Varsity Era


3 of the 138 reviewers have had at least one of their past reviews for another product deleted. While this is more Take-Back Reviewers than we'd expect to see, it does not appear to have a significant impact on the overall rating.
27 of the 138 total reviews for this product use substantial repetitive phrases between them. While this is more than we'd expect to see, the discrepancy in ratings between the these reviews and reviews without substantial repetitive phrases isn't significant enough to rule out the possibility of it being due to random chance.
In total, we found that 97 reviewers (or 70%) are within an overrepresented participation group. This is an excessively high number of reviewers in overrepresented participation groups.
We counted 138 reviews for this product over the span of 1,792 days, an average of 0.1 reviews per day. If these reviews were created randomly, there would be a 99.9% chance that we would see 2 or fewer reviews on any given day.
16 of the 138 reviewers have substantial overlapping product review history. This is within an acceptable range and it does not appear to be significantly affecting the overall rating for this product.


Touch Bar Rim Panic Exit Device Trim Night Latch Handleset Can Be Used With The Lockey 1100 Series Touch Bar Rim Panic Exit Devices, Standard Width. Not for Narrow Stile. Aluminum.
Random Keying. If you need to have more than 1 keyed alike, this is not an available option but the keyway can be rekeyed.
For a list of the Panic Bars this will work with, please see Related Products below.


Alas, the team named for a bird fell short of the crown in Super Bowl XLIX. While many human beings felt anguish and rage at the loss, most avifauna appeared unperturbed.
The non-Seahawk birds that caught my eye this weekend were Northern Cardinals, which always look their best burning crimson against a blanket of white snow. Corey's Best Bird of the Weekend was a wonderful American Pipit foraging on the roadside margin at Jones Beach State Park. Corey was amazed at the sheer number of bugs and other creatures that the pipit found to eat.
A foraging Superb Lyrebird going through his repertoire at the same time!
A long-awaited lifer Lapland Longspur south of Ottawa, Ontario!
Four Lapland Longspurs in Orange County NY!
The field sparrow at our feeders may have been the first we've seen in the yard. Looking forward mightily to spring….
A lovely pair of Barrow's Goldeneyes swimming about at the local marina here on the Olympic Peninsula.
Iceland Gull and Northern Saw-whet Owl were two of the many lifers I got at the Outer Banks!
Western Kingbird in Mandeville, LA!
Killer looks at and photos of Lanceolated Monklet at Quebrada Gonzalez, Costa Rica. I have looked for this species at this site for more than ten years, none seen or heard until Saturday! Tropical birding is always chock full of surprises.
Loving all the birds from around the world that people are seeing!
Congrats on the Lanceolated Monklet, Pat!
A Red-necked Grebe (my first) in Rockaway Inlet, Brooklyn, NY. I know they were all over the New York area last year, but somehow missed them all! So this was very special.


text:
Antedon is een geslacht van haarsterren uit de familie Antedonidae.

Soorten
 Antedon arabica , 1937
 Antedon bifida (, 1777)
 Antedon detonna , 1977
 Antedon duebenii , 1866
 Antedon hupferi , 1890
 Antedon incommoda , 1888
 Antedon iris (, 1912)
 Antedon loveni , 1882
 Antedon mediterranea (, 1816)
 Antedon nuttingi (, 1936)
 Antedon parviflora (, 1912)
 Antedon petasus (, 1846)
 Antedon serrata , 1908

Haarsterren

redpajama_set_name: RedPajamaWikipedia


text:
est la deuxième compilation du groupe écossais de rock indépendant Primal Scream sortie en  sur le label Columbia Records.

Liste des chansons

Notes et références

Compilation musicale sortie en 2003
Album publié par Columbia Records
Album publié par Sony Music Entertainment
Album de Primal Scream
Album de rock indépendant
Album certifié disque d'or au Royaume-Uni
Album d'electronica


Follow some of the most interesting feedbacks from the market: BLUG007 is going to be another massive release under the M.R.E.U.X. Imprint belt!
Sasha Carassi (Drumcode) good vibes!
Danielle Godiva (Go!Diva (Brood Audio / Brickwork)) Cerebral fix is a great track!
Alexi Delano (H Productions / Visionquest / M_Nus) Full Support!!
Spec X (Toy Club (Stuttgart)) OH YEAH ! CONFESSION IS CRAZY ! THX SPEC X !!!
Bleaching Agent (Mira / Opal Tapes) Liking Pulsinger's tracks, cheers!
Ben Sims sender bender for me, thx!!
Mark Antonio (Analytic Trail) Downloading for Markantonio…thanks for the music !
Marcel Fengler (Ostgut Ton / Mote Evolver) Will play for sure! Thank you!
Maceo Plex / Maetrik (Ellum Audio / Mosaic) Downloaded for Maceo Plex, thanks for the music!
James Ruskin (Blueprint) Confession for me ….thanks!!!!
DJ Pete aka Substance (Chain Reaction) Always being a Patrick Pulsinger fan, everlasting respect.
Luigi Madonna (Phobiq / Drumcode) Thanks for the music.
P.Leone (Work Them Records, Rekids, EMISSIONS) sender bender for me thanks!
Bodyscrub (Organism / Respekt / Phobiq) nice release, thanks!
Raphael Dincsoy (Lehmann Club) nice ones!
Colin Dale Quality EP…..quite simply love it!
Greg Chin (Stryke (Plastic City / Ovum)) kind of old school industrial techno feel here. not really playing much like this these days…but, dig the EP.
Chris Fortier (Thoughtless / Sullivan Room / Balance) really good.
Sintek (Phobiq / Respekt) Awesome modular techno!! Thanks!!
Ilario Alicante (Ilario Alicante, Cocoon, Cecille, Sci + Tec) Downloading for Ilario Alicante, thanks for the music!
DJ MAG UK Love this sound,perhaps a littletoo heavy on allbut 'SenderBender'.Interestingthroughout,havemade a note toconsider.
UK Sonic Sessions(RTE 2FM)(Presenter)Sender Benderfor me, knew it'dbe decent withPulsinger!! Liking Cerebral Fix too!


text:
October 19, 2017 By rguadmin
Cynthia Cordero Navigates Prostate Cancer With Patients
The journey through prostate cancer is easier with a guide
If you or a loved one is facing a prostate cancer diagnosis, you want Cynthia Cordero MA, BSN, RN, in your court.
Cynthia found her career niche in a unique and powerful role at RGU, serving as Nurse Navigator. Though she is trained as a registered nurse, Cynthia's true passion is engaging with, supporting, and educating prostate cancer patients and their families through every step of their journey.
She combines her nursing knowledge with a strong desire to help people understand the "whys and hows" of their diagnosis and treatment plan, so patients always feel like they have an advocate and a friend in their battle with prostate cancer.
A born teacher
Early in her career, Cynthia worked as an echocardiographer in El Paso. She found her greatest fulfillment in helping patients make sense of their exams and leaving them with a stronger understanding of their care.
She later earned her BS degree in nursing from UTEP and pursued experience in different areas of traditional nursing, but she found that educating patients was consistently her favorite part of working in medicine.
In order to better serve and educate patients, Cynthia later earned her MA degree in curriculum and instruction from Angelo State University.
Today she is a vital part of the RGU team, and a knowledgeable and caring guide to help patients and their families navigate through prostate cancer at the Advanced Prostate Cancer Clinic (APCC).
"I'm fortunate this position allows me to educate our patients and their families while providing care," says Cynthia.
What services does a nurse navigator provide?
Cynthia thrives in the freedom to approach patients as whole people, rather than just prostate cancer patients.
"My obligation is to identify and address each patient's needs, from physical, to emotional, to spiritual, and financial — and it all comes together in this position," says Cynthia.
As a nurse navigator, she works to:
Answer questions to help patients understand their diagnosis
Help patients and their families understand treatment options
Collaborate on treatment transitions with medical professionals
Identify and offer helpful resources
Collaborate with physician to assure continuity of care
Alleviate some of the stress, grief, and anxiety patients face
The patients she works with appreciate Cynthia's warm reassurance and the approachable way she presents them with information about their diagnosis and treatment.
Part of her whole-person approach involves working with each patient's family members to help them take an active role in supporting their loved one through treatment.
Keeping up with the latest in cancer treatment options
Speaking of the role of family support, Cynthia is the daughter of a prostate cancer survivor, so she has first-hand appreciation of the gift of time that advanced prostate cancer care provides.
That's why she works tirelessly to not only engage her patients but also stay on top of the latest research and breakthroughs in prostate cancer treatment.
"The treatments in prostate cancer are continuously evolving. I stay informed of these developments by attending seminars and conferences that offer the latest medical advances in prostate cancer care. I am fortunate to have many contacts in the pharmaceutical industry who are always willing to share the latest advances in treatment, and the doctors I work with, especially our clinic champion Dr. Voglewede, are also wonderful resources," says Cynthia.
Working with the Advanced Prostate Cancer Clinic at RGU
The APC clinic at RGU is dedicated to serving patients with the latest treatments options available.
It is the only clinic of its kind in El Paso — bringing together top urologists, oncologists, and other specialists with cutting-edge technology and therapy protocols.
Advanced prostate cancer previously had fewer advanced therapies available. There was a faster transition from hormone therapy to chemotherapy, and then to hospice.
But recent years have seen some truly exciting changes for the effective treatment and survival rates of patients with advanced prostate cancer, and Cynthia and the team at the APC clinic at RGU are pleased to be able to offer better care to patients in the El Paso area than ever before.
Do you want a guide to help you through your journey with prostate cancer?
If you want more information about the RGU Advanced Prostate Cancer Clinic please call 915-225-2057 to speak with Nurse Navigator Cynthia Cordero, MA, BSN, RN.
Filed Under: Cancer Awareness, Prostate Cancer, Urology Tagged With: diagnosis, nurse, patient care, resources, staff, treatment

redpajama_set_name: RedPajamaCommonCrawl


Utah Governor Gary R. Herbert has led Utah's recovery from the Great Recession to a position of national economic prominence. His unwavering focus on economic development includes attracting businesses and investment to the state while helping homegrown businesses flourish.
The Governor is focused on four cornerstones to strengthen Utah's economy: education, jobs, energy, and self-determination. As a result, Utah has become a premier destination for business, with an unsurpassed quality of life.
The Governor currently serves as Chair of the National Governors Association (NGA). His focus as the leader of the nation's governors is to make the relationship between states and the federal government more collaborative, highlight state solutions and share best practices between states. The governor believes real solutions are found in the states, the real innovators and laboratories of democracy.
A successful realtor and businessman, the governor saw firsthand how decisions made by public officials can impact private enterprise. He decided to make a difference and served as a Utah County Commissioner where he gained invaluable experience that benefits his decision making today. As Utah's 17th Governor, he took the Oath of Office on August 11, 2009. Prior to becoming the state's chief executive, Governor Herbert served as Lieutenant Governor.
Lt. Governor Spencer J. Cox was appointed as lieutenant governor in 2013, following the resignation of Greg Bell. Prior to joining the Herbert administration, he served as a member of the Utah House of Representatives.
Lt. Governor Cox was born and raised in Fairview, Utah, where he now lives with his wife, Abby and their four children. He makes the commute every day to balance his professional responsibilities with his family life. After graduating from Utah State University he graduated with honors from the Washington and Lee School of Law.
Upon graduation, Spencer and Abby moved to Davis County where Spencer had the opportunity to serve as a law clerk to Federal District Judge Ted Stewart. Following the clerkship, Spencer began his career as an attorney at the law firm of Fabian and Clendenin in Salt Lake City. Spencer, the oldest of eight children, and Abby, the fifth of ten siblings, come from large families. They were both raised on farms in Sanpete County, where they learned the value of dedication and hard work.
In 2003, Spencer and Abby decided to return and raise their family in rural Utah. Spencer accepted the position of Vice President with CentraCom, a rural telecommunications company. Shortly after arriving, Spencer helped to design and implement an aggressive expansion plan to grow the company's rural footprint and, for the first time, bring service to enterprise customers on the Wasatch Front. Since his arrival, CentraCom has doubled in size from 45 employees to more than 90, despite the severe economic downturn.
During their next ten years in Fairview, Spencer served as a councilman and mayor of Fairview City, as a Sanpete County Commissioner and in the Utah House of Representatives representing District 58, most of Sanpete and Juab Counties.
As Lieutenant Governor, he serves as the State Election Officer, Legislative Liason, Chair or Co-chair of ten committees or commissions and a member of seven committees covering a wide array of issues.
In his spare time, Spencer loves running as well as camping and hiking with his family throughout Utah's amazing backcountry. He is fluent in Spanish. He also enjoys playing the bass guitar with his brother in a local band.


Can Tecnu Original poison ivy cleanser be used sooner than 2 hours after exposure?
The sooner you remove urushiol from your skin the better as the poison ivy and oak rash is caused by your body's reaction to the bond of the plant's oil to your skin. Everyone's body is different so some people react to urushiol sooner than others which is why we have a time range on there. We have found that, for most people, it is best to remove the oil within 2-8 hours of exposure.


text:
<?php
/*
 * Created on Jul 2, 2007
 *
 */

namespace crazedsanity;

use \Exception;
use \LogicException;
use \InvalidArgumentException;
use \ErrorException;
use crazedsanity\sanephp\baseAbstract;
use crazedsanity\database\Database;
use crazedsanity\version\Version;
use crazedsanity\lockfile\LockFile;

class Upgrade extends baseAbstract {

	/** Array of configuration parameters. */
	protected $config = NULL;

	/** Name of primary key sequence of main table (for handling inserts with PostgreSQL) */
	protected $sequenceName = 'cswal_version_table_version_id_seq';

	/** Database object. */
	protected $db;

	/** Object used to log activity. */
	protected $logsObj;

	/** Name of the project as referenced in the database and VERSION file. */
	protected $projectName;

	/** Internal cache of the version string from the VERSION file. */
	protected $versionFileVersion = NULL;

	/** Stored database version. */
	protected $databaseVersion = NULL;

	/** Determines if an internal upgrade is happening (avoids some infinite loops) */
	protected $internalUpgradeInProgress = false;

	/** */
	private $internalProjectName = "";

	protected $internalVersion;

	/** Log messages to store during an internal upgrade (to avoid problems) */
	protected $storedLogs = array();
	protected $debugLogs=array();

	protected $dbType=null;

	protected $dbTable = 'cswal_version_table';
	protected $dbPrimaryKey = 'version_id';
	protected $upgradeConfigFile;
	protected $dbParams = array();
	protected $rwDir = "/tmp";
	protected $initialVersion = "";
	protected $matchingData = array();

	protected $lockObj = null;

	protected static $cache = array();

	protected static $calls = 0;

	private $dbConnected = false;

	/** List of acceptable suffixes; example "1.0.0-BETA3" -- NOTE: these MUST be in
	 * an order that reflects newest -> oldest; "ALPHA happens before BETA, etc. */
	protected $suffixList = array(
		'ALPHA', 	//very unstable
		'BETA', 	//kinda unstable, but probably useable
		'RC'		//all known bugs fixed, searching for unknown ones
	);

	const UPGRADE_VERSION_ONLY = 0;
	const UPGRADE_SCRIPTED = 1;

	protected $lockFile='upgrade.lock';

	//=========================================================================
	public function __construct($versionFileLocation, $upgradeConfig, Database $db, $rwDir=null) {

		$this->internalVersion = new Version(file_get_contents(__DIR__ .'/../VERSION'));
		$this->internalProjectName = $this->internalVersion->get_project();

		self::$version = new Version(file_get_contents(__DIR__ .'/../VERSION'));

		if(isset(self::$calls)) {
			self::$calls += 1;
		}
		else {
			self::$calls = 1;
		}

		if(self::$calls > 100) {
//			cs_debug_backtrace(1);
			throw new LogicException(__METHOD__ .": called too many times (". self::$calls .")... ");
		}

		$this->db = $db;

		parent::__construct(true);

		if(!file_exists($upgradeConfig) || !is_readable($upgradeConfig)) {
			debug_backtrace(1);
			throw new exception(__METHOD__ .": required upgrade config file location (". $upgradeConfig .") not set or unreadable");
		}
		else {
			$this->upgradeConfigFile = $upgradeConfig;
		}
		if(!strlen($versionFileLocation) || !file_exists($versionFileLocation)) {
			throw new exception(__METHOD__ .": unable to locate version file (". $versionFileLocation .")");
		}

		self::$version->set_version_file_location($versionFileLocation);
		$this->versionFileLocation = $versionFileLocation;

		if(!is_null($rwDir) && strlen($rwDir) > 0) {
			$this->rwDir = $rwDir;
			$rwType = 'passed';
		}
		elseif(defined('RWDIR')) {
			$this->rwDir = constant('RWDIR');
			$rwType = 'defined';
		}
		else {
			throw new InvalidArgumentException(__METHOD__ .": required RWDIR not specified");
		}

		if (!is_dir($this->rwDir) || !is_readable($this->rwDir) || !is_writable($this->rwDir)) {
			throw new ErrorException($rwType ." RWDIR var (" . $this->rwDir . ") is not a directory or is not readable/writable");
		}

		$this->lockObj = new Lockfile($this->rwDir, $this->lockFile);

		$this->projectName = self::$version->get_project();

//		$this->check_internal_upgrades();
//		$this->check_versions(false);
	}//end __construct()
	//=========================================================================

	//=========================================================================
	protected function reconnect_db() {

		if(is_object($this->db)) {
			$dsn = $this->db->get_dsn();
			$user = $this->db->get_username();
			$pass = $this->db->get_password();

			$this->db->reconnect($dsn, $user, $pass);
			$this->dbConnected = $this->db->is_connected();
		}
		else {
			throw new LogicException(__METHOD__ .": database object not found");
		}

		return $this->dbConnected;
	}//end connect_db()
	//=========================================================================

	//=========================================================================
	/**
	 * Determine if there are any upgrades that need to be performed...
	 */
	protected function check_internal_upgrades() {
		$oldProjectName = $this->projectName;
		$this->projectName = $this->internalProjectName;

		if(!isset(self::$cache[$this->projectName])) {

			$this->reconnect_db();

			$oldVersionFileLocation = $this->versionFileLocation;
			$oldUpgradeConfigFile = $this->upgradeConfigFile;
			$this->upgradeConfigFile = dirname(__FILE__) .'/upgrades/upgrade.ini';

			//set a status flag so we can store log messages (for now).
			$this->internalUpgradeInProgress = true;

			//do stuff here...
			$this->set_version_file_location(dirname(__FILE__) .'/VERSION');
			$this->read_version_file();

			//if there is an error, then... uh... yeah.
			try {
				$this->get_database_version();
			}
			catch(exception $e) {
				throw new exception(__METHOD__ .": error while retrieving database version: ". $e->getMessage());

				//try creating the version.
				$this->load_initial_version();
			}

			//do upgrades here...
			$this->check_versions(true);
			$this->internalUpgradeInProgress = false;

			//reset internal vars.
			$this->set_version_file_location($oldVersionFileLocation);
			$this->upgradeConfigFile = $oldUpgradeConfigFile;
			$this->read_version_file();

			self::$cache[$this->projectName] = array(
				'versionFileVersion'	=> $this->versionFileVersion,
				'databaseVersion'		=> $this->databaseVersion
			);
		}

		$this->projectName = $oldProjectName;

	}//end check_internal_upgrades()
	//=========================================================================

	//=========================================================================
	/**
	 * Where everything begins: checks if the version held in config.xml lines-up
	 * with the one in the VERSION file; if it does, then it checks the version
	 * listed in the database.
	 */
	public function check_versions($performUpgrade=true) {
		if(isset(self::$cache[$this->projectName])) {
			$retval = false;
		}
		else {
			if($performUpgrade && $this->is_upgrade_in_progress()) {
				$this->do_log("Upgrade in progress", 'notice');
				throw new exception(__METHOD__ .": upgrade in progress");
			}

			$retval = NULL;

			//okay, all files present: check the version in the VERSION file.
			$this->read_version_file();
			$dbVersion = $this->get_database_version(true);

			if (!is_array($dbVersion)) {
				$this->load_initial_version();
			}

			$versionsDiffer = !($this->versionFileVersion == $this->databaseVersion);
			$retval = false;

			$conflict = $this->check_for_version_conflict();

			if ($performUpgrade && $conflict != null && $versionsDiffer) {
				$retval = $this->perform_upgrade();
			}

			if($performUpgrade === true) {
				// put this into cache so we don't try doing it again.
				self::$cache[$this->projectName] = array(
					'versionFileVersion'	=> $this->versionFileVersion,
					'databaseVersion'		=> $this->databaseVersion
				);
			}
		}

		return($retval);
	}//end check_versions()
	//=========================================================================

	//=========================================================================
	protected function read_version_file() {
		$retval = NULL;

		//okay, all files present: check the version in the VERSION file.
		if(file_exists($this->versionFileLocation)) {
			$versionFileContents = file_get_contents($this->versionFileLocation);

			$versionMatches = array();
			preg_match_all('/\nVERSION: (.*)\n/', $versionFileContents, $versionMatches);
			if(count($versionMatches) == 2 && count($versionMatches[1]) == 1) {
				$this->versionFileVersion = $this->get_full_version_string(trim($versionMatches[1][0]));
				$retval = $this->versionFileVersion;

				//now retrieve the PROJECT name.
				$projectMatches = array();
				preg_match_all('/\nPROJECT: (.*)\n/', $versionFileContents, $projectMatches);
				if(count($projectMatches) == 2 && count($projectMatches[1]) == 1) {
					$this->projectName = trim($projectMatches[1][0]);
				}
				else {
					$this->error_handler(__METHOD__ .": failed to find PROJECT name");
				}
			}
			else {
				$this->error_handler(__METHOD__ .": could not find VERSION data");
			}
		}
		else {
			$this->error_handler(__METHOD__ .": Version file (". $this->versionFileLocation .") does not exist");
		}

		return($retval);
	}//end read_version_file()
	//=========================================================================

	//=========================================================================
	/**
	 * Read information from our config file, so we know what to expect.
	 */
	protected function read_upgrade_config_file() {

		$config = parse_ini_file($this->upgradeConfigFile,true, INI_SCANNER_RAW);

		if(is_array($config)) {
			$myConfig = $config;
			if(isset($config['main'])) {
				if(isset($config['main']['initial_version'])) {
					$this->initialVersion = $config['main']['initial_version'];
				}
				unset($myConfig['main'], $myConfig['defaults']);
			}

			$lastVersion = null;
			foreach ($myConfig as $v => $d) {
				$myVersion = preg_replace('/^v/', '', $v);
				if (is_null($lastVersion)) {
					$lastVersion = $myVersion;
				} else {
					if (!$this->is_higher_version($lastVersion, $myVersion)) {
						throw new LogicException(__METHOD__ . ": version must be in order of lowest to highest");
					}
				}

				//certain indexes MUST be set.
				if(!isset($d['target_version'])) {
					throw new ErrorException(__METHOD__ .": missing target version for '". $myVersion ."'");
				}

				$this->matchingData[$myVersion] = $d;
			}
		} else {
			$this->initialVersion = $this->versionFileVersion;
		}

		return $this->matchingData;
	}//end read_upgrade_config_file()
	//=========================================================================

	//=========================================================================
	protected function perform_upgrade() {
		$transactionStartedExternally = $this->db->get_transaction_status();
		if($this->is_upgrade_in_progress()) {
			//ew.  Can't upgrade.
			$this->error_handler(__METHOD__ .": upgrade already in progress...????");
		}
		else {
			$lockConfig = $this->is_upgrade_in_progress(TRUE);

			$this->do_log("Starting upgrade process...", 'begin');

			if($lockConfig === 0) {
				$this->error_handler(__METHOD__ .": failed to set 'upgrade in progress'");
			}
			else {
				$this->do_log(__METHOD__ .": result of creating lockfile: (". $lockConfig .")", 'debug');

				//push data into our internal "config" array.
				$this->read_upgrade_config_file();
				$this->get_database_version();

				$versionConflictInfo = $this->check_for_version_conflict();

				if(!is_null($versionConflictInfo)) {
					$this->do_log("Upgrading ". $versionConflictInfo ." versions, from " .
							"(". $this->databaseVersion .") to (". $this->versionFileVersion .")", 'info');
				}

				$upgradeList = $this->get_upgrade_list();
				try {
					$i=0;
					$this->do_log(__METHOD__ .": starting to run through the upgrade list, starting at (". $this->databaseVersion ."), " .
							"total number of upgrades to perform: ". count($upgradeList), 'debug');
					if(!$transactionStartedExternally) {
						$this->db->beginTrans();
					}
					foreach($upgradeList as $fromVersion=>$toVersion) {

						$details = __METHOD__ .": upgrading from ". $fromVersion ." to ". $toVersion ."... ";
						$this->do_log($details, 'system');
						$this->do_single_upgrade($fromVersion, $toVersion);
						$this->get_database_version();
						$i++;

						$details = __METHOD__ .": finished upgrade #". $i .", now at version (". $this->databaseVersion .")";
						$this->do_log($details, 'system');
					}

					if($i < count($upgradeList)) {
						$this->do_log(__METHOD__ .": completed upgrade ". $i ." of ". count($upgradeList), 'debug');
					}
					else {
						if($this->databaseVersion == $this->versionFileVersion) {
							$this->do_log(__METHOD__ .": finished upgrading after performing (". $i .") upgrades", 'debug');
							$this->newVersion = $this->databaseVersion;
						}
						else {
							$this->do_log(__METHOD__ .": upgradeList::: ". ToolBox::debug_print($upgradeList,0), 'debug');
							$this->error_handler(__METHOD__ .": finished upgrade, but version wasn't updated (expecting '". $this->versionFileVersion ."', got '". $this->databaseVersion ."')!!!");
						}
					}
					$this->lockObj->delete_lockfile();

					if(!$transactionStartedExternally) {
						$this->db->commitTrans();
					}
				}
				catch(exception $e) {
					$transactionStatus = $this->db->get_transaction_status(false);
					$this->error_handler(__METHOD__ .": transaction status=(". $transactionStatus ."), upgrade aborted:::". $e->getMessage());
					if(!$transactionStartedExternally) {
						$this->db->rollbackTrans();
					}
				}
				$this->do_log("Upgrade process complete", 'end');
			}
		}
	}//end perform_upgrade()
	//=========================================================================

	//=========================================================================
	public function set_upgrade_in_progress() {
		$retval = false;
		$showDbVersion = $this->databaseVersion;
		if(is_null($showDbVersion) || !strlen($showDbVersion)) {
			$showDbVersion = "(unknown)";
		}
		if(!$this->lockObj->is_lockfile_present()) {
			$details = $this->projectName .': Upgrade from '. $showDbVersion .' started at '. date('Y-m-d H:i:s');
			$this->lockObj->create_lockfile($details);
		}
		$retval = $this->lockObj->is_lockfile_present();

		return $retval;
	}//end set_upgrade_in_progress()
	//=========================================================================

	//=========================================================================
	public function is_upgrade_in_progress($makeItSo=FALSE) {
		if($makeItSo === TRUE) {
			$retval = $this->set_upgrade_in_progress();
		}
		$retval = $this->lockObj->is_lockfile_present();

		return($retval);
	}//end upgrade_in_progress()
	//=========================================================================

	//=========================================================================
	public function parse_version_string($versionString) {
		if(is_null($versionString) || !strlen($versionString)) {
			cs_debug_backtrace(1);
			$this->error_handler(__METHOD__ .": invalid version string ($versionString)");
		}

		$suffix = "";
		$explodeThis = $versionString;
		if(preg_match('/-[A-Z]{2,5}[0-9]{1,}/', $versionString)) {
			$bits = explode('-', $versionString);
			$suffix = $bits[1];
			$explodeThis = $bits[0];
		}
		$tmp = explode('.', $explodeThis);

		if(is_numeric($tmp[0]) && is_numeric($tmp[1])) {
			$retval = array(
				'version_string'	=> $versionString,
				'version_major'		=> $tmp[0],
				'version_minor'		=> $tmp[1],
			);
			if(isset($tmp[2])) {
				$retval['version_maintenance'] = $tmp[2];
			}
			else {
				$retval['version_maintenance'] = 0;
			}

			$retval['version_suffix'] = $suffix;
		}
		else {
			$this->error_handler(__METHOD__ .": invalid version string format, requires MAJOR.MINOR syntax (". $versionString .")");
		}

		return($retval);
	}//end parse_version_string()
	//=========================================================================

	//=========================================================================
	protected function check_for_version_conflict() {
		//set a default return...
		$retval = NULL;

//		$this->read_version_file();

		//parse the version strings.
		$dbVersion = $this->get_database_version();
		$versionFileData = $this->parse_version_string($this->versionFileVersion);

		if($versionFileData['version_string'] == $dbVersion['version_string']) {
			//good to go: no upgrade needed.
			$retval = false;
		}
		else {
			//NOTE: this seems very convoluted, but it works.
			if($versionFileData['version_major'] == $dbVersion['version_major']) {
				if($versionFileData['version_minor'] == $dbVersion['version_minor']) {
					if($versionFileData['version_maintenance'] == $dbVersion['version_maintenance']) {
						if($versionFileData['version_suffix'] == $dbVersion['version_suffix']) {
							$this->error_handler(__METHOD__ .": no version upgrade detected, but version strings don't match (versionFile=". $versionFileData['version_string'] .", dbVersion=". $dbVersion['version_string'] .")");
						}
						else {
							$retval = "suffix";
						}
					}
					elseif($versionFileData['version_maintenance'] > $dbVersion['version_maintenance']) {
						$retval = "maintenance";
					}
					else {
						$this->error_handler(__METHOD__ .": downgrading from maintenance versions is unsupported");
					}
				}
				elseif($versionFileData['version_minor'] > $dbVersion['version_minor']) {
					$retval = "minor";
				}
				else {
					$this->error_handler(__METHOD__ .": downgrading minor versions is unsupported, ".
						"file version=(". $versionFileData['version_string'] ."), dbVersion=(". $dbVersion['version_string'] .")");
				}
			}
			elseif($versionFileData['version_major'] > $dbVersion['version_major']) {
				$retval = "major";
			}
			else {
				$this->error_handler(__METHOD__ .": downgrading major versions is unsupported");
			}
		}

		return($retval);
	}//end check_for_version_conflict()
	//=========================================================================

	//=========================================================================
	public function get_database_version($missingVersionAllowed=false) {
		$sql = "SELECT * FROM ". $this->dbTable ." WHERE ".
				"project_name=:projectName";

		$numrows = $this->db->run_query($sql, array('projectName'=>$this->projectName));
		$dberror = $this->db->errorMsg();

		if(strlen($dberror) || $numrows != 1) {
			//
			if(preg_match('/doesn\'t exist/', $dberror) || preg_match('/does not exist/', $dberror)) {
				//add the table...
				$loadTableResult = $this->load_table();
				if($loadTableResult === TRUE) {
					//now try the SQL...
					$numrows = $this->db->run_query($sql, array('projectName'=>$this->projectName));
					$dberror = $this->db->errorMsg();

					//retrieve the data...
					$data = $this->db->get_single_record();
					$this->databaseVersion = $data['version_string'];
					$retval = $this->parse_version_string($data['version_string']);
				}
				else {
					$message = __METHOD__ .": no table in database, failed to create one... ORIGINAL " .
						"ERROR: ". $dberror .", SCHEMA LOAD ERROR::: ". $loadTableResult;
					$this->error_handler($message);
				}
			}
			elseif(!strlen($dberror) && $numrows == 0) {
				if($missingVersionAllowed) {
					$retval = false;
				}
				else {
					$this->error_handler(__METHOD__ .": no version data found for (". $this->projectName .")");
				}
			}//@codeCoverageIgnoreStart
			else {
				$this->error_handler(__METHOD__ .": failed to retrieve version... numrows=(". $numrows ."), DBERROR::: ". $dberror);
			}//@codeCoverageIgnoreEnd
		}
		else {
			$data = $this->db->get_single_record();
			$this->databaseVersion = $data['version_string'];
			$retval = $this->parse_version_string($data['version_string']);
		}

		return($retval);
	}//end get_database_version()
	//=========================================================================

	//=========================================================================
	protected function do_single_upgrade($fromVersion, $toVersion=null) {
		$upgradeType = self::UPGRADE_VERSION_ONLY;

		$versionIndex = $this->get_full_version_string($fromVersion);

		if(isset($this->matchingData[$versionIndex])) {
			//scripted upgrade...
			$upgradeData = $this->matchingData[$versionIndex];
			if(isset($upgradeData['target_version']) && count($upgradeData) > 1) {
				$this->newVersion = $upgradeData['target_version'];
				if(isset($upgradeData['script_name']) && isset($upgradeData['class_name']) && isset($upgradeData['call_method'])) {
					$this->do_scripted_upgrade($upgradeData);
					$toVersion = $upgradeData['target_version'];
					$upgradeType = self::UPGRADE_SCRIPTED;
				}
			}
			else {
				$this->error_handler(__METHOD__ .": target version not specified, unable to proceed with scripted upgrade for ". $versionIndex);
			}
		}

		$this->newVersion = $toVersion;
		$this->update_database_version($toVersion);

		$this->do_log("Finished upgrade to ". $this->newVersion, 'system');

		return $upgradeType;
	}//end do_single_upgrade()
	//=========================================================================

	//=========================================================================
	/**
	 * Updates information that's stored in the database, internal to cs-project,
	 * so the version there is consistent with all the others.
	 */
	protected function update_database_version($newVersionString) {
		$versionInfo = $this->parse_version_string($newVersionString);
		$sql = "UPDATE ". $this->dbTable ." SET version_string=:vStr WHERE project_name=:pName";
		$params = array(
			'vStr'	=> $versionInfo['version_string'],
			'pName'	=> $this->projectName
		);

		$updateRes = $this->db->run_update($sql, $params);
		if($updateRes == 1) {
			$retval = $updateRes;
		}
		else {
			$this->error_handler(__METHOD__ .": invalid result (". $updateRes .")	");
		}

		//okay, now check that the version string matches the updated bits.
		if(!$this->check_database_version($versionInfo)) {
			$this->error_handler(__METHOD__ .": database version information is invalid: (". $versionInfo .")");
		}

		return($retval);

	}//end update_database_version()
	//=========================================================================

	//=========================================================================
	/**
	 * Checks consistency of version information in the database, and optionally
	 * against a given version string.
	 */
	protected function check_database_version(array $checkThis) {
		$data = $this->get_database_version();
		$versionString = $data['version_string'];

		if ($versionString == $checkThis['version_string']) {
			$retval = TRUE;
		} else {
			$retval = FALSE;
		}

		if (!$retval) {
			$this->do_log("Version check failed, versionString=(" . $versionString . "), checkVersion=(" . $this->newVersion . ")", 'FATAL');
		}

		return($retval);
	}//end check_database_version()
	//=========================================================================

	//=========================================================================
	protected function do_scripted_upgrade(array $upgradeData) {
		$myConfigFile = $upgradeData['script_name'];

		$this->do_log("Preparing to run script '". $myConfigFile ."'", 'debug');

		//we've got the filename, see if it exists.

		$scriptsDir = dirname($this->upgradeConfigFile);
		$fileName = $scriptsDir .'/'. $myConfigFile;

		if(file_exists($fileName)) {

			$this->do_log("(". __CLASS__ .") Performing scripted upgrade (". $myConfigFile .") from file '". $fileName ."'", 'debug');
			$createClassName = $upgradeData['class_name'];
			$classUpgradeMethod = $upgradeData['call_method'];
			require_once($fileName);

			//now check to see that the class we need actually exists.
			if(class_exists($createClassName)) {
				$upgradeObj = new $createClassName($this->db);
				if(method_exists($upgradeObj, $classUpgradeMethod)) {
					$upgradeResult = $upgradeObj->$classUpgradeMethod();

					if($upgradeResult === true) {
						//yay, it worked!
						$this->do_log("Upgrade succeeded (". $upgradeResult .")", 'success');
					}
					else {
						$this->error_handler(__METHOD__ .": upgrade failed (". $upgradeResult .")");
					}
					$this->do_log("Finished running ". $createClassName ."::". $classUpgradeMethod ."(), result was (". $upgradeResult .")", 'debug');
				}
				else {
					$this->error_handler(__METHOD__ .": upgrade method doesn't exist (". $createClassName ."::". $classUpgradeMethod
						."), unable to perform upgrade ");
				}
			}
			else {
				$this->error_handler(__METHOD__ .": unable to locate upgrade class name (". $createClassName .")");
			}
		}
		else {
			$this->error_handler(__METHOD__ .": upgrade filename (". $fileName .") does not exist");
		}
	}//end do_scripted_upgrade()
	//=========================================================================

	//=========================================================================
	public function is_higher_version($version, $checkIfHigher) {
		try {
			$retval = self::$version->is_higher_version($version, $checkIfHigher);
		}
		catch(exception $e) {
			$this->error_handler($e->getMessage());
		}

		return($retval);

	}//end is_higher_version()
	//=========================================================================

	//=========================================================================
	/**
	 * Determines list of upgrades to perform.
	 *
	 * If the current version is 1.0.1, the version file is 1.0.5, and there's a
	 * scripted upgrade at 1.0.4, this will update the database version to 1.0.3,
	 * run the scripted upgrade at 1.0.4, then update the database version to
	 * 1.0.5 (keeps from skipping the upgrade at 1.0.4)
	 */
	protected function get_upgrade_list() {
		$this->get_database_version();
		$dbVersion = $this->databaseVersion;
		$newVersion = $this->versionFileVersion;

		$retval = array();
		if(!$this->is_higher_version($dbVersion, $newVersion)) {
			$this->error_handler(__METHOD__ .": version (". $newVersion .") isn't higher than (". $dbVersion .")... something is broken");
		}
		elseif(is_array($this->matchingData)) {
			$lastVersion = $dbVersion;
			foreach($this->matchingData as $matchVersion=>$data) {

				$matchVersion = preg_replace('/^V/', '', $matchVersion);
				if($matchVersion == $data['TARGET_VERSION']) {
					$this->error_handler(__METHOD__ .": detected invalid TARGET_VERSION in (". $matchVersion ."): make sure TARGET_VERSION is higher than matching!");
				}
				elseif($this->databaseVersion == $matchVersion || $this->is_higher_version($this->databaseVersion, $matchVersion)) {
					//the version in MATCHING is equal to or HIGHER than our database version... make sure it is NOT
					//	higher than the version in our versionFile.
					if(!$this->is_higher_version($this->versionFileVersion, $matchVersion)) {
						if(!count($retval) && $matchVersion != $this->databaseVersion) {
							$retval[$this->databaseVersion] = $matchVersion;
						}
						//the MATCHING version is NOT higher than the version file's version, looks ok.
						$lastVersion = $data['TARGET_VERSION'];
						$retval[$matchVersion] = $data['TARGET_VERSION'];
					}
					else {
						$this->do_log(__METHOD__ .": entry in upgrade.ini (". $matchVersion .") is higher than the VERSION file (". $this->versionFileVersion .")", 'warning');
					}
				}
				else {
					$this->do_log(__METHOD__ .": SKIPPING (". $matchVersion .")", 'debug');
				}
			}

			if($lastVersion !== $newVersion && (!isset($retval[$lastVersion]) || $retval[$lastVersion] != $newVersion)) {
				$retval[$lastVersion] = $newVersion;
			}
		}
		else {
			//no intermediary upgrades: just pass back the latest version.
			$this->do_log(__METHOD__ .": no intermediary upgrades", 'debug');
			$retval[$dbVersion] = $this->versionFileVersion;
		}

		return($retval);

	}//end get_upgrade_list()
	//=========================================================================

	//=========================================================================
	protected function parse_suffix($suffix) {
		$retval = NULL;
		if(strlen($suffix)) {
			//determine what kind it is.
			foreach($this->suffixList as $type) {
				if(preg_match('/^'. $type .'/', $suffix)) {
					$checkThis = preg_replace('/^'. $type .'/', '', $suffix);
					if(strlen($checkThis) && is_numeric($checkThis)) {
						//oooh... it's something like "BETA3"
						$retval = array(
							'type'		=> $type,
							'number'	=> $checkThis
						);
					}
					else {
						$this->error_handler(__METHOD__ .": invalid suffix (". $suffix .")");
					}
					break;
				}
			}
		}
		else {
			$this->error_handler(__METHOD__ .": invalid suffix (". $suffix .")");
		}

		return($retval);
	}//end parse_suffix()
	//=========================================================================

	//=========================================================================
	public function load_table() {

		$schemaFileLocation = dirname(__FILE__) .'/setup/schema.'. $this->db->get_dbtype() .'.sql';
		$schema = file_get_contents($schemaFileLocation);
		$this->db->exec($schema);

		$loadTableResult = $this->db->errorMsg();
		if(!strlen($loadTableResult)) {
			$loadTableResult = true;
			$logRes = 'Successfully loaded';
			$logType = 'initialize';

			//now set the initial version information...
			if(strlen($this->projectName) && strlen($this->versionFileVersion)) {
				$this->load_initial_version();
			}
			else {
				throw new exception(__METHOD__ .": missing projectName (". $this->projectName .") " .
						"or versionFileVersion (". $this->versionFileVersion ."), cannot load data");
			}
		}
		else {
			$logRes = 'Failed to load';
			$logType = 'error';
		}
		$this->do_log($logRes .' table ('. $this->dbTable .') into ' .
				'database::: '. $loadTableResult, $logType);

		return($loadTableResult);
	}//end load_table()
	//=========================================================================

	//=========================================================================
	protected function get_full_version_string($versionString) {
		if(strlen($versionString)) {
			$bits = $this->parse_version_string($versionString);

			$fullVersion = $bits['version_major'] .'.'. $bits['version_minor'] .'.'.
					$bits['version_maintenance'];
			if(strlen($bits['version_suffix'])) {
				$fullVersion .= '-'. $bits['version_suffix'];
			}
		}
		else {
			$this->error_handler(__METHOD__ .": no version string given");
		}

		return($fullVersion);
	}//end get_full_version_string()
	//=========================================================================

	//=========================================================================
	public function error_handler($details) {
		//log the error.
		if(!is_object($this->logsObj)) {
			throw new exception($details);
		}
		if($this->internalUpgradeInProgress === false) {
			$this->do_log($details, 'exception in code');
		}

		//now throw an exception so other code can catch it.
		throw new exception($details);
	}//end error_handler()
	//=========================================================================

	//=========================================================================
	public function load_initial_version() {
		//if there's an INITIAL_VERSION in the upgrade config file, use that.
		$this->read_upgrade_config_file();
		if(isset($this->initialVersion) && strlen($this->initialVersion)) {
			$parseThis = $this->initialVersion;
		}
		else {
			$parseThis = $this->versionFileVersion;
		}

		$loadRes = $this->set_initial_version($parseThis);

		return($loadRes);
	}//end load_initial_version()
	//=========================================================================

	//=========================================================================
	protected function set_initial_version($versionString) {

		try {
			$versionInfo = $this->parse_version_string($versionString);
			$insertData = array(
				'projectName'		=> $this->projectName,
				'versionString'		=> $versionInfo['version_string']
			);

			$sql = 'INSERT INTO '. $this->dbTable . ' (project_name, version_string) '
					. 'VALUES (:projectName, :versionString)';

			if($this->db->run_insert($sql, $insertData, $this->sequenceName)) {
				$loadRes = true;
				$this->do_log("Created data for '". $this->projectName ."' with version '". $insertData['versionString'] ."'", 'initialize');
			}
			else {
				$this->error_handler(__METHOD__ .": failed to load initial version::: ". $e->getMessage());
			}
		}
		catch(Exception $e) {
			$this->error_handler(__METHOD__ .":: failed to load initial version due to exception, DETAILS::: ". $e->getMessage());
		}

		return $loadRes;
	}
	//=========================================================================

	//=========================================================================
	protected function do_log($message, $type='exception in code') {
		$this->debugLogs[] = array('project'=>$this->projectName,'upgradeFile'=>$this->upgradeConfigFile,'message'=>$message,'type'=>$type);
		if($this->internalUpgradeInProgress === true) {
			$this->storedLogs[] = func_get_args();
		}
		else {
			if(is_object($this->logsObj)) {
				$this->logsObj->log_by_class($message, $type);
			}
		}
	}//end do_log()
	//=========================================================================

}//end upgrade{}

redpajama_set_name: RedPajamaGithub


Liz Palena Hall is the Long-Term and Post-Acute Care (LTPAC) Coordinator in the Office of Policy at the Office of the National Coordinator for Health Information Technology (ONC). In this role, Liz is leading efforts to advance health IT adoption and interoperability across the care continuum, including health information exchange between acute care, post-acute care, community based services and with patients and caregivers. Liz's career in healthcare and information technology extends over 20 years and includes work in a variety of healthcare and academic settings as a registered nurse, clinical informaticist, and educator.


text:
Ugaritština je starý semitský jazyk, jímž se hovořilo v Ugaritu ve 2. polovině 2. tisíciletí př. n. l.

Kvůli nedostatečné znalosti gramatiky ugaritštiny je velmi těžké ji zařadit do některé ze skupin semitských jazyků. Svou zeměpisnou polohou se řadí k severozápadním (resp. kenaánským) semitským jazykům. Toto řazení je odůvodnitelné i díky podobnosti s ostatními jazyky této skupiny, např. biblickou hebrejštinou.

Jazyk byl zapisován svým vlastním, ugaritským klínovým písmem, většinou na hliněné tabulky.

Jazyk mohl být rozluštěn až poté, co bylo rozluštěno ugaritské klínové písmo, objevené ve vykopávkách, což se stalo až v letech 1930–1932. Jelikož však toto písmo nezná znaky pro samohlásky ani nepoužívá (jako např. hebrejština) některých souhlásek k vyznačení některých dlouhých samohlásek (tzv. matres lectionis), je těžké tyto texty vokalizovat. To znemožňuje nejen vytvoření kompletní gramatiky jazyka, ale i překlady dochovaných textů. Proto se ugaritské texty přepisují buď jen se souhláskami, nebo se vokalizují pomocí arabštiny.

Příklady

Číslovky

Ugaritské gramatiky
Vzhledem k tomu, že znalost tohoto písma je otázkou ani ne jednoho století, není základních gramatik mnoho. Zde jsou vypsány podle seznamu publikovaného v: Stehlík, Ondřej: Ugaritské náboženské texty. Vyšehrad, Praha 2003. .

 Gordon, C. H.: Ugaritic textbook. Rome 1940, 3. vydání.
 Segert, Stanislav: A Basic Grammar of the Ugaritic Language. Los Angeles 1984.
 Sivan, D.: A Grammar of the Ugaritic Language. Leiden 1997.
 Tropper, J.: Ugaritic Grammar. In: Ugaritic Textbook, Leiden 1999, s. 91–118.

Literatura

Externí odkazy

Západosemitské jazyky
Jazyky Asie
Mrtvé afroasijské jazyky
Starověké jazyky


Includes some procedures for latent variable modeling with a particular focus on multilevel data. The 'LAM' package contains mean and covariance structure modelling for multivariate normally distributed data (mlnormal(); Longford, 1987; <doi:10.1093/biomet/74.4.817>), a general Metropolis-Hastings algorithm (amh(); Roberts & Rosenthal, 2001, <doi:10.1214/ss/1015346320>) and penalized maximum likelihood estimation (pmle(); Cole, Chu & Greenland, 2014; <doi:10.1093/aje/kwt245>).
Please use the canonical form https://CRAN.R-project.org/package=LAM to link to this page.


text:
Q: How to open several projects with vim-cocoa? Is there a way to have several projects open with the vim-cocoa editor?
I usually open folders work on several files/projects.
Also is there a way to open vim-cocoa from the command line?
Please don't suggest macvim, I know it and it is slow at least lately on my machine or with my projects.

A: How to display the content of the working directory in Vim
:Vexp
:Sexp

or use NERD_Tree.
How to do it at launch-time from the command line (on a Mac)
$ open -a vim .
$ open -a vim /path/of/your/folder

A: You can create an alias to /Applications/Vim.app/Contents/MacOS/Vim -g or you can edit your mvim to something like follows https://gist.github.com/1389839 pay attention to lines 14 and 32
My opinion is to just create an alias in you Shell config.
Note: This doesn't open several projects in separate tabs. If you where to list out several projects it will load them in buffer for you to switch between.

redpajama_set_name: RedPajamaStackExchange


The Cornet Technology port concentrator unit is more than just a cable management tool. This versatile unit operates as an interface between virtually any user equipment interface (DTE or DCE) and a Cornet Technology switch engine or another PCU unit. This flexible PCU is deployable within traditional data centers or throughout a campus environment. With the PCU2, connectivity can be provided over copper or fiber.
The 3U PCU2 is available in both black and red versions and copper or fiber. The PCU port cards handle a diversity of port interfaces and are offered as single or multiple interface cards. For added port interface information, download the PCU port card data sheet.
To perform modem eliminator and test/access functions.
This specialized PCU is designed for shipboard communications applications where line devices such as TA-970, TA-980, TA-990, analog recorders and radio diagnostic line devices connect to trunk devices. The unit is available with two controller cards.
This unit is subject to U.S. export laws. Contact sales for additional information.


Due to the drains that are running through the industrial areas of Delhi, the authorities are planning to use drones to check illegal dumping of waste and sources of pollution in these drains. The plan is to deploy drones in two industrial areas of Delhi on a pilot basis.
If the results are encouraging then all the industrial areas would be monitored with drones in the future. This issue was discussed at a meeting that was held in March between the two-member National Green Tribunal (NGT)-appointed Yamuna pollution monitoring committee, the DSIIDC, the Delhi Pollution Control Committee (DPCC) and the Central Pollution Control Board (CPCB).
The Delhi police said that even though the use of drones is prohibited, they would examine the proposal if a government agency wanted to use them for official purposes.


W. Zev Rymer, M.D., Ph.D., has lent his expertise and leadership first to the Rehabilitation Institute of Chicago (RIC) and then to Shirley Ryan AbilityLab for the last quarter century. He was the second scientist hired by the organization and is a founding force behind the growth and success of our research enterprise, to date the largest and most internationally revered of its kind. He served RIC as Chief Scientist for nine years, transitioning to his current role as Director of Research Planning in July 2014. Today he also continues to lead his renowned Sensory Motor Performance Program (SMPP) laboratories. In addition, Dr. Rymer served as RIC's John G. Searle Chair in Rehabilitation Research, stepping down in July 2014.
In addition to his research roles, Dr. Rymer holds appointments as professor of physiology and biomedical engineering at the Northwestern University Feinberg School of Medicine and at the Edward Hines, Jr., Veterans Administration Hines Hospital, Hines, Illinois. His laboratory receives support from the National Institutes of Health (NIH), the Department of Education's National Institute on Disability and Rehabilitation Research (NIDRR), a number of research-oriented foundations and the U.S. Department of Veterans Affairs.
Dr. Rymer earned his medical degree from Melbourne University and his Ph.D. in neurophysiology from Monash University, both in Australia. After postdoctoral training at the National Institutes of Health and Johns Hopkins University Medical School, he became an assistant professor of neurosurgery and physiology at the State University of New York, Syracuse. In 1978, he came to Chicago as an assistant professor of physiology at the Feinberg School of Medicine at Northwestern University, and he remained as a faculty member in physiology until his appointment at the RIC in 1989.


Little touches go a long way. Start with the first thing buyers see; Trim bushes, wash walkways and change out trampled welcome mats, maximize that curb appeal! Open up a better Homes and Gardens magazine; Fix all he doors, including closet doors. You want all of these opening and closing smoothly! DE-CLUTTER!! Especially counters. Kitchen counters have a way of accumulating junk throughout the day, keep an eye on your counters and keep them clutter free. Hide your sponges, scrub brushes, dish soap, and any other everyday item that might distract from the fantasy of living there! Dust, wax…scrub toilets, wash windows, test and clean lights, put out fresh towels, hide family mementos, hide that mountainous pile of toys, remove prescription drugs from medicine cabinets and check for landmines from your furry one. Finishing touches…put out some scented candles. It is holiday time so, go with the season. Add some seasonal treats and your on top of the game!
You'll most likely be touring several homes, keep notes. Make a pros and cons list for each. Create a personal checklist of must haves and will nots. This prevents the features of a home from blending together and will allow you to compare more accurately and confidently. Create some kind of rating scale…1-10 works well.
Yes Spring is optimal for home selling, but it is definitely a year round sport. Seasonal accents tend to encourage buyers to hang out longer. Especially that plate of cookies! Make your home inviting.
Winter: Spotlight functional fireplaces. Near holidays, add touches like wreaths and pine-cone centerpieces. Display photos of your home a season ahead, particularly in winter, so buyers can see the house with greenery.
Spring: Fresh-cut flowers and candles bring spring scents indoors. For that new-start look, do extra spring cleaning and use brightly colored linens, spreads and pillows. Add little pops of color to the entry and landscape, visit the local garden center and get some accents for your porch as well.
Summer: Highlight patios and other outdoor areas. Swap dark towels and curtains for light colors. Put out a seasonal fruit basket, add flowers. Keep the house cool…but not cold.
Fall: Pumpkins are a must. Vases of seasonal foliage or tricolored corn inside. Use seasonal scents such as baked apple. Keep those leaves at bay.
Buyers are always advised to scope out the neighborhood at varying hours, but …you can go deeper. Here are some good and bad signs.
Bad signs: A major local employer is struggling or moving away; adjacent neighborhoods are progressively turning into rentals; are there a lot of for-sale homes? Are nearby commercial spaces vacant?
Good signs: Schools are in high demand and well-rated. Young families and artsy types are moving in. Older couples are staying put and nearby commercial properties are being redeveloped and leased quickly. For-sale homes are generating multiple offers.
Local knowledge and old-school networking are always valuable, but the latest technology offers much more. Some agencies offer "livability" ratings by ranking and contrasting neighborhoods by air quality, traffic choke points and specific data on a home's energy efficiency. In 2013, the National Association of Realtors introduced its Predictive Analytics group. Banks already use "big data" to gauge the worth of foreclosures and short sales, and mobile apps are now offering it for consumer and agent use. Ask your agent if they offer this and other useful technology such as high-definition aerial footage shot by drones. If your abode merits such a thing.
Buyers will enlist inspectors to go through your home. This is a chance to offer trust. Don't hide anything. Get your inspection done, make repairs and offer the buyer a copy of the inspection along with repair receipts, and explain if or how you've adjusted your price accordingly. Buyers will appreciate this honesty.
7. Don't let your ego get in the way of good math Buyers often get caught up in the win-at-all-costs mentality while negotiating. They'll stubbornly hold onto that extra couple grand. But, at an interest rate of 4.5%, the difference between $195,000 and $200,000 (assuming the 1.25% property tax and 15% down) is really only about 25$/month on a 30 year mortgage. So, think logically and don't let a measly 5 grand lock you out of the right house!
There are a lot of giant natural-gas fields in the U.S. and new ones now pending, so, homeowners should exercise "seller's market" clout to retain those mineral rights. It's always worth noting, provided the buyer doesn't protest. You can avoid that scenario by conveying those rights to a trustworthy relative or to an energy company buying them before you put your home on the market…"Mineral rights? Oh, so sorry, I no longer own them."
Refrain from making big purchases like a new car, or opening new credit card or amassing big chunks of other new debt before buying a home. These things raise your debt-to-income ratio, which lenders examine to determine the mortgage amount you can afford. Also avoid moving large sums of money around, changing banks, changing jobs and becoming self-employed before buying a home. These things will give you headaches down the road.
Accurate home pricing from the outset will always help you! The number one reason: it sells homes. Some agents advise sellers to overprice because inventory is low. Others say go below market to spur a bidding war… Don't get caught up in pricing games. Seriously. Activity in the first month of a listing is important. Don't waste this first month by pricing too high and scaring buyers away. You also don't want to start too low and risk losing money…simple answer…price right, from the start!
This is where hiring the right agent comes in.
Recommendations-use your friends and family. They won't steer you wrong. Ask around.
Response time-this is key right. You want to know your agent will get back to you promptly throughout the process…it's not a good sign if they can't do it for the first meeting.
In-person interviews-Obviously! Meet the agent, do you like them? Do they feel trustworthy?! You need to meet your agent.
Track record-How have they done in the past? Work with the best!


On the one hand, the world is messy and ugly, on the other it is miraculous and beautiful. Lee Heinen's art focuses mainly on the latter. Other artists, she believes, adequately cover the former. Lee recognized many years ago that her work was in a life affirming direction.
Until quite recently, realism or neo realism has been her mode of expression. However, this is not the only way to express her joyful view. Abstraction is another. She has discovered the pleasure of the painterly surface. It started with the addition of plastic beads imbedded in the paint to create texture. After that came the use of a feather duster as paint brush, followed by dripping, sponging, pouring, adding collage materials and just about any other way she can find to apply paint. Sometimes in the process, the painting's origin as a landscape is so modified that it becomes an abstraction.
A prominent characteristic of Lee's work is the expressive use of color, meaning that a tree need not always be green nor a sky blue. She is interested in a "visual chromatic scale," employing the moods and temperatures of various color combinations to convey feelings. A major color breakthrough resulted from her first visit to Africa. In an effort to express the intense light and temperature of the place, she developed a whole new enlivened, vivid palette which she now employs in all her painting.
Africa's wild, elemental environment also served to remind her that despite our daily immersion in the frenetic materialism of popular culture, we are still basically creatures of nature. And it is this fascination with the amazing vitality and endurance of life which drives her art.
Web Site Design by Janet Dodrill, specializing in artist's web sites, www.janetdodrill.com.
Copyright © Lee Heinen. All rights reserved.


Knowing what is Data Warehouse – definition and benefits has become very important today. Data Warehouse is one IT concept that has truly revolutionized the way people do business today. It is one of the most important tools in the arsenal of Business Intelligence which has led to an enhanced form of business analysis and strategic decision making.
Almost a decade ago only high-end businesses with huge turnovers could afford a Data Warehouse solution but nowadays with the availability of cheaper options in the market, many businesses have started implementing Data warehousing solutions on every scale.
Data Warehouse: Great Data Management Solution!
A data warehouse is not just a form of archiving and accessing corporate data. It is designed as a subject-oriented repository that provides enterprise-wide access to information at various organizational levels. Data warehouse tools are not designed solely for the purpose of answering complex data queries but are also capable of providing quick, accurate and sometimes discerning information solutions to the user.
Provides easy access to the historical as well as current information for the purposes of decision making.
Ensures the consistency of the enterprise-wide information.
Makes it possible to conduct decision-support transactions without disturbing the operational systems.
Provides a source of information that is both flexible as well as interactive.
Data Warehouse Benefits And Characteristics!
Data warehouse is subject-oriented. This means that one can analyze subject-specific data. For example, if a manager wants to know which product performed the best last year then he could query the data warehouse for sales data. Hence here sales becomes the subject matter.
Data warehouse is integrated. Since it is an information delivery system hence information from various sources are collected and stored in a warehouse. It then integrates all the data to make it consistent and useful for the purposes of strategic business decision making.
Information in a data warehouse is non-volatile meaning it is of permanent nature and doesn't change with time. This particular characteristic is very important in order to analyze business trends for further decision making.
Data warehouse is time variant. The huge amounts of data archived in a data warehouse help in discovering trends over time. This focus on changes that come over time makes a data warehouse time variant.
Approaches To Building A Data Warehouse!
Top-down – According to this approach the complete data warehouse is designed and build first and after that data marts are created for as per the requirements of specific group of users. We will discuss about data marts definition and concepts in the next blog article.
Bottom-up – This is just the reverse of the earlier approach where the Data marts are first created according to the needs of various departments in an enterprise which are then combined together to build-up a comprehensive data warehouse.
The main advantage of the top-down approach is that it provides an enterprise view of the data in the corporate scenario with centralized rules and control. However, building a data warehouse in this manner may prove to be time-consuming leading to increasing costs. Whereas taking up the Bottom-Up approach may save a lot of time and money since it entails a quicker and easier implementation of small manageable data marts. Though this approach has less risk of failure it diffuses the redundant data in each data mart. Even the inconsistencies of the data are also permeated through this approach.
Ultimately the approach for each enterprise varies according to the requirements and specifications. Hence in order to find the perfect fit for your organization one needs to analyze the reasons for building a Data Warehouse.
Be as it may Data Warehousing solutions have spread far and wide and is being used rampantly for making strategic business decisions. Each year new players are joining this thriving industry and are worth looking out for.


text:
var chai = require('chai');
var sinon = require('sinon');
var sinonChai = require('sinon-chai');
var proxyquire = require('proxyquire');
var should = chai.should();

chai.use(sinonChai);

var userModelStub = {},
    jwtStub = {
      sign: function(user, secret){
        return 'token'
      }
    },
    configStub = {
      jwtSecret: 'secret'
    }

var registerMW = proxyquire('../../server/routes/register', {
  '../models/user.js': userModelStub,
  'jsonwebtoken': jwtStub,
  '../config.json': configStub
});

var res = {};
var req = {};

describe('Register Middleware', function() {

  beforeEach(function(){
    res = {
      status: sinon.spy(function(){ return this }),
      json: sinon.spy(),
      send: sinon.spy()
    };
    req.body = {
      email: 'test@test.com',
      password: 'password'
    };
  });

  describe('Server-side Verification', function(){
    it('should 400 on invalid email', function(){
      req.body.email = 'x';
      registerMW(req,res,null);
      res.status.should.have.been.calledWith(400);
      res.json.should.have.been.calledWith({ reason: "Email must be between 4 and 20 characters" });
    });
    it('should 401 on invalid password', function(){
      req.body.password = 'x';
      registerMW(req,res,null);
      res.status.should.have.been.calledWith(400);
      res.json.should.have.been.calledWith({ reason: "Password must be between 4 and 20 characters" });
    });
  });

  describe('Account Registration', function(){
    it('should 200 on successful registration', function(){
      userModelStub.register = function(user, password, cb){
          cb(null);
        };
      registerMW(req,res,null);
      res.status.should.have.been.calledWith(200);
      res.json.should.have.been.calledWith({ token: 'token' });
    });
    it('should 400 on registering a duplicate user', function(){
      var dupeError = {
          name: "UserExistsError",
          message: "A user with the given username is already registered"
      };
      userModelStub.register = function(user, password, cb){
        cb(dupeError);
      };
      registerMW(req,res,null);
      res.status.should.have.been.calledWith(400);
      res.json.should.have.been.calledWith({ reason: dupeError });
    });
    it('should 400 on registering an invalid user', function(){
      userModelStub.register = function(user, password, cb){
        cb({
          name: "UserExistsError",
          message: "A user with the given username is already registered"
        });
      };
      registerMW(req,res,null);
      res.status.should.have.been.calledWith(400);
      res.json.should.have.been.calledOnce;
    });
  });
});


text:
2021 global venture capital investment on pace for record high
Dec 25, 2021 – 14:50 KYODO NEWS
TOKYO – Global venture capital investment is on course to double this year from 2020 to a record high of more than $580 billion, driven by investor interest in online services in the health care, financial and retail sectors spurred by monetary easing in major economies, according to data from a U.S. research firm.
Venture companies raised a total of $437.7 billion worldwide in the first nine months of 2021, marking five straight quarters of growth, data from CB Insights show.
The same pace of investment in startups into the fourth quarter would bring the annual figure to $583.6 billion, far exceeding $284.2 billion last year. Investors are paying close attention to digitalization and seeking to capitalize on monetary easing amid the coronavirus pandemic.
During the first three quarters, the health care, financial technology and retail sectors raised $97.1 billion, $94.7 billion and $82.5 billion, respectively, according to the data released in October by CB Insights.
By country, fund-raising by venture companies in the United States stood at $210.4 billion, accounting for nearly half of the global total during the nine-month period, with large investment deals involving data management firm Databricks Inc., grocery delivery company Gopuff and financial-technology company Chime Financial Inc.
In Asia, $125.5 billion was raised during the same period, with $25.5 billion by Chinese startups and $9.9 billion invested in India.
In Japan, venture companies raised 580 billion yen ($5.1 billion), up around 60 percent from a year earlier and surpassing the previous annual record high logged in 2019, according to a Japanese research company.
Among them, biotech venture Spiber Inc., based in Tsuruoka in the northeastern Japan prefecture of Yamagata, raised 34.4 billion yen from U.S. investment fund Carlyle Group and other investors, according to a Carlyle press release in September.
The Chinese government has been tightening its control of domestic IT giants such as Alibaba Group Holding Ltd. to rein in their economic clout, and some global investment previously bound for China could be diverted to Japan, according to the Japan Venture Capital Association.
Cr.KYODO NEWS
global venture
venture capita
Previous U.S. to lift travel ban to southern African countries on Dec. 31
Next Welfare consultations double in Japan from pre-pandemic level


This is the first time that Santos has publicly expressed such a strong interest in conducting discussions with the ELN. For their part, the rebel group have said on a number of occasions that they are ready to talk about peace.
"When prior governments have set out their willingness for peace, the ELN has been available. Since last year we have said to President [Juan Manuel] Santos that if public opinion is for peace, they can count on the ELN," said ELN leader Nicolas Rodriguez Bautista, in March 2013.
The rebel leader, alias "Gabino" said that the possibility of peace talks between the ELN and the government had not been discussed, and therefore he was unable to say how ELN discussions would compare to the current negotiations in Havana.
"It is difficult to say, because to date the reaches and methodologies of the process in Havana are not clear…between the FARC and the government there is an ongoing process and we are not even in exploratory dialogues, for this reason we cannot speak of a single table, we are willing to accept the reality of two separate negotiation tables," Gabino explained.
The president's recent announcement may have been prompted by the apparent progress of the FARC peace process. Santos himself said that a peace agreement could be a matter of months away.
President Santos on Monday referred to the "difficult decision" he made in initiating a peace process with the rebel group FARC, highlighting a number of conditions he had established before opening negotiations, indicating how a similar process with the ELN could work.
The ELN is Colombia's second largest guerrilla group, and was originally formed as a Marxist-Leninist/Liberation movement. However, as currently constituted, the group bears little resemblance to its founding ideology.


text:
Rossijaturneringen 1990 spelades i Novosibirsk under perioden 26-31 januari 1990, och vanns av Sverige. Ungern deltog för första gången.

Grundserien

Slutspel

Källor

 Norges herrlandskamper i bandy
 Sverige-Sovjet i bandy
 Rossijaturneringen

1990 i Sovjetunionen
Bandysäsongen 1989/1990
1990
Sport i Novosibirsk


"When people talk about peace and serenity, they think of Buddha, pigeon and the color white. Peace is an emotion one needs to feel within themselves. We want people to feel that way through our garments. The competition we're a part currently has peace and mediation as the theme. So, we're trying to create something using unconventional materials, which makes one feel calm and peaceful, through the color, texture, and design. Both of us are working together on this project. We've participated in a few contests before and have won the first prize. What clicks for both of us as a pair is that we understand and respect each other's ideas. We never hesitate to suggest changes and curate something good together. Fashion is our escape to happiness. Although it's a lot of work and gets really tiring, we enjoy it. As individuals, both of us believe in dreaming big and working towards the dream. We're doing it, one garment at a time."


text:
Zaijian Jaranilla feels weight of playing son caught in the middle of warring parents
Nobel Peace Prize winner Malala marries at home in Britain
FILE PHOTO: Nobel Peace Prize laureate Malala Yousafzai poses for photographs during the Education and Development G7 Ministers Summit in Paris, France, July 5, 2019. Christophe Petit Tesson/Pool via REUTERS/File Photo
Reuters / 02:45 PM November 10, 2021
LONDON — Malala Yousafzai, the campaigner for girls' education and Nobel Peace Prize laureate who survived being shot aged 15 by a Taliban gunman in her native Pakistan in 2012, has got married, she said on social media on Tuesday.
The 24-year-old, who lives in Britain, said she and her new husband, who she named only as Asser, had wed in the city of Birmingham and celebrated at home with their families.
"Today marks a precious day in my life. Asser and I tied the knot to be partners for life," she wrote on Twitter, adding four pictures to her post.
Malala gave no other information about her husband apart from his first name. Internet users identified him as Asser Malik, general manager of the Pakistan Cricket Board's High-Performance Centre. Reuters could not confirm this.
Malala is revered in many parts of the world, especially in Western countries, for her personal courage and her eloquence in advocating for the rights of girls and women. In Pakistan, her activism has divided public opinion.
As recently as July this year, Malala told British Vogue magazine that she was not sure if she would ever marry.
"I still don't understand why people have to get married. If you want to have a person in your life, why do you have to sign marriage papers, why can't it just be a partnership?" she was quoted as saying in a lengthy profile.
The comment drew criticism from many social media users in Pakistan at the time.
Get the latest lifestyle news delivered to your inbox
activistAsserEducationMalala YousafzaiMarriageNobel Peace PrizeRightswedding
kadraneda
Is your heart fragmented? Armi has left UDD
HeadlinesTo Be You
Previous A look at Chanel's Holiday 2021 Collection
Next Aubrey Miles shares tips on plant propagation


Get the most up-to-date tracking information right at your fingertips!
Download our free app today, available on iTunes or Google Play.
Contact us today to get a personal login to My H-Trac.
Start downloading shipment reports, tracking information and more.
Go Green and Go Paperless!
Eliminate waiting for your bill in the mail and reduce the pile of paper on your desk.
Go paperless and receive your invoices via e-mail.
Save a Stamp & a Check!


text:
Category: ENERGY MANAGEMENT
FREEDOM GROUP EXTENDS UK POWER NETWORK CONTRACT
Freedom, an NG Bailey Group company, has been awarded an extension on a major UK Power Networks framework, to support its essential maintenance and commissioning works. The £49m...
ENGIE NAMED BEST SUSTAINABLE FM COMPANY
Energy and support services specialist ENGIE UK & Ireland has come out on top in the Sustainable Facilities Management Index (SFMI) Awards for a second successive year. ENGIE achieved a...
ENGIE SECURES £90M ENERGY DEAL
ENGIE has partnered with Edinburgh St James, the 1.7 million sq ft development, to develop and operate a new low carbon decentralised energy scheme, worth £90m. The 33-year...
DOUBLE MILTON KEYNES WIN FOR ENGIE
Energy and services group, ENGIE, has been announced as the preferred bidder for two new significant contracts with Milton Keynes Council. The first contract will see ENGIE deliver a range of...
HARVEST ENERGY SELECTS TECHNICHE
Techniche has announced that Harvest Energy has selected its Urgent facilities and asset management platform, to support the company's UK maintenance operation across almost 90 company owned...
THE MONARCH PARTNERSHIP ACQUIRES EIC & T-MAC TECHNOLOGIES
The Monarch Partnership has acquired Energy Intelligence Centre (EIC) and T-Mac Technologies in a transaction that will create one of the UK's largest utility consultancies. The deal...
FACILITIES SHOW 2019 UNVEILS INSPIRATIONAL SPEAKERS
Facilities Show has announced the three inspirational keynote speakers set to enthral and inform audiences at this year's event, held on 18th- 20th June at ExCeL, London. The event will...
ISS gains two prestigious awards for Southbank Centre
Colleagues from ISS Technical Services are celebrating having been successfully recertified with two prestigious awards for asset and energy management at Southbank Centre, London. ...
SPIE TO HELP IN REGENT'S CRESCENT REDEVELOPMENT
SPIE UK has been awarded a contract for the mechanical, electrical, public health and fire engineering services for the redevelopment of the Regent's Crescent, which was originally built by...
RESOURCEKRAFT AWARDED 2018 GREEN TECHNOLOGY AWARD
ResourceKraft have been named the Green Technology Award Winner at the Green Ireland Awards in Dublin. The Green Awards, now in its tenth year, honoursthe key innovators and...


text:
package factory_test

import (
	"github.com/concourse/atc"
	"github.com/concourse/atc/scheduler/factory"
	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

var _ = Describe("Factory Aggregate", func() {
	var (
		buildFactory factory.BuildFactory

		resources           atc.ResourceConfigs
		resourceTypes       atc.VersionedResourceTypes
		actualPlanFactory   atc.PlanFactory
		expectedPlanFactory atc.PlanFactory
	)

	BeforeEach(func() {
		actualPlanFactory = atc.NewPlanFactory(123)
		expectedPlanFactory = atc.NewPlanFactory(123)

		buildFactory = factory.NewBuildFactory(42, actualPlanFactory)

		resources = atc.ResourceConfigs{
			{
				Name:   "some-resource",
				Type:   "git",
				Source: atc.Source{"uri": "git://some-resource"},
			},
		}

		resourceTypes = atc.VersionedResourceTypes{
			{
				ResourceType: atc.ResourceType{
					Name:   "some-custom-resource",
					Type:   "docker-image",
					Source: atc.Source{"some": "custom-source"},
				},
				Version: atc.Version{"some": "version"},
			},
		}
	})

	Context("when I have one aggregate", func() {
		It("returns the correct plan", func() {
			actual, err := buildFactory.Create(atc.JobConfig{
				Plan: atc.PlanSequence{
					{
						Aggregate: &atc.PlanSequence{
							{
								Task: "some thing",
							},
							{
								Task: "some other thing",
							},
						},
					},
				},
			}, resources, resourceTypes, nil)
			Expect(err).NotTo(HaveOccurred())

			expected := expectedPlanFactory.NewPlan(atc.AggregatePlan{
				expectedPlanFactory.NewPlan(atc.TaskPlan{
					Name: "some thing",
					VersionedResourceTypes: resourceTypes,
				}),
				expectedPlanFactory.NewPlan(atc.TaskPlan{
					Name: "some other thing",
					VersionedResourceTypes: resourceTypes,
				}),
			})
			Expect(actual).To(Equal(expected))
		})
	})

	Context("when I have nested aggregates", func() {
		It("returns the correct plan", func() {
			actual, err := buildFactory.Create(atc.JobConfig{
				Plan: atc.PlanSequence{
					{
						Aggregate: &atc.PlanSequence{
							{
								Task: "some thing",
							},
							{
								Aggregate: &atc.PlanSequence{
									{
										Task: "some nested thing",
									},
									{
										Task: "some nested other thing",
									},
								},
							},
						},
					},
				},
			}, resources, resourceTypes, nil)
			Expect(err).NotTo(HaveOccurred())

			expected := expectedPlanFactory.NewPlan(atc.AggregatePlan{
				expectedPlanFactory.NewPlan(atc.TaskPlan{
					Name: "some thing",
					VersionedResourceTypes: resourceTypes,
				}),
				expectedPlanFactory.NewPlan(atc.AggregatePlan{
					expectedPlanFactory.NewPlan(atc.TaskPlan{
						Name: "some nested thing",
						VersionedResourceTypes: resourceTypes,
					}),
					expectedPlanFactory.NewPlan(atc.TaskPlan{
						Name: "some nested other thing",
						VersionedResourceTypes: resourceTypes,
					}),
				}),
			})
			Expect(actual).To(Equal(expected))
		})
	})

	Context("when I have an aggregate with hooks", func() {
		It("returns the correct plan", func() {
			actual, err := buildFactory.Create(atc.JobConfig{
				Plan: atc.PlanSequence{
					{
						Aggregate: &atc.PlanSequence{
							{
								Task: "some thing",
								Success: &atc.PlanConfig{
									Task: "some success hook",
								},
							},
						},
					},
				},
			}, resources, resourceTypes, nil)
			Expect(err).NotTo(HaveOccurred())

			expected := expectedPlanFactory.NewPlan(atc.AggregatePlan{
				expectedPlanFactory.NewPlan(atc.OnSuccessPlan{
					Step: expectedPlanFactory.NewPlan(atc.TaskPlan{
						Name: "some thing",
						VersionedResourceTypes: resourceTypes,
					}),
					Next: expectedPlanFactory.NewPlan(atc.TaskPlan{
						Name: "some success hook",
						VersionedResourceTypes: resourceTypes,
					}),
				}),
			})
			Expect(actual).To(Equal(expected))
		})
	})

	Context("when I have a hook on an aggregate", func() {
		It("returns the correct plan", func() {
			actual, err := buildFactory.Create(atc.JobConfig{
				Plan: atc.PlanSequence{
					{
						Aggregate: &atc.PlanSequence{
							{
								Task: "some thing",
							},
						},
						Success: &atc.PlanConfig{
							Task: "some success hook",
						},
					},
				},
			}, resources, resourceTypes, nil)
			Expect(err).NotTo(HaveOccurred())

			expected := expectedPlanFactory.NewPlan(atc.OnSuccessPlan{
				Step: expectedPlanFactory.NewPlan(atc.AggregatePlan{
					expectedPlanFactory.NewPlan(atc.TaskPlan{
						Name: "some thing",
						VersionedResourceTypes: resourceTypes,
					}),
				}),
				Next: expectedPlanFactory.NewPlan(atc.TaskPlan{
					Name: "some success hook",
					VersionedResourceTypes: resourceTypes,
				}),
			})
			Expect(actual).To(Equal(expected))
		})
	})
})


but also welcomed in the international market. for Cartoon Character Pens , Fashion Character Pens , Plastic Character Pens , Sincerely sit up for serving you in the in the vicinity of future. You are sincerely welcome to visit our corporation to talk organization face to face with each other and build long-term co-operation with us!
"We now have quite a few superb workers customers very good at marketing and advertising, QC, and working with forms of troublesome dilemma while in the creation approach for Cartoon Character Pens , Fashion Character Pens , Plastic Character Pens , We aim to build a famous brand which can influence a certain group of people and light up the whole world. We want our staff to realize self-reliance then achieve financial freedom lastly obtain time and spiritual freedom. We do not focus on how much fortune we can make instead we aim to obtain high reputation and be recognized for our products. As a result our happiness comes from our clients satisfaction rather than how much money we earn. Ours team will do best for you always.


text:
Nigerians Abroad
Falconets
Women Federation Cup
grassroots/CSR
Hire China
Nigerian Footballer
Pinnick describes NFF bill as 'Next level' for Nigerian football development
President of the Nigeria Football Federation, Amaju Melvin Pinnick has described as 'the real next level' for Nigerian Football development, the passage by the Senate of the Federal Republic on Wednesday of the NFF Bill, which automatically repealed the long –standing NFA Act.
A delighted Pinnick told thenff.com that the NFF Bill's passage is the biggest enabling environment for Nigerian Football to thrive provided by any Government over the decades, and applauded the President Muhammadu Buhari administration for consolidating on its numerous and credible moves that have provided lifeblood and impetus for the Nigeria game.
"The NFF remains forever grateful to the administration of President Muhammadu Buhari (GCFR) for the several praiseworthy moves and policies that have boosted the development of football administration and organization in Nigeria over the past four years. Indeed, we can never over-emphasize the President and his Government's tremendous support for the present NFF to overcome its several challenges and forge ahead in taking Nigerian Football to new heights.
"We want to greatly applaud the National Assembly for the passage of the NFF Bill. It is a major victory by, and legacy for, the present NFF administration. A lot of effort went into pushing the Bill, and we are very happy that it has finally been passed.
"Indeed, the passage of the bill, and if assented to by Mr. President, will strengthen our resolve and provide framework to fast-track our objectives to make football an integral part of the Nigeria economy as is happening in some other countries across the globe."
Wednesday's passage by the Senate means the entire National Assembly has endorsed the document (the House of Representatives having earlier passed it), with only President Buhari's assent remaining for the Bill to become law.
An outline of the NFF Bill shows that it, among other things, repealed the NFA Act and established NFF; recognizes football as a National Asset entitled to special privileges and concessions; recognizes the NFF Statutes as supreme law for football administration in Nigeria; recognizes that the Federation and its members shall be self-governed by the Federation; recognizes NFF as a private sector –driven and self –governing non-profit body; recognizes that all disputes should be resolved by alternate dispute resolution mechanisms enshrined in the Statutes, with FIFA and CAS as final bus-stops and; that membership of NFF being voluntary, all members/participants shall be deemed to have waived rights to take internal disputes to ordinary courts of law.
It also provided for the NFF to publish its annual audited accounts and to keep same for inspection by members; clear –cut process on how Government will support the NFF through grants, subventions and appropriations; clear –cut process for Government to confer benefits, concessions and tax rebates on companies sponsoring football; organize and operate its secretariat and employ staff under its standard employments contract as done in the private sector; streamline and enhance transparency in transfer of players; provides the framework for the domestication of the NFF and FIFA Statutes and; provides clear-cut process for Government to support football by giving the National Broadcaster funds to buy broadcast rights from NFF and the Leagues at commercially viable terms and broadcast football events through the networks.
Previous articleFIFA U20 World Cup: Flying Eagles start against Qatar, eye exciting teams of the past
Next articleFIFA U20 World Cup: Nigeria win opening game
Nigeria thrash Hungary 4-2 in World Cup opener
Rivers kids to get priority at Real Madrid Academy
Nigeria to tackle South Africa, Cameroon in All Africa Games
Nigerianfootballer.com is a verified football news portal that provides you with the latest news and happenings in the Nigerian Football Leagues.
Contact us: china@acheru.com
© 2019 Nigerianfootball.com All Right Reserved
Reuben, Papa Idris fit for Eagles
AMOKACHI SIGNS FOR FINNISH SECOND DIVISION SIDE