Content-Type: multipart/related; start=<op.mhtml.1267392739546.aed7e94d241b0f7b@172.16.2.245>; boundary=----------GRdmKkLcvs6qnZ1AQyG3wo
Content-Location: http://www.sciencedaily.com/releases/2010/02/100224132651.htm
Subject: =?utf-8?Q?Psychiatry's=20main=20method=20to=20prevent=20mistaken=20diagnoses=20of=20depression=20doesn't=20work:=20study?=
MIME-Version: 1.0

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=100224132651.htm
Content-Type: text/html; charset=iso-8859-1; name=100224132651.htm
Content-ID: <op.mhtml.1267392739546.aed7e94d241b0f7b@172.16.2.245>
Content-Location: http://www.sciencedaily.com/releases/2010/02/100224132651.htm
Content-Transfer-Encoding: Quoted-Printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" =

	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml">
<head>
<title>Psychiatry's main method to prevent mistaken diagnoses of depress=
ion doesn't work: study</title>
	<meta http-equiv=3D"content-type" content=3D"text/html; charset=3Diso-8=
859-1" />
	<meta name=3D"Description" content=3D"A new empirically challenges the =
effectiveness of psychiatrists' official diagnostic manual in preventing=
 mistaken, false-positive diagnoses of depression." id=3D"metasummary" /=
>
	<meta name=3D"Keywords" content=3D"Mental Health Research; Diseases and=
 Conditions; Workplace Health; Depression; Mental Health; Psychiatry" id=
=3D"metakeywords" />
	<meta name=3D"Date" content=3D"2010-02-25" id=3D"metadate" />
	<meta name=3D"PICS-Label" content=3D"(PICS-1.1 'http://www.rsac.org/rat=
ingsv01.html' l gen true comment 'RSACi North America Server' by 'editor=
@sciencedaily.com' for 'http://www.sciencedaily.com' on '1997.05.07T20:0=
5-0500' r (n 0 s 0 v 0 l 0))" />
	<link href=3D"/styles/main8-new.css" rel=3D"stylesheet" type=3D"text/cs=
s" />
	<link href=3D"/styles/thumbnailviewer.css" rel=3D"stylesheet" type=3D"t=
ext/css" />
	<script src=3D"/scripts/functions8-new.js" type=3D"text/javascript"></s=
cript>
	<script src=3D"/scripts/prototype.js" type=3D"text/javascript"></script=
>
	<script src=3D"/scripts/thumbnailviewer.js" type=3D"text/javascript"></=
script>
	<script type=3D"text/javascript">
		var randseed =3D Math.random() + "";
		var randnum =3D randseed * 1000000000000000000;
	</script>
</head>
<body>
<div id=3D"header">
	<div id=3D"headercontent">
		<div class=3D"left"><a href=3D"/" title=3D"ScienceDaily: Your source f=
or the latest research news, discoveries and breakthroughs in science"><=
img src=3D"/images/logo.gif" alt=3D"ScienceDaily: Your source for the la=
test research news &#10;and science breakthroughs -- updated daily" id=3D=
"logo" width=3D"250" height=3D"85" vspace=3D"0" hspace=3D"0" border=3D"0=
" style=3D"margin: 3px 0 2px 0" /></a></div>
		<div id=3D"sciencedaily_leaderboard" class=3D"leaderboard">
			<script language=3D"javascript" type=3D"text/javascript">
			google_hints =3D "Mental Health Research; Diseases and Conditions; Wo=
rkplace Health; Depression; Mental Health; Psychiatry";
			google_ad_channel =3D "9363733909+2072192687+7922053140+6837283906+58=
55393847+7497946760+8476969570";
			</script>
			<script language=3D"javascript" type=3D"text/javascript">
//<![CDATA[
document.write('<scr'+'ipt language=3D"javascript" type=3D"text/javascri=
pt" src=3D"http://iv.doubleclick.net/adj/nbcu.science/mentalhealth_bipol=
ar;!category=3Dsciencedaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;dcopt=
=3Dist;sz=3D728x90;tile=3D1;pos=3D1;ord=3D'+randnum+'?"></scr'+'ipt>');
//]]>
</script>
			<noscript>
<a href=3D"http://iv.doubleclick.net/jump/nbcu.science/mentalhealth_bipo=
lar;!category=3Dsciencedaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;dcop=
t=3Dist;sz=3D728x90;tile=3D1;pos=3D1;ord=3D123456789012?"> <img src=3D"h=
ttp://iv.doubleclick.net/ad/nbcu.science/mentalhealth_bipolar;!category=3D=
sciencedaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;dcopt=3Dist;sz=3D728=
x90;tile=3D1;pos=3D1;ord=3D123456789012?" border=3D"0" alt=3D"Click Here=
!" /></a>
</noscript>
		</div>
	</div><!-- end headercontent -->
</div><!-- end header -->
<div class=3D"clear"></div>
<div id=3D"wrapper">
	<div id=3D"title">
		<div id=3D"titleleft">
			<div class=3D"left">
				<div id=3D"titleleftcontent"><h1 style=3D"color: #000">Science News<=
/h1></div>
			</div>
			<div class=3D"right">
				<div id=3D"titlerightcontent"><a href=3D"#" class=3D"blue" onclick=3D=
"sharepage(); return false;" id=3D"share_link"><img src=3D"/images/share=
.png" height=3D"12" width=3D"12" border=3D"0" alt=3D"" /> Share</a> &nbs=
p; <a href=3D"#" class=3D"blue" onclick=3D"blogpage(); return false;" id=
=3D"blog_link"><img src=3D"/images/blog.png" height=3D"12" width=3D"12" =
border=3D"0" alt=3D"" /> Blog</a> &nbsp; <a href=3D"#" class=3D"blue" on=
click=3D"citepage(); return false;" id=3D"cite_link"><img src=3D"/images=
/cite.png" height=3D"12" width=3D"12" border=3D"0" alt=3D"" /> Cite</a><=
/div>
			</div>
		</div>
		<div id=3D"titleside">
			<div id=3D"titlesidecontent"><a href=3D"#" class=3D"blue" onclick=3D"=
printpage(); return false;" id=3D"print_link"><img src=3D"/images/print.=
png" height=3D"12" width=3D"12" border=3D"0" alt=3D"" /> Print</a> &nbsp=
; <a href=3D"#" class=3D"blue" onclick=3D"emailpage(); return false;" id=
=3D"email_link"><img src=3D"/images/email.png" height=3D"12" width=3D"12=
" border=3D"0" alt=3D"" /> Email</a> &nbsp; <a href=3D"#" class=3D"blue"=
 onclick=3D"bookmarkpage(); return false;" id=3D"bookmark_link"><img src=
=3D"/images/bookmark.png" height=3D"12" width=3D"12" border=3D"0" alt=3D=
"" /> Bookmark</a></div>
		</div>
	</div>
	<div class=3D"clear"></div>
	<div id=3D"content">
		<div id=3D"main">

			<!-- google_ad_section_start -->
		=

			<h1 id=3D"headline" class=3D"story">Psychiatry's Main Method to Preve=
nt Mistaken Diagnoses of Depression Doesn't Work: Study</h1>
			=

			<div id=3D"story" style=3D"padding-bottom: 10px">
				<p id=3D"first"><span class=3D"date">ScienceDaily (Feb. 25, 2010)</s=
pan> &#151; A study in the March edition of the <em>American Journal of =
Psychiatry</em> senior-authored by Jerome C. Wakefield, a professor at t=
he Silver School of Social Work at New York University with Mark Schmitz=
 of Temple University and Judith Baer of Rutgers University, empirically=
 challenges the effectiveness of psychiatrists' official diagnostic manu=
al in preventing mistaken, false-positive diagnoses of depression.</p>
				=

				<div id=3D"seealso">
					<hr />
					<div style=3D"margin: -5px 0 5px 0"><strong>See Also:</strong></div=
>
					<div style=3D"padding-top: 5px"><a href=3D"/news/health_medicine/" =
class=3D"red"><strong>Health &amp; Medicine</strong></a></div>
<ul>
<li><a href=3D"/news/health_medicine/mental_health/" class=3D"blue" rel=3D=
"tag">Mental Health Research</a></li>
<li><a href=3D"/news/health_medicine/diseases_and_conditions/" class=3D"=
blue" rel=3D"tag">Diseases and Conditions</a></li>
<li><a href=3D"/news/health_medicine/workplace_health/" class=3D"blue" r=
el=3D"tag">Workplace Health</a></li>
</ul>
<div><a href=3D"/news/mind_brain/" class=3D"red"><strong>Mind &amp; Brai=
n</strong></a></div>
<ul>
<li><a href=3D"/news/mind_brain/depression/" class=3D"blue" rel=3D"tag">=
Depression</a></li>
<li><a href=3D"/news/mind_brain/mental_health/" class=3D"blue" rel=3D"ta=
g">Mental Health</a></li>
<li><a href=3D"/news/mind_brain/psychiatry/" class=3D"blue" rel=3D"tag">=
Psychiatry</a></li>
</ul>

					<div><a href=3D'/articles/' class=3D'red'><strong>Reference</strong=
></a></div>
					<ul>
						<li><a href=3D"/articles/p/personality_disorder.htm" class=3D"blue=
">Personality disorder</a></li>
<li><a href=3D"/articles/p/psychopathology.htm" class=3D"blue">Psychopat=
hology</a></li>
<li><a href=3D"/articles/s/substance_abuse.htm" class=3D"blue">Substance=
 abuse</a></li>
<li><a href=3D"/articles/a/adult_attention-deficit_disorder.htm" class=3D=
"blue">Adult attention-deficit disorder</a></li>

					</ul>
					=

					<div id=3D"googleleft"></div>

				</div>

				=

<p>The findings concerning the American Psychiatric Association's Diagno=
stic and Statistical Manual of Mental Disorders' (DSM) criteria for diag=
nosing depression rebuts recent criticism of earlier research by Wakefie=
ld. That earlier research suggested that misdiagnoses of depression are =
widespread, and touched off considerable controversy.</p>
<p>According to the DSM, the diagnosis of major depression requires the =
presence -- for two weeks -- of at least five possible symptoms out of a=
 list of nine, which include, for example, sadness, loss of interest in =
usual activities, lowered appetite, fatigue, and insomnia. However, thes=
e symptoms can also occur in normal responses to loss and stress. False =
positive diagnoses occur when someone reacting with intense normal sadne=
ss to life's stresses is misdiagnosed as having major depressive disorde=
r. Recent studies suggest that a very large percentage of people have su=
ch symptoms for two weeks or longer at some point in their lives; theref=
ore, how many of these individuals really are afflicted by a mental diso=
rder or are responding within normal limits to loss or stress has been a=
 matter of debate.</p>
<p>The journal article examines the primary method by which the official=
 diagnostic criteria for depression -the Clinical Significance Criterion=
 (CSC) -- are supposed to distinguish normal from disordered cases and t=
hereby prevent false positive diagnoses. The CSC was added to the sympto=
m and duration criteria in the DSM's fourth edition in 1994 (DSM-IV) in =
the wake of criticism that too many of the listed symptoms -- loss of ap=
petite, say, or sadness, insomnia, or fatigue -- were being identified a=
s evidence of major depressive disorder even when they were mild and pos=
sibly normal responses to distress arising from such events as the loss =
of a job, the dissolution of a marriage, or other triggers for sadness, =
and that such errors might be contributing to the very high reported rat=
es of untreated depression in the American population drawn from epidemi=
ological surveys.</p>
<p>Under the 1994 DSM revision, in addition to the two weeks of sadness =
and other depressive symptoms, a specified minimal &quot;clinically sign=
ificant&quot; threshold in the form of harm due to distress or role impa=
irment (in occupational, family, or interpersonal contexts) must have re=
sulted from the symptoms in evidence before they could be considered sig=
ns of depression. Researchers have subsequently assumed -- without defin=
itive evidence -- that the CSC eliminates substantial numbers of false p=
ositives.</p>
<p>In a 1999 article in <em>American Journal of Psychiatry</em>, Wakefie=
ld and co-author Robert Spitzer, the originator of the modern DSM sympto=
m-based approach to diagnosis, argued that the CSC would not eliminate f=
alse-positive diagnoses of major depression because anyone having the sp=
ecified symptoms -- even an individual experiencing a normal intense rea=
ction to loss -- would be likely to experience distress or role impairme=
nt. Thus, they asserted, the CSC was redundant with the symptom criteria=
 and could not distinguish normal from disordered symptoms -- a claim th=
at has come to be known as the &quot;redundancy hypothesis.&quot; The re=
searchers' argument was purely conceptual, and largely ignored.</p>
<p>The issue of whether the redundancy hypothesis is correct became sudd=
enly more important after Wakefield senior-authored a much-discussed 200=
7 article in Archives of General Psychiatry. The article argued that the=
re were indeed large numbers of false-positive diagnoses of major depres=
sion in community surveys of mental disorder -- possibly as high as 25% =
to 33%. However, that study used data from a national survey that was co=
nducted before the DSM-IV's addition of the CSC to the major depression =
diagnostic criteria. Thus, there was no CSC in the criteria that Wakefie=
ld and his team used to identify cases of major depression at the time.<=
/p>
<p>Critics of that study argued that the lack of a CSC was fatal to the =
argument because if the CSC had been used, then the supposed false-posit=
ive diagnoses that Wakefield and his group identified would likely have =
been eliminated as cases too mild for diagnosis. For example, one noted =
psychiatrist argued that Wakefield's results were due to a &quot;glitch&=
quot; in the diagnostic criteria Wakefield used, and that the diagnosed =
individuals identified by Wakefield as having normal reactions would hav=
e been eliminated from the depression category if current diagnostic cri=
teria including the CSC were used.</p>
<p>A paper later submitted by Wakefield that built on the 2007 article w=
as rejected for publication partly based on a reviewer's assertion that =
if the CSC had been included in the earlier study, the supposed false po=
sitives likely would have been eliminated. So, the issue of whether the =
CSC is in fact redundant or actually eliminated many false-positive majo=
r depression diagnoses became key to the debate, which is still ongoing,=
 about the prevalence of depressive disorder.</p>
<p>The latest study, coming in the <em>American Journal of Psychiatry</e=
m>, offers an empirical demonstration, based on nationally representativ=
e data, that the Critical Significance Criterion fails to distinguish no=
rmal from disordered conditions. In this analysis, Wakefield undertook t=
o evaluate independently the impact of the CSC on epidemiological survey=
 estimates of major depressive disorder by using data from a later surve=
y that included a carefully worked out CSC criterion for depression whos=
e inclusion, according to the claims of its authors, was an effective wa=
y of eliminating former false positives. Wakefield then compared estimat=
es of depressive disorder with and without the use of the CSC.</p>
<p>Confirming the redundancy hypothesis put forward a decade earlier, he=
 found that the CSC eliminated virtually no one from diagnosis -- in fac=
t, even among those who experienced prolonged sadness without meeting ot=
her diagnostic criteria for depression, about 94% of them satisfied the =
CSC just on the basis of the &quot;distress&quot; component alone. Thus =
the Clinical Significance Criterion, according to Wakefield and his co-a=
uthors, is not doing what it is supposed to do -- reducing the over-diag=
nosis of normal mood fluctuations as depression -- and the issue of prev=
enting false positives needs to be revisited. And contrary to critics' s=
peculations, the earlier findings suggesting many false positives in com=
munity surveys cannot be dismissed on the basis of the CSC.</p>
<p>The results take on further importance, Wakefield says, in light of p=
roposals for changes to the DSM in a revision currently taking place tha=
t will lead to DSM-V. Concern about increasing false positives is at the=
 heart of criticisms of the proposals that have been put forward by lead=
ing psychiatrists, including Allen Frances, the Editor of DSM-IV. Moreov=
er, some of the proposals seem to rely heavily on the CSC to justify dia=
gnosis of disorder even when symptoms are minimal -- when in fact the cu=
rrent research underscores that normal distress can easily satisfy the C=
SC.</p>
								=

				<div style=3D"float: left; width: 150px; padding: 10px 0"><em>Email =
or share this story:</em></div>

				<div style=3D"float: right; width: 150px; padding: 10px 50px 0 0; ma=
rgin: 0">
				<!-- AddThis Button BEGIN -->
				<div class=3D"addthis_toolbox addthis_default_style">
				<a class=3D"addthis_button_facebook"></a>
				<a class=3D"addthis_button_email"></a>
				<a class=3D"addthis_button_favorites"></a>
				<a class=3D"addthis_button_print"></a>
				<span class=3D"addthis_separator">|</span>
				<a href=3D"http://www.addthis.com/bookmark.php?v=3D250&amp;pub=3Dsci=
encedaily" class=3D"addthis_button_expanded">More</a>
				</div>
				<script type=3D"text/javascript" src=3D"http://s7.addthis.com/js/250=
/addthis_widget.js#pub=3Dsciencedaily" defer=3D"defer"></script>
				<!-- AddThis Button END -->
				</div>

				<div style=3D"clear: both"></div>
				<hr />
				=

				<p><strong>Story Source:</strong></p>
				=

				<blockquote>Adapted from materials provided by <a href=3D"http://www=
.nyu.edu" rel=3D"nofollow" class=3D"blue"><span id=3D"source">New York U=
niversity</span></a>.</blockquote>
				=

				<div style=3D"clear: both"></div>
				<hr />
				=

				<p><strong>Journal Reference</strong>:</p>
<ol style=3D"margin: 5px 0 5px 18px; padding: 0;">
<li>Jerome C. Wakefield, Mark F. Schmitz, Judith C. Baer. <strong>Does t=
he DSM-IV Clinical Significance Criterion for Major Depression Reduce Fa=
lse Positives? Evidence From the National Comorbidity Survey Replication=
</strong>. <em>American Journal of Psychiatry</em>, 2010; DOI: <a href=3D=
"http://dx.doi.org/10.1176/appi.ajp.2009.09040553" rel=3D"nofollow">10.1=
176/appi.ajp.2009.09040553</a></li>
</ol>

				=

				<div style=3D"clear: both"></div>

				<div id=3D"citationbox" style=3D"margin-top: 15px; background-color:=
 #eee">
					<form action=3D"#" method=3D"post">
						<label>Need to cite this story in your essay, paper, or report? Us=
e one of the following formats:</label>
						<div style=3D"margin: 5px 0 0 0">
							<div id=3D"citationformat">
								<input type=3D"radio" id=3D"citationapa" name=3D"citebutton" val=
ue=3D"apa" onclick=3D"citation()" checked=3D"checked" /> APA<br /><br />=

								<input type=3D"radio" id=3D"citationmla" name=3D"citebutton" val=
ue=3D"mla" onclick=3D"citation()" /> MLA
							</div>
							<div id=3D"citationtext">
								<script language=3D"javascript" type=3D"text/javascript">citatio=
n();</script>
							</div>
							<div class=3D"clear"></div>
						</div>
					</form>
					<p><em>Note: If no author is given, the source is cited instead.</e=
m></p>
				</div>
				=

			</div><!-- end story -->
			=

			<div id=3D"related" style=3D"padding-bottom: 0; margin-bottom: 0">

				=


				<div id=3D"googlephoto"></div>

				<h2 class=3D"block">Related Stories</h2>
				<hr style=3D"margin-bottom: 0" />
	=

				<div id=3D"relatedstories">
										<div><strong><a href=3D"/releases/2009/07/090729132113.htm" cl=
ass=3D"blue">Errors In Diagnosis Of Depression Lead To Over And Under Di=
agnosis In Primary Care</a></strong> <span style=3D"color: #666">(Aug. 3=
, 2009)</span> &#151; A meta-analysis of more than 50,000 patients has s=
hown that general practitioners have great difficulty separating those w=
ith and without depression, with substantial numbers of missed and ... &=
nbsp;&gt;&nbsp;<a href=3D"/releases/2009/07/090729132113.htm" class=3D"r=
ed"><em>read more</em></a></div>						<div><strong><a href=3D"/releases/=
2010/02/100202111101.htm" class=3D"blue">Many Physicians Not Using Estab=
lished Criteria When Diagnosing Major Depressive Disorder in Patients, S=
tudy Finds</a></strong> <span style=3D"color: #666">(Feb. 2, 2010)</span=
> &#151; A new study indicates that a majority of non-psychiatrist physi=
cians and a substantial minority of psychiatrists reported that they oft=
en do not use the criteria outlined in the Diagnostic and ... &nbsp;&gt;=
&nbsp;<a href=3D"/releases/2010/02/100202111101.htm" class=3D"red"><em>r=
ead more</em></a></div>						<div><strong><a href=3D"/releases/2009/09/0=
90923133014.htm" class=3D"blue">Depression And Anxiety Disorders Of Adol=
escents Are Not The Same Thing</a></strong> <span style=3D"color: #666">=
(Sep. 24, 2009)</span> &#151; Adolescent depression and anxiety disorder=
s are two distinct psychiatric disorders, according to a recent ... &nbs=
p;&gt;&nbsp;<a href=3D"/releases/2009/09/090923133014.htm" class=3D"red"=
><em>read more</em></a></div>						<div><strong><a href=3D"/releases/200=
6/03/060322184420.htm" class=3D"blue">Successful Treatment Of Mothers Wi=
th Depression Helps Their Children, Too</a></strong> <span style=3D"colo=
r: #666">(Mar. 23, 2006)</span> &#151; Children whose mothers are depres=
sed are more likely to suffer from anxiety, mental-health problems and d=
isruptive behavior than those whose moms aren't. And if the mothers don'=
t get better, these ... &nbsp;&gt;&nbsp;<a href=3D"/releases/2006/03/060=
322184420.htm" class=3D"red"><em>read more</em></a></div>						<div><str=
ong><a href=3D"/releases/2009/10/091026125140.htm" class=3D"blue">Diagno=
ses Of Fatigue In Primary Care Patients</a></strong> <span style=3D"colo=
r: #666">(Oct. 26, 2009)</span> &#151; Patients who visit their family d=
octors for fatigue have a wide range of diagnoses yet the prevalence of =
serious illness was low, according to a Dutch ... &nbsp;&gt;&nbsp;<a hre=
f=3D"/releases/2009/10/091026125140.htm" class=3D"red"><em>read more</em=
></a></div>						<div><strong><a href=3D"/releases/2009/12/091217115828.=
htm" class=3D"blue">Elderly Most at Risk for Major Depression Identified=
</a></strong> <span style=3D"color: #666">(Dec. 22, 2009)</span> &#151; =
Researchers have pinpointed the prime factors identifying which elderly =
persons are at the highest risk for developing major ... &nbsp;&gt;&nbsp=
;<a href=3D"/releases/2009/12/091217115828.htm" class=3D"red"><em>read m=
ore</em></a></div>						<div><strong><a href=3D"/releases/2007/12/071210=
112012.htm" class=3D"blue">Is There A Developmental Component To The Ris=
k For Depression?</a></strong> <span style=3D"color: #666">(Dec. 11, 200=
7)</span> &#151; Psychiatrists remain divided as to how to define and cl=
assify the mood and anxiety disorders, the most common mental disorders.=
 Authors of a new study explain that their findings support a proposed .=
.. &nbsp;&gt;&nbsp;<a href=3D"/releases/2007/12/071210112012.htm" class=3D=
"red"><em>read more</em></a></div>						<div><strong><a href=3D"/release=
s/2008/07/080717110258.htm" class=3D"blue">Using Genetics To Improve Tra=
ditional Psychiatric Diagnoses</a></strong> <span style=3D"color: #666">=
(July 17, 2008)</span> &#151; Psychiatry has begun the laborious effort =
of preparing the DSM-V, the new iteration of its diagnostic manual. In s=
o doing, it once again wrestles with the task set by Carl Linnaeus, to "=
cleave nature ... &nbsp;&gt;&nbsp;<a href=3D"/releases/2008/07/080717110=
258.htm" class=3D"red"><em>read more</em></a></div>
				</div>
				=

				<div id=3D"googlerelated"></div>
	=

			</div><!-- end related -->
			<div class=3D"clear"></div>
			=

			<div id=3D"bottomsearch">
				<h2 class=3D"headleft"><a href=3D"/subscribe/" class=3D"red">Search =
ScienceDaily</a></h2>
				<div class=3D"headright"><em>Number of stories in archives: 82,027</=
em></div>
				<div class=3D"clear"></div>
				<hr />
				<form action=3D"/search/" method=3D"get">
				<div>
					<div style=3D"margin: 8px 0 0 0; width: 130px; float: left; text-al=
ign: right"><em>Find with keyword(s):</em></div>
					<div style=3D"margin: 5px 0 0 0; float: left; margin-left: 10px;">
						<input type=3D"text" name=3D"keyword" value=3D"" size=3D"38" style=
=3D"width: 420px; background: #eef" /> =

						&nbsp;<input type=3D"submit" value=3D"Search" />
					</div>
					<div style=3D"clear: both"></div>
					<div style=3D"margin: 0 0 0 140px; padding: 10px 0 0 0">Enter a key=
word or phrase to search ScienceDaily's archives for related news topics=
, <br />the latest news stories, reference articles, science videos, ima=
ges, and books.</div>
				</div>
				</form>
	=

			</div>

			<div id=3D"googlebottom"></div>
			<div class=3D"clear"></div>
			=

			<br />
			<div>&nbsp;</div>

			<!-- google_ad_section_end -->
	=

		</div><!-- end main -->
		<div class=3D"clear"></div>

	</div><!-- end content -->

<script language=3D"javascript" type=3D"text/javascript" src=3D"/scripts=
/google-story2-rb.js"></script>
<script language=3D"javascript" type=3D"text/javascript">
google_hints =3D "Mental Health Research; Diseases and Conditions; Workp=
lace Health; Depression; Mental Health; Psychiatry";
google_ad_channel =3D "9363733909+2072192687+7922053140+6837283906+58553=
93847+7497946760+8476969570";
</script>
<script language=3D"javascript" type=3D"text/javascript" src=3D"http://p=
agead2.googlesyndication.com/pagead/show_ads.js"></script>

	<div id=3D"side">
		<div id=3D"sidecontent">
		=

			<div id=3D"justin"><strong>Just In:</strong>
								<div id=3D"justin1"><a href=3D"/releases/2010/02/100227171454.ht=
m">Fossils Reveal Plankton-Eating Giant Fish</a></div>
				<div id=3D"justin2"><a href=3D"/releases/2010/02/100226205020.htm">B=
abies, Even When Premature, 'See' With Hands</a></div>
				<div id=3D"justin3"><a href=3D"/releases/2010/02/100226093238.htm">W=
arming Likely To Affect Tropical Rainfall</a></div>
				<div id=3D"justin4"><a href=3D"/releases/2010/02/100227210429.htm">Q=
uake Hits Chile, Triggers Tsunami</a></div>
				<div id=3D"justin5"><a href=3D"/releases/2010/02/100222094826.htm">C=
an Math and Science Help Solve Crimes?</a></div>
				<div id=3D"justin6"><a href=3D"/releases/2010/02/100222094803.htm">C=
oral Develops 'Skills' to Cope With Warming</a></div>
				<div id=3D"justin7"><a href=3D"/releases/2010/02/100218102456.htm">T=
hreat to Monkey Numbers from Forest Decline</a></div>
				<div id=3D"justin8"><a href=3D"/releases/2010/02/100226161428.htm">'=
Alien Invaders' Found in Milky Way</a></div>

				<div id=3D"justindisplay" style=3D"display: block; height: 15px">&nb=
sp;</div>
				<script language=3D"javascript" type=3D"text/javascript">
				//<![CDATA[
				var typeInt =3D 0;
				typeScroller();
				//]]>
				</script>
			</div>

			<h2 class=3D"videos"><a href=3D"/videos/" class=3D"red">Science Video=
 News</a></h2>
			<hr />
							<div id=3D"videos">
					<a href=3D"/videos/2008/0207-lost_and_found.htm"><img src=3D"/video=
s/images/2008/2008-02-07.jpg" width=3D"75" height=3D"75" alt=3D"" border=
=3D"0" class=3D"floatLeft" /></a>
					<h3><a href=3D"/videos/2008/0207-lost_and_found.htm" class=3D"blue"=
>Lost And Found</a></h3>
					<div>Cognitive scientists ran an experiment to understand how the b=
rain searches for an object with a known shape. They asked subjects to t=
rack the. ... &nbsp;&gt;&nbsp;<a href=3D"/videos/2008/0207-lost_and_foun=
d.htm" class=3D"red"><em>full story</em></a></div>
				</div>
	=

				<ul class=3D"black">
					<li><a href=3D"/videos/2006/0303-predicting_alzheimers.htm" class=3D=
"blue">Psychiatrists Can Predict Onset of Alzheimer's with New EEG Test<=
/a></li>
					<li><a href=3D"/videos/2007/0312-pinpointing_problems_in_the_brain.=
htm" class=3D"blue">Neurologists Use New Brain Scanning Device To Better=
 Control Seizures</a></li>
					<li><a href=3D"/videos/2008/0802-building_the_perfect_butterfly_hou=
se.htm" class=3D"blue">Civil Engineers Design Walk Through Butterfly Mus=
eum Exhibit</a></li>
					<li><a href=3D"/videos/" class=3D"red"><em>more science videos</em>=
</a></li>
				</ul>

			<div id=3D"sciencedaily_rectangle" class=3D"rectangle">
				<script language=3D"javascript" type=3D"text/javascript">
				google_hints =3D "Mental Health Research; Diseases and Conditions; W=
orkplace Health; Depression; Mental Health; Psychiatry";
				google_ad_channel =3D "9363733909+2072192687+7922053140+6837283906+5=
855393847+7497946760+8476969570";
				</script>
				<script language=3D"javascript" type=3D"text/javascript">
//<![CDATA[
document.write('<scr'+'ipt language=3D"javascript" type=3D"text/javascri=
pt" src=3D"http://iv.doubleclick.net/adj/nbcu.science/mentalhealth_bipol=
ar;!category=3Dsciencedaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;sz=3D=
300x250,2x2;tile=3D7;pos=3D7;ord=3D'+randnum+'?"></scr'+'ipt>');
//]]>
</script>
				<noscript>
<a href=3D"http://iv.doubleclick.net/jump/nbcu.science/mentalhealth_bipo=
lar;!category=3Dsciencedaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;sz=3D=
300x250,2x2;tile=3D7;pos=3D7;ord=3D123456789012?"> <img src=3D"http://iv=
.doubleclick.net/ad/nbcu.science/mentalhealth_bipolar;!category=3Dscienc=
edaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;sz=3D300x250,2x2;tile=3D7;=
pos=3D7;ord=3D123456789012?" border=3D"0" alt=3D"Click Here!" /></a>
</noscript>
			</div>
			=

			<h2 class=3D"headleft"><a href=3D"http://www.newsdaily.com" class=3D"=
red">Breaking News</a></h2>
			<div class=3D"headright"><em>... from <a href=3D"http://www.newsdaily=
.com" class=3D"black">NewsDaily.com</a></em></div>
			<div class=3D"clear"></div>
			<hr />
			=

			<div class=3D"skyscraper-container">
				<div style=3D"margin: 0 0 10px 0;"><a href=3D"http://about.reuters.c=
om" rel=3D"nofollow"><img src=3D"/images/reuters-logo.gif" width=3D"161"=
 height=3D"49" border=3D"0" alt=3D"" /></a></div>
				<div id=3D"sciencedaily_skyscraper" class=3D"skyscraper">
					<script language=3D"javascript" type=3D"text/javascript">
					google_hints =3D "Mental Health Research; Diseases and Conditions; =
Workplace Health; Depression; Mental Health; Psychiatry";
					google_ad_channel =3D "9363733909+2072192687+7922053140+6837283906+=
5855393847+7497946760+8476969570";
					</script>
					<script language=3D"javascript" type=3D"text/javascript">
//<![CDATA[
document.write('<scr'+'ipt language=3D"javascript" type=3D"text/javascri=
pt" src=3D"http://iv.doubleclick.net/adj/nbcu.science/mentalhealth_bipol=
ar;!category=3Dsciencedaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;sz=3D=
160x600,3x3;tile=3D12;pos=3D12;ord=3D'+randnum+'?"></scr'+'ipt>');
//]]>
</script>
					<noscript>
<a href=3D"http://iv.doubleclick.net/jump/nbcu.science/mentalhealth_bipo=
lar;!category=3Dsciencedaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;sz=3D=
160x600,3x3;tile=3D12;pos=3D12;ord=3D123456789012?"> <img src=3D"http://=
iv.doubleclick.net/ad/nbcu.science/mentalhealth_bipolar;!category=3Dscie=
ncedaily;f=3Dmentalhealth;sect=3Dbipolar;sub=3D;sz=3D160x600,3x3;tile=3D=
12;pos=3D12;ord=3D123456789012?" border=3D"0" alt=3D"Click Here!" /></a>=

</noscript>
				</div>
			</div>

			<ul class=3D"black" style=3D"padding: 5px 0">
			<li><a href=3D"http://www.newsdaily.com/stories/tre61r29o-us-egypt-an=
tiquities/" class=3D"blue">King Tut's grandfather's statue head surfaces=
 in Luxor</a></li>
<li><a href=3D"http://www.newsdaily.com/stories/tre61p1bv-us-climate-ipc=
c-review/" class=3D"blue">U.N. to create science panel to review IPCC</a=
></li>
<li><a href=3D"http://www.newsdaily.com/stories/tre61o16a-us-climate-war=
ming/" class=3D"blue">World warming unhindered by cold spells: scientist=
s</a></li>
<li><a href=3D"http://www.newsdaily.com/stories/tre61n51w-us-china-googl=
e-scientists/" class=3D"blue">Losing Google would hit Chinese science ha=
rd</a></li>
<li><a href=3D"http://www.newsdaily.com/stories/tre61n2ld-us-transplant-=
ovaries/" class=3D"blue">Woman has 2 babies in first for ovarian transpl=
ant</a></li>

				<li><em><a href=3D"http://www.newsdaily.com/news/science/" class=3D"=
red">more science news</a></em></li>
			</ul>
			<h3>In Other News ...</h3>
			<ul class=3D"black">
			<li><a href=3D"http://www.newsdaily.com/stories/tre61o4nv-us-usa-heal=
thcare/" class=3D"blue">Obama's Democrats voice new confidence on health=
care</a></li>
<li><a href=3D"http://www.newsdaily.com/stories/tre61q0s9-us-quake-chile=
/" class=3D"blue">Quake, tsunamis kill more than 700 in Chile</a></li>
<li><a href=3D"http://www.newsdaily.com/stories/lde61r0c0-us-europe-weat=
her/" class=3D"blue">Storms rip through Europe, kill up to 50 in France<=
/a></li>
<li><a href=3D"http://www.newsdaily.com/stories/lde61r03o-us-palestinian=
s-israel/" class=3D"blue">Violence flares at Jerusalem holy site</a></li=
>
<li><a href=3D"http://www.newsdaily.com/stories/tre61r2cu-us-leno/" clas=
s=3D"blue">Jay Leno returns to TV to regain late-night crown</a></li>
<li><a href=3D"http://www.newsdaily.com/stories/tre61r0q5-us-usa-latinam=
erica/" class=3D"blue">Clinton headed for Chile after quake</a></li>
<li><a href=3D"http://www.newsdaily.com/stories/tre61r1k7-us-emirates-is=
rael-drugged/" class=3D"blue">Hamas man was drugged before murder: Dubai=
 police</a></li>
<li><a href=3D"http://www.newsdaily.com/stories/tre61r0wh-us-yemen-arres=
ts/" class=3D"blue">Yemen arrests 21 in south</a></li>

				<li><em><a href=3D"http://www.newsdaily.com/news/" class=3D"red">mor=
e top news</a></em></li>
			</ul>
			<div class=3D"clear"></div>

			<div style=3D"margin: 10px 0; padding: 10px; border: 1px solid #ccc;"=
><em>Copyright Reuters <!-- YEAR BEGIN -->2008<!-- YEAR END -->. See <a =
href=3D"http://about.reuters.com/media/brandguide/Legal.aspx" rel=3D"nof=
ollow" onclick=3D"window.open(this.href,'Reuters Copyright Restrictions'=
,'status=3D1,height=3D300,width=3D500,resizable=3D0'); return false;">Re=
strictions</a>.</em></div>

			<h2 class=3D"headleft"><a href=3D"/subscribe/" class=3D"red">Free Sub=
scriptions</a></h2>
			<div class=3D"headright"><em>... from <a href=3D"http://www.scienceda=
ily.com" class=3D"black">ScienceDaily</a></em></div>
			<div class=3D"clear"></div>
			<hr />
			<div>Get the latest science news with our free email newsletters, upd=
ated daily and weekly. Or view hourly updated newsfeeds in your RSS read=
er:</div>
			<ul class=3D"black">
				<li><a href=3D"/newsletters.htm" class=3D"blue">Email Newsletters</a=
></li>
				<li><a href=3D"/newsfeeds.htm" class=3D"blue">RSS Newsfeeds</a></li>=

			</ul>
			<div class=3D"clear"></div>

			<h2 class=3D"headleft" style=3D"color: #900">Feedback</h2>
			<div class=3D"headright"><em>... we want to hear from you!</em></div>=

			<div class=3D"clear"></div>
			<hr />
			<div>Tell us what you think of the new ScienceDaily -- we welcome bot=
h positive and negative comments. Have any problems using the site? Ques=
tions?</div>
			<div id=3D"feedback">
				<form action=3D"#" id=3D"feedback_form" method=3D"post">
					<ul>
						<li>
							<label for=3D"feedback_name">Your Name:</label>
							<input type=3D"text" id=3D"feedback_name" name=3D"feedback_name" =
value=3D"" class=3D"feedback_text" />
						</li>
		=

						<li>
							<label for=3D"feedback_email">Your Email:</label>
							<input type=3D"text" id=3D"feedback_email" name=3D"feedback_email=
" value=3D"" class=3D"feedback_text" />
						</li>
						<li>
							<label for=3D"feedback_comments">Comments:</label>
							<textarea id=3D"feedback_comments" name=3D"feedback_comments" cla=
ss=3D"feedback_comments" cols=3D"5" rows=3D"5"></textarea>
						</li>
						<li>
							<label for=3D"feedback_submit" id=3D"feedback_response" class=3D"=
feedback_submit_label">Click button to submit feedback:</label>
							<input type=3D"submit" id=3D"feedback_submit" name=3D"feedback_su=
bmit" class=3D"feedback_submit" value=3D"Send It" onclick=3D"feedback();=
 this.disabled=3Dtrue; return false;" />
						</li>
					</ul>
					<div class=3D"clear"></div>
				</form>
			</div>
			<div class=3D"clear"></div>

		</div><!-- end sidecontent -->
	</div><!-- end side -->
</div><!-- end wrapper -->
<div id=3D"footer">
	<div id=3D"footercontents"><em><a href=3D"/about.htm">About This Site</=
a> &nbsp;|&nbsp; <a href=3D"/staff.htm">Editorial Staff</a> &nbsp;|&nbsp=
; <a href=3D"/awards.htm">Awards &amp; Reviews</a> &nbsp;|&nbsp; <a href=
=3D"/contribute.htm">Contribute News</a> &nbsp;|&nbsp; <a href=3D"/adver=
tise.htm">Advertise With Us</a> &nbsp;|&nbsp; <a href=3D"/privacy.htm">P=
rivacy Policy</a> &nbsp;|&nbsp; <a href=3D"/terms.htm">Terms of Use</a><=
br />
		<a href=3D"/copyright.htm">Copyright</a> &copy; 1995-2009 ScienceDaily=
 LLC &nbsp;&mdash;&nbsp; All rights reserved &nbsp;&mdash;&nbsp; Contact=
: <a href=3D"mailto:editor@sciencedaily.com">editor@sciencedaily.com</a>=
<br />
		<span style=3D"color: #900">Part of the <strong><a href=3D"http://your=
totalhealth.ivillage.com/" class=3D"red" rel=3D"nofollow">iVillage Your =
Total Health Network</a></strong></span></em></div>
	<img src=3D"/cache.php?url=3D/releases/2010/02/100224132651.htm" height=
=3D"1" width=3D"1" alt=3D"" />
</div><!-- end footer -->
<div id=3D"sections">
	<div id=3D"sectioncontents">
		<ul id=3D"sectiontabs">
			<li><a href=3D'/news/health_medicine/'>Health &amp; Medicine</a>
				<ul>
					<li><a href=3D"/news/health_medicine/allergy/">Allergy</a></li>
					<li><a href=3D"/news/health_medicine/alternative_medicine/">Alterna=
tive Medicine</a></li>
				=

					<li><a href=3D"/news/health_medicine/bird_flu/">Bird Flu</a></li>
					<li><a href=3D"/news/health_medicine/birth_control/">Birth Control<=
/a></li>
					<li><a href=3D"/news/health_medicine/breast_cancer/">Breast Cancer<=
/a></li>
					<li><a href=3D"/news/health_medicine/cancer/">Cancer</a></li>
					<li><a href=3D"/news/health_medicine/diabetes/">Diabetes</a></li>
				=

					<li><a href=3D"/news/health_medicine/diet_and_weight_loss/">Diet an=
d Weight Loss</a></li>
					<li><a href=3D"/news/health_medicine/diseases_and_conditions/">Dise=
ases and Conditions</a></li>
					<li><a href=3D"/news/health_medicine/fitness/">Fitness</a></li>
					<li><a href=3D"/news/health_medicine/gene_therapy/">Gene Therapy</a=
></li>
					<li><a href=3D"/news/health_medicine/heart_disease/">Heart Disease<=
/a></li>
				=

					<li><a href=3D"/news/health_medicine/hiv_and_aids/">HIV and AIDS</a=
></li>
					<li><a href=3D"/news/health_medicine/lung_cancer/">Lung Cancer</a><=
/li>
					<li><a href=3D"/news/health_medicine/men's_health/">Men's Health</a=
></li>
					<li><a href=3D"/news/health_medicine/nutrition/">Nutrition</a></li>=

					<li><a href=3D"/news/health_medicine/obesity/">Obesity</a></li>
				=

					<li><a href=3D"/news/health_medicine/pharmacology/">Pharmacology</a=
></li>
					<li><a href=3D"/news/health_medicine/pregnancy_and_childbirth/">Pre=
gnancy and Childbirth</a></li>
					<li><a href=3D"/news/health_medicine/sexual_health/">Sexual Health<=
/a></li>
					<li><a href=3D"/news/health_medicine/skin_care/">Skin Care</a></li>=

					<li><a href=3D"/news/health_medicine/stem_cells/">Stem Cells</a></l=
i>
				=

					<li><a href=3D"/news/health_medicine/women's_health/">Women's Healt=
h</a></li>
					<li><a href=3D"/news/health_medicine/">... <em>more topics</em></a>=
</li>
				</ul>
			</li>
			<li><a href=3D'/news/mind_brain/'>Mind &amp; Brain</a>
				<ul>
					<li><a href=3D"/news/mind_brain/add_and_adhd/">ADD and ADHD</a></li=
>
				=

					<li><a href=3D"/news/mind_brain/addiction/">Addiction</a></li>
					<li><a href=3D"/news/mind_brain/alzheimer's/">Alzheimer's</a></li>
					<li><a href=3D"/news/mind_brain/anxiety/">Anxiety</a></li>
					<li><a href=3D"/news/mind_brain/autism/">Autism</a></li>
					<li><a href=3D"/news/mind_brain/depression/">Depression</a></li>
				=

					<li><a href=3D"/news/mind_brain/gender_difference/">Gender Differen=
ce</a></li>
					<li><a href=3D"/news/mind_brain/headaches/">Headaches</a></li>
					<li><a href=3D"/news/mind_brain/insomnia/">Insomnia</a></li>
					<li><a href=3D"/news/mind_brain/intelligence/">Intelligence</a></li=
>
					<li><a href=3D"/news/mind_brain/language_acquisition/">Language Acq=
uisition</a></li>
				=

					<li><a href=3D"/news/mind_brain/parkinson's/">Parkinson's</a></li>
					<li><a href=3D"/news/mind_brain/perception/">Perception</a></li>
					<li><a href=3D"/news/mind_brain/psychology/">Psychology</a></li>
					<li><a href=3D"/news/mind_brain/relationships/">Relationships</a></=
li>
					<li><a href=3D"/news/mind_brain/schizophrenia/">Schizophrenia</a></=
li>
				=

					<li><a href=3D"/news/mind_brain/social_psychology/">Social Psycholo=
gy</a></li>
					<li><a href=3D"/news/mind_brain/">... <em>more topics</em></a></li>=

				</ul>
			</li>
			<li><a href=3D'/news/plants_animals/'>Plants &amp; Animals</a>
				<ul>
					<li><a href=3D"/news/plants_animals/agriculture_and_food/">Agricult=
ure and Food</a></li>
				=

					<li><a href=3D"/news/plants_animals/animals/">Animals</a></li>
					<li><a href=3D"/news/plants_animals/behavior/">Behavior</a></li>
					<li><a href=3D"/news/plants_animals/biology/">Biology</a></li>
					<li><a href=3D"/news/plants_animals/biotechnology/">Biotechnology</=
a></li>
					<li><a href=3D"/news/plants_animals/cell_biology/">Cell Biology</a>=
</li>
				=

					<li><a href=3D"/news/plants_animals/cloning/">Cloning</a></li>
					<li><a href=3D"/news/plants_animals/developmental_biology/">Develop=
mental Biology</a></li>
					<li><a href=3D"/news/plants_animals/dogs/">Dogs</a></li>
					<li><a href=3D"/news/plants_animals/dolphins_and_whales/">Dolphins =
and Whales</a></li>
					<li><a href=3D"/news/plants_animals/endangered_animals/">Endangered=
  Animals</a></li>
				=

					<li><a href=3D"/news/plants_animals/extinction/">Extinction</a></li=
>
					<li><a href=3D"/news/plants_animals/frogs_and_reptiles/">Frogs and =
Reptiles</a></li>
					<li><a href=3D"/news/plants_animals/genetically_modified/">Genetica=
lly Modified</a></li>
					<li><a href=3D"/news/plants_animals/marine_biology/">Marine Biology=
</a></li>
					<li><a href=3D"/news/plants_animals/microbes_and_more/">Microbes an=
d More</a></li>
				=

					<li><a href=3D"/news/plants_animals/nature/">Nature</a></li>
					<li><a href=3D"/news/plants_animals/new_species/">New Species</a></=
li>
					<li><a href=3D"/news/plants_animals/pests_and_parasites/">Pests and=
 Parasites</a></li>
					<li><a href=3D"/news/plants_animals/spiders/">Spiders</a></li>
					<li><a href=3D"/news/plants_animals/zoology/">Zoology</a></li>
				=

					<li><a href=3D"/news/plants_animals/">... <em>more topics</em></a><=
/li>
				</ul>
			</li>
			<li><a href=3D'/news/earth_climate/'>Earth &amp; Climate</a>
				<ul>
					<li><a href=3D"/news/earth_climate/air_quality/">Air Quality</a></l=
i>
					<li><a href=3D"/news/earth_climate/climate/">Climate</a></li>
				=

					<li><a href=3D"/news/earth_climate/coral_reefs/">Coral Reefs</a></l=
i>
					<li><a href=3D"/news/earth_climate/earthquakes/">Earthquakes</a></l=
i>
					<li><a href=3D"/news/earth_climate/ecology/">Ecology</a></li>
					<li><a href=3D"/news/earth_climate/environmental_science/">Environm=
ental Science</a></li>
					<li><a href=3D"/news/earth_climate/geography/">Geography</a></li>
				=

					<li><a href=3D"/news/earth_climate/geology/">Geology</a></li>
					<li><a href=3D"/news/earth_climate/global_warming/">Global Warming<=
/a></li>
					<li><a href=3D"/news/earth_climate/hurricanes_and_cyclones/">Hurric=
anes and Cyclones</a></li>
					<li><a href=3D"/news/earth_climate/ice_ages/">Ice Ages</a></li>
					<li><a href=3D"/news/earth_climate/oceanography/">Oceanography</a><=
/li>
				=

					<li><a href=3D"/news/earth_climate/ozone_holes/">Ozone Holes</a></l=
i>
					<li><a href=3D"/news/earth_climate/pollution/">Pollution</a></li>
					<li><a href=3D"/news/earth_climate/renewable_energy/">Renewable Ene=
rgy</a></li>
					<li><a href=3D"/news/earth_climate/tsunamis/">Tsunamis</a></li>
					<li><a href=3D"/news/earth_climate/weather/">Weather</a></li>
				=

					<li><a href=3D"/news/earth_climate/wildfires/">Wildfires</a></li>
					<li><a href=3D"/news/earth_climate/">... <em>more topics</em></a></=
li>
				</ul>
			</li>
			<li><a href=3D'/news/space_time/'>Space &amp; Time</a>
				<ul>
					<li><a href=3D"/news/space_time/astronomy/">Astronomy</a></li>
				=

					<li><a href=3D"/news/space_time/astrophysics/">Astrophysics</a></li=
>
					<li><a href=3D"/news/space_time/big_bang/">Big Bang</a></li>
					<li><a href=3D"/news/space_time/black_holes/">Black Holes</a></li>
					<li><a href=3D"/news/space_time/dark_matter/">Dark Matter</a></li>
					<li><a href=3D"/news/space_time/esa/">ESA</a></li>
				=

					<li><a href=3D"/news/space_time/extrasolar_planets/">Extrasolar Pla=
nets</a></li>
					<li><a href=3D"/news/space_time/mars/">Mars</a></li>
					<li><a href=3D"/news/space_time/moon/">Moon</a></li>
					<li><a href=3D"/news/space_time/nasa/">NASA</a></li>
					<li><a href=3D"/news/space_time/pluto/">Pluto</a></li>
				=

					<li><a href=3D"/news/space_time/saturn/">Saturn</a></li>
					<li><a href=3D"/news/space_time/solar_system/">Solar System</a></li=
>
					<li><a href=3D"/news/space_time/space_missions/">Space Missions</a>=
</li>
					<li><a href=3D"/news/space_time/space_station/">Space Station</a></=
li>
					<li><a href=3D"/news/space_time/space_telescopes/">Space Telescopes=
</a></li>
				=

					<li><a href=3D"/news/space_time/stars/">Stars</a></li>
					<li><a href=3D"/news/space_time/sun/">Sun</a></li>
					<li><a href=3D"/news/space_time/">... <em>more topics</em></a></li>=

				</ul>
			</li>
			<li><a href=3D'/news/matter_energy/'>Matter &amp; Energy</a>
				<ul>
					<li><a href=3D"/news/matter_energy/alternative_fuels/">Alternative =
Fuels</a></li>
					<li><a href=3D"/news/matter_energy/aviation/">Aviation</a></li>
					<li><a href=3D"/news/matter_energy/biochemistry/">Biochemistry</a><=
/li>
					<li><a href=3D"/news/matter_energy/biometric/">Biometric</a></li>
					<li><a href=3D"/news/matter_energy/chemistry/">Chemistry</a></li>
				=

					<li><a href=3D"/news/matter_energy/detectors/">Detectors</a></li>
					<li><a href=3D"/news/matter_energy/electronics/">Electronics</a></l=
i>
					<li><a href=3D"/news/matter_energy/energy_technology/">Energy Techn=
ology</a></li>
					<li><a href=3D"/news/matter_energy/forensics/">Forensics</a></li>
					<li><a href=3D"/news/matter_energy/fossil_fuels/">Fossil Fuels</a><=
/li>
				=

					<li><a href=3D"/news/matter_energy/inorganic_chemistry/">Inorganic =
Chemistry</a></li>
					<li><a href=3D"/news/matter_energy/nanotechnology/">Nanotechnology<=
/a></li>
					<li><a href=3D"/news/matter_energy/organic_chemistry/">Organic Chem=
istry</a></li>
					<li><a href=3D"/news/matter_energy/physics/">Physics</a></li>
					<li><a href=3D"/news/matter_energy/quantum_physics/">Quantum Physic=
s</a></li>
				=

					<li><a href=3D"/news/matter_energy/solar_energy/">Solar Energy</a><=
/li>
					<li><a href=3D"/news/matter_energy/technology/">Technology</a></li>=

					<li><a href=3D"/news/matter_energy/wind_energy/">Wind Energy</a></l=
i>
					<li><a href=3D"/news/matter_energy/">... <em>more topics</em></a></=
li>
				</ul>
			</li>
			<li><a href=3D'/news/computers_math/'>Computers &amp; Math</a>
				<ul>
					<li><a href=3D"/news/computers_math/artificial_intelligence/">Artif=
icial Intelligence</a></li>
					<li><a href=3D"/news/computers_math/communications/">Communications=
</a></li>
					<li><a href=3D"/news/computers_math/computer_graphics/">Computer Gr=
aphics</a></li>
					<li><a href=3D"/news/computers_math/computer_modeling/">Computer Mo=
deling</a></li>
				=

					<li><a href=3D"/news/computers_math/computer_science/">Computer Sci=
ence</a></li>
					<li><a href=3D"/news/computers_math/encryption/">Encryption</a></li=
>
					<li><a href=3D"/news/computers_math/hacking/">Hacking</a></li>
					<li><a href=3D"/news/computers_math/mathematics/">Mathematics</a></=
li>
					<li><a href=3D"/news/computers_math/quantum_computers/">Quantum Com=
puters</a></li>
				=

					<li><a href=3D"/news/computers_math/robotics/">Robotics</a></li>
					<li><a href=3D"/news/computers_math/software/">Software</a></li>
					<li><a href=3D"/news/computers_math/statistics/">Statistics</a></li=
>
					<li><a href=3D"/news/computers_math/video_games/">Video Games</a></=
li>
					<li><a href=3D"/news/computers_math/virtual_reality/">Virtual Reali=
ty</a></li>
				=

					<li><a href=3D"/news/computers_math/">... <em>more topics</em></a><=
/li>
				</ul>
			</li>
			<li><a href=3D'/news/fossils_ruins/'>Fossils &amp; Ruins</a>
				<ul>
					<li><a href=3D"/news/fossils_ruins/ancient_civilizations/">Ancient =
Civilizations</a></li>
					<li><a href=3D"/news/fossils_ruins/anthropology/">Anthropology</a><=
/li>
				=

					<li><a href=3D"/news/fossils_ruins/archaeology/">Archaeology</a></l=
i>
					<li><a href=3D"/news/fossils_ruins/dinosaurs/">Dinosaurs</a></li>
					<li><a href=3D"/news/fossils_ruins/early_climate/">Early Climate</a=
></li>
					<li><a href=3D"/news/fossils_ruins/early_humans/">Early Humans</a><=
/li>
					<li><a href=3D"/news/fossils_ruins/early_mammals/">Early Mammals</a=
></li>
				=

					<li><a href=3D"/news/fossils_ruins/evolution/">Evolution</a></li>
					<li><a href=3D"/news/fossils_ruins/human_evolution/">Human Evolutio=
n</a></li>
					<li><a href=3D"/news/fossils_ruins/lost_treasures/">Lost Treasures<=
/a></li>
					<li><a href=3D"/news/fossils_ruins/origin_of_life/">Origin of Life<=
/a></li>
					<li><a href=3D"/news/fossils_ruins/paleontology/">Paleontology</a><=
/li>
				=

					<li><a href=3D"/news/fossils_ruins/tyrannosaurus_rex/">Tyrannosauru=
s Rex</a></li>
					<li><a href=3D"/news/fossils_ruins/">... <em>more topics</em></a></=
li>
				</ul>
			</li>
		</ul>
	</div>
</div><!-- end sections -->
<div id=3D"navbar">
	<div id=3D"navbarwrapper">
		<div id=3D"searchcontents"><form method=3D"get" action=3D"/search/"><i=
nput type=3D"text" name=3D"keyword" size=3D"30" class=3D"searchinput" />=
 &nbsp;<input type=3D"submit" value=3D"Search" /></form></div>
		<div id=3D"navbarcontents">
			<ul id=3D"nav">
				<li class=3D"menubar"><a href=3D"/" class=3D"starter" accesskey=3D"1=
">News</a>
					<ul id=3D"menu1" class=3D"menu">
		=

						<li><a href=3D"/"><strong>Front Page</strong></a></li>
						<li><a href=3D"/news/">Today's Summaries</a></li>
						<li><a href=3D"/news/headlines/">Latest Headlines</a></li>
						<li><a href=3D"/search/">Search Archives</a></li>
						<li><a href=3D"/newsletters.htm">Email Newsletters</a></li>
						<li><a href=3D"/newsfeeds.htm">RSS Newsfeeds</a></li>

						<li><a href=3D"/news/"><strong>News Sections</strong></a></li>

						<li><a href=3D"/news/health_medicine/">Health &amp; Medicine</a></=
li>
						<li><a href=3D"/news/mind_brain/">Mind &amp; Brain</a></li>
						<li><a href=3D"/news/plants_animals/">Plants &amp; Animals</a></li=
>
						<li><a href=3D"/news/space_time/">Space &amp; Time</a></li>
						<li><a href=3D"/news/earth_climate/">Earth &amp; Climate</a></li>
						<li><a href=3D"/news/matter_energy/">Matter &amp; Energy</a></li>
						<li><a href=3D"/news/computers_math/">Computers &amp; Math</a></li=
>
						<li><a href=3D"/news/fossils_ruins/">Fossils &amp; Ruins</a></li>
				=

					</ul>
				</li>
				=

				<li class=3D"menubar"><a href=3D"/articles/" class=3D"starter" acces=
skey=3D"2">Articles</a>
					<ul id=3D"menu2" class=3D"menu">
						<!-- ENCYCLOPEDIA MENU BEGIN -->
						<li><a href=3D"/articles/health_medicine/">Health &amp; Medicine</=
a></li>
						<li><a href=3D"/articles/mind_brain/">Mind &amp; Brain</a></li>
						<li><a href=3D"/articles/plants_animals/">Plants &amp; Animals</a>=
</li>
						<li><a href=3D"/articles/space_time/">Space &amp; Time</a></li>
						<li><a href=3D"/articles/earth_climate/">Earth &amp; Climate</a></=
li>
						<li><a href=3D"/articles/matter_energy/">Matter &amp; Energy</a></=
li>
						<li><a href=3D"/articles/computers_math/">Computers &amp; Math</a>=
</li>
						<li><a href=3D"/articles/fossils_ruins/">Fossils &amp; Ruins</a></=
li>
						<!-- ENCYCLOPEDIA MENU END -->
					</ul>
				</li>
				=

				<li class=3D"menubar"><a href=3D"/videos/" class=3D"starter" accessk=
ey=3D"3">Videos</a>
					<ul id=3D"menu3" class=3D"menu">
						<!-- VIDEO MENU BEGIN -->
						<li><a href=3D"/videos/health_medicine/">Health &amp; Medicine</a>=
</li>
						<li><a href=3D"/videos/mind_brain/">Mind &amp; Brain</a></li>
						<li><a href=3D"/videos/plants_animals/">Plants &amp; Animals</a></=
li>
						<li><a href=3D"/videos/space_time/">Space &amp; Time</a></li>
						<li><a href=3D"/videos/earth_climate/">Earth &amp; Climate</a></li=
>
						<li><a href=3D"/videos/matter_energy/">Matter &amp; Energy</a></li=
>
						<li><a href=3D"/videos/computers_math/">Computers &amp; Math</a></=
li>
						<li><a href=3D"/videos/fossils_ruins/">Fossils &amp; Ruins</a></li=
>
						<!-- VIDEO MENU END -->
					</ul>
				</li>
				=

				<li class=3D"menubar"><a href=3D"/gallery/" class=3D"starter" access=
key=3D"4">Images</a>
					<ul id=3D"menu4" class=3D"menu">
						<!-- IMAGE MENU BEGIN -->
						<li><a href=3D"/gallery/health_medicine/">Health &amp; Medicine</a=
></li>
						<li><a href=3D"/gallery/mind_brain/">Mind &amp; Brain</a></li>
						<li><a href=3D"/gallery/plants_animals/">Plants &amp; Animals</a><=
/li>
						<li><a href=3D"/gallery/space_time/">Space &amp; Time</a></li>
						<li><a href=3D"/gallery/earth_climate/">Earth &amp; Climate</a></l=
i>
						<li><a href=3D"/gallery/matter_energy/">Matter &amp; Energy</a></l=
i>
						<li><a href=3D"/gallery/computers_math/">Computers &amp; Math</a><=
/li>
						<li><a href=3D"/gallery/fossils_ruins/">Fossils &amp; Ruins</a></l=
i>
						<!-- IMAGE MENU END -->
					</ul>
				</li>
				=

				<li class=3D"menubar"><a href=3D"/books/" class=3D"starter" accesske=
y=3D"5">Books</a>
					<ul id=3D"menu5" class=3D"menu">
						<!-- BOOKS MENU BEGIN -->
						<li><a href=3D"/books/health_medicine/">Health &amp; Medicine</a><=
/li>
						<li><a href=3D"/books/mind_brain/">Mind &amp; Brain</a></li>
						<li><a href=3D"/books/plants_animals/">Plants &amp; Animals</a></l=
i>
						<li><a href=3D"/books/space_time/">Space &amp; Time</a></li>
						<li><a href=3D"/books/earth_climate/">Earth &amp; Climate</a></li>=

						<li><a href=3D"/books/matter_energy/">Matter &amp; Energy</a></li>=

						<li><a href=3D"/books/computers_math/">Computers &amp; Math</a></l=
i>
						<li><a href=3D"/books/fossils_ruins/">Fossils &amp; Ruins</a></li>=

						<!-- BOOKS MENU END -->
					</ul>
				</li>
				=

			</ul><!-- end nav -->
		</div><!-- end navbarcontents -->
	</div><!-- end navbarwrapper -->
</div><!-- end navbar -->
<script language=3D"javascript" type=3D"text/javascript">
suckerfish(sfHover, "LI", "nav");
suckerfish(sfHover, "LI", "sectiontabs");
</script>
<div id=3D"share_form">
	<div id=3D"share_title">Post this page to your favorite social bookmark=
ing site:</div>
	<div id=3D"share_close"><a href=3D"#" onclick=3D"document.getElementByI=
d('share_form').style.display=3D'none'; return false;">close</a></div>
	<div class=3D"clear"></div>
	<div id=3D"share_social">
		<ul>
			<li><a href=3D"#" id=3D"share_delicious" target=3D"_blank">del.icio.u=
s</a></li>
			<li><a href=3D"#" id=3D"share_digg" target=3D"_blank">Digg</a></li>

			<li><a href=3D"#" id=3D"share_furl" target=3D"_blank">Furl</a></li>
			<li><a href=3D"#" id=3D"share_netscape" target=3D"_blank">Netscape</a=
></li>
			<li><a href=3D"#" id=3D"share_yahoo_myweb" target=3D"_blank">Yahoo! M=
y Web</a></li>
			<li><a href=3D"#" id=3D"share_stumbleupon" target=3D"_blank">StumbleU=
pon</a></li>
			<li><a href=3D"#" id=3D"share_google_bmarks" target=3D"_blank">Google=
 Bookmarks</a></li>
			<li><a href=3D"#" id=3D"share_technorati" target=3D"_blank">Technorat=
i</a></li>

			<li><a href=3D"#" id=3D"share_blinklist" target=3D"_blank">BlinkList<=
/a></li>
			<li><a href=3D"#" id=3D"share_newsvine" target=3D"_blank">Newsvine</a=
></li>
			<li><a href=3D"#" id=3D"share_magnolia" target=3D"_blank">ma.gnolia</=
a></li>
			<li><a href=3D"#" id=3D"share_reddit" target=3D"_blank">reddit</a></l=
i>
			<li><a href=3D"#" id=3D"share_facebook" target=3D"_blank">Facebook</a=
></li>
			<li><a href=3D"#" id=3D"share_tailrank" target=3D"_blank">Tailrank</a=
></li>

			<li><a href=3D"#" id=3D"share_slashdot" target=3D"_blank">Slashdot</a=
></li>
			<li><a href=3D"#" id=3D"share_fark" target=3D"_blank">Fark</a></li>
		</ul>
		<div class=3D"clear"></div>
	</div>
</div>
<div id=3D"blog_form">
	<div id=3D"blog_title">Include this item in your blog or web site:</div=
>
	<div id=3D"blog_close"><a href=3D"#" onclick=3D"document.getElementById=
('blog_form').style.display=3D'none'; return false;">close</a></div>
	<div class=3D"clear"></div>
	<div id=3D"blog_fields">
		<form action=3D"#" method=3D"post">
			<ul>
				<li>
					<label for=3D"blog_headline">Title:</label>
					<input type=3D"text" id=3D"blog_headline" name=3D"blog_headline" va=
lue=3D"" class=3D"blog_text" />
				</li>
				<li>
					<label for=3D"blog_url">Link:</label>
					<input type=3D"text" id=3D"blog_url" name=3D"blog_url" value=3D"" c=
lass=3D"blog_text" />
				</li>
				<li>
					<label for=3D"blog_summary">Summary:</label>
					<textarea id=3D"blog_summary" name=3D"blog_summary" class=3D"blog_s=
ummary" cols=3D"5" rows=3D"5"></textarea>
				</li>
				<li>
					<label for=3D"blog_submit" class=3D"blog_submit_label">Click button=
 to copy above text for pasting into your site:</label>
					<input type=3D"submit" id=3D"blog_submit" name=3D"blog_submit" clas=
s=3D"blog_submit" value=3D"Copy It" onclick=3D"copyit(); setTimeout('doc=
ument.getElementById(\'blog_form\').style.display=3D\'none\'',500); retu=
rn false;" />
				</li>
			</ul>
			<div class=3D"clear"></div>
		</form>
	</div>
</div>
<div id=3D"cite_form">
	<div id=3D"cite_title">Cite this article in your essay, paper, or repor=
t:</div>
	<div id=3D"cite_close"><a href=3D"#" onclick=3D"document.getElementById=
('cite_form').style.display=3D'none'; return false;">close</a></div>
	<div class=3D"clear"></div>
	<div id=3D"cite_fields">
		<form action=3D"#" method=3D"post">
			<ul>
				<li>
					<label for=3D"cite_apa">APA style:</label>
					<input type=3D"radio" id=3D"cite_style_apa" name=3D"cite_style" val=
ue=3D"apa" checked=3D"checked" />
					<div id=3D"cite_apa" class=3D"citation"></div>
				</li>
				<li>
					<label for=3D"cite_mla">MLA style:</label>
					<input type=3D"radio" id=3D"cite_style_mla" name=3D"cite_style" val=
ue=3D"mla" />
					<div id=3D"cite_mla" class=3D"citation"></div>
				</li>
				<li>
					<label for=3D"cite_submit" class=3D"cite_submit_label">Click button=
 to copy above text for pasting into your document:</label>
					<input type=3D"submit" id=3D"cite_submit" name=3D"cite_submit" clas=
s=3D"cite_submit" value=3D"Cite It" onclick=3D"citeit(); setTimeout('doc=
ument.getElementById(\'cite_form\').style.display=3D\'none\'',500); retu=
rn false;" />
				</li>
			</ul>
			<div class=3D"clear"></div>
		</form>
	</div>
</div>
<div id=3D"email_form">
	<div id=3D"email_title">Email this page's link to a friend or colleague=
:</div>
	<div id=3D"email_close"><a href=3D"#" onclick=3D"document.getElementByI=
d('email_form').style.display=3D'none'; return false;">close</a></div>
	<div class=3D"clear"></div>
	<div id=3D"email_fields">
		<form action=3D"#" method=3D"post">
			<ul>
				<li>
					<label for=3D"email_to">To Email:</label>
					<input type=3D"text" id=3D"email_to" name=3D"email_to" value=3D"" c=
lass=3D"email_text" />
				</li>
				<li>
					<label for=3D"email_name">Your Name:</label>
					<input type=3D"text" id=3D"email_name" name=3D"email_name" value=3D=
"" class=3D"email_text" />
				</li>

				<li>
					<label for=3D"email_from">Your Email:</label>
					<input type=3D"text" id=3D"email_from" name=3D"email_from" value=3D=
"" class=3D"email_text" />
				</li>
				<li>
					<input type=3D"checkbox" id=3D"email_self" name=3D"email_self" clas=
s=3D"email_self" /><label for=3D"email_self"><em>cc to self</em></label>=

					<input type=3D"submit" id=3D"email_submit" name=3D"email_submit" cl=
ass=3D"email_submit" value=3D"Email It" onclick=3D"email_process(); setT=
imeout('document.getElementById(\'email_form\').style.display=3D\'none\'=
',3000); return false;" />
				</li>
			</ul>
			<div class=3D"clear"></div>
		</form>
	</div>
</div>
<!-- Start Google Analytics tag -->
<script type=3D"text/javascript">
var gaJsHost =3D (("https:" =3D=3D document.location.protocol) ? "https:=
//ssl." : "http://www.");
document.write(unescape("%3Cscript src=3D'" + gaJsHost + "google-analyti=
cs.com/ga.js' type=3D'text/javascript'%3E%3C/script%3E"));
</script>
<script type=3D"text/javascript">
var pageTracker =3D _gat._getTracker("UA-31969-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- End Google Analytics tag -->
<!-- Start Quantcast tag -->
<script type=3D"text/javascript" src=3D"http://edge.quantserve.com/quant=
.js"></script>
<script type=3D"text/javascript">_qacct=3D"p-5b6qhwG1mz5To";quantserve()=
;</script>
<noscript>
<a href=3D"http://www.quantcast.com/p-5b6qhwG1mz5To" target=3D"_blank"><=
img src=3D"http://pixel.quantserve.com/pixel/p-5b6qhwG1mz5To.gif" style=3D=
"display: none;" border=3D"0" height=3D"1" width=3D"1" alt=3D"Quantcast"=
/></a>
</noscript>
<!-- End Quantcast tag -->
<!-- Begin comScore Tag -->
<script>
    document.write(unescape("%3Cscript src=3D'" + (document.location.pro=
tocol =3D=3D "https:" ? "https://sb" : "http://b") + ".scorecardresearch=
.com/beacon.js' %3E%3C/script%3E"));
</script>

<script>
  COMSCORE.beacon({
    c1:2,
    c2:1000004,
    c3:"",
    c4:"",
    c5:"",
    c6:"",
    c15:""
  });
</script>
<noscript>
  <img src=3D"http://b.scorecardresearch.com/p?c1=3D2&c2=3D1000004&c3=3D=
&c4=3D&c5=3D&c6=3D&c15=3D&cj=3D1" />
</noscript>
<!-- End comScore Tag -->
</body>
</html>
<!-- Cached 28th February 2010 15:38 -->

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.sciencedaily.com/images/top.gif
Content-Transfer-Encoding: Base64

R0lGODdhMgCWAPcAAAAAAObm5uDg4Nvb2+vr69XV1dDQ0MrKysXFxb+/v7q6urS0
tK+vr6mpqaSkpJ6enpmZmZOTk46OjoiIiIODg319ffHx8XJycm1tbWdnZ2JiYlxc
XFdXV1FRUUxMTEZGRkFBQTs7OzY2NjAwMCsrKyUlJSAgIBoaGhUVFQ8PDwoKCgQE
BHh4eFFRUWdnZ8LCwtbW1sfHx+Hh4c7Ozt7e3tLS0re3t+np6cnJyZubm/X19ZiY
mKCgoNnZ2aOjo6enp5CQkO/v79HR0YyMjNzc3M/Pz/b29oSEhKurq8zMzIGBgd/f
33x8fLOzs9fX13l5eeLi4nV1dbu7u3FxceTk5MTExOfn52lpafT09MHBwWVlZfPz
8+zs7L29vV1dXe7u7ry8vFpaWtra2lZWVtTU1Li4uFJSUpSUlE5OTvj4+LW1te3t
7fn5+fv7+5OTk5KSkpGRkZCQkI+Pj46Ojo2NjYyMjIuLi4qKiomJiYiIiIeHh4aG
hoWFhYSEhIODg4KCgoGBgYCAgH9/f35+fn19fXx8fHt7e3p6enl5eXh4eHd3d3Z2
dnV1dXR0dHNzc3JycnFxcXBwcG9vb25ubm1tbWxsbGtra2pqamlpaWhoaGdnZ2Zm
ZmVlZWRkZGNjY2JiYmFhYWBgYF9fX15eXl1dXVxcXFtbW1paWllZWVhYWFdXV1ZW
VlVVVVRUVFNTU1JSUlFRUVBQUE9PT05OTk1NTUxMTEtLS0pKSklJSUhISEdHR0ZG
RkVFRURERENDQ0JCQkFBQUBAQD8/Pz4+Pj09PTw8PDs7Ozo6Ojk5OTg4ODc3NzY2
NjU1NTQ0NDMzMzIyMjExMTAwMC8vLy4uLi0tLSwsLCsrKyoqKikpKSgoKCcnJyYm
JiUlJSQkJCMjIyIiIiEhISAgIB8fHx4eHh0dHRwcHBsbGxoaGhkZGRgYGBcXFxYW
FhUVFRQUFBMTExISEhERERAQEA8PDw4ODg0NDQwMDAsLCwoKCgkJCQgICAcHBwYG
BgUFBQQEBAMDAwICAiwAAAAAMgCWAAAI/wABCBxIsKDBgwgTKlzIsKHDhxAjSpxI
saLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fP
n0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqxZmCoA
pF2rti3bt27jto0L962Ku3jz6t3Lt69fvSkCCx5MuLDhw4gLn0ixuDHjx45PNI4M
eTJkxpYzS97MubPnz6BDdzZBurTp06hTq159moQJ17Bfy45Ne7bt2rhvvybBu7fv
38CDCx/ue4Tx48iTK1/OvLnyECOgS49Ofbr16tiva88eorv37+DDi/8fTx48iPPo
06tfz769+/UePICIP1++ffvz8+Pfr78///3xBSjggAQWaOCBBHag4IIMNujggxBG
yKAHG3RQ4YUWZojhhhpeyKGHGobo4QYklmjiiSimqOKKJmrg4oswxijjjDTWKCMG
GuCoY4487uhjj0D+KGSQGBRp5JFIJqnkkkwiecGTUEYp5ZRUVmmllBVckOWWWnbJ
5ZdehgnmmGJqWcGZaKap5ppstummmhTEKeecdNZp5514zikBBXv22SefgP4paKCE
DmpooBIkquiijDbq6KIRPOpopBFUaumlmGaq6aacYvpABJ+GCuqoopZK6qmmpooq
qA+06uqrsMbfKuustMLqwK245qrrrrz26muuDDgQ7LDCFkvsscYmi+yyygrLwLPQ
RivttNRWa220C2Sr7bbcduvtt+Bym8AC45ZL7rnmpovuuuqayy66CcQr77z01mvv
vfjWi8C+/Pbr778AByxwvwbsW/DBCCCscMIML4xwwxA7nLABFFds8cUYZ6zxxhYX
4PHHIIcs8sgklwyyAQIIUEDKK6vs8sotx8yyyy/PTLPMN6es88489+zzz0D7HMDQ
RBdt9NFIJ6300RYE0PTTTkcN9dRSV0311VZboPXWXHft9ddgh911QAA7

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.sciencedaily.com/images/bullet_black.gif
Content-Transfer-Encoding: Base64

R0lGODlhBQAJAIAAAAAAAP///yH5BAEAAAEALAAAAAAFAAkAAAIMRB5gp9v2YlJs
JRQKADs=

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.sciencedaily.com/images/blank.gif
Content-Transfer-Encoding: Base64

R0lGODlhAQABAIAAAP///////yH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.sciencedaily.com/images/gray.gif
Content-Transfer-Encoding: Base64

R0lGODlhAQAUAPcAAP///xkZGSsrKyMjIxwcHBQUFAwMDAUFBQMDAwoKChISEjMz
MyEhISkpKTExMTg4OEBAQEhISE9PT1dXV19fXwkJlwoKlwoKlwsLlwsLlwwMlwwM
lg0Nlg0Nlg4Olg4Olg8Plg8PlhAQlhAQlhERlhERlRISlRISlRMTlRMTlRQUlRQU
lRUVlRUVlRYWlRYWlBcXlBcXlBgYlBgYlBkZlBkZlBoalBoalBsbkxsbkxwckxwc
kx0dkx0dkx4ekx4ekx8fkx8fkyAgkiAgkiEhkiEhkiIikiIikiMjkiMjkiQkkiQk
kiUlkSUlkSYmkSYmkScnkScnkSgokSgokSkpkSkpkSoqkCoqkCsrkCsrkCwskCws
kC0tkC0tkC4ukC4ukC8vjy8vjzAwjzAwjzExjzExjzIyjzIyjzMzjzMzjjQ0jjQ0
jjU1jjU1jjY2jjY2jjc3jjc3jjg4jjg4jTk5jTk5jTo6jTo6jTs7jTs7jTw8jTw8
jT09jT09jD4+jD4+jD8/jD8/jEBAjEBAjEFBjEFBjEJCjEJCi0NDi0NDi0REi0RE
i0VFi0VFi0ZGi0ZGi0dHi0dHikhIikhIiklJiklJikpKikpKiktLiktLikxMikxM
iU1NiU1NiU5OiU5OiU9PiU9PiVBQiVBQiVFRiFFRiFJSiFJSiFNTiFNTiFRUiFRU
iFVViFVViFZWh1ZWh1dXh1dXh1hYh1hYh1lZh1lZh1pah1pah1tbhltbhlxchlxc
hl1dhl1dhl5ehl5ehl9fhl9fhmBghWBghWFhhWFhhWJihWJihWNjhWNjhWRkhWRk
hWVlhGVlhGZmhGZmhGdnhGdnhGhohGhohGlphGlpg2pqg2pqg2trg2trg2xsg2xs
g21tg21tg25ug25ugm9vgm9vgnBwgnBwgnFxgnFxgnJygnJygnNzgnNzgXR0gXR0
gXV1gXV1gXZ2gXZ2gXd3gXd3gXh4gXh4gHl5gHl5gHp6gHp6gHt7gHt7gHx8gHx8
gH19gH19f35+f35+fyH5BAEAAAAALAAAAAABABQAAAgZAClMkBABwgMHDRgEUJAA
QYIECgIwaOAgIAA7

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.sciencedaily.com/images/red.gif
Content-Transfer-Encoding: Base64

R0lGODlhAQAUAPcAAP///5UTE5ArK5IkJJMdHZQWFpYPD5cJCZgDA5gGBpYMDI8y
MpQaGpIhIZEoKI8vL442No09PYtDQ4pKSohRUQkJlwoKlwoKlwsLlwsLlwwMlwwM
lg0Nlg0Nlg4Olg4Olg8Plg8PlhAQlhAQlhERlhERlRISlRISlRMTlRMTlRQUlRQU
lRUVlRUVlRYWlRYWlBcXlBcXlBgYlBgYlBkZlBkZlBoalBoalBsbkxsbkxwckxwc
kx0dkx0dkx4ekx4ekx8fkx8fkyAgkiAgkiEhkiEhkiIikiIikiMjkiMjkiQkkiQk
kiUlkSUlkSYmkSYmkScnkScnkSgokSgokSkpkSkpkSoqkCoqkCsrkCsrkCwskCws
kC0tkC0tkC4ukC4ukC8vjy8vjzAwjzAwjzExjzExjzIyjzIyjzMzjzMzjjQ0jjQ0
jjU1jjU1jjY2jjY2jjc3jjc3jjg4jjg4jTk5jTk5jTo6jTo6jTs7jTs7jTw8jTw8
jT09jT09jD4+jD4+jD8/jD8/jEBAjEBAjEFBjEFBjEJCjEJCi0NDi0NDi0REi0RE
i0VFi0VFi0ZGi0ZGi0dHi0dHikhIikhIiklJiklJikpKikpKiktLiktLikxMikxM
iU1NiU1NiU5OiU5OiU9PiU9PiVBQiVBQiVFRiFFRiFJSiFJSiFNTiFNTiFRUiFRU
iFVViFVViFZWh1ZWh1dXh1dXh1hYh1hYh1lZh1lZh1pah1pah1tbhltbhlxchlxc
hl1dhl1dhl5ehl5ehl9fhl9fhmBghWBghWFhhWFhhWJihWJihWNjhWNjhWRkhWRk
hWVlhGVlhGZmhGZmhGdnhGdnhGhohGhohGlphGlpg2pqg2pqg2trg2trg2xsg2xs
g21tg21tg25ug25ugm9vgm9vgnBwgnBwgnFxgnFxgnJygnJygnNzgnNzgXR0gXR0
gXV1gXV1gXZ2gXZ2gXd3gXd3gXh4gXh4gHl5gHl5gHp6gHp6gHt7gHt7gHx8gHx8
gH19gH19f35+f35+fyH5BAEAAAAALAAAAAABABQAAAgZAClMkAABwgIHDRgYOHAA
wQEDDBo0cLAgIAA7

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=main8-new.css
Content-Type: text/css; charset=iso-8859-1; name=main8-new.css
Content-Location: http://www.sciencedaily.com/styles/main8-new.css
Content-Transfer-Encoding: 8bit

html, body {
	margin: 0;
	padding: 0;
	font-family: Arial, Helvetica, sans-serif;
	color: #000;
	background: #fff url('/images/top.gif') repeat-x top;
	font-size: 13px;
	line-height: 1.2;
}
#wrapper {
	width: 1000px;
	text-align: left;
	margin: 0 auto;
}
#content {
	display: inline;
	width: 678px;
	float: left;
	margin: 92px 0 0 6px;
	padding: 0 0 10px 0;
}
#date {
	text-align: right;
	padding: 0 0 10px 0;
}
#textsize {
	text-align: right;
	height: 20px;
}
#title {
	width: 1000px;
	position: absolute;
	top: 160px;
	margin: 0 auto;
}
#titleleft {
	display: inline;
	width: 678px;
	float: left;
	margin: 0 0 0 6px;
}
#titleleftcontent {
	padding: 0;
}
#titleleftcontent h1 {
	font-size: 20px;
}
#titleright {
	display: inline;
	float: left;
	text-align: right;
	width: 310px;
}
#titlerightcontent {
	padding: 0;
	margin: 6px 0 0 0;
}
#titleside {
	display: inline;
	float: left;
	text-align: right;
	width: 310px;
	margin: 6px 6px 0 0;
}
#titlesidecontent {
	padding: 0;
}
#top {
	border-top: 1px solid #000;
}
#topleft {
	display: inline;
	width: 344px;
	float: left;
}
#topleftcontent {
	margin: 10px 0 0 0;
}
#topright {
	display: inline;
	width: 334px;
	float: left;
}
#toprightcontent {
	margin: 10px 0 0 10px;
}

#mainleft {
	display: inline;
	width: 276px;
	float: left;
}
#mainleftcontent {
	margin: 0;
}
#mainright {
	display: inline;
	width: 240px;
	float: left;
}
#mainrightcontent {
	margin: 0 0 0 10px;
}

#main {
	border-top: 1px solid #000;
}
#mainmenu {
	display: inline;
	width: 130px;
	float: left;
}
#mainmenucontent {
	padding: 8px 0 10px 0;
}
#mainmenucontent ul {
}
#mainmenucontent li {
	padding: 0;
}
#mainlist {
	display: inline;
	width: 548px;
	float: left;
}
#mainlistcontent {
	padding: 8px 0 20px 10px;
}
.botleft {
	display: inline;
	width: 222px;
	float: left;
}
.botleftcontent {
	padding: 5px 0 0 0;
}
.botcenter {
	display: inline;
	width: 228px;
	float: left;
}
.botcentercontent {
	padding: 5px 0 0 10px;
}
.botright {
	width: 224px;
	float: left;
}
.botrightcontent {
	padding: 5px 0 0 10px;
}
#side {
	display: inline;
	float: right;
	width: 310px;
	margin: 92px 6px 0 0;
}
#sidecontent {
	margin: 0 0 10px 10px;
	padding: 5px 0 10px 0;
	border-top: 1px solid #000;
}
div.leaderboard {
	display: inline;
	float: right;
	width: 728px;
	height: 90px;
	margin: 0;
	padding: 0;
	border: none;
}
div.rectangle {
	width: 300px;
	height: 250px;
	padding: 0;
	margin: 10px 0;
	border: none;
}
div.skyscraper-container {
	float: right;
	width: 161px;
	margin: 7px 0 10px 5px;
	padding: 0;
	border: none;
}
div.skyscraper {
	width: 160px;
	height: 600px;
	margin: 0;
	padding: 0;
	border: none;
}
div.custom {
	height: 5px;
}
#header {
	text-align: center;
	height: 93px;
	padding: 5px 5px 0 5px;
	margin: 0 0 -3px 0;
}
#headercontent {
	width: 990px;
	margin: 0 auto;
}
#footer {
	clear: both;
	width: 100%;
	padding: 10px;
	margin: 0;
	text-align: center;
	font-size: 13px;
	background: #ccc;
}
#footercontents {
	display: inline;
	width: 1000px;
	margin: 0 auto;
	color: #000;
}
#footercontents a {
	color: #000;
	text-decoration: none;
}
#footercontents a:hover {
	color: #000;
	text-decoration: underline;
}
#footercontents a.red {
	color: #900;
	text-decoration: none;
}
#footercontents a.red:hover {
	color: #900;
	text-decoration: underline;
}

#searchcontents {
	display: inline;
	padding: 5px 10px 0 0;
	float: right;
	color: #fff;
	font-size: 13px;
	background: transparent;
	vertical-align: middle;
	line-height: 15px;
}
#searchcontents a {
	color: #fff;
	text-decoration: none;
}
#searchcontents a:hover {
	text-decoration: underline;
}
#searchcontents input.searchinput {
	width: 230px;
	height: 17px;
	padding: 2px 0 0 2px;
	margin: 0;
	border: none;
	vertical-align: top;
}
#navbar {
	width: 100%;
	position: absolute;
	top: 97px;
	left: 0;
}
#navbarwrapper {
	width: 1000px;
	margin: 0 auto;
}
#navbarcontents {
	width: 660px;
	margin: 0;
	padding: 0 0 0 5px;
	background: transparent;
}

ul {
	margin: 5px 0 5px 15px;
	padding: 0;
}
ol {
	margin: 5px 0 5px 18px;
	padding: 0;
}
li {
	padding: 0 0 5px 0;
}

ul.black {
	margin: 5px 0;
	padding: 0;
	list-style: none;
}
ul.black li {
	padding-left: 12px;
	background: white url('/images/bullet_black.gif') no-repeat;
	background-position: 0 3px;
}
ul.white {
	list-style-image:url('/images/bullet_white.gif');
}

/************* Son-of-Suckerfish Horizontal Menu **************/

#nav, #nav ul {
	float: left;
	padding: 0;
	margin: 0;
	list-style: none;
	font-weight: bold;
	margin-bottom: 4px;
	font-size: 13px;
	background: url('/images/blank.gif') repeat-x bottom;
	line-height: 15px;
}

#nav a {
	display: block;
	width: 116px;
	color: #fff;
	background-color: #000;
	background: url('/images/gray.gif') repeat-x bottom;
	text-decoration: none;
	padding: 3px;
}

#nav a:hover {
	color: #fff;
	background-color: #900;
	background: url('/images/red.gif') repeat-x bottom;
}


#nav li {
	float: left;
	padding: 0;
	width: 122px;
	margin-top: 5px;
	margin-right: 10px;
}

#nav li a {
	text-align: center;
	vertical-align: middle;
}

#nav li ul {
	position: absolute;
	left: -999em;
	width: 155px;
	font-weight: normal;
	margin: 0;
}

#nav li ul li {
	background: none;
	border: 0;
	margin: 0;
}

#nav li ul li a {
	font-weight: normal;
	background: none;
	background-color: #ddd;
	color: #009;
	text-decoration: none;
	text-align: left;
}

#nav li ul li a strong {
	color: #900;
}

#nav li ul li a:hover {
	color: #900;
	background: none;
	background-color: #fff;
}

#nav li:hover ul, #nav li.sfhover ul {
	left: auto;
}

*:first-child+html #nav li:hover ul, #nav li.sfhover ul {
    position: static;
}

#sections {
	position: absolute;
	top: 125px;
	left: 0;
	width: 100%;
	border-bottom: 1px solid #fff;
}

#sectioncontents {
	width: 77em;
	margin: 0 auto;
	padding: 0;
}

#sectiontabs, #sectiontabs ul {
	float: left;
	list-style: none;
	padding: 0;
	margin: 0;
	font-size: 13px;
	line-height: 15px;
}

#sectiontabs a {
	display: block;
	width: 9em;
	height: 15px;
	padding: 2px 0;
	text-decoration: none;
}

#sectiontabs li {
	display: inline;
	float: left;
	padding: 0;
	margin: 5px 4px 0 4px;
	width: 9em;
}

#sectiontabs li a {
	color: #009;
	background-color: #eee;
	text-align: center;
	margin: 0;
}

#sectiontabs li a.thissection {
	background-color: #fff;
	color: #900;
}

#sectiontabs li a:hover {
	color: #900;
	background-color: #fff;
}

#sectiontabs li ul {
	position: absolute;
	left: -999em;
	width: 155px;
	margin: 0;
}

#sectiontabs li ul li {
	border: 0;
	margin: 0;
	width: 155px;
}

#sectiontabs li ul li a {
	width: 145px;
	background-color: #ddd;
	color: #009;
	text-decoration: none;
	text-align: left;
	padding: 2px 5px;
}

#sectiontabs li ul li a:hover {
	color: #900;
	background-color: #fff;
}

#sectiontabs li:hover ul, #sectiontabs li.sfhover ul {
	left: auto;
}

*:first-child+html #sectiontabs li:hover ul, #sectiontabs li.sfhover ul {
    position: static;
}

#tablist {
	border-bottom: 1px solid #999;
	margin: 6px 0 0 0;
	padding-bottom: 22px;
}

#tablist ul, #tablist li {
	display: inline;
	list-style-type: none;
	margin: 0;
	padding: 0;
}

	
#tablist a {
	background: #eee;
	border: 1px solid #999;
	color: #009;
	float: left;
	font-size: 13px;
	font-weight: bold;
	line-height: 17px;
	margin-right: 8px;
	padding: 2px 10px 2px 10px;
	text-decoration: none;
}

#tablist a:hover {
	background: #fff;
	color: #900;
}
	
#tablist li a.activetab {
	background: #fff;
	border-bottom: 1px solid #fff;
	color: #900;
}

#tablist ul a:hover {
	background: #fff;
	color: #900 !important;
}

#tabcontainer {
	background: #fff;
	border: 1px solid #999;
	border-top: none;
	clear: both;
	margin: 0;
	padding: 10px;
}

h1 {
	margin: 0;
	padding: 0;
	color: #900;
	font-size: 18px;
}

h1.moreleft {
	float: left;
	margin-bottom: -3px;
	color: #000;
}

h1.story {
	font-size: 20px;
	padding: 10px 0;
}

h2 {
	margin: 0;
	padding: 0;
	color: #900;
	font-size: 16px;
}

h2.block {
	color: #000;
}

h2.videos {
	padding-top: 6px;
}

h2.headleft {
	float: left;
	color: #000;
	padding-top: 5px;
}

div.headright {
	text-align: right;
	padding-top: 7px;
}

div.moreright {
	text-align: right;
	padding-top: 5px;
	margin-bottom: -3px;
}

div.nextedition {
	text-align: right;
	margin-top: -3px;
}

div.otherleft {
	float: left;
	width: 339px;
	margin: -15px 0 0 0;
	padding: 0 10px 15px 0;
}

div.otherright {
	float: left;
	width: 329px;
	margin: 5px 0 0 0;
}

h3 {
	margin: 0;
	padding: 0;
	color: #000;
	font-size: 14px;
}

hr {
	border: 0;
	border-top: 1px solid #000;
	height: 0;
	background: #000;
}

a {
	color: #009;
	text-decoration: none;
}

a:hover {
	text-decoration: underline;
}

a.red {
	color: #900;
	text-decoration: none;
}

a.red:hover {
	text-decoration: underline;
}

a.blue {
	color: #009;
	text-decoration: none;
}
a.blue:visited {
	color: #006;
}
a.blue:hover {
	text-decoration: underline;
}

a.black {
	color: #000;
	text-decoration: none;
}

a.black:hover {
	text-decoration: underline;
}

a.gray {
	color: #666;
	text-decoration: none;
}

a.gray:hover {
	text-decoration: underline;
}

img.floatLeft {
	float: left;
	margin: 2px 5px 5px 0;
}

.left {
	float: left;
}

.right {
	float: right;
}

.alignRight {
	text-align: right;
}

.clear {
	clear: both;
}

#topstories {
	position: relative;
	overflow: visible;
	padding: 0;
	margin: 0 0 10px 0;
	height: 215px;
}

div.panel {
	display:none;
}

#topstories div.storyphoto {
	float: left;
	width: 100px;
	max-height: 150px;
	margin: 2px 10px 2px 0;
	overflow: hidden;
}

#topstories div.storyblurb {
	float: left;
	width: 230px;
}

div.moreon {
	float: left;
	width: 70px;
	margin: 10px 5px 0 0;
}

div.moreon ul {
	padding: 0;
	margin: 0 0 10px 15px;
	list-style-image:url('/images/bullet_black.gif');
}

div.moretopics {
	float: left;
	width: 249px;
	margin: 10px 10px 0 0;
}

#mainstories {
	position: relative;
	overflow: visible;
	padding: 0;
	margin: 5px 0;
	height: 160px;
}

#mainstories div.storyphoto {
	float: left;
	width: 75px;
	max-height: 125px;
	margin: 2px 10px 2px 0;
	overflow: hidden;
}

#mainstories div.storyblurb {
	float: left;
	width: 190px;
}

#story1 {
	display:block;
}

div.firststory {
	padding: 5px 0 10px 0;
}

div.secondstory {
	clear: both;
	padding: 5px 0 10px 0;
}

#videos {
	padding-top: 3px;
}

#video {
	padding-bottom: 10px;
}

#googlesearch table {
	margin: 0 auto;
	padding-top: 10px;
}
#googlesearch table table {
	margin: 0;
}

blockquote {
	margin: 0;
	padding: 5px 10px;
}

#misc {
	display: none;
}

.amazon {
	clear: both;
	margin: 10px 0;
}

form {
	margin: 0;
	padding: 0;
}

#story {
	float: left;
	width: 365px;
}

#first {
	padding-top: 0;
	margin-top: 0;
	font-size: medium;
	margin-bottom: -2px;
}

span.date {
	color: #666;
	font-style: italic;
}

#seealso {
	float: left;
	width: 140px;
	padding: 2px 10px 10px 0;
}
#seealso div {
	padding-top: 10px;
}
#seealso ul {
	margin: 0 0 0 20px;
	padding: 0;
}
#seealso ul li {
	padding: 0;
}

#photo {
	margin: 5px 0;
}
p {
	font-size: 13px;
	padding: 5px 0;
	margin: 0;
}
#related {
	float: right;
	width: 300px;
	padding: 0 0 10px 10px;
}
#relatedstories div {
	padding: 10px 0 0 0;
}
#related_articles div {
	padding: 5px 0;
}

#morenewsleft {
	float: left;
	width: 260px;
}

#morenewsright {
	float: right;
	width: 230px;
}

#rssbox {
	border: 1px solid #999;
	padding: 10px;
	margin: 8px 0 10px 10px;
	width: 200px;
}

#article_note {
	border: 1px solid #999;
	padding: 10px;
	margin: 10px 0;
}

#book_details {
	margin: 0 0 10px 0;
}

#moreheadlines {
	float: left;
	padding: 2px 0 0 0;
}

div.edition {
	display: none;
}
div.morepanel {
	display: none;
}

#panel1 {
	display:block;
}

#scroll {
	padding: 2px 0 0 0;
}

div.scroll_topics {
	float: left;
	width: 150px;
}

div.scroll_headlines {
	float: left;
	width: 295px;
	margin: 0 0 12px 10px;
}

div.section_topics {
	float: left;
	width: 150px;
}

div.section_headlines {
	float: left;
	width: 324px;
	margin: 0 10px 12px 10px;
}

div.search_topics {
	float: left;
	width: 150px;
}

div.search_headlines {
	float: left;
	width: 295px;
	margin: 0 0 12px 10px;
}

#citationbox {
	margin: 10px 0;
	padding: 10px;
	border: 1px solid #999;
}
#citationformat {
	float: left;
	width: 55px;
}
#citationtext {
	margin: 0 0 0 65px;
}

#bottomsearch {
	margin: 5px 0 0 0;
	padding: 0;
	border: none;
}

#googleside {
	width: 175px;
	padding: 10px 0 10px 0;
	font-size: 13px;
}
#googleside div {
	padding: 5px 0;
	overflow: hidden;
}
#googleside div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googleside div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googleside div.clear {
	clear: both;
	padding: 0;
}

#googlephoto {
	width: 300px;
	padding: 0 0 15px 0;
	font-size: 13px;
}
#googlephoto div {
	padding: 5px 0;
	overflow: hidden;
}
#googlephoto div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googlephoto div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googlephoto div.clear {
	clear: both;
	padding: 0;
}

#googlerelated {
	width: 300px;
	padding: 10px 0 15px 0;
	font-size: 13px;
}
#googlerelated div {
	padding: 5px 0;
	overflow: hidden;
}
#googlerelated div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googlerelated div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googlerelated div.clear {
	clear: both;
	padding: 0;
}

#googlestory {
	width: 358px;
	padding: 10px 0 10px 0;
	font-size: 13px;
}
#googlestory div {
	padding: 5px 0;
	overflow: hidden;
}
#googlestory div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googlestory div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googlestory div.clear {
	clear: both;
	padding: 0;
}

#googleleft {
	width: 138px;
	margin: 5px 0 0 0;
	font-size: 13px;
}
#googleleft div {
	padding: 5px 0;
	overflow: hidden;
}
#googleleft div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googleleft div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googleleft div.clear {
	clear: both;
	padding: 0;
}

#googlesearch {
	float: right;
	width: 175px;
	padding: 10px 0 10px 10px;
	font-size: 13px;
	overflow: hidden;
}
#googlesearch div {
	padding: 5px 0;
	overflow: hidden;
}
#googlesearch div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googlesearch div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googlesearch div.clear {
	clear: both;
	padding: 0;
}

#googlehome {
	width: 180px;
	padding: 5px 10px 10px 0;
	font-size: 13px;
	overflow: hidden;
}
#googlehome div {
	padding: 5px 0;
	overflow: hidden;
}
#googlehome div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googlehome div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googlehome div.clear {
	clear: both;
	padding: 0;
}

#googletop {
	margin: 0 0 10px 0;
	font-size: 13px;
}
#googletop div {
	overflow: hidden;
}
#googletop div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googletop div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googletop div.clear {
	clear: both;
	padding: 0;
}
#googletop div.col1 {
	padding: 5px 5px 5px 0;
	float: left;
	width: 164px;
}
#googletop div.col2 {
	padding: 5px;
	float: left;
	width: 164px;
}
#googletop div.col3 {
	padding: 5px 0 5px 5px;
	float: right;
	width: 164px;
}

#googleend {
	margin: 0 0 10px 0;
	font-size: 13px;
}
#googleend div {
	overflow: hidden;
}
#googleend div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googleend div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googleend div.clear {
	clear: both;
	padding: 0;
}
#googleend div.col1 {
	padding: 5px 5px 5px 0;
	float: left;
	width: 164px;
}
#googleend div.col2 {
	padding: 5px;
	float: left;
	width: 164px;
}
#googleend div.col3 {
	padding: 5px 0 5px 5px;
	float: right;
	width: 164px;
}

#googlebottom {
	width: 678px;
	margin: 20px 0 10px 0;
	font-size: 13px;
}
#googlebottom div {
	overflow: hidden;
}
#googlebottom div.left {
	float: left;
	font-size: 11px;
	padding: 0;
}
#googlebottom div.right {
	text-align: right;
	font-size: 11px;
	padding: 0;
}
#googlebottom div.clear {
	clear: both;
	padding: 0;
}
#googlebottom div.col1 {
	padding: 5px 5px 5px 0;
	float: left;
	width: 210px;
}
#googlebottom div.col2 {
	padding: 5px;
	float: left;
	width: 220px;
}
#googlebottom div.col3 {
	padding: 5px 0 5px 5px;
	float: right;
	width: 210px;
}

#share_form {
	background: #eee;
	border: 1px solid #999;
	display: none;
	position: absolute;
	width: 300px;
	z-index: 999;
}
#share_title {
	float: left;
	margin: 5px;
	width: 60%;
}
#share_close {
	float: right;
	margin: 5px;
	font-style: italic;
}
#share_close a {
	color: #009;
	text-decoration: none;
}
#share_close a:hover {
	color: #900;
	text-decoration: none;
}
#share_form div.clear {
	clear: both;
	float: none;
}
#share_social {
	background: #fff;
	padding: 5px 10px 5px 7px;
}
#share_social ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
#share_social ul li {
	float: left;
	margin: 0;
	padding: 0;
	width: 50%;
}
#share_social ul li a {
	background-position: 0px 2px;
	background-repeat: no-repeat;
	display: block;
	float: left;
	height: 20px;
	padding: 4px 0 0 22px;
	vertical-align: middle;
	text-decoration: none;
	color: #009;
}
#share_social ul li a:hover {
	text-decoration: underline;
	color: #900;
}
#share_delicious {
	background-image: url('/images/delicious.gif') !important;
}
#share_digg {
	background-image: url('/images/digg.gif') !important;
}
#share_furl {
	background-image: url('/images/furl.gif') !important;
}
#share_netscape {
	background-image: url('/images/netscape.gif') !important;
}
#share_yahoo_myweb {
	background-image: url('/images/yahoo_myweb.gif') !important;
}
#share_stumbleupon {
	background-image: url('/images/stumbleupon.gif') !important;
}
#share_google_bmarks {
	background-image: url('/images/google_bmarks.gif') !important;
}
#share_technorati {
	background-image: url('/images/technorati.gif') !important;
}
#share_blinklist {
	background-image: url('/images/blinklist.gif') !important;
}
#share_newsvine {
	background-image: url('/images/newsvine.gif') !important;
}
#share_magnolia {
	background-image: url('/images/magnolia.gif') !important;
}
#share_reddit {
	background-image: url('/images/reddit.gif') !important;
}
#share_facebook {
	background-image: url('/images/facebook.gif') !important;
}
#share_tailrank {
	background-image: url('/images/tailrank.gif') !important;
}
#share_slashdot {
	background-image: url('/images/slashdot.gif') !important;
}
#share_fark {
	background-image: url('/images/fark.gif') !important;
}

#blog_form {
	background: #eee;
	border: 1px solid #999;
	display: none;
	position: absolute;
	width: 475px;
	z-index: 999;
}
#blog_title {
	float: left;
	margin: 5px;
	width: 60%;
}
#blog_close {
	float: right;
	margin: 5px;
	font-style: italic;
}
#blog_close a {
	color: #009;
	text-decoration: none;
}
#blog_close a:hover {
	color: #900;
	text-decoration: none;
}
#blog_form div.clear {
	clear: both;
	float: none;
}
#blog_fields {
	background: #fff;
	padding: 1px 10px 5px 7px;
	text-align: left;
}
#blog_fields form {
	border: 0;
	margin: 0;
	padding: 0;
}
#blog_fields ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
#blog_fields ul li {
	display: block;
	clear: both;
	margin: 0 0 7px 0;
	padding: 0;
}
#blog_fields ul li label {
	width: 70px;
	float: left;
	margin: 3px 0;
}
#blog_fields ul li input {
	float: right;
	width: 375px;
	padding: 0;
	margin: 3px;
}
#blog_fields ul li textarea {
	float: right;
	width: 375px;
	padding: 0;
	margin: 3px;
}
#blog_fields ul li label.blog_submit_label {
	width: 370px;
	float: left;
}
#blog_fields ul li input.blog_submit {
	float: right;
	width: 75px;
}
#blog_fields ul li input.blog_text {
	width: 375px;
}
#blog_fields ul li textarea.blog_summary {
	width: 375px;
	height: 150px;
}

#cite_form {
	background: #eee;
	border: 1px solid #999;
	display: none;
	position: absolute;
	width: 500px;
	z-index: 999;
}
#cite_title {
	float: left;
	margin: 5px;
	width: 60%;
}
#cite_close {
	float: right;
	margin: 5px;
	font-style: italic;
}
#cite_close a {
	color: #009;
	text-decoration: none;
}
#cite_close a:hover {
	color: #900;
	text-decoration: none;
}
#cite_form div.clear {
	clear: both;
	float: none;
}
#cite_fields {
	background: #fff;
	padding: 1px 10px 5px 7px;
	text-align: left;
}
#cite_fields form {
	border: 0;
	margin: 0;
	padding: 0;
}
#cite_fields ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
#cite_fields ul li {
	display: block;
	clear: both;
	margin: 0 0 7px 0;
	padding: 0;
}
#cite_fields ul li label {
	width: 75px;
	float: left;
	margin: 3px 0;
}
#cite_fields ul li input {
	float: left;
	margin: 3px 0;
}
#cite_fields ul li div {
	float: right;
	width: 385px;
	padding: 0;
	margin: 3px 3px 10px 3px;
}
#cite_fields ul li div p {
	margin: 0;
	padding: 0;
}
#cite_fields ul li label.cite_submit_label {
	width: 395px;
	float: left;
}
#cite_fields ul li input.cite_style {
	float: left;
	width: 15px;
}
#cite_fields ul li input.cite_submit {
	float: right;
	width: 75px;
}
#cite_fields ul li div.citation {
	width: 385px;
}

#email_form {
	background: #eee;
	border: 1px solid #999;
	display: none;
	position: absolute;
	width: 300px;
	z-index: 999;
}
#email_title {
	float: left;
	margin: 5px;
	width: 60%;
}
#email_close {
	float: right;
	margin: 5px;
	font-style: italic;
}
#email_close a {
	color: #009;
	text-decoration: none;
}
#email_close a:hover {
	color: #900;
	text-decoration: none;
}
#email_form div.clear {
	clear: both;
	float: none;
}
#email_fields {
	background: #fff;
	padding: 1px 10px 5px 7px;
	text-align: left;
}
#email_fields form {
	border: 0;
	margin: 0;
	padding: 0;
}
#email_fields ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
#email_fields ul li {
	display: block;
	clear: both;
	margin: 0 0 7px 0;
	padding: 0;
}
#email_fields ul li label {
	width: 95px;
	float: left;
	margin: 3px 0;
}
#email_fields ul li input {
	float: right;
	width: 175px;
	padding: 0;
	margin: 3px;
}
#email_fields ul li input.email_self {
	float: left;
	width: 15px;
}
#email_fields ul li input.email_submit {
	float: right;
	width: 75px;
}
#email_fields ul li input.email_text {
	width: 175px;
}

#feedback {
	width: 300px;
}
#feedback_form {
	border: 0;
	margin: 2px 0 0 0;
	padding: 0;
}
#feedback_form ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
#feedback_form ul li {
	display: block;
	clear: both;
	margin: 0 0 7px 0;
	padding: 0;
}
#feedback_form ul li label {
	width: 75px;
	float: left;
	margin: 3px 0;
}
#feedback_form ul li input {
	float: right;
	width: 205px;
	padding: 0;
	margin: 3px;
}
#feedback_form ul li input.feedback_submit {
	float: right;
	width: 75px;
}
#feedback_form ul li input.feedback_text {
	width: 205px;
}
#feedback_form ul li label.feedback_submit_label {
	width: 190px;
	float: left;
}
#feedback_form ul li textarea {
	float: right;
	width: 205px;
	padding: 0;
	margin: 3px;
}
#feedback_form ul li textarea.feedback_comments {
	width: 205px;
	height: 100px;
}
#justin {
	margin: 5px 0;
}
#justin div {
	display: none;
}

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=thumbnailviewer.css
Content-Type: text/css; charset=iso-8859-1; name=thumbnailviewer.css
Content-Location: http://www.sciencedaily.com/styles/thumbnailviewer.css
Content-Transfer-Encoding: 8bit

#thumbBox { /*Outermost DIV for thumbnail viewer*/
	position: absolute;
	left: 0;
	top: 0;
	width: auto;
	padding: 0;
	padding-bottom: 0;
	background: #fff;
	border: 1px solid #999;
	visibility: hidden;
	z-index: 1000;
	cursor: hand;
	cursor: pointer;
}

#thumbBox .headerbar { /*Header DIV of thumbbox that contains "close" link */
	font: bold 13px Arial;
	font-style: italic;
	color: #000;
	padding: 0;
	text-align: right;
	z-index: 1001;
}


#thumbBox #thumbImage { /*DIV within thumbbox that holds the enlarged image */
	background-color: #fff;
}

#thumbLoading { /*DIV for showing "loading" status while thumbbox is being generated*/
	position: absolute;
	visibility: hidden;
	border: 1px solid #000;
	background-color: #fff;
	padding: 5px;
	z-index: 500;
}
------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=functions8-new.js
Content-Type: application/x-javascript; charset=iso-8859-1; name=functions8-new.js
Content-Location: http://www.sciencedaily.com/scripts/functions8-new.js
Content-Transfer-Encoding: Base64

ZnVuY3Rpb24gaW5pdCgpIHsKICAvLyBxdWl0IGlmIHRoaXMgZnVuY3Rpb24gaGFz
IGFscmVhZHkgYmVlbiBjYWxsZWQKICBpZiAoYXJndW1lbnRzLmNhbGxlZS5kb25l
KSByZXR1cm47CgogIC8vIGZsYWcgdGhpcyBmdW5jdGlvbiBzbyB3ZSBkb24ndCBk
byB0aGUgc2FtZSB0aGluZyB0d2ljZQogIGFyZ3VtZW50cy5jYWxsZWUuZG9uZSA9
IHRydWU7CgogIC8vIGtpbGwgdGhlIHRpbWVyCiAgaWYgKF90aW1lcikgY2xlYXJJ
bnRlcnZhbChfdGltZXIpOwoKICAvLyBkbyBzdHVmZgp9OwoKLyogZm9yIE1vemls
bGEvT3BlcmE5ICovCmlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAg
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGlu
aXQsIGZhbHNlKTsKfQoKLyogZm9yIEludGVybmV0IEV4cGxvcmVyICovCi8qQGNj
X29uIEAqLwovKkBpZiAoQF93aW4zMikKICBkb2N1bWVudC53cml0ZSgiPHNjcmlw
dCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxc
L3NjcmlwdD4iKTsKICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIl9faWVfb25sb2FkIik7CiAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9
IGZ1bmN0aW9uKCkgewogICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxl
dGUiKSB7CiAgICAgIGluaXQoKTsgLy8gY2FsbCB0aGUgb25sb2FkIGhhbmRsZXIK
ICAgIH0KICB9OwovKkBlbmQgQCovCgovKiBmb3IgU2FmYXJpICovCmlmICgvV2Vi
S2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkgeyAvLyBzbmlmZgogIHZh
ciBfdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgIGlmICgvbG9h
ZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpKSB7CiAgICAg
IGluaXQoKTsgLy8gY2FsbCB0aGUgb25sb2FkIGhhbmRsZXIKICAgIH0KICB9LCAx
MCk7Cn0KCi8qIGZvciBvdGhlciBicm93c2VycyAqLwp3aW5kb3cub25sb2FkID0g
aW5pdDsKCmZ1bmN0aW9uIGFkZExvYWRFdmVudChmdW5jKSB7Cgl2YXIgb2xkb25s
b2FkID0gd2luZG93Lm9ubG9hZDsKCWlmICh0eXBlb2Ygd2luZG93Lm9ubG9hZCAh
PSAnZnVuY3Rpb24nKSB7CgkJd2luZG93Lm9ubG9hZCA9IGZ1bmM7Cgl9IGVsc2Ug
ewoJCXdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKCQkJb2xkb25sb2FkKCk7
CgkJCWZ1bmMoKTsKCQl9Cgl9Cn0KCmZ1bmN0aW9uIGFkZFVubG9hZEV2ZW50KGZ1
bmMpIHsKCXZhciBvbGRvbnVubG9hZCA9IHdpbmRvdy5vbnVubG9hZDsKCWlmICh0
eXBlb2Ygd2luZG93Lm9udW5sb2FkICE9ICdmdW5jdGlvbicpIHsKCQl3aW5kb3cu
b251bmxvYWQgPSBmdW5jOwoJfSBlbHNlIHsKCQl3aW5kb3cub251bmxvYWQgPSBm
dW5jdGlvbigpIHsKCQkJb2xkb251bmxvYWQoKTsKCQkJZnVuYygpOwoJCX0KCX0K
fQoKZnVuY3Rpb24gc3Vja2VyZmlzaCh0eXBlLCB0YWcsIHBhcmVudElkKSB7Cglp
ZiAod2luZG93LmF0dGFjaEV2ZW50KSB7CgkJd2luZG93LmF0dGFjaEV2ZW50KCJv
bmxvYWQiLCBmdW5jdGlvbigpIHsKCQkJdmFyIHNmRWxzID0gKHBhcmVudElkPT1u
dWxsKT9kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcpOmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHBhcmVudElkKS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0
YWcpOwoJCQl0eXBlKHNmRWxzKTsKCQl9KTsKCX0KfQoKc2ZIb3ZlciA9IGZ1bmN0
aW9uKHNmRWxzKSB7Cglmb3IgKHZhciBpPTA7IGk8c2ZFbHMubGVuZ3RoOyBpKysp
IHsKCQlzZkVsc1tpXS5vbm1vdXNlb3Zlcj1mdW5jdGlvbigpIHsKCQkJdGhpcy5j
bGFzc05hbWUrPSIgc2Zob3ZlciI7CgkJfQoJCXNmRWxzW2ldLm9ubW91c2VvdXQ9
ZnVuY3Rpb24oKSB7CgkJCXRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lLnJl
cGxhY2UobmV3IFJlZ0V4cCgiIHNmaG92ZXJcXGIiKSwgIiIpOwoJCX0KCX0KfQoK
ZnVuY3Rpb24gc2hvd2hpZGUoaWQpIHsKCXZhciBlbGVtZW50U3R5bGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheTsKCWlmIChlbGVt
ZW50U3R5bGUgPT0gJ25vbmUnKSB7CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
aWQpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwoJCWRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzaG93bGluaycpLmlubmVySFRNTCA9ICdoaWRlJzsKCQlkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc2hvd2ltYWdlJykuc3JjID0gJy9pbWFnZXMvdXAu
Z2lmJzsKCX0gZWxzZSBpZiAoZWxlbWVudFN0eWxlID09ICdibG9jaycpIHsKCQlk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9ICdub25l
JzsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvd2xpbmsnKS5pbm5lckhU
TUwgPSAnc2hvdyc7CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3dpbWFn
ZScpLnNyYyA9ICcvaW1hZ2VzL2Rvd24uZ2lmJzsKCX0KfQoKZnVuY3Rpb24gcHJp
bnRwYWdlKCkgewoJdmFyIG9wdGlvbnMgPSAic2Nyb2xsYmFycyxyZXNpemFibGUi
OyAKCXZhciB1cmwgPSAnJywgdG9wID0gJycsIHRleHQgPSAnJywgYm90dG9tID0g
JycsIHNlZWFsc28gPSAnJywgZ29vZ2xldG9wID0gJycsIGdvb2dsZWJvdHRvbSA9
ICcnLCBnb29nbGVlbmQgPSAnJywgZ29vZ2xlc2lkZSA9ICcnLCBnb29nbGVzZWFy
Y2ggPSAnJzsKCQl1cmwgKz0gZG9jdW1lbnQubG9jYXRpb24uaHJlZi5yZXBsYWNl
KC8jLiokLywnJyk7CgkJaWYgKHVybC5sZW5ndGggPiA1MCkgewoJCQl1cmxhcnJh
eSA9IHVybC5zcGxpdCgnLycpOwoJCQl1cmwgPSAnJzsKCQkJZm9yICh2YXIgaT0w
OyBpPHVybGFycmF5Lmxlbmd0aDsgaSsrKSB7CgkJCQlpZiAoKHVybCArICcvJyAr
IHVybGFycmF5W2ldKS5sZW5ndGggPiA1MCkgewoJCQkJCXVybCArPSAnLzxicj4m
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgdXJsYXJyYXlbaV07CgkJ
CQl9IGVsc2UgewoJCQkJCXVybCArPSAnLycgKyB1cmxhcnJheVtpXTsKCQkJCX0K
CQkJfQoJCQl1cmwgPSB1cmwuc3Vic3RyaW5nKDEpOwoJCQl1cmwgPSB1cmwucmVw
bGFjZSgnPGJyPicsJzxiciAvPicpOwoJCX0KCQl0b3AgKz0gJzx0YWJsZSBjZWxs
cGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCIgd2lkdGg9IjEw
MCUiPjx0cj4nICsgIlxuIjsKCQl0b3AgKz0gJzx0ZCB2YWxpZ249InRvcCI+PGlt
ZyBzcmM9Ii9pbWFnZXMvbG9nby1wcmludC5naWYiIHdpZHRoPSIyNzUiIGhlaWdo
dD0iOTAiPjwvdGQ+JyArICJcbiI7CgkJdG9wICs9ICc8dGQgdmFsaWduPSJtaWRk
bGUiIGFsaWduPSJsZWZ0Ij48ZW0+V2ViIGFkZHJlc3M6PC9lbT48YnIgLz48c3Ry
b25nPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyB1cmwgKyAnPC9z
dHJvbmc+PC90ZD4nICsgIlxuIjsKCQl0b3AgKz0gJzx0ZCB2YWxpZ249Im1pZGRs
ZSIgYWxpZ249InJpZ2h0IiBpZD0icHJpbnRidXR0b24iPjxpbnB1dCB0eXBlPWJ1
dHRvbiB2YWx1ZT0iUHJpbnQgdGhpcyBwYWdlIiBvbkNsaWNrPSJ3aW5kb3cucHJp
bnQoKSI+PC90ZD4nICsgIlxuIjsKCQl0b3AgKz0gJzwvdHI+PC90YWJsZT4nICsg
IlxuIjsKCQl0ZXh0ICs9ICc8ZGl2IGlkPSJ3cmFwcGVyIj4nICsgIlxuIjsKCQlp
ZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0b3J5JykpIHsKCQkJdGV4dCAr
PSAnPGgxPicgKyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKVsx
XS5pbm5lckhUTUwgKyAnPC9oMT4nICsgIlxuIjsKCQkJaWYgKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdwaG90bycpKSB7CgkJCQl0ZXh0ICs9ICc8ZGl2IHN0eWxl
PSJmbG9hdDogcmlnaHQ7IHdpZHRoOiAzMDBweDsgbWFyZ2luOiAwIDAgMjBweCAy
MHB4Ij4nICsgIlxuIjsKCQkJCXRleHQgKz0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Bob3RvJykuaW5uZXJIVE1MOwoJCQkJdGV4dCArPSAnPC9kaXY+JyArICJc
biI7CgkJCX0KCQkJdGV4dCArPSAnPGRpdj4nOwoJCQl0ZXh0ICs9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzdG9yeScpLmlubmVySFRNTDsKCQl9IGVsc2UgewoJ
CQlpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpdGxlJykpIHsKCQkJCXRl
eHQgKz0gJzxkaXYgaWQ9InRpdGxlIj4nICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RpdGxlJykuaW5uZXJIVE1MICsgJzwvZGl2PicgKyAiXG4iOwoJCQkJdGV4
dCA9IHRleHQucmVwbGFjZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGl0bGVz
aWRlJykuaW5uZXJIVE1MLCcnKTsKCQkJCXRleHQgKz0gJzxkaXYgc3R5bGU9ImNs
ZWFyOiBib3RoIj48L2Rpdj4nICsgIlxuIjsKCQkJfQoJCQl0ZXh0ICs9ICc8ZGl2
IGlkPSJjb250ZW50Ij4nOwoJCQl0ZXh0ICs9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb250ZW50JykuaW5uZXJIVE1MOwoJCX0KCQlpZiAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3NlZWFsc28nKSkgewoJCQlzZWVhbHNvICs9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzZWVhbHNvJykuaW5uZXJIVE1MOwoJCX0KCQlpZiAo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZXRvcCcpKSB7CgkJCWdvb2ds
ZXRvcCArPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ29vZ2xldG9wJykuaW5u
ZXJIVE1MOwoJCX0KCQlpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2ds
ZWVuZCcpKSB7CgkJCWdvb2dsZWVuZCArPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZ29vZ2xlZW5kJykuaW5uZXJIVE1MOwoJCX0KCQlpZiAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2dvb2dsZWJvdHRvbScpKSB7CgkJCWdvb2dsZWJvdHRvbSAr
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ29vZ2xlYm90dG9tJykuaW5uZXJI
VE1MOwoJCX0KCQlpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZXNp
ZGUnKSkgewoJCQlnb29nbGVzaWRlICs9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdnb29nbGVzaWRlJykuaW5uZXJIVE1MOwoJCX0KCQlpZiAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2dvb2dsZXNlYXJjaCcpKSB7CgkJCWdvb2dsZXNlYXJjaCAr
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ29vZ2xlc2VhcmNoJykuaW5uZXJI
VE1MOwoJCX0KCQl0ZXh0ICs9ICc8L2Rpdj4nICsgIlxuIjsKCQl0ZXh0ICs9ICc8
ZGl2IHN0eWxlPSJjbGVhcjogYm90aCI+PC9kaXY+JyArICJcbiI7CgkJdGV4dCAr
PSAnPC9kaXY+JyArICJcbiI7CgkJdGV4dCA9IHRleHQucmVwbGFjZShzZWVhbHNv
LCcnKTsKCQl0ZXh0ID0gdGV4dC5yZXBsYWNlKGdvb2dsZXRvcCwnJyk7CgkJdGV4
dCA9IHRleHQucmVwbGFjZShnb29nbGVib3R0b20sJycpOwoJCXRleHQgPSB0ZXh0
LnJlcGxhY2UoZ29vZ2xlZW5kLCcnKTsKCQl0ZXh0ID0gdGV4dC5yZXBsYWNlKGdv
b2dsZXNpZGUsJycpOwoJCXRleHQgPSB0ZXh0LnJlcGxhY2UoZ29vZ2xlc2VhcmNo
LCcnKTsKCQl0ZXh0ID0gdGV4dC5yZXBsYWNlKC88c2NyXGlwdFtePl0qPz5bLlxz
XFNdKj88XC9zY3JcaXB0Pi9naSwnJyk7Cgl2YXIgd2lucHJpbnQgPSB3aW5kb3cu
b3BlbigiIiwiIixvcHRpb25zKTsKCQl3aW5wcmludC5kb2N1bWVudC5vcGVuKCk7
CgkJd2lucHJpbnQuZG9jdW1lbnQud3JpdGUoJzwhRE9DVFlQRSBodG1sIFBVQkxJ
QyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRw
Oi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwu
ZHRkIj4nICsgIlxuIik7CgkJd2lucHJpbnQuZG9jdW1lbnQud3JpdGUoJzxodG1s
PicgKyAiXG4iKTsKCQl3aW5wcmludC5kb2N1bWVudC53cml0ZSgnPGhlYWQ+JyAr
ICJcbiIpOwoJCWlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvcnknKSkg
ewoJCQl3aW5wcmludC5kb2N1bWVudC53cml0ZSgnPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj5AbWVkaWEgcHJpbnQgeyAjcHJpbnRidXR0b24ge2Rpc3BsYXk6IG5vbmU7
fSB9PC9zdHlsZT4nICsgIlxuIik7CgkJfSBlbHNlIHsKCQkJd2lucHJpbnQuZG9j
dW1lbnQud3JpdGUoJzxsaW5rIGhyZWY9Ii9zdHlsZXMvcHJpbnQuY3NzIiByZWw9
InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPicgKyAiXG4iKTsKCQkJd2lu
cHJpbnQuZG9jdW1lbnQud3JpdGUoJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+QG1l
ZGlhIHByaW50IHsgI3ByaW50YnV0dG9uIHtkaXNwbGF5OiBub25lO30gfTwvc3R5
bGU+JyArICJcbiIpOwoJCX0KCQl3aW5wcmludC5kb2N1bWVudC53cml0ZSgnPC9o
ZWFkPicgKyAiXG4iKTsKCQl3aW5wcmludC5kb2N1bWVudC53cml0ZSgnPGJvZHk+
JyArICJcbiIpOwoJCXdpbnByaW50LmRvY3VtZW50LndyaXRlKHRvcCArICJcbiIg
KyB0ZXh0ICsgIlxuIiArIGJvdHRvbSArICJcbiIpOwoJCXdpbnByaW50LmRvY3Vt
ZW50LndyaXRlKCc8L2JvZHk+PC9odG1sPicgKyAiXG4iKTsgCgkJd2lucHJpbnQu
ZG9jdW1lbnQuY2xvc2UoKTsKfQoKLyoKZnVuY3Rpb24gZW1haWxwYWdlKCkgewoJ
dmFyIHJlY2lwaWVudCA9IHByb21wdCgiUmVjaXBpZW50J3MgZW1haWwgYWRkcmVz
czoiLCIiKTsKCWlmIChyZWNpcGllbnQgPT0gbnVsbCkgewoJCWFsZXJ0KCJZb3Ug
bXVzdCBlbnRlciBhbiBlbWFpbCBhZGRyZXNzLiIpCgl9IGVsc2UgewoJCXZhciBz
dWJqZWN0ID0gZG9jdW1lbnQudGl0bGU7CgkJdmFyIHVybCA9IGRvY3VtZW50Lmxv
Y2F0aW9uLmhyZWY7CgkJdmFyIGJvZHkgPSAiUGxlYXNlIHNlZSB0aGUgZm9sbG93
aW5nIHBhZ2UgLi4uXG5cbiIgKyAiVGl0bGU6ICAgIiArIHN1YmplY3QgKyAiXG4i
ICsgIkxpbms6ICAgICIgKyB1cmwgKyAiXG4iOwoJCXZhciBtZXNzYWdlID0gIm1h
aWx0bzoiICsgcmVjaXBpZW50ICsgIj9zdWJqZWN0PSIgKyBlc2NhcGUoc3ViamVj
dCkgKyAiJmJvZHk9IiArIGVzY2FwZShib2R5KTsKCQl3aW5kb3cubG9jYXRpb24g
PSBtZXNzYWdlOwoJCXdpbmRvdy5mb2N1cygpOwoJfQp9CiovCgpmdW5jdGlvbiBi
b29rbWFya3BhZ2UoKSB7Cgl2YXIgdXJsID0gZG9jdW1lbnQubG9jYXRpb24uaHJl
ZjsKCXZhciB0aXRsZSA9IGRvY3VtZW50LnRpdGxlOwoJaWYgKChuYXZpZ2F0b3Iu
YXBwTmFtZSA9PSAiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIikgJiYgKHBh
cnNlSW50KG5hdmlnYXRvci5hcHBWZXJzaW9uKSA+PSA0KSkgewoJCXdpbmRvdy5l
eHRlcm5hbC5BZGRGYXZvcml0ZSh1cmwsdGl0bGUpOwoJfSBlbHNlIGlmIChuYXZp
Z2F0b3IuYXBwTmFtZSA9PSAiTmV0c2NhcGUiKSB7CgkJd2luZG93LnNpZGViYXIu
YWRkUGFuZWwodGl0bGUsdXJsLCIiKTsKCX0gZWxzZSB7CgkJYWxlcnQoIlByZXNz
IENUUkwtRCAoTmV0c2NhcGUpIG9yIENUUkwtVCAoT3BlcmEpIHRvIGJvb2ttYXJr
Iik7Cgl9Cn0KCmZ1bmN0aW9uIHNoYXJlcGFnZSgpIHsKCXZhciBmb3JtID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NoYXJlX2Zvcm0nKTsKCQoJaWYgKGZvcm0u
c3R5bGUuZGlzcGxheSA9PSAnYmxvY2snKSB7CgkJZm9ybS5zdHlsZS5kaXNwbGF5
ID0gJ25vbmUnOwoJCXJldHVybjsKCX0KCQoJdmFyIHVybCA9IGVzY2FwZShkb2N1
bWVudC5sb2NhdGlvbi5ocmVmKTsKCXZhciB0aXRsZSA9IGVzY2FwZShkb2N1bWVu
dC50aXRsZSk7Cgl2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
aGFyZV9saW5rJyk7CgoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoYXJlX2Rl
bGljaW91cyIpLmhyZWYgPSBzaGFyZV91cmwoImh0dHA6Ly9kZWwuaWNpby51cy9w
b3N0P3VybD17dXJsfSZ0aXRsZT17dGl0bGV9IiwgdXJsLCB0aXRsZSk7Cglkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2hhcmVfZGlnZyIpLmhyZWYgPSBzaGFyZV91
cmwoImh0dHA6Ly9kaWdnLmNvbS9zdWJtaXQ/cGhhc2U9MiZ1cmw9e3VybH0mdGl0
bGU9e3RpdGxlfSIsIHVybCwgdGl0bGUpOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNoYXJlX2Z1cmwiKS5ocmVmID0gc2hhcmVfdXJsKCJodHRwOi8vZnVybC5u
ZXQvc3RvcmVJdC5qc3A/dT17dXJsfSZ0PXt0aXRsZX0iLCB1cmwsIHRpdGxlKTsK
CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFyZV9uZXRzY2FwZSIpLmhyZWYg
PSBzaGFyZV91cmwoImh0dHA6Ly93d3cubmV0c2NhcGUuY29tL3N1Ym1pdC8/VT17
dXJsfSZUPXt0aXRsZX0iLCB1cmwsIHRpdGxlKTsKCWRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzaGFyZV95YWhvb19teXdlYiIpLmhyZWYgPSBzaGFyZV91cmwoImh0
dHA6Ly9teXdlYjIuc2VhcmNoLnlhaG9vLmNvbS9teXJlc3VsdHMvYm9va21hcmts
ZXQ/dT17dXJsfSZ0PXt0aXRsZX0iLCB1cmwsIHRpdGxlKTsKCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzaGFyZV9zdHVtYmxldXBvbiIpLmhyZWYgPSBzaGFyZV91
cmwoImh0dHA6Ly93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9e3VybH0m
dGl0bGU9e3RpdGxlfSIsIHVybCwgdGl0bGUpOwoJZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNoYXJlX2dvb2dsZV9ibWFya3MiKS5ocmVmID0gc2hhcmVfdXJsKCJo
dHRwOi8vd3d3Lmdvb2dsZS5jb20vYm9va21hcmtzL21hcms/b3A9ZWRpdCZia21r
PXt1cmx9JnRpdGxlPXt0aXRsZX0iLCB1cmwsIHRpdGxlKTsKCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzaGFyZV90ZWNobm9yYXRpIikuaHJlZiA9IHNoYXJlX3Vy
bCgiaHR0cDovL3d3dy50ZWNobm9yYXRpLmNvbS9mYXZlcz9hZGQ9e3VybH0iLCB1
cmwsIHRpdGxlKTsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFyZV9ibGlu
a2xpc3QiKS5ocmVmID0gc2hhcmVfdXJsKCJodHRwOi8vYmxpbmtsaXN0LmNvbS9p
bmRleC5waHA/QWN0aW9uPUJsaW5rL2FkZGJsaW5rLnBocCZVcmw9e3VybH0mVGl0
bGU9e3RpdGxlfSIsIHVybCwgdGl0bGUpOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNoYXJlX25ld3N2aW5lIikuaHJlZiA9IHNoYXJlX3VybCgiaHR0cDovL3d3
dy5uZXdzdmluZS5jb20vX3Rvb2xzL3NlZWQmc2F2ZT9wb3BvZmY9MCZ1PXt1cmx9
Jmg9e3RpdGxlfSIsIHVybCwgdGl0bGUpOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNoYXJlX21hZ25vbGlhIikuaHJlZiA9IHNoYXJlX3VybCgiaHR0cDovL21h
Lmdub2xpYS5jb20vYm9va21hcmtsZXQvYWRkP3VybD17dXJsfSZ0aXRsZT17dGl0
bGV9IiwgdXJsLCB0aXRsZSk7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hh
cmVfcmVkZGl0IikuaHJlZiA9IHNoYXJlX3VybCgiaHR0cDovL3JlZGRpdC5jb20v
c3VibWl0P3VybD17dXJsfSZ0aXRsZT17dGl0bGV9IiwgdXJsLCB0aXRsZSk7Cglk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhcmVfZmFjZWJvb2siKS5ocmVmID0g
c2hhcmVfdXJsKCJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZS5waHA/dT17
dXJsfSIsIHVybCwgdGl0bGUpOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNo
YXJlX3RhaWxyYW5rIikuaHJlZiA9IHNoYXJlX3VybCgiaHR0cDovL3RhaWxyYW5r
LmNvbS9zaGFyZS8/bGlua19ocmVmPXt1cmx9JnRpdGxlPXt0aXRsZX0iLCB1cmws
IHRpdGxlKTsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFyZV9zbGFzaGRv
dCIpLmhyZWYgPSBzaGFyZV91cmwoImh0dHA6Ly9zbGFzaGRvdC5vcmcvYm9va21h
cmsucGw/dXJsPXt1cmx9JnRpdGxlPXt0aXRsZX0iLCB1cmwsIHRpdGxlKTsKCWRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGFyZV9mYXJrIikuaHJlZiA9IHNoYXJl
X3VybCgiaHR0cDovL2NnaS5mYXJrLmNvbS9jZ2kvZmFyay9lZGl0LnBsP25ld191
cmw9e3VybH0mbmV3X2NvbW1lbnQ9e3RpdGxlfSIsIHVybCwgdGl0bGUpOwoKCXZh
ciBvZmZzZXQgPSBQb3NpdGlvbi5jdW11bGF0aXZlT2Zmc2V0KGxpbmspOwoJZm9y
bS5zdHlsZS5sZWZ0ID0gKG9mZnNldFswXSAtIDIwKSArICdweCc7Cglmb3JtLnN0
eWxlLnRvcCA9IChvZmZzZXRbMV0gKyBsaW5rLm9mZnNldEhlaWdodCArIDMpICsg
J3B4JzsKCWZvcm0uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Cn0KCmZ1bmN0aW9u
IHNoYXJlX3VybChiYXNlLCB1cmwsIHRpdGxlKSB7CgliYXNlID0gYmFzZS5yZXBs
YWNlKCd7dXJsfScsIHVybCk7CglyZXR1cm4gYmFzZS5yZXBsYWNlKCd7dGl0bGV9
JywgdGl0bGUpOwp9CgpmdW5jdGlvbiBibG9ncGFnZSgpIHsKCXZhciBmb3JtID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jsb2dfZm9ybScpOwoJCglpZiAoZm9y
bS5zdHlsZS5kaXNwbGF5ID09ICdibG9jaycpIHsKCQlmb3JtLnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7CgkJcmV0dXJuOwoJfQoKCXZhciB0aXRsZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdibG9nX2hlYWRsaW5lJyk7Cgl2YXIgbGluayA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdibG9nX3VybCcpOwoJaWYgKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdtZXRhZGF0ZScpKSB7CgkJdmFyIG1ldGFkYXRlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21ldGFkYXRlJykuY29udGVudDsKCX0g
ZWxzZSB7CgkJdmFyIG1ldGFkYXRlID0gJyc7Cgl9Cgl2YXIgc3VtbWFyeSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdibG9nX3N1bW1hcnknKTsKCXRpdGxlLnZh
bHVlID0gZG9jdW1lbnQudGl0bGU7CglsaW5rLnZhbHVlID0gZG9jdW1lbnQubG9j
YXRpb24uaHJlZjsKCWlmICh0eXBlb2Ygc3VtbWFyeS5pbm5lclRleHQgIT0gJ3Vu
ZGVmaW5lZCcpIHsKCQlzdW1tYXJ5LmlubmVyVGV4dCA9ICdTY2llbmNlRGFpbHkg
KCcgKyBtZXRhZGF0ZSArICcpIC0tICcgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbWV0YXN1bW1hcnknKS5jb250ZW50OwoJfSBlbHNlIGlmICh0eXBlb2Ygc3Vt
bWFyeS50ZXh0Q29udGVudCAhPSAndW5kZWZpbmVkJykgewoJCXN1bW1hcnkudGV4
dENvbnRlbnQgPSAnU2NpZW5jZURhaWx5ICgnICsgbWV0YWRhdGUgKyAnKSAtLSAn
ICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21ldGFzdW1tYXJ5JykuY29udGVu
dDsKCX0KCgl2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibG9n
X2xpbmsnKTsKCgl2YXIgb2Zmc2V0ID0gUG9zaXRpb24uY3VtdWxhdGl2ZU9mZnNl
dChsaW5rKTsKCWZvcm0uc3R5bGUubGVmdCA9IChvZmZzZXRbMF0gLSAxNzApICsg
J3B4JzsKCWZvcm0uc3R5bGUudG9wID0gKG9mZnNldFsxXSArIGxpbmsub2Zmc2V0
SGVpZ2h0ICsgMykgKyAncHgnOwoJZm9ybS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2Nr
JzsKfQoKZnVuY3Rpb24gY29weWl0KCkgewoJdmFyIHRpdGxlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2Jsb2dfaGVhZGxpbmUnKS52YWx1ZTsKCXZhciBsaW5r
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jsb2dfdXJsJykudmFsdWU7Cgl2
YXIgbWV0YWRhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWV0YWRhdGUn
KS5jb250ZW50OwoJdmFyIHN1bW1hcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYmxvZ19zdW1tYXJ5Jyk7CglpZiAodHlwZW9mIHN1bW1hcnkuaW5uZXJUZXh0
ICE9ICd1bmRlZmluZWQnKSB7CgkJc3VtbWFyeSA9IHN1bW1hcnkuaW5uZXJUZXh0
OwoJfSBlbHNlIGlmICh0eXBlb2Ygc3VtbWFyeS50ZXh0Q29udGVudCAhPSAndW5k
ZWZpbmVkJykgewoJCXN1bW1hcnkgPSBzdW1tYXJ5LnRleHRDb250ZW50OwoJfSBl
bHNlIHsKCQlzdW1tYXJ5ID0gJyc7Cgl9Cgl2YXIgdGV4dCA9ICc8cD48c3Ryb25n
PjxhIGhyZWY9IicgKyBsaW5rICsgJyI+JyArIHRpdGxlICsgJzwvYT48L3N0cm9u
Zz48YnIgLz4nICsgIlxuIiArIHN1bW1hcnkgKyAnIC4uLiA8ZW0+Jmd0OyA8YSBo
cmVmPSInICsgbGluayArICciPnJlYWQgZnVsbCBhcnRpY2xlPC9hPjwvZW0+PC9w
Pic7Cgljb3B5X2NsaXAodGV4dCx0ZXh0KTsKfQoKZnVuY3Rpb24gY2l0ZXBhZ2Uo
KSB7Cgl2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaXRlX2Zv
cm0nKTsKCQoJaWYgKGZvcm0uc3R5bGUuZGlzcGxheSA9PSAnYmxvY2snKSB7CgkJ
Zm9ybS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwoJCXJldHVybjsKCX0KCgl2YXIg
bWV0YWRhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWV0YWRhdGUnKS5j
b250ZW50OwoJdmFyIHNvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
b3VyY2UnKS5pbm5lckhUTUw7Cgl2YXIgdGl0bGUgPSBkb2N1bWVudC50aXRsZTsK
CXZhciBoZWFkbGluZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWFkbGlu
ZScpLmlubmVySFRNTDsKCXZhciBsaW5rID0gZG9jdW1lbnQubG9jYXRpb24uaHJl
ZjsKCgl2YXIgY2l0ZV9hcGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2l0
ZV9hcGEnKTsKCXZhciBjaXRlX21sYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjaXRlX21sYScpOwoJdmFyIG1ldGEgPSBuZXcgRGF0ZShnZXREYXRlRnJvbUZv
cm1hdChtZXRhZGF0ZSwneS1NTS1kZCcpKTsKCXZhciB0b2RheSA9IG5ldyBEYXRl
KCk7Cgl2YXIgYXBhID0gJzxwPicgKyBzb3VyY2UgKyAnICgnICsgZm9ybWF0RGF0
ZShtZXRhLCd5LCBNTU0gZCcpICsgJykuICcgKyB0aXRsZSArICcuIDxlbT5TY2ll
bmNlRGFpbHk8L2VtPi4gUmV0cmlldmVkICcgKyBmb3JtYXREYXRlKHRvZGF5LCdN
TU0gZCwgeScpICsgJywgZnJvbSAnICsgbGluayArICc8L3A+JzsKCXZhciBtbGEg
PSAnPHA+JyArIHNvdXJjZSArICcuICInICsgaGVhZGxpbmUgKyAnLiIgPHU+U2Np
ZW5jZURhaWx5PC91PiAnICsgZm9ybWF0RGF0ZShtZXRhLCdkIE1NTSB5JykgKyAn
LiAnICsgZm9ybWF0RGF0ZSh0b2RheSwnZCBNTU0geScpICsgJyAmbHQ7JyArIGxp
bmsgKyAnJmd0Oy4nICsgJzwvcD4nOwoJY2l0ZV9hcGEuaW5uZXJIVE1MID0gYXBh
OwoJY2l0ZV9tbGEuaW5uZXJIVE1MID0gbWxhOwoKCXZhciBsaW5rID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NpdGVfbGluaycpOwoKCXZhciBvZmZzZXQgPSBQ
b3NpdGlvbi5jdW11bGF0aXZlT2Zmc2V0KGxpbmspOwoJZm9ybS5zdHlsZS5sZWZ0
ID0gKG9mZnNldFswXSAtIDE3MCkgKyAncHgnOwoJZm9ybS5zdHlsZS50b3AgPSAo
b2Zmc2V0WzFdICsgbGluay5vZmZzZXRIZWlnaHQgKyAzKSArICdweCc7Cglmb3Jt
LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwp9CgpmdW5jdGlvbiBjaXRlaXQoKSB7
CglpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NpdGVfc3R5bGVfYXBhJyku
Y2hlY2tlZCkgewoJCWh0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2l0
ZV9hcGEnKS5pbm5lckhUTUw7Cgl9IGVsc2UgewoJCWh0bWwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY2l0ZV9tbGEnKS5pbm5lckhUTUw7Cgl9CglwbGFpbiA9
IGh0bWwucmVwbGFjZSgvPFtePl0rPi9pZywiIik7CglwbGFpbiA9IHBsYWluLnJl
cGxhY2UoIiZsdDsiLCI8Iik7CglwbGFpbiA9IHBsYWluLnJlcGxhY2UoIiZndDsi
LCI+Iik7Cgljb3B5X2NsaXAoaHRtbCxwbGFpbik7Cn0KCmZ1bmN0aW9uIGNpdGF0
aW9uKCkgewoJdmFyIG1ldGFkYXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J21ldGFkYXRlJykuY29udGVudDsKCXZhciBzb3VyY2UgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc291cmNlJykuaW5uZXJIVE1MOwoJdmFyIHRpdGxlID0gZG9j
dW1lbnQudGl0bGU7Cgl2YXIgaGVhZGxpbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnaGVhZGxpbmUnKS5pbm5lckhUTUw7Cgl2YXIgbGluayA9IGRvY3VtZW50
LmxvY2F0aW9uLmhyZWY7Cgl2YXIgY2l0YXRpb25hcGEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY2l0YXRpb25hcGEnKTsKCXZhciBjaXRhdGlvbm1sYSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaXRhdGlvbm1sYScpOwoJdmFyIGNpdGF0
aW9udGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaXRhdGlvbnRleHQn
KTsKCWxpbmsgPSBsaW5rLnJlcGxhY2UoJy9yZWxlYXNlcy8nLCcmc2h5OzxzcGFu
IHN0eWxlPSJmb250LXNpemU6IDFweCI+IDwvc3Bhbj4vcmVsZWFzZXMvJyk7Cgl2
YXIgbWV0YSA9IG5ldyBEYXRlKGdldERhdGVGcm9tRm9ybWF0KG1ldGFkYXRlLCd5
LU1NLWRkJykpOwoJdmFyIHRvZGF5ID0gbmV3IERhdGUoKTsKCXZhciBhcGEgPSBz
b3VyY2UgKyAnICgnICsgZm9ybWF0RGF0ZShtZXRhLCd5LCBNTU0gZCcpICsgJyku
ICcgKyB0aXRsZSArICcuIDxlbT5TY2llbmNlRGFpbHk8L2VtPi4gUmV0cmlldmVk
ICcgKyBmb3JtYXREYXRlKHRvZGF5LCdNTU0gZCwgeScpICsgJywgZnJvbSAnICsg
bGluazsKCXZhciBtbGEgPSBzb3VyY2UgKyAnLiAiJyArIGhlYWRsaW5lICsgJy4i
IDx1PlNjaWVuY2VEYWlseTwvdT4gJyArIGZvcm1hdERhdGUobWV0YSwnZCBNTU0g
eScpICsgJy4gJyArIGZvcm1hdERhdGUodG9kYXksJ2QgTU1NIHknKSArICcgJmx0
OycgKyBsaW5rICsgJyZndDsuJzsKCWlmIChjaXRhdGlvbmFwYS5jaGVja2VkKSB7
CgkJY2l0YXRpb250ZXh0LmlubmVySFRNTCA9IGFwYTsKCX0gZWxzZSB7CgkJY2l0
YXRpb250ZXh0LmlubmVySFRNTCA9IG1sYTsKCX0KfQoKZnVuY3Rpb24gY29weV9j
bGlwKGh0bWwscGxhaW4pIHsKCXZhciB0ZXh0SFRNTCA9IGh0bWw7Cgl2YXIgdGV4
dFBsYWluID0gcGxhaW47CglpZiAod2luZG93LmNsaXBib2FyZERhdGEgJiYgd2lu
ZG93LmNsaXBib2FyZERhdGEuc2V0RGF0YSkgewoJCXdpbmRvdy5jbGlwYm9hcmRE
YXRhLnNldERhdGEoIlRleHQiLCB0ZXh0UGxhaW4pOwoJfSBlbHNlIGlmICh3aW5k
b3cubmV0c2NhcGUpIHsKCQluZXRzY2FwZS5zZWN1cml0eS5Qcml2aWxlZ2VNYW5h
Z2VyLmVuYWJsZVByaXZpbGVnZSgnVW5pdmVyc2FsWFBDb25uZWN0Jyk7CgkJdmFy
IHRyYW5zID0gQ29tcG9uZW50cy5jbGFzc2VzWyJAbW96aWxsYS5vcmcvd2lkZ2V0
L3RyYW5zZmVyYWJsZTsxIl0uY3JlYXRlSW5zdGFuY2UoQ29tcG9uZW50cy5pbnRl
cmZhY2VzLm5zSVRyYW5zZmVyYWJsZSk7CgkJaWYgKCF0cmFucykgcmV0dXJuIGZh
bHNlOwoJCXRyYW5zLmFkZERhdGFGbGF2b3IoInRleHQvaHRtbCIpOwoJCXZhciBo
dG1sc3RyaW5nID0gQ29tcG9uZW50cy5jbGFzc2VzWyJAbW96aWxsYS5vcmcvc3Vw
cG9ydHMtc3RyaW5nOzEiXS5jcmVhdGVJbnN0YW5jZShDb21wb25lbnRzLmludGVy
ZmFjZXMubnNJU3VwcG9ydHNTdHJpbmcpOwoJCWlmICghaHRtbHN0cmluZykgcmV0
dXJuIGZhbHNlOwoJCWh0bWxzdHJpbmcuZGF0YSA9IHRleHRIVE1MOwoJCXRyYW5z
LnNldFRyYW5zZmVyRGF0YSgidGV4dC9odG1sIiwgaHRtbHN0cmluZywgdGV4dEhU
TUwubGVuZ3RoICogMik7CgkJdHJhbnMuYWRkRGF0YUZsYXZvcigidGV4dC91bmlj
b2RlIik7CgkJdmFyIHVuaWNvZGVzdHJpbmcgPSBDb21wb25lbnRzLmNsYXNzZXNb
IkBtb3ppbGxhLm9yZy9zdXBwb3J0cy1zdHJpbmc7MSJdLmNyZWF0ZUluc3RhbmNl
KENvbXBvbmVudHMuaW50ZXJmYWNlcy5uc0lTdXBwb3J0c1N0cmluZyk7CgkJdW5p
Y29kZXN0cmluZy5kYXRhID0gdGV4dFBsYWluOwoJCXRyYW5zLnNldFRyYW5zZmVy
RGF0YSgidGV4dC91bmljb2RlIiwgdW5pY29kZXN0cmluZywgdGV4dFBsYWluLmxl
bmd0aCAqIDIpOwoJCXZhciBjbGlwYm9hcmQgPSBDb21wb25lbnRzLmNsYXNzZXNb
IkBtb3ppbGxhLm9yZy93aWRnZXQvY2xpcGJvYXJkOzEiXS5nZXRTZXJ2aWNlKENv
bXBvbmVudHMuaW50ZXJmYWNlcy5uc0lDbGlwYm9hcmQpOwoJCWlmICghY2xpcGJv
YXJkKSByZXR1cm4gZmFsc2U7CgkJY2xpcGJvYXJkLnNldERhdGEodHJhbnMsIG51
bGwsIENvbXBvbmVudHMuaW50ZXJmYWNlcy5uc0lDbGlwYm9hcmQua0dsb2JhbENs
aXBib2FyZCk7Cgl9IGVsc2UgewoJCWFsZXJ0KCJZb3VyIGJyb3dzZXIgZG9lcyBu
b3Qgc3VwcG9ydCBhdXRvbWF0aWMgY29weWluZyB0byB0aGUgY2xpcGJvYXJkLiBQ
bGVhc2Ugc2VsZWN0IHRoZSB0ZXh0IGFuZCBjb3B5IGl0IG1hbnVhbGx5IChlLmcu
LCBDdHJsLUMpLiIpOwoJCXJldHVybiBmYWxzZTsKCX0KCWFsZXJ0KCJUaGUgZm9s
bG93aW5nIHdhcyBjb3BpZWQgdG8geW91ciBjbGlwYm9hcmQ6XG5cbiIgKyB0ZXh0
UGxhaW4pOwoJcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBlbWFpbHBhZ2UoKSB7
Cgl2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbWFpbF9mb3Jt
Jyk7CgkKCWlmIChmb3JtLnN0eWxlLmRpc3BsYXkgPT0gJ2Jsb2NrJykgewoJCWZv
cm0uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCQlyZXR1cm47Cgl9CgoJdmFyIGxp
bmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1haWxfbGluaycpOwoKCXZh
ciBvZmZzZXQgPSBQb3NpdGlvbi5jdW11bGF0aXZlT2Zmc2V0KGxpbmspOwoJZm9y
bS5zdHlsZS5sZWZ0ID0gKG9mZnNldFswXSAtIDE3MCkgKyAncHgnOwoJZm9ybS5z
dHlsZS50b3AgPSAob2Zmc2V0WzFdICsgbGluay5vZmZzZXRIZWlnaHQgKyAzKSAr
ICdweCc7Cglmb3JtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwp9CgpmdW5jdGlv
biBnZXR4bWxodHRwKCkgewoJdmFyIHhtbGh0dHAgPSBmYWxzZTsKCXRyeSB7CgkJ
eG1saHR0cCA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOwoJ
fSBjYXRjaChlKSB7CgkJdHJ5IHsKCQkJeG1saHR0cCA9IG5ldyBBY3RpdmVYT2Jq
ZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpOwoJCX0gY2F0Y2goRSkgewoJCQl4bWxo
dHRwID0gZmFsc2U7CgkJfQoJfQoJaWYgKCF4bWxodHRwICYmIHR5cGVvZiBYTUxI
dHRwUmVxdWVzdCE9InVuZGVmaW5lZCIpIHsKCQl4bWxodHRwID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7Cgl9CglyZXR1cm4geG1saHR0cDsKfQoKZnVuY3Rpb24gZW1h
aWxfcHJvY2VzcygpIHsKCWVtYWlsX29iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdlbWFpbF9maWVsZHMnKTsKCWVtYWlsSFRNTCA9IGVtYWlsX29iai5pbm5l
ckhUTUw7Cgl2YXIgZW1haWxlciA9ICcvZW1haWxlci5waHAnOwoJdmFyIHVybCA9
IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7Cgl2YXIgdGl0bGUgPSBkb2N1bWVudC50
aXRsZTsKCXZhciBzdW1tYXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21l
dGFzdW1tYXJ5JykuY29udGVudDsKCXZhciB0b19hZGRyZXNzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2VtYWlsX3RvJykudmFsdWU7Cgl2YXIgZnJvbV9hZGRy
ZXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VtYWlsX2Zyb20nKS52YWx1
ZTsKCXZhciBmcm9tX25hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW1h
aWxfbmFtZScpLnZhbHVlOwoJdmFyIGVtYWlsX3NlbGYgPSAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2VtYWlsX3NlbGYnKS5jaGVja2VkID09IHRydWUpPzE6MDsK
CXZhciB2YXJpYWJsZXMgPSAndXJsPScgKyBlc2NhcGUodXJsKSArICcmdGl0bGU9
JyArIGVzY2FwZSh0aXRsZSkgKyAnJnN1bW1hcnk9JyArIGVzY2FwZShzdW1tYXJ5
KSArICcmdG89JyArIGVzY2FwZSh0b19hZGRyZXNzKSArICcmZnJvbT0nICsgZXNj
YXBlKGZyb21fYWRkcmVzcykgKyAnJm5hbWU9JyArIGVzY2FwZShmcm9tX25hbWUp
ICsgJyZzZWxmPScgKyBlbWFpbF9zZWxmOwoJeG1saHR0cCA9IGdldHhtbGh0dHAo
KTsKCXhtbGh0dHAub3BlbigiUE9TVCIsIGVtYWlsZXIsIHRydWUpOwoJeG1saHR0
cC5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCdhcHBsaWNhdGlvbi94
LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgnKTsKCXhtbGh0dHAu
b25yZWFkeXN0YXRlY2hhbmdlID0gZW1haWxfY2hhbmdlOwoJeG1saHR0cC5zZW5k
KHZhcmlhYmxlcyk7Cn0KCmZ1bmN0aW9uIGVtYWlsX2NoYW5nZSgpIHsKCWlmICh4
bWxodHRwLnJlYWR5U3RhdGU9PTQpIHsKCQlpZiAoeG1saHR0cC5zdGF0dXM9PTIw
MCkgewoJCQllbWFpbF9vYmouaW5uZXJIVE1MID0geG1saHR0cC5yZXNwb25zZVRl
eHQ7CgkJCXNldFRpbWVvdXQoJ2VtYWlsX29iai5pbm5lckhUTUwgPSBlbWFpbEhU
TUwnLDI5OTkpOwoJCX0gZWxzZSB7CgkJCWVtYWlsX29iai5pbm5lckhUTUwgPSAn
QSBwcm9ibGVtIHdhcyBlbmNvdW50ZXJlZCAtLSBlbWFpbCBub3Qgc2VudC4nOwoJ
CQlzZXRUaW1lb3V0KCdlbWFpbF9vYmouaW5uZXJIVE1MID0gZW1haWxIVE1MJywy
OTk5KTsKCQl9Cgl9IGVsc2UgewoJCWVtYWlsX29iai5pbm5lckhUTUwgPSAnU2Vu
ZGluZyAuLi4nOwoJfQp9CgpmdW5jdGlvbiBmZWVkYmFjaygpIHsKCXZhciBmb3Jt
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZlZWRiYWNrX2Zvcm0nKTsKCWZl
ZWRiYWNrX29iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmZWVkYmFja19y
ZXNwb25zZScpOwoJdmFyIGZlZWRiYWNrZXIgPSAnL2ZlZWRiYWNrLnBocCc7Cgl2
YXIgdXJsID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjsKCXZhciB0aXRsZSA9IGRv
Y3VtZW50LnRpdGxlOwoJdmFyIGVtYWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ZlZWRiYWNrX2VtYWlsJykudmFsdWU7Cgl2YXIgbmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdmZWVkYmFja19uYW1lJykudmFsdWU7Cgl2YXIgY29t
bWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmVlZGJhY2tfY29tbWVu
dHMnKS52YWx1ZTsKCXZhciB1c2VyYWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50
OwoJdmFyIHZhcmlhYmxlcyA9ICd1cmw9JyArIGVzY2FwZSh1cmwpICsgJyZ0aXRs
ZT0nICsgZXNjYXBlKHRpdGxlKSArICcmZnJvbT0nICsgZXNjYXBlKGVtYWlsKSAr
ICcmbmFtZT0nICsgZXNjYXBlKG5hbWUpICsgJyZjb21tZW50cz0nICsgZXNjYXBl
KGNvbW1lbnRzKSArICcmdXNlcmFnZW50PScgKyBlc2NhcGUodXNlcmFnZW50KTsK
CXhtbGh0dHAgPSBnZXR4bWxodHRwKCk7Cgl4bWxodHRwLm9wZW4oIlBPU1QiLCBm
ZWVkYmFja2VyLCB0cnVlKTsKCXhtbGh0dHAuc2V0UmVxdWVzdEhlYWRlcignQ29u
dGVudC1UeXBlJywnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBj
aGFyc2V0PVVURi04Jyk7Cgl4bWxodHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZl
ZWRiYWNrX2NoYW5nZTsKCXhtbGh0dHAuc2VuZCh2YXJpYWJsZXMpOwp9CgpmdW5j
dGlvbiBmZWVkYmFja19jaGFuZ2UoKSB7CglpZiAoeG1saHR0cC5yZWFkeVN0YXRl
PT00KSB7CgkJaWYgKHhtbGh0dHAuc3RhdHVzPT0yMDApIHsKCQkJZmVlZGJhY2tf
b2JqLmlubmVySFRNTCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0OwoJCX0gZWxzZSB7
CgkJCWZlZWRiYWNrX29iai5pbm5lckhUTUwgPSAnUHJvYmxlbSBlbmNvdW50ZXJl
ZCAtLSBmZWVkYmFjayBub3Qgc2VudC4nOwoJCX0KCX0gZWxzZSB7CgkJZmVlZGJh
Y2tfb2JqLmlubmVySFRNTCA9ICdTZW5kaW5nIC4uLic7Cgl9Cn0KCmZ1bmN0aW9u
IHJlZGlyZWN0KGFyZykgewoJdXJsID0gYXJnLnJlcGxhY2UoL15odHRwW14/XSo/
XD91cmw9LywnJyk7Ci8vCWFsZXJ0KHVybCk7Cglsb2NhdGlvbiA9IHVybDsKfQoK
ZnVuY3Rpb24gZ290b3N0b3J5KG51bSkgewoJZm9yICh2YXIgaT0xOyBpPD1zdG9y
aWVzLmxlbmd0aDsgaSsrKSB7CgkJaWYgKGkgPT0gbnVtKSB7CgkJCWRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzdG9yeScraSkuc3R5bGUuZGlzcGxheSA9ICdibG9j
aycKCQl9IGVsc2UgewoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3Rvcnkn
K2kpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgkJfQoJfQp9Cgp2YXIgY3VycmVu
dFBhbmVsID0gMTsKZnVuY3Rpb24gY2hhbmdlcGFuZWwoY2hhbmdlKSB7CgljdXJy
ZW50UGFuZWwgKz0gY2hhbmdlOwoJaWYgKGN1cnJlbnRQYW5lbCA8IDEpIHsKCQlj
dXJyZW50UGFuZWwgPSAxOwoJfSBlbHNlIGlmIChjdXJyZW50UGFuZWwgPiBwYW5l
bHMubGVuZ3RoKSB7CgkJY3VycmVudFBhbmVsID0gcGFuZWxzLmxlbmd0aDsKCX0K
CWZvciAodmFyIGk9MTsgaTw9cGFuZWxzLmxlbmd0aDsgaSsrKSB7CgkJaWYgKGkg
PT0gY3VycmVudFBhbmVsKSB7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdw
YW5lbCcraSkuc3R5bGUuZGlzcGxheSA9ICdibG9jaycKCQkJZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2VkaXRpb24nKS5pbm5lckhUTUwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZWRpdGlvbicgKyBpKS5pbm5lckhUTUw7CgkJfSBlbHNlIHsK
CQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhbmVsJytpKS5zdHlsZS5kaXNw
bGF5ID0gJ25vbmUnOwoJCX0KCX0KfQoKZnVuY3Rpb24gc2V0QWN0aXZlU3R5bGVT
aGVldCh0aXRsZSkgewoJdmFyIGksIGEsIG1haW47Cglmb3IgKGk9MDsgKGE9ZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVtpXSk7IGkrKykgewoJ
CWlmIChhLmdldEF0dHJpYnV0ZSgicmVsIikuaW5kZXhPZigic3R5bGUiKSAhPSAt
MSAKCQkmJiBhLmdldEF0dHJpYnV0ZSgidGl0bGUiKSkgewoJCQlhLmRpc2FibGVk
ID0gdHJ1ZTsKCQkJaWYgKGEuZ2V0QXR0cmlidXRlKCJ0aXRsZSIpID09IHRpdGxl
KSBhLmRpc2FibGVkID0gZmFsc2U7CgkJfQoJfQp9CgpmdW5jdGlvbiBnZXRBY3Rp
dmVTdHlsZVNoZWV0KCkgewoJdmFyIGksIGE7Cglmb3IgKGk9MDsgKGE9ZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVtpXSk7IGkrKykgewoJCWlm
IChhLmdldEF0dHJpYnV0ZSgicmVsIikuaW5kZXhPZigic3R5bGUiKSAhPSAtMSAK
CQkmJiBhLmdldEF0dHJpYnV0ZSgidGl0bGUiKSAKCQkmJiAhYS5kaXNhYmxlZCkg
CgkJCXJldHVybiBhLmdldEF0dHJpYnV0ZSgidGl0bGUiKTsKCX0KCXJldHVybiBu
dWxsOwp9CgpmdW5jdGlvbiBnZXRQcmVmZXJyZWRTdHlsZVNoZWV0KCkgewoJdmFy
IGksIGE7Cglmb3IgKGk9MDsgKGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImxpbmsiKVtpXSk7IGkrKykgewoJCWlmIChhLmdldEF0dHJpYnV0ZSgicmVs
IikuaW5kZXhPZigic3R5bGUiKSAhPSAtMSAKCQkmJiBhLmdldEF0dHJpYnV0ZSgi
cmVsIikuaW5kZXhPZigiYWx0IikgPT0gLTEgCgkJJiYgYS5nZXRBdHRyaWJ1dGUo
InRpdGxlIikpIAoJCQlyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInRpdGxlIik7Cgl9
CglyZXR1cm4gbnVsbDsKfQoKZnVuY3Rpb24gY3JlYXRlQ29va2llKG5hbWUsdmFs
dWUsZGF5cykgewoJaWYgKGRheXMpIHsKCQl2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7
CgkJZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKGRheXMqMjQqNjAqNjAq
MTAwMCkpOwoJCXZhciBleHBpcmVzID0gIjsgZXhwaXJlcz0iICsgZGF0ZS50b0dN
VFN0cmluZygpOwoJfSBlbHNlIGV4cGlyZXMgPSAiIjsKCWRvY3VtZW50LmNvb2tp
ZSA9IG5hbWUgKyAiPSIgKyB2YWx1ZSArIGV4cGlyZXMgKyAiOyBwYXRoPS8iOwp9
CgpmdW5jdGlvbiByZWFkQ29va2llKG5hbWUpIHsKCXZhciBuYW1lRVEgPSBuYW1l
ICsgIj0iOwoJdmFyIGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7Cglm
b3IgKHZhciBpPTA7IGk8Y2EubGVuZ3RoOyBpKyspIHsKCQl2YXIgYyA9IGNhW2ld
OwoJCXdoaWxlIChjLmNoYXJBdCgwKT09JyAnKSBjID0gYy5zdWJzdHJpbmcoMSxj
Lmxlbmd0aCk7CgkJaWYgKGMuaW5kZXhPZihuYW1lRVEpPT0wKQoJCQlyZXR1cm4g
Yy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCxjLmxlbmd0aCk7Cgl9CglyZXR1cm4g
bnVsbDsKfQoKLy8gVGFrZSBjb250ZW50IGluIGEgZGl2IHdpdGggaWQ9ImRlZmVy
LXh5eiIgYW5kIG1vdmUgaXQgdG8gYSBkaXYgd2l0aCBpZD0ieHl6IgpmdW5jdGlv
biByZWxvY2F0ZURlZmVycmVkQ29udGVudCgpIHsKICAgIHZhciBkYz1kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZGVmZXJyZWRDb250ZW50Iik7CiAgICB2YXIgZGl2
cz1kYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2Iik7CiAgICB2YXIgcmVwbGFj
ZW1lbnRzPW5ldyBBcnJheSgpOwogICAgZm9yKHZhciBpPTA7aTxkaXZzLmxlbmd0
aDtpKyspewogICAgICAgIHZhciBkZWZlcnJlZENvbnRlbnQgPSBkaXZzW2ldOwog
ICAgICAgIGlmIChkZWZlcnJlZENvbnRlbnQuaWQuaW5kZXhPZigiZGVmZXItIikg
PT0gMCkgewogICAgICAgICAgICB2YXIgcGxhY2VIb2xkZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChkZWZlcnJlZENvbnRlbnQuaWQuc2xpY2UoNikpOwogICAg
ICAgICAgICByZXBsYWNlbWVudHMucHVzaChbZGVmZXJyZWRDb250ZW50LCBwbGFj
ZUhvbGRlcl0pOwogICAgICAgIH0KICAgIH0KICAgIGZvcihpPTA7aTxyZXBsYWNl
bWVudHMubGVuZ3RoO2krKyl7CiAgICAgICAgcmVwbGFjZW1lbnRzW2ldWzBdLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQocmVwbGFjZW1lbnRzW2ldWzBdKTsKICAgICAg
ICByZXBsYWNlbWVudHNbaV1bMV0ucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocmVw
bGFjZW1lbnRzW2ldWzBdLCByZXBsYWNlbWVudHNbaV1bMV0pOwogICAgICAgIHJl
cGxhY2VtZW50c1tpXVswXS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgIH0K
ICAgIHJldHVybiB0cnVlOwp9Cgp2YXIgTU9OVEhfTkFNRVM9bmV3IEFycmF5KCdK
YW51YXJ5JywnRmVicnVhcnknLCdNYXJjaCcsJ0FwcmlsJywnTWF5JywnSnVuZScs
J0p1bHknLCdBdWd1c3QnLCdTZXB0ZW1iZXInLCdPY3RvYmVyJywnTm92ZW1iZXIn
LCdEZWNlbWJlcicsJ0phbicsJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bics
J0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYycpOwp2YXIgREFZX05B
TUVTPW5ldyBBcnJheSgnU3VuZGF5JywnTW9uZGF5JywnVHVlc2RheScsJ1dlZG5l
c2RheScsJ1RodXJzZGF5JywnRnJpZGF5JywnU2F0dXJkYXknLCdTdW4nLCdNb24n
LCdUdWUnLCdXZWQnLCdUaHUnLCdGcmknLCdTYXQnKTsKZnVuY3Rpb24gTFooeCkg
e3JldHVybih4PDB8fHg+OT8iIjoiMCIpK3h9CgpmdW5jdGlvbiBpc0RhdGUodmFs
LGZvcm1hdCkgewoJdmFyIGRhdGU9Z2V0RGF0ZUZyb21Gb3JtYXQodmFsLGZvcm1h
dCk7CglpZiAoZGF0ZT09MCkgeyByZXR1cm4gZmFsc2U7IH0KCXJldHVybiB0cnVl
OwoJfQoKZnVuY3Rpb24gY29tcGFyZURhdGVzKGRhdGUxLGRhdGVmb3JtYXQxLGRh
dGUyLGRhdGVmb3JtYXQyKSB7Cgl2YXIgZDE9Z2V0RGF0ZUZyb21Gb3JtYXQoZGF0
ZTEsZGF0ZWZvcm1hdDEpOwoJdmFyIGQyPWdldERhdGVGcm9tRm9ybWF0KGRhdGUy
LGRhdGVmb3JtYXQyKTsKCWlmIChkMT09MCB8fCBkMj09MCkgewoJCXJldHVybiAt
MTsKCQl9CgllbHNlIGlmIChkMSA+IGQyKSB7CgkJcmV0dXJuIDE7CgkJfQoJcmV0
dXJuIDA7Cgl9CgpmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUsZm9ybWF0KSB7Cglm
b3JtYXQ9Zm9ybWF0KyIiOwoJdmFyIHJlc3VsdD0iIjsKCXZhciBpX2Zvcm1hdD0w
OwoJdmFyIGM9IiI7Cgl2YXIgdG9rZW49IiI7Cgl2YXIgeT1kYXRlLmdldFllYXIo
KSsiIjsKCXZhciBNPWRhdGUuZ2V0TW9udGgoKSsxOwoJdmFyIGQ9ZGF0ZS5nZXRE
YXRlKCk7Cgl2YXIgRT1kYXRlLmdldERheSgpOwoJdmFyIEg9ZGF0ZS5nZXRIb3Vy
cygpOwoJdmFyIG09ZGF0ZS5nZXRNaW51dGVzKCk7Cgl2YXIgcz1kYXRlLmdldFNl
Y29uZHMoKTsKCXZhciB5eXl5LHl5LE1NTSxNTSxkZCxoaCxoLG1tLHNzLGFtcG0s
SEgsSCxLSyxLLGtrLGs7CgkvLyBDb252ZXJ0IHJlYWwgZGF0ZSBwYXJ0cyBpbnRv
IGZvcm1hdHRlZCB2ZXJzaW9ucwoJdmFyIHZhbHVlPW5ldyBPYmplY3QoKTsKCWlm
ICh5Lmxlbmd0aCA8IDQpIHt5PSIiKyh5LTArMTkwMCk7fQoJdmFsdWVbInkiXT0i
Iit5OwoJdmFsdWVbInl5eXkiXT15OwoJdmFsdWVbInl5Il09eS5zdWJzdHJpbmco
Miw0KTsKCXZhbHVlWyJNIl09TTsKCXZhbHVlWyJNTSJdPUxaKE0pOwoJdmFsdWVb
Ik1NTSJdPU1PTlRIX05BTUVTW00tMV07Cgl2YWx1ZVsiTk5OIl09TU9OVEhfTkFN
RVNbTSsxMV07Cgl2YWx1ZVsiZCJdPWQ7Cgl2YWx1ZVsiZGQiXT1MWihkKTsKCXZh
bHVlWyJFIl09REFZX05BTUVTW0UrN107Cgl2YWx1ZVsiRUUiXT1EQVlfTkFNRVNb
RV07Cgl2YWx1ZVsiSCJdPUg7Cgl2YWx1ZVsiSEgiXT1MWihIKTsKCWlmIChIPT0w
KXt2YWx1ZVsiaCJdPTEyO30KCWVsc2UgaWYgKEg+MTIpe3ZhbHVlWyJoIl09SC0x
Mjt9CgllbHNlIHt2YWx1ZVsiaCJdPUg7fQoJdmFsdWVbImhoIl09TFoodmFsdWVb
ImgiXSk7CglpZiAoSD4xMSl7dmFsdWVbIksiXT1ILTEyO30gZWxzZSB7dmFsdWVb
IksiXT1IO30KCXZhbHVlWyJrIl09SCsxOwoJdmFsdWVbIktLIl09TFoodmFsdWVb
IksiXSk7Cgl2YWx1ZVsia2siXT1MWih2YWx1ZVsiayJdKTsKCWlmIChIID4gMTEp
IHsgdmFsdWVbImEiXT0iUE0iOyB9CgllbHNlIHsgdmFsdWVbImEiXT0iQU0iOyB9
Cgl2YWx1ZVsibSJdPW07Cgl2YWx1ZVsibW0iXT1MWihtKTsKCXZhbHVlWyJzIl09
czsKCXZhbHVlWyJzcyJdPUxaKHMpOwoJd2hpbGUgKGlfZm9ybWF0IDwgZm9ybWF0
Lmxlbmd0aCkgewoJCWM9Zm9ybWF0LmNoYXJBdChpX2Zvcm1hdCk7CgkJdG9rZW49
IiI7CgkJd2hpbGUgKChmb3JtYXQuY2hhckF0KGlfZm9ybWF0KT09YykgJiYgKGlf
Zm9ybWF0IDwgZm9ybWF0Lmxlbmd0aCkpIHsKCQkJdG9rZW4gKz0gZm9ybWF0LmNo
YXJBdChpX2Zvcm1hdCsrKTsKCQkJfQoJCWlmICh2YWx1ZVt0b2tlbl0gIT0gbnVs
bCkgeyByZXN1bHQ9cmVzdWx0ICsgdmFsdWVbdG9rZW5dOyB9CgkJZWxzZSB7IHJl
c3VsdD1yZXN1bHQgKyB0b2tlbjsgfQoJCX0KCXJldHVybiByZXN1bHQ7Cgl9CgkK
ZnVuY3Rpb24gX2lzSW50ZWdlcih2YWwpIHsKCXZhciBkaWdpdHM9IjEyMzQ1Njc4
OTAiOwoJZm9yICh2YXIgaT0wOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7CgkJaWYg
KGRpZ2l0cy5pbmRleE9mKHZhbC5jaGFyQXQoaSkpPT0tMSkgeyByZXR1cm4gZmFs
c2U7IH0KCQl9CglyZXR1cm4gdHJ1ZTsKCX0KZnVuY3Rpb24gX2dldEludChzdHIs
aSxtaW5sZW5ndGgsbWF4bGVuZ3RoKSB7Cglmb3IgKHZhciB4PW1heGxlbmd0aDsg
eD49bWlubGVuZ3RoOyB4LS0pIHsKCQl2YXIgdG9rZW49c3RyLnN1YnN0cmluZyhp
LGkreCk7CgkJaWYgKHRva2VuLmxlbmd0aCA8IG1pbmxlbmd0aCkgeyByZXR1cm4g
bnVsbDsgfQoJCWlmIChfaXNJbnRlZ2VyKHRva2VuKSkgeyByZXR1cm4gdG9rZW47
IH0KCQl9CglyZXR1cm4gbnVsbDsKCX0KCQpmdW5jdGlvbiBnZXREYXRlRnJvbUZv
cm1hdCh2YWwsZm9ybWF0KSB7Cgl2YWw9dmFsKyIiOwoJZm9ybWF0PWZvcm1hdCsi
IjsKCXZhciBpX3ZhbD0wOwoJdmFyIGlfZm9ybWF0PTA7Cgl2YXIgYz0iIjsKCXZh
ciB0b2tlbj0iIjsKCXZhciB0b2tlbjI9IiI7Cgl2YXIgeCx5OwoJdmFyIG5vdz1u
ZXcgRGF0ZSgpOwoJdmFyIHllYXI9bm93LmdldFllYXIoKTsKCXZhciBtb250aD1u
b3cuZ2V0TW9udGgoKSsxOwoJdmFyIGRhdGU9MTsKCXZhciBoaD1ub3cuZ2V0SG91
cnMoKTsKCXZhciBtbT1ub3cuZ2V0TWludXRlcygpOwoJdmFyIHNzPW5vdy5nZXRT
ZWNvbmRzKCk7Cgl2YXIgYW1wbT0iIjsKCQoJd2hpbGUgKGlfZm9ybWF0IDwgZm9y
bWF0Lmxlbmd0aCkgewoJCS8vIEdldCBuZXh0IHRva2VuIGZyb20gZm9ybWF0IHN0
cmluZwoJCWM9Zm9ybWF0LmNoYXJBdChpX2Zvcm1hdCk7CgkJdG9rZW49IiI7CgkJ
d2hpbGUgKChmb3JtYXQuY2hhckF0KGlfZm9ybWF0KT09YykgJiYgKGlfZm9ybWF0
IDwgZm9ybWF0Lmxlbmd0aCkpIHsKCQkJdG9rZW4gKz0gZm9ybWF0LmNoYXJBdChp
X2Zvcm1hdCsrKTsKCQkJfQoJCS8vIEV4dHJhY3QgY29udGVudHMgb2YgdmFsdWUg
YmFzZWQgb24gZm9ybWF0IHRva2VuCgkJaWYgKHRva2VuPT0ieXl5eSIgfHwgdG9r
ZW49PSJ5eSIgfHwgdG9rZW49PSJ5IikgewoJCQlpZiAodG9rZW49PSJ5eXl5Iikg
eyB4PTQ7eT00OyB9CgkJCWlmICh0b2tlbj09Inl5IikgICB7IHg9Mjt5PTI7IH0K
CQkJaWYgKHRva2VuPT0ieSIpICAgIHsgeD0yO3k9NDsgfQoJCQl5ZWFyPV9nZXRJ
bnQodmFsLGlfdmFsLHgseSk7CgkJCWlmICh5ZWFyPT1udWxsKSB7IHJldHVybiAw
OyB9CgkJCWlfdmFsICs9IHllYXIubGVuZ3RoOwoJCQlpZiAoeWVhci5sZW5ndGg9
PTIpIHsKCQkJCWlmICh5ZWFyID4gNzApIHsgeWVhcj0xOTAwKyh5ZWFyLTApOyB9
CgkJCQllbHNlIHsgeWVhcj0yMDAwKyh5ZWFyLTApOyB9CgkJCQl9CgkJCX0KCQll
bHNlIGlmICh0b2tlbj09Ik1NTSJ8fHRva2VuPT0iTk5OIil7CgkJCW1vbnRoPTA7
CgkJCWZvciAodmFyIGk9MDsgaTxNT05USF9OQU1FUy5sZW5ndGg7IGkrKykgewoJ
CQkJdmFyIG1vbnRoX25hbWU9TU9OVEhfTkFNRVNbaV07CgkJCQlpZiAodmFsLnN1
YnN0cmluZyhpX3ZhbCxpX3ZhbCttb250aF9uYW1lLmxlbmd0aCkudG9Mb3dlckNh
c2UoKT09bW9udGhfbmFtZS50b0xvd2VyQ2FzZSgpKSB7CgkJCQkJaWYgKHRva2Vu
PT0iTU1NInx8KHRva2VuPT0iTk5OIiYmaT4xMSkpIHsKCQkJCQkJbW9udGg9aSsx
OwoJCQkJCQlpZiAobW9udGg+MTIpIHsgbW9udGggLT0gMTI7IH0KCQkJCQkJaV92
YWwgKz0gbW9udGhfbmFtZS5sZW5ndGg7CgkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJ
CQkJfQoJCQkJfQoJCQlpZiAoKG1vbnRoIDwgMSl8fChtb250aD4xMikpe3JldHVy
biAwO30KCQkJfQoJCWVsc2UgaWYgKHRva2VuPT0iRUUifHx0b2tlbj09IkUiKXsK
CQkJZm9yICh2YXIgaT0wOyBpPERBWV9OQU1FUy5sZW5ndGg7IGkrKykgewoJCQkJ
dmFyIGRheV9uYW1lPURBWV9OQU1FU1tpXTsKCQkJCWlmICh2YWwuc3Vic3RyaW5n
KGlfdmFsLGlfdmFsK2RheV9uYW1lLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09ZGF5
X25hbWUudG9Mb3dlckNhc2UoKSkgewoJCQkJCWlfdmFsICs9IGRheV9uYW1lLmxl
bmd0aDsKCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgkJCX0KCQllbHNlIGlmICh0
b2tlbj09Ik1NInx8dG9rZW49PSJNIikgewoJCQltb250aD1fZ2V0SW50KHZhbCxp
X3ZhbCx0b2tlbi5sZW5ndGgsMik7CgkJCWlmKG1vbnRoPT1udWxsfHwobW9udGg8
MSl8fChtb250aD4xMikpe3JldHVybiAwO30KCQkJaV92YWwrPW1vbnRoLmxlbmd0
aDt9CgkJZWxzZSBpZiAodG9rZW49PSJkZCJ8fHRva2VuPT0iZCIpIHsKCQkJZGF0
ZT1fZ2V0SW50KHZhbCxpX3ZhbCx0b2tlbi5sZW5ndGgsMik7CgkJCWlmKGRhdGU9
PW51bGx8fChkYXRlPDEpfHwoZGF0ZT4zMSkpe3JldHVybiAwO30KCQkJaV92YWwr
PWRhdGUubGVuZ3RoO30KCQllbHNlIGlmICh0b2tlbj09ImhoInx8dG9rZW49PSJo
IikgewoJCQloaD1fZ2V0SW50KHZhbCxpX3ZhbCx0b2tlbi5sZW5ndGgsMik7CgkJ
CWlmKGhoPT1udWxsfHwoaGg8MSl8fChoaD4xMikpe3JldHVybiAwO30KCQkJaV92
YWwrPWhoLmxlbmd0aDt9CgkJZWxzZSBpZiAodG9rZW49PSJISCJ8fHRva2VuPT0i
SCIpIHsKCQkJaGg9X2dldEludCh2YWwsaV92YWwsdG9rZW4ubGVuZ3RoLDIpOwoJ
CQlpZihoaD09bnVsbHx8KGhoPDApfHwoaGg+MjMpKXtyZXR1cm4gMDt9CgkJCWlf
dmFsKz1oaC5sZW5ndGg7fQoJCWVsc2UgaWYgKHRva2VuPT0iS0sifHx0b2tlbj09
IksiKSB7CgkJCWhoPV9nZXRJbnQodmFsLGlfdmFsLHRva2VuLmxlbmd0aCwyKTsK
CQkJaWYoaGg9PW51bGx8fChoaDwwKXx8KGhoPjExKSl7cmV0dXJuIDA7fQoJCQlp
X3ZhbCs9aGgubGVuZ3RoO30KCQllbHNlIGlmICh0b2tlbj09ImtrInx8dG9rZW49
PSJrIikgewoJCQloaD1fZ2V0SW50KHZhbCxpX3ZhbCx0b2tlbi5sZW5ndGgsMik7
CgkJCWlmKGhoPT1udWxsfHwoaGg8MSl8fChoaD4yNCkpe3JldHVybiAwO30KCQkJ
aV92YWwrPWhoLmxlbmd0aDtoaC0tO30KCQllbHNlIGlmICh0b2tlbj09Im1tInx8
dG9rZW49PSJtIikgewoJCQltbT1fZ2V0SW50KHZhbCxpX3ZhbCx0b2tlbi5sZW5n
dGgsMik7CgkJCWlmKG1tPT1udWxsfHwobW08MCl8fChtbT41OSkpe3JldHVybiAw
O30KCQkJaV92YWwrPW1tLmxlbmd0aDt9CgkJZWxzZSBpZiAodG9rZW49PSJzcyJ8
fHRva2VuPT0icyIpIHsKCQkJc3M9X2dldEludCh2YWwsaV92YWwsdG9rZW4ubGVu
Z3RoLDIpOwoJCQlpZihzcz09bnVsbHx8KHNzPDApfHwoc3M+NTkpKXtyZXR1cm4g
MDt9CgkJCWlfdmFsKz1zcy5sZW5ndGg7fQoJCWVsc2UgaWYgKHRva2VuPT0iYSIp
IHsKCQkJaWYgKHZhbC5zdWJzdHJpbmcoaV92YWwsaV92YWwrMikudG9Mb3dlckNh
c2UoKT09ImFtIikge2FtcG09IkFNIjt9CgkJCWVsc2UgaWYgKHZhbC5zdWJzdHJp
bmcoaV92YWwsaV92YWwrMikudG9Mb3dlckNhc2UoKT09InBtIikge2FtcG09IlBN
Ijt9CgkJCWVsc2Uge3JldHVybiAwO30KCQkJaV92YWwrPTI7fQoJCWVsc2UgewoJ
CQlpZiAodmFsLnN1YnN0cmluZyhpX3ZhbCxpX3ZhbCt0b2tlbi5sZW5ndGgpIT10
b2tlbikge3JldHVybiAwO30KCQkJZWxzZSB7aV92YWwrPXRva2VuLmxlbmd0aDt9
CgkJCX0KCQl9CgkvLyBJZiB0aGVyZSBhcmUgYW55IHRyYWlsaW5nIGNoYXJhY3Rl
cnMgbGVmdCBpbiB0aGUgdmFsdWUsIGl0IGRvZXNuJ3QgbWF0Y2gKCWlmIChpX3Zh
bCAhPSB2YWwubGVuZ3RoKSB7IHJldHVybiAwOyB9CgkvLyBJcyBkYXRlIHZhbGlk
IGZvciBtb250aD8KCWlmIChtb250aD09MikgewoJCS8vIENoZWNrIGZvciBsZWFw
IHllYXIKCQlpZiAoICggKHllYXIlND09MCkmJih5ZWFyJTEwMCAhPSAwKSApIHx8
ICh5ZWFyJTQwMD09MCkgKSB7IC8vIGxlYXAgeWVhcgoJCQlpZiAoZGF0ZSA+IDI5
KXsgcmV0dXJuIDA7IH0KCQkJfQoJCWVsc2UgeyBpZiAoZGF0ZSA+IDI4KSB7IHJl
dHVybiAwOyB9IH0KCQl9CglpZiAoKG1vbnRoPT00KXx8KG1vbnRoPT02KXx8KG1v
bnRoPT05KXx8KG1vbnRoPT0xMSkpIHsKCQlpZiAoZGF0ZSA+IDMwKSB7IHJldHVy
biAwOyB9CgkJfQoJLy8gQ29ycmVjdCBob3VycyB2YWx1ZQoJaWYgKGhoPDEyICYm
IGFtcG09PSJQTSIpIHsgaGg9aGgtMCsxMjsgfQoJZWxzZSBpZiAoaGg+MTEgJiYg
YW1wbT09IkFNIikgeyBoaC09MTI7IH0KCXZhciBuZXdkYXRlPW5ldyBEYXRlKHll
YXIsbW9udGgtMSxkYXRlLGhoLG1tLHNzKTsKCXJldHVybiBuZXdkYXRlLmdldFRp
bWUoKTsKCX0KCmZ1bmN0aW9uIHBhcnNlRGF0ZSh2YWwpIHsKCXZhciBwcmVmZXJF
dXJvPShhcmd1bWVudHMubGVuZ3RoPT0yKT9hcmd1bWVudHNbMV06ZmFsc2U7Cgln
ZW5lcmFsRm9ybWF0cz1uZXcgQXJyYXkoJ3ktTS1kJywnTU1NIGQsIHknLCdNTU0g
ZCx5JywneS1NTU0tZCcsJ2QtTU1NLXknLCdNTU0gZCcpOwoJbW9udGhGaXJzdD1u
ZXcgQXJyYXkoJ00vZC95JywnTS1kLXknLCdNLmQueScsJ01NTS1kJywnTS9kJywn
TS1kJyk7CglkYXRlRmlyc3QgPW5ldyBBcnJheSgnZC9NL3knLCdkLU0teScsJ2Qu
TS55JywnZC1NTU0nLCdkL00nLCdkLU0nKTsKCXZhciBjaGVja0xpc3Q9bmV3IEFy
cmF5KCdnZW5lcmFsRm9ybWF0cycscHJlZmVyRXVybz8nZGF0ZUZpcnN0JzonbW9u
dGhGaXJzdCcscHJlZmVyRXVybz8nbW9udGhGaXJzdCc6J2RhdGVGaXJzdCcpOwoJ
dmFyIGQ9bnVsbDsKCWZvciAodmFyIGk9MDsgaTxjaGVja0xpc3QubGVuZ3RoOyBp
KyspIHsKCQl2YXIgbD13aW5kb3dbY2hlY2tMaXN0W2ldXTsKCQlmb3IgKHZhciBq
PTA7IGo8bC5sZW5ndGg7IGorKykgewoJCQlkPWdldERhdGVGcm9tRm9ybWF0KHZh
bCxsW2pdKTsKCQkJaWYgKGQhPTApIHsgcmV0dXJuIG5ldyBEYXRlKGQpOyB9CgkJ
CX0KCQl9CglyZXR1cm4gbnVsbDsKCX0KCmZ1bmN0aW9uIHR5cGVTY3JvbGxlcigp
IHsKCWlmICh0eXBlSW50ID09IDApIHsKCQl0b3RhbEludCA9IDE7Cgl9IGVsc2Ug
ewoJCXRvdGFsSW50Kys7CgkJaWYgKHRvdGFsSW50ID4gMjQpIHJldHVybjsKCX0K
CXR5cGVJbnQrKzsKCWlmICh0eXBlSW50ID4gOCkgewoJCXR5cGVJbnQgPSAxOwoJ
fQoJZGlzcGxheVRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgianVzdGlu
IiArIHR5cGVJbnQpLmlubmVySFRNTDsKCXN0cmlwcGVkVGV4dCA9IGRpc3BsYXlU
ZXh0LnJlcGxhY2UoLzxbXj5dKj4vZywnJyk7CglpZiAoc3RyaXBwZWRUZXh0Lmxl
bmd0aCA+IDQ3KSB7CgkJdHJ1bmNhdGVkVGV4dCA9IHN0cmlwcGVkVGV4dC5zdWJz
dHJpbmcoMCw0NCk7CgkJbGFzdHNwYWNlID0gdHJ1bmNhdGVkVGV4dC5sYXN0SW5k
ZXhPZignICcpOwoJCXRydW5jYXRlZFRleHQgPSB0cnVuY2F0ZWRUZXh0LnN1YnN0
cmluZygwLGxhc3RzcGFjZSk7CgkJZGlzcGxheVRleHQgPSBkaXNwbGF5VGV4dC5z
dWJzdHJpbmcoMCxkaXNwbGF5VGV4dC5pbmRleE9mKCc+JykrMSkgKyB0cnVuY2F0
ZWRUZXh0ICsgJyAuLi48L2E+JzsKCX0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJqdXN0aW5kaXNwbGF5IikuaW5uZXJIVE1MID0gZGlzcGxheVRleHQ7CglzZXRU
aW1lb3V0KCd0eXBlU2Nyb2xsZXIoKScsNTAwMCk7Cn0KCmFkZExvYWRFdmVudChm
dW5jdGlvbigpIHsKCXN1Y2tlcmZpc2goc2ZIb3ZlciwgIkxJIiwgIm5hdiIpOwp9
KTsKCmFkZExvYWRFdmVudChmdW5jdGlvbigpIHsKCXN1Y2tlcmZpc2goc2ZIb3Zl
ciwgIkxJIiwgInNlY3Rpb250YWJzIik7Cn0pOwoKLyoKYWRkTG9hZEV2ZW50KGZ1
bmN0aW9uKCkgewoJdmFyIGNvb2tpZSA9IHJlYWRDb29raWUoInN0eWxlIik7Cgl2
YXIgdGl0bGUgPSBjb29raWUgPyBjb29raWUgOiBnZXRQcmVmZXJyZWRTdHlsZVNo
ZWV0KCk7CglzZXRBY3RpdmVTdHlsZVNoZWV0KHRpdGxlKTsKfSk7CgphZGRVbmxv
YWRFdmVudChmdW5jdGlvbigpIHsKCXZhciB0aXRsZSA9IGdldEFjdGl2ZVN0eWxl
U2hlZXQoKTsKCWNyZWF0ZUNvb2tpZSgic3R5bGUiLHRpdGxlLDM2NSk7Cn0pOwoK
dmFyIGNvb2tpZSA9IHJlYWRDb29raWUoInN0eWxlIik7CnZhciB0aXRsZSA9IGNv
b2tpZSA/IGNvb2tpZSA6IGdldFByZWZlcnJlZFN0eWxlU2hlZXQoKTsKc2V0QWN0
aXZlU3R5bGVTaGVldCh0aXRsZSk7CiovCgphZGRMb2FkRXZlbnQoZnVuY3Rpb24o
KSB7Cgl2YXIgZXhjbHVkZWRvbWFpbnM9WyJsb2NhbGhvc3QiLCAiMTI3LjAuMC4x
IiwgInNjaWVuY2VkYWlseSIsICJsb2NhbC5zY2llbmNlZGFpbHkiLCAid3d3LnNj
aWVuY2VkYWlseS5jb20iLCAid3d3LnNjaWVuY2VkYWlseS5uZXQiLCAibmV3LnNj
aWVuY2VkYWlseS5jb20iLCAid3d3LnNjaWVuY2VkYWlseS5vcmciLCAic2NpZW5j
ZWRhaWx5LmNvbSIsICJzY2llbmNlZGFpbHkubmV0IiwgInNjaWVuY2VkYWlseS5v
cmciLCAiaGVhbHRob2xvZ3kuc2NpZW5jZWRhaWx5LmNvbSIsICJzY2llbmNlZGFp
bHkuaGVhbHRob2xvZ3kuY29tIiwgIm1lZGl3aXJlLnNjaWVuY2VkYWlseS5jb20i
LCAic2NpZW5jZWRhaWx5Lm1lZGl3aXJlLmNvbSIsICJoZWFsdGhjYXJlLmNhcmVl
cmJ1aWxkZXIuY29tIiwgInNjaWVuY2ViaW90ZWNoLmNhcmVlcmJ1aWxkZXIuY29t
IiwgImVuZ2luZWVyaW5nLmNhcmVlcmJ1aWxkZXIuY29tIiwgImluZm9ybWF0aW9u
dGVjaG5vbG9neS5jYXJlZXJidWlsZGVyLmNvbSIsICJ3d3cuY2FyZWVyYnVpbGRl
ci5jb20iXTsKCXZhciBleGNsdWRlZG9tYWlucyA9IGV4Y2x1ZGVkb21haW5zLmpv
aW4oInwiKTsKCXJleGNsdWRlZG9tYWlucyA9IG5ldyBSZWdFeHAoZXhjbHVkZWRv
bWFpbnMsICJpIik7Cglmb3IgKGk9MDsgaTw9KGRvY3VtZW50LmxpbmtzLmxlbmd0
aC0xKTsgaSsrKSB7CgkJaWYgKGRvY3VtZW50LmxpbmtzW2ldLmhvc3RuYW1lLnNl
YXJjaChyZXhjbHVkZWRvbWFpbnMpPT0tMSAmJiBkb2N1bWVudC5saW5rc1tpXS5o
cmVmLmluZGV4T2YoImh0dHA6IikhPS0xICYmIGRvY3VtZW50LmxpbmtzW2ldLnJl
bC5pbmRleE9mKCJ0aHVtYm5haWwiKT09LTEpIHsKCQkJZG9jdW1lbnQubGlua3Nb
aV0udGFyZ2V0PSJfYmxhbmsiOwoJCX0KCQlpZiAoZG9jdW1lbnQubGlua3NbaV0u
aHJlZi5pbmRleE9mKCIvZ290by5waHAiKSE9LTEpIHsKCQkJZG9jdW1lbnQubGlu
a3NbaV0ub25jbGljaz1uZXcgRnVuY3Rpb24oInJlZGlyZWN0KHRoaXMuaHJlZik7
IHJldHVybiBmYWxzZTsiKTsKCQl9Cgl9Cn0pOwoK

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=prototype.js
Content-Type: application/x-javascript; charset=iso-8859-1; name=prototype.js
Content-Location: http://www.sciencedaily.com/scripts/prototype.js
Content-Transfer-Encoding: Base64

LyogIFByb3RvdHlwZSBKYXZhU2NyaXB0IGZyYW1ld29yaywgdmVyc2lvbiAxLjUu
MS4xCiAqICAoYykgMjAwNS0yMDA3IFNhbSBTdGVwaGVuc29uCiAqCiAqICBQcm90
b3R5cGUgaXMgZnJlZWx5IGRpc3RyaWJ1dGFibGUgdW5kZXIgdGhlIHRlcm1zIG9m
IGFuIE1JVC1zdHlsZSBsaWNlbnNlLgogKiAgRm9yIGRldGFpbHMsIHNlZSB0aGUg
UHJvdG90eXBlIHdlYiBzaXRlOiBodHRwOi8vd3d3LnByb3RvdHlwZWpzLm9yZy8K
ICoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgUHJvdG90eXBl
ID0gewogIFZlcnNpb246ICcxLjUuMS4xJywKCiAgQnJvd3NlcjogewogICAgSUU6
ICAgICAhISh3aW5kb3cuYXR0YWNoRXZlbnQgJiYgIXdpbmRvdy5vcGVyYSksCiAg
ICBPcGVyYTogICEhd2luZG93Lm9wZXJhLAogICAgV2ViS2l0OiBuYXZpZ2F0b3Iu
dXNlckFnZW50LmluZGV4T2YoJ0FwcGxlV2ViS2l0LycpID4gLTEsCiAgICBHZWNr
bzogIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignR2Vja28nKSA+IC0xICYm
IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignS0hUTUwnKSA9PSAtMQogIH0s
CgogIEJyb3dzZXJGZWF0dXJlczogewogICAgWFBhdGg6ICEhZG9jdW1lbnQuZXZh
bHVhdGUsCiAgICBFbGVtZW50RXh0ZW5zaW9uczogISF3aW5kb3cuSFRNTEVsZW1l
bnQsCiAgICBTcGVjaWZpY0VsZW1lbnRFeHRlbnNpb25zOgogICAgICAoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2JykuX19wcm90b19fICE9PQogICAgICAgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZm9ybScpLl9fcHJvdG9fXykKICB9LAoKICBT
Y3JpcHRGcmFnbWVudDogJzxzY3JpcHRbXj5dKj4oW1xcU1xcc10qPyk8XC9zY3Jp
cHQ+JywKICBKU09ORmlsdGVyOiAvXlwvXCotc2VjdXJlLShbXHNcU10qKVwqXC9c
cyokLywKCiAgZW1wdHlGdW5jdGlvbjogZnVuY3Rpb24oKSB7IH0sCiAgSzogZnVu
Y3Rpb24oeCkgeyByZXR1cm4geCB9Cn0KCnZhciBDbGFzcyA9IHsKICBjcmVhdGU6
IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICB0aGlz
LmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgIH0KICB9Cn0K
CnZhciBBYnN0cmFjdCA9IG5ldyBPYmplY3QoKTsKCk9iamVjdC5leHRlbmQgPSBm
dW5jdGlvbihkZXN0aW5hdGlvbiwgc291cmNlKSB7CiAgZm9yICh2YXIgcHJvcGVy
dHkgaW4gc291cmNlKSB7CiAgICBkZXN0aW5hdGlvbltwcm9wZXJ0eV0gPSBzb3Vy
Y2VbcHJvcGVydHldOwogIH0KICByZXR1cm4gZGVzdGluYXRpb247Cn0KCk9iamVj
dC5leHRlbmQoT2JqZWN0LCB7CiAgaW5zcGVjdDogZnVuY3Rpb24ob2JqZWN0KSB7
CiAgICB0cnkgewogICAgICBpZiAob2JqZWN0ID09PSB1bmRlZmluZWQpIHJldHVy
biAndW5kZWZpbmVkJzsKICAgICAgaWYgKG9iamVjdCA9PT0gbnVsbCkgcmV0dXJu
ICdudWxsJzsKICAgICAgcmV0dXJuIG9iamVjdC5pbnNwZWN0ID8gb2JqZWN0Lmlu
c3BlY3QoKSA6IG9iamVjdC50b1N0cmluZygpOwogICAgfSBjYXRjaCAoZSkgewog
ICAgICBpZiAoZSBpbnN0YW5jZW9mIFJhbmdlRXJyb3IpIHJldHVybiAnLi4uJzsK
ICAgICAgdGhyb3cgZTsKICAgIH0KICB9LAoKICB0b0pTT046IGZ1bmN0aW9uKG9i
amVjdCkgewogICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqZWN0OwogICAgc3dpdGNo
KHR5cGUpIHsKICAgICAgY2FzZSAndW5kZWZpbmVkJzoKICAgICAgY2FzZSAnZnVu
Y3Rpb24nOgogICAgICBjYXNlICd1bmtub3duJzogcmV0dXJuOwogICAgICBjYXNl
ICdib29sZWFuJzogcmV0dXJuIG9iamVjdC50b1N0cmluZygpOwogICAgfQogICAg
aWYgKG9iamVjdCA9PT0gbnVsbCkgcmV0dXJuICdudWxsJzsKICAgIGlmIChvYmpl
Y3QudG9KU09OKSByZXR1cm4gb2JqZWN0LnRvSlNPTigpOwogICAgaWYgKG9iamVj
dC5vd25lckRvY3VtZW50ID09PSBkb2N1bWVudCkgcmV0dXJuOwogICAgdmFyIHJl
c3VsdHMgPSBbXTsKICAgIGZvciAodmFyIHByb3BlcnR5IGluIG9iamVjdCkgewog
ICAgICB2YXIgdmFsdWUgPSBPYmplY3QudG9KU09OKG9iamVjdFtwcm9wZXJ0eV0p
OwogICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkKICAgICAgICByZXN1bHRz
LnB1c2gocHJvcGVydHkudG9KU09OKCkgKyAnOiAnICsgdmFsdWUpOwogICAgfQog
ICAgcmV0dXJuICd7JyArIHJlc3VsdHMuam9pbignLCAnKSArICd9JzsKICB9LAoK
ICBrZXlzOiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHZhciBrZXlzID0gW107CiAg
ICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBvYmplY3QpCiAgICAgIGtleXMucHVzaChw
cm9wZXJ0eSk7CiAgICByZXR1cm4ga2V5czsKICB9LAoKICB2YWx1ZXM6IGZ1bmN0
aW9uKG9iamVjdCkgewogICAgdmFyIHZhbHVlcyA9IFtdOwogICAgZm9yICh2YXIg
cHJvcGVydHkgaW4gb2JqZWN0KQogICAgICB2YWx1ZXMucHVzaChvYmplY3RbcHJv
cGVydHldKTsKICAgIHJldHVybiB2YWx1ZXM7CiAgfSwKCiAgY2xvbmU6IGZ1bmN0
aW9uKG9iamVjdCkgewogICAgcmV0dXJuIE9iamVjdC5leHRlbmQoe30sIG9iamVj
dCk7CiAgfQp9KTsKCkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24o
KSB7CiAgdmFyIF9fbWV0aG9kID0gdGhpcywgYXJncyA9ICRBKGFyZ3VtZW50cyks
IG9iamVjdCA9IGFyZ3Muc2hpZnQoKTsKICByZXR1cm4gZnVuY3Rpb24oKSB7CiAg
ICByZXR1cm4gX19tZXRob2QuYXBwbHkob2JqZWN0LCBhcmdzLmNvbmNhdCgkQShh
cmd1bWVudHMpKSk7CiAgfQp9CgpGdW5jdGlvbi5wcm90b3R5cGUuYmluZEFzRXZl
bnRMaXN0ZW5lciA9IGZ1bmN0aW9uKG9iamVjdCkgewogIHZhciBfX21ldGhvZCA9
IHRoaXMsIGFyZ3MgPSAkQShhcmd1bWVudHMpLCBvYmplY3QgPSBhcmdzLnNoaWZ0
KCk7CiAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICByZXR1cm4gX19tZXRo
b2QuYXBwbHkob2JqZWN0LCBbZXZlbnQgfHwgd2luZG93LmV2ZW50XS5jb25jYXQo
YXJncykpOwogIH0KfQoKT2JqZWN0LmV4dGVuZChOdW1iZXIucHJvdG90eXBlLCB7
CiAgdG9Db2xvclBhcnQ6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMudG9Q
YWRkZWRTdHJpbmcoMiwgMTYpOwogIH0sCgogIHN1Y2M6IGZ1bmN0aW9uKCkgewog
ICAgcmV0dXJuIHRoaXMgKyAxOwogIH0sCgogIHRpbWVzOiBmdW5jdGlvbihpdGVy
YXRvcikgewogICAgJFIoMCwgdGhpcywgdHJ1ZSkuZWFjaChpdGVyYXRvcik7CiAg
ICByZXR1cm4gdGhpczsKICB9LAoKICB0b1BhZGRlZFN0cmluZzogZnVuY3Rpb24o
bGVuZ3RoLCByYWRpeCkgewogICAgdmFyIHN0cmluZyA9IHRoaXMudG9TdHJpbmco
cmFkaXggfHwgMTApOwogICAgcmV0dXJuICcwJy50aW1lcyhsZW5ndGggLSBzdHJp
bmcubGVuZ3RoKSArIHN0cmluZzsKICB9LAoKICB0b0pTT046IGZ1bmN0aW9uKCkg
ewogICAgcmV0dXJuIGlzRmluaXRlKHRoaXMpID8gdGhpcy50b1N0cmluZygpIDog
J251bGwnOwogIH0KfSk7CgpEYXRlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlv
bigpIHsKICByZXR1cm4gJyInICsgdGhpcy5nZXRGdWxsWWVhcigpICsgJy0nICsK
ICAgICh0aGlzLmdldE1vbnRoKCkgKyAxKS50b1BhZGRlZFN0cmluZygyKSArICct
JyArCiAgICB0aGlzLmdldERhdGUoKS50b1BhZGRlZFN0cmluZygyKSArICdUJyAr
CiAgICB0aGlzLmdldEhvdXJzKCkudG9QYWRkZWRTdHJpbmcoMikgKyAnOicgKwog
ICAgdGhpcy5nZXRNaW51dGVzKCkudG9QYWRkZWRTdHJpbmcoMikgKyAnOicgKwog
ICAgdGhpcy5nZXRTZWNvbmRzKCkudG9QYWRkZWRTdHJpbmcoMikgKyAnIic7Cn07
Cgp2YXIgVHJ5ID0gewogIHRoZXNlOiBmdW5jdGlvbigpIHsKICAgIHZhciByZXR1
cm5WYWx1ZTsKCiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gYXJndW1lbnRz
Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBsYW1iZGEgPSBh
cmd1bWVudHNbaV07CiAgICAgIHRyeSB7CiAgICAgICAgcmV0dXJuVmFsdWUgPSBs
YW1iZGEoKTsKICAgICAgICBicmVhazsKICAgICAgfSBjYXRjaCAoZSkge30KICAg
IH0KCiAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgfQp9CgovKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KCnZhciBQZXJpb2RpY2FsRXhlY3V0ZXIgPSBDbGFz
cy5jcmVhdGUoKTsKUGVyaW9kaWNhbEV4ZWN1dGVyLnByb3RvdHlwZSA9IHsKICBp
bml0aWFsaXplOiBmdW5jdGlvbihjYWxsYmFjaywgZnJlcXVlbmN5KSB7CiAgICB0
aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7CiAgICB0aGlzLmZyZXF1ZW5jeSA9IGZy
ZXF1ZW5jeTsKICAgIHRoaXMuY3VycmVudGx5RXhlY3V0aW5nID0gZmFsc2U7Cgog
ICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrKCk7CiAgfSwKCiAgcmVnaXN0ZXJDYWxs
YmFjazogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnRpbWVyID0gc2V0SW50ZXJ2YWwo
dGhpcy5vblRpbWVyRXZlbnQuYmluZCh0aGlzKSwgdGhpcy5mcmVxdWVuY3kgKiAx
MDAwKTsKICB9LAoKICBzdG9wOiBmdW5jdGlvbigpIHsKICAgIGlmICghdGhpcy50
aW1lcikgcmV0dXJuOwogICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTsKICAg
IHRoaXMudGltZXIgPSBudWxsOwogIH0sCgogIG9uVGltZXJFdmVudDogZnVuY3Rp
b24oKSB7CiAgICBpZiAoIXRoaXMuY3VycmVudGx5RXhlY3V0aW5nKSB7CiAgICAg
IHRyeSB7CiAgICAgICAgdGhpcy5jdXJyZW50bHlFeGVjdXRpbmcgPSB0cnVlOwog
ICAgICAgIHRoaXMuY2FsbGJhY2sodGhpcyk7CiAgICAgIH0gZmluYWxseSB7CiAg
ICAgICAgdGhpcy5jdXJyZW50bHlFeGVjdXRpbmcgPSBmYWxzZTsKICAgICAgfQog
ICAgfQogIH0KfQpPYmplY3QuZXh0ZW5kKFN0cmluZywgewogIGludGVycHJldDog
ZnVuY3Rpb24odmFsdWUpIHsKICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycg
OiBTdHJpbmcodmFsdWUpOwogIH0sCiAgc3BlY2lhbENoYXI6IHsKICAgICdcYic6
ICdcXGInLAogICAgJ1x0JzogJ1xcdCcsCiAgICAnXG4nOiAnXFxuJywKICAgICdc
Zic6ICdcXGYnLAogICAgJ1xyJzogJ1xccicsCiAgICAnXFwnOiAnXFxcXCcKICB9
Cn0pOwoKT2JqZWN0LmV4dGVuZChTdHJpbmcucHJvdG90eXBlLCB7CiAgZ3N1Yjog
ZnVuY3Rpb24ocGF0dGVybiwgcmVwbGFjZW1lbnQpIHsKICAgIHZhciByZXN1bHQg
PSAnJywgc291cmNlID0gdGhpcywgbWF0Y2g7CiAgICByZXBsYWNlbWVudCA9IGFy
Z3VtZW50cy5jYWxsZWUucHJlcGFyZVJlcGxhY2VtZW50KHJlcGxhY2VtZW50KTsK
CiAgICB3aGlsZSAoc291cmNlLmxlbmd0aCA+IDApIHsKICAgICAgaWYgKG1hdGNo
ID0gc291cmNlLm1hdGNoKHBhdHRlcm4pKSB7CiAgICAgICAgcmVzdWx0ICs9IHNv
dXJjZS5zbGljZSgwLCBtYXRjaC5pbmRleCk7CiAgICAgICAgcmVzdWx0ICs9IFN0
cmluZy5pbnRlcnByZXQocmVwbGFjZW1lbnQobWF0Y2gpKTsKICAgICAgICBzb3Vy
Y2UgID0gc291cmNlLnNsaWNlKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3Ro
KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXN1bHQgKz0gc291cmNlLCBzb3Vy
Y2UgPSAnJzsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICB9LAoK
ICBzdWI6IGZ1bmN0aW9uKHBhdHRlcm4sIHJlcGxhY2VtZW50LCBjb3VudCkgewog
ICAgcmVwbGFjZW1lbnQgPSB0aGlzLmdzdWIucHJlcGFyZVJlcGxhY2VtZW50KHJl
cGxhY2VtZW50KTsKICAgIGNvdW50ID0gY291bnQgPT09IHVuZGVmaW5lZCA/IDEg
OiBjb3VudDsKCiAgICByZXR1cm4gdGhpcy5nc3ViKHBhdHRlcm4sIGZ1bmN0aW9u
KG1hdGNoKSB7CiAgICAgIGlmICgtLWNvdW50IDwgMCkgcmV0dXJuIG1hdGNoWzBd
OwogICAgICByZXR1cm4gcmVwbGFjZW1lbnQobWF0Y2gpOwogICAgfSk7CiAgfSwK
CiAgc2NhbjogZnVuY3Rpb24ocGF0dGVybiwgaXRlcmF0b3IpIHsKICAgIHRoaXMu
Z3N1YihwYXR0ZXJuLCBpdGVyYXRvcik7CiAgICByZXR1cm4gdGhpczsKICB9LAoK
ICB0cnVuY2F0ZTogZnVuY3Rpb24obGVuZ3RoLCB0cnVuY2F0aW9uKSB7CiAgICBs
ZW5ndGggPSBsZW5ndGggfHwgMzA7CiAgICB0cnVuY2F0aW9uID0gdHJ1bmNhdGlv
biA9PT0gdW5kZWZpbmVkID8gJy4uLicgOiB0cnVuY2F0aW9uOwogICAgcmV0dXJu
IHRoaXMubGVuZ3RoID4gbGVuZ3RoID8KICAgICAgdGhpcy5zbGljZSgwLCBsZW5n
dGggLSB0cnVuY2F0aW9uLmxlbmd0aCkgKyB0cnVuY2F0aW9uIDogdGhpczsKICB9
LAoKICBzdHJpcDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5yZXBsYWNl
KC9eXHMrLywgJycpLnJlcGxhY2UoL1xzKyQvLCAnJyk7CiAgfSwKCiAgc3RyaXBU
YWdzOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLnJlcGxhY2UoLzxcLz9b
Xj5dKz4vZ2ksICcnKTsKICB9LAoKICBzdHJpcFNjcmlwdHM6IGZ1bmN0aW9uKCkg
ewogICAgcmV0dXJuIHRoaXMucmVwbGFjZShuZXcgUmVnRXhwKFByb3RvdHlwZS5T
Y3JpcHRGcmFnbWVudCwgJ2ltZycpLCAnJyk7CiAgfSwKCiAgZXh0cmFjdFNjcmlw
dHM6IGZ1bmN0aW9uKCkgewogICAgdmFyIG1hdGNoQWxsID0gbmV3IFJlZ0V4cChQ
cm90b3R5cGUuU2NyaXB0RnJhZ21lbnQsICdpbWcnKTsKICAgIHZhciBtYXRjaE9u
ZSA9IG5ldyBSZWdFeHAoUHJvdG90eXBlLlNjcmlwdEZyYWdtZW50LCAnaW0nKTsK
ICAgIHJldHVybiAodGhpcy5tYXRjaChtYXRjaEFsbCkgfHwgW10pLm1hcChmdW5j
dGlvbihzY3JpcHRUYWcpIHsKICAgICAgcmV0dXJuIChzY3JpcHRUYWcubWF0Y2go
bWF0Y2hPbmUpIHx8IFsnJywgJyddKVsxXTsKICAgIH0pOwogIH0sCgogIGV2YWxT
Y3JpcHRzOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmV4dHJhY3RTY3Jp
cHRzKCkubWFwKGZ1bmN0aW9uKHNjcmlwdCkgeyByZXR1cm4gZXZhbChzY3JpcHQp
IH0pOwogIH0sCgogIGVzY2FwZUhUTUw6IGZ1bmN0aW9uKCkgewogICAgdmFyIHNl
bGYgPSBhcmd1bWVudHMuY2FsbGVlOwogICAgc2VsZi50ZXh0LmRhdGEgPSB0aGlz
OwogICAgcmV0dXJuIHNlbGYuZGl2LmlubmVySFRNTDsKICB9LAoKICB1bmVzY2Fw
ZUhUTUw6IGZ1bmN0aW9uKCkgewogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmlubmVySFRNTCA9IHRoaXMuc3RyaXBU
YWdzKCk7CiAgICByZXR1cm4gZGl2LmNoaWxkTm9kZXNbMF0gPyAoZGl2LmNoaWxk
Tm9kZXMubGVuZ3RoID4gMSA/CiAgICAgICRBKGRpdi5jaGlsZE5vZGVzKS5pbmpl
Y3QoJycsIGZ1bmN0aW9uKG1lbW8sIG5vZGUpIHsgcmV0dXJuIG1lbW8rbm9kZS5u
b2RlVmFsdWUgfSkgOgogICAgICBkaXYuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUp
IDogJyc7CiAgfSwKCiAgdG9RdWVyeVBhcmFtczogZnVuY3Rpb24oc2VwYXJhdG9y
KSB7CiAgICB2YXIgbWF0Y2ggPSB0aGlzLnN0cmlwKCkubWF0Y2goLyhbXj8jXSop
KCMuKik/JC8pOwogICAgaWYgKCFtYXRjaCkgcmV0dXJuIHt9OwoKICAgIHJldHVy
biBtYXRjaFsxXS5zcGxpdChzZXBhcmF0b3IgfHwgJyYnKS5pbmplY3Qoe30sIGZ1
bmN0aW9uKGhhc2gsIHBhaXIpIHsKICAgICAgaWYgKChwYWlyID0gcGFpci5zcGxp
dCgnPScpKVswXSkgewogICAgICAgIHZhciBrZXkgPSBkZWNvZGVVUklDb21wb25l
bnQocGFpci5zaGlmdCgpKTsKICAgICAgICB2YXIgdmFsdWUgPSBwYWlyLmxlbmd0
aCA+IDEgPyBwYWlyLmpvaW4oJz0nKSA6IHBhaXJbMF07CiAgICAgICAgaWYgKHZh
bHVlICE9IHVuZGVmaW5lZCkgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQodmFs
dWUpOwoKICAgICAgICBpZiAoa2V5IGluIGhhc2gpIHsKICAgICAgICAgIGlmICho
YXNoW2tleV0uY29uc3RydWN0b3IgIT0gQXJyYXkpIGhhc2hba2V5XSA9IFtoYXNo
W2tleV1dOwogICAgICAgICAgaGFzaFtrZXldLnB1c2godmFsdWUpOwogICAgICAg
IH0KICAgICAgICBlbHNlIGhhc2hba2V5XSA9IHZhbHVlOwogICAgICB9CiAgICAg
IHJldHVybiBoYXNoOwogICAgfSk7CiAgfSwKCiAgdG9BcnJheTogZnVuY3Rpb24o
KSB7CiAgICByZXR1cm4gdGhpcy5zcGxpdCgnJyk7CiAgfSwKCiAgc3VjYzogZnVu
Y3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5zbGljZSgwLCB0aGlzLmxlbmd0aCAt
IDEpICsKICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmNoYXJDb2RlQXQo
dGhpcy5sZW5ndGggLSAxKSArIDEpOwogIH0sCgogIHRpbWVzOiBmdW5jdGlvbihj
b3VudCkgewogICAgdmFyIHJlc3VsdCA9ICcnOwogICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKSByZXN1bHQgKz0gdGhpczsKICAgIHJldHVybiByZXN1
bHQ7CiAgfSwKCiAgY2FtZWxpemU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhcnRz
ID0gdGhpcy5zcGxpdCgnLScpLCBsZW4gPSBwYXJ0cy5sZW5ndGg7CiAgICBpZiAo
bGVuID09IDEpIHJldHVybiBwYXJ0c1swXTsKCiAgICB2YXIgY2FtZWxpemVkID0g
dGhpcy5jaGFyQXQoMCkgPT0gJy0nCiAgICAgID8gcGFydHNbMF0uY2hhckF0KDAp
LnRvVXBwZXJDYXNlKCkgKyBwYXJ0c1swXS5zdWJzdHJpbmcoMSkKICAgICAgOiBw
YXJ0c1swXTsKCiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKQogICAg
ICBjYW1lbGl6ZWQgKz0gcGFydHNbaV0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkg
KyBwYXJ0c1tpXS5zdWJzdHJpbmcoMSk7CgogICAgcmV0dXJuIGNhbWVsaXplZDsK
ICB9LAoKICBjYXBpdGFsaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlz
LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGhpcy5zdWJzdHJpbmcoMSkudG9M
b3dlckNhc2UoKTsKICB9LAoKICB1bmRlcnNjb3JlOiBmdW5jdGlvbigpIHsKICAg
IHJldHVybiB0aGlzLmdzdWIoLzo6LywgJy8nKS5nc3ViKC8oW0EtWl0rKShbQS1a
XVthLXpdKS8sJyN7MX1fI3syfScpLmdzdWIoLyhbYS16XGRdKShbQS1aXSkvLCcj
ezF9XyN7Mn0nKS5nc3ViKC8tLywnXycpLnRvTG93ZXJDYXNlKCk7CiAgfSwKCiAg
ZGFzaGVyaXplOiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmdzdWIoL18v
LCctJyk7CiAgfSwKCiAgaW5zcGVjdDogZnVuY3Rpb24odXNlRG91YmxlUXVvdGVz
KSB7CiAgICB2YXIgZXNjYXBlZFN0cmluZyA9IHRoaXMuZ3N1YigvW1x4MDAtXHgx
ZlxcXS8sIGZ1bmN0aW9uKG1hdGNoKSB7CiAgICAgIHZhciBjaGFyYWN0ZXIgPSBT
dHJpbmcuc3BlY2lhbENoYXJbbWF0Y2hbMF1dOwogICAgICByZXR1cm4gY2hhcmFj
dGVyID8gY2hhcmFjdGVyIDogJ1xcdTAwJyArIG1hdGNoWzBdLmNoYXJDb2RlQXQo
KS50b1BhZGRlZFN0cmluZygyLCAxNik7CiAgICB9KTsKICAgIGlmICh1c2VEb3Vi
bGVRdW90ZXMpIHJldHVybiAnIicgKyBlc2NhcGVkU3RyaW5nLnJlcGxhY2UoLyIv
ZywgJ1xcIicpICsgJyInOwogICAgcmV0dXJuICInIiArIGVzY2FwZWRTdHJpbmcu
cmVwbGFjZSgvJy9nLCAnXFxcJycpICsgIiciOwogIH0sCgogIHRvSlNPTjogZnVu
Y3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5pbnNwZWN0KHRydWUpOwogIH0sCgog
IHVuZmlsdGVySlNPTjogZnVuY3Rpb24oZmlsdGVyKSB7CiAgICByZXR1cm4gdGhp
cy5zdWIoZmlsdGVyIHx8IFByb3RvdHlwZS5KU09ORmlsdGVyLCAnI3sxfScpOwog
IH0sCgogIGlzSlNPTjogZnVuY3Rpb24oKSB7CiAgICB2YXIgc3RyID0gdGhpcy5y
ZXBsYWNlKC9cXC4vZywgJ0AnKS5yZXBsYWNlKC8iW14iXFxcblxyXSoiL2csICcn
KTsKICAgIHJldHVybiAoL15bLDp7fVxbXF0wLTkuXC0rRWFlZmxuci11IFxuXHJc
dF0qJC8pLnRlc3Qoc3RyKTsKICB9LAoKICBldmFsSlNPTjogZnVuY3Rpb24oc2Fu
aXRpemUpIHsKICAgIHZhciBqc29uID0gdGhpcy51bmZpbHRlckpTT04oKTsKICAg
IHRyeSB7CiAgICAgIGlmICghc2FuaXRpemUgfHwganNvbi5pc0pTT04oKSkgcmV0
dXJuIGV2YWwoJygnICsganNvbiArICcpJyk7CiAgICB9IGNhdGNoIChlKSB7IH0K
ICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignQmFkbHkgZm9ybWVkIEpTT04gc3Ry
aW5nOiAnICsgdGhpcy5pbnNwZWN0KCkpOwogIH0sCgogIGluY2x1ZGU6IGZ1bmN0
aW9uKHBhdHRlcm4pIHsKICAgIHJldHVybiB0aGlzLmluZGV4T2YocGF0dGVybikg
PiAtMTsKICB9LAoKICBzdGFydHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAg
ICByZXR1cm4gdGhpcy5pbmRleE9mKHBhdHRlcm4pID09PSAwOwogIH0sCgogIGVu
ZHNXaXRoOiBmdW5jdGlvbihwYXR0ZXJuKSB7CiAgICB2YXIgZCA9IHRoaXMubGVu
Z3RoIC0gcGF0dGVybi5sZW5ndGg7CiAgICByZXR1cm4gZCA+PSAwICYmIHRoaXMu
bGFzdEluZGV4T2YocGF0dGVybikgPT09IGQ7CiAgfSwKCiAgZW1wdHk6IGZ1bmN0
aW9uKCkgewogICAgcmV0dXJuIHRoaXMgPT0gJyc7CiAgfSwKCiAgYmxhbms6IGZ1
bmN0aW9uKCkgewogICAgcmV0dXJuIC9eXHMqJC8udGVzdCh0aGlzKTsKICB9Cn0p
OwoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLldlYktpdCB8fCBQcm90b3R5cGUuQnJv
d3Nlci5JRSkgT2JqZWN0LmV4dGVuZChTdHJpbmcucHJvdG90eXBlLCB7CiAgZXNj
YXBlSFRNTDogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC8m
L2csJyZhbXA7JykucmVwbGFjZSgvPC9nLCcmbHQ7JykucmVwbGFjZSgvPi9nLCcm
Z3Q7Jyk7CiAgfSwKICB1bmVzY2FwZUhUTUw6IGZ1bmN0aW9uKCkgewogICAgcmV0
dXJuIHRoaXMucmVwbGFjZSgvJmFtcDsvZywnJicpLnJlcGxhY2UoLyZsdDsvZywn
PCcpLnJlcGxhY2UoLyZndDsvZywnPicpOwogIH0KfSk7CgpTdHJpbmcucHJvdG90
eXBlLmdzdWIucHJlcGFyZVJlcGxhY2VtZW50ID0gZnVuY3Rpb24ocmVwbGFjZW1l
bnQpIHsKICBpZiAodHlwZW9mIHJlcGxhY2VtZW50ID09ICdmdW5jdGlvbicpIHJl
dHVybiByZXBsYWNlbWVudDsKICB2YXIgdGVtcGxhdGUgPSBuZXcgVGVtcGxhdGUo
cmVwbGFjZW1lbnQpOwogIHJldHVybiBmdW5jdGlvbihtYXRjaCkgeyByZXR1cm4g
dGVtcGxhdGUuZXZhbHVhdGUobWF0Y2gpIH07Cn0KClN0cmluZy5wcm90b3R5cGUu
cGFyc2VRdWVyeSA9IFN0cmluZy5wcm90b3R5cGUudG9RdWVyeVBhcmFtczsKCk9i
amVjdC5leHRlbmQoU3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MLCB7CiAgZGl2
OiAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksCiAgdGV4dDogZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJycpCn0pOwoKd2l0aCAoU3RyaW5nLnByb3RvdHlw
ZS5lc2NhcGVIVE1MKSBkaXYuYXBwZW5kQ2hpbGQodGV4dCk7Cgp2YXIgVGVtcGxh
dGUgPSBDbGFzcy5jcmVhdGUoKTsKVGVtcGxhdGUuUGF0dGVybiA9IC8oXnwufFxy
fFxuKSgjXHsoLio/KVx9KS87ClRlbXBsYXRlLnByb3RvdHlwZSA9IHsKICBpbml0
aWFsaXplOiBmdW5jdGlvbih0ZW1wbGF0ZSwgcGF0dGVybikgewogICAgdGhpcy50
ZW1wbGF0ZSA9IHRlbXBsYXRlLnRvU3RyaW5nKCk7CiAgICB0aGlzLnBhdHRlcm4g
ID0gcGF0dGVybiB8fCBUZW1wbGF0ZS5QYXR0ZXJuOwogIH0sCgogIGV2YWx1YXRl
OiBmdW5jdGlvbihvYmplY3QpIHsKICAgIHJldHVybiB0aGlzLnRlbXBsYXRlLmdz
dWIodGhpcy5wYXR0ZXJuLCBmdW5jdGlvbihtYXRjaCkgewogICAgICB2YXIgYmVm
b3JlID0gbWF0Y2hbMV07CiAgICAgIGlmIChiZWZvcmUgPT0gJ1xcJykgcmV0dXJu
IG1hdGNoWzJdOwogICAgICByZXR1cm4gYmVmb3JlICsgU3RyaW5nLmludGVycHJl
dChvYmplY3RbbWF0Y2hbM11dKTsKICAgIH0pOwogIH0KfQoKdmFyICRicmVhayA9
IHt9LCAkY29udGludWUgPSBuZXcgRXJyb3IoJyJ0aHJvdyAkY29udGludWUiIGlz
IGRlcHJlY2F0ZWQsIHVzZSAicmV0dXJuIiBpbnN0ZWFkJyk7Cgp2YXIgRW51bWVy
YWJsZSA9IHsKICBlYWNoOiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgdmFyIGlu
ZGV4ID0gMDsKICAgIHRyeSB7CiAgICAgIHRoaXMuX2VhY2goZnVuY3Rpb24odmFs
dWUpIHsKICAgICAgICBpdGVyYXRvcih2YWx1ZSwgaW5kZXgrKyk7CiAgICAgIH0p
OwogICAgfSBjYXRjaCAoZSkgewogICAgICBpZiAoZSAhPSAkYnJlYWspIHRocm93
IGU7CiAgICB9CiAgICByZXR1cm4gdGhpczsKICB9LAoKICBlYWNoU2xpY2U6IGZ1
bmN0aW9uKG51bWJlciwgaXRlcmF0b3IpIHsKICAgIHZhciBpbmRleCA9IC1udW1i
ZXIsIHNsaWNlcyA9IFtdLCBhcnJheSA9IHRoaXMudG9BcnJheSgpOwogICAgd2hp
bGUgKChpbmRleCArPSBudW1iZXIpIDwgYXJyYXkubGVuZ3RoKQogICAgICBzbGlj
ZXMucHVzaChhcnJheS5zbGljZShpbmRleCwgaW5kZXgrbnVtYmVyKSk7CiAgICBy
ZXR1cm4gc2xpY2VzLm1hcChpdGVyYXRvcik7CiAgfSwKCiAgYWxsOiBmdW5jdGlv
bihpdGVyYXRvcikgewogICAgdmFyIHJlc3VsdCA9IHRydWU7CiAgICB0aGlzLmVh
Y2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIHJlc3VsdCA9IHJlc3Vs
dCAmJiAhIShpdGVyYXRvciB8fCBQcm90b3R5cGUuSykodmFsdWUsIGluZGV4KTsK
ICAgICAgaWYgKCFyZXN1bHQpIHRocm93ICRicmVhazsKICAgIH0pOwogICAgcmV0
dXJuIHJlc3VsdDsKICB9LAoKICBhbnk6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAg
ICB2YXIgcmVzdWx0ID0gZmFsc2U7CiAgICB0aGlzLmVhY2goZnVuY3Rpb24odmFs
dWUsIGluZGV4KSB7CiAgICAgIGlmIChyZXN1bHQgPSAhIShpdGVyYXRvciB8fCBQ
cm90b3R5cGUuSykodmFsdWUsIGluZGV4KSkKICAgICAgICB0aHJvdyAkYnJlYWs7
CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfSwKCiAgY29sbGVjdDogZnVu
Y3Rpb24oaXRlcmF0b3IpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB0aGlz
LmVhY2goZnVuY3Rpb24odmFsdWUsIGluZGV4KSB7CiAgICAgIHJlc3VsdHMucHVz
aCgoaXRlcmF0b3IgfHwgUHJvdG90eXBlLkspKHZhbHVlLCBpbmRleCkpOwogICAg
fSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBkZXRlY3Q6IGZ1bmN0aW9u
KGl0ZXJhdG9yKSB7CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0
aW9uKHZhbHVlLCBpbmRleCkgewogICAgICBpZiAoaXRlcmF0b3IodmFsdWUsIGlu
ZGV4KSkgewogICAgICAgIHJlc3VsdCA9IHZhbHVlOwogICAgICAgIHRocm93ICRi
cmVhazsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0OwogIH0sCgog
IGZpbmRBbGw6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB2YXIgcmVzdWx0cyA9
IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAg
ICBpZiAoaXRlcmF0b3IodmFsdWUsIGluZGV4KSkKICAgICAgICByZXN1bHRzLnB1
c2godmFsdWUpOwogICAgfSk7CiAgICByZXR1cm4gcmVzdWx0czsKICB9LAoKICBn
cmVwOiBmdW5jdGlvbihwYXR0ZXJuLCBpdGVyYXRvcikgewogICAgdmFyIHJlc3Vs
dHMgPSBbXTsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsK
ICAgICAgdmFyIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTsKICAgICAg
aWYgKHN0cmluZ1ZhbHVlLm1hdGNoKHBhdHRlcm4pKQogICAgICAgIHJlc3VsdHMu
cHVzaCgoaXRlcmF0b3IgfHwgUHJvdG90eXBlLkspKHZhbHVlLCBpbmRleCkpOwog
ICAgfSkKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIGluY2x1ZGU6IGZ1bmN0
aW9uKG9iamVjdCkgewogICAgdmFyIGZvdW5kID0gZmFsc2U7CiAgICB0aGlzLmVh
Y2goZnVuY3Rpb24odmFsdWUpIHsKICAgICAgaWYgKHZhbHVlID09IG9iamVjdCkg
ewogICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICB0aHJvdyAkYnJlYWs7CiAg
ICAgIH0KICAgIH0pOwogICAgcmV0dXJuIGZvdW5kOwogIH0sCgogIGluR3JvdXBz
T2Y6IGZ1bmN0aW9uKG51bWJlciwgZmlsbFdpdGgpIHsKICAgIGZpbGxXaXRoID0g
ZmlsbFdpdGggPT09IHVuZGVmaW5lZCA/IG51bGwgOiBmaWxsV2l0aDsKICAgIHJl
dHVybiB0aGlzLmVhY2hTbGljZShudW1iZXIsIGZ1bmN0aW9uKHNsaWNlKSB7CiAg
ICAgIHdoaWxlKHNsaWNlLmxlbmd0aCA8IG51bWJlcikgc2xpY2UucHVzaChmaWxs
V2l0aCk7CiAgICAgIHJldHVybiBzbGljZTsKICAgIH0pOwogIH0sCgogIGluamVj
dDogZnVuY3Rpb24obWVtbywgaXRlcmF0b3IpIHsKICAgIHRoaXMuZWFjaChmdW5j
dGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgbWVtbyA9IGl0ZXJhdG9yKG1lbW8s
IHZhbHVlLCBpbmRleCk7CiAgICB9KTsKICAgIHJldHVybiBtZW1vOwogIH0sCgog
IGludm9rZTogZnVuY3Rpb24obWV0aG9kKSB7CiAgICB2YXIgYXJncyA9ICRBKGFy
Z3VtZW50cykuc2xpY2UoMSk7CiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24o
dmFsdWUpIHsKICAgICAgcmV0dXJuIHZhbHVlW21ldGhvZF0uYXBwbHkodmFsdWUs
IGFyZ3MpOwogICAgfSk7CiAgfSwKCiAgbWF4OiBmdW5jdGlvbihpdGVyYXRvcikg
ewogICAgdmFyIHJlc3VsdDsKICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwg
aW5kZXgpIHsKICAgICAgdmFsdWUgPSAoaXRlcmF0b3IgfHwgUHJvdG90eXBlLksp
KHZhbHVlLCBpbmRleCk7CiAgICAgIGlmIChyZXN1bHQgPT0gdW5kZWZpbmVkIHx8
IHZhbHVlID49IHJlc3VsdCkKICAgICAgICByZXN1bHQgPSB2YWx1ZTsKICAgIH0p
OwogICAgcmV0dXJuIHJlc3VsdDsKICB9LAoKICBtaW46IGZ1bmN0aW9uKGl0ZXJh
dG9yKSB7CiAgICB2YXIgcmVzdWx0OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZh
bHVlLCBpbmRleCkgewogICAgICB2YWx1ZSA9IChpdGVyYXRvciB8fCBQcm90b3R5
cGUuSykodmFsdWUsIGluZGV4KTsKICAgICAgaWYgKHJlc3VsdCA9PSB1bmRlZmlu
ZWQgfHwgdmFsdWUgPCByZXN1bHQpCiAgICAgICAgcmVzdWx0ID0gdmFsdWU7CiAg
ICB9KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfSwKCiAgcGFydGl0aW9uOiBmdW5j
dGlvbihpdGVyYXRvcikgewogICAgdmFyIHRydWVzID0gW10sIGZhbHNlcyA9IFtd
OwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkgewogICAgICAo
KGl0ZXJhdG9yIHx8IFByb3RvdHlwZS5LKSh2YWx1ZSwgaW5kZXgpID8KICAgICAg
ICB0cnVlcyA6IGZhbHNlcykucHVzaCh2YWx1ZSk7CiAgICB9KTsKICAgIHJldHVy
biBbdHJ1ZXMsIGZhbHNlc107CiAgfSwKCiAgcGx1Y2s6IGZ1bmN0aW9uKHByb3Bl
cnR5KSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0
aW9uKHZhbHVlLCBpbmRleCkgewogICAgICByZXN1bHRzLnB1c2godmFsdWVbcHJv
cGVydHldKTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3VsdHM7CiAgfSwKCiAgcmVq
ZWN0OiBmdW5jdGlvbihpdGVyYXRvcikgewogICAgdmFyIHJlc3VsdHMgPSBbXTsK
ICAgIHRoaXMuZWFjaChmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgaWYg
KCFpdGVyYXRvcih2YWx1ZSwgaW5kZXgpKQogICAgICAgIHJlc3VsdHMucHVzaCh2
YWx1ZSk7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIHNvcnRC
eTogZnVuY3Rpb24oaXRlcmF0b3IpIHsKICAgIHJldHVybiB0aGlzLm1hcChmdW5j
dGlvbih2YWx1ZSwgaW5kZXgpIHsKICAgICAgcmV0dXJuIHt2YWx1ZTogdmFsdWUs
IGNyaXRlcmlhOiBpdGVyYXRvcih2YWx1ZSwgaW5kZXgpfTsKICAgIH0pLnNvcnQo
ZnVuY3Rpb24obGVmdCwgcmlnaHQpIHsKICAgICAgdmFyIGEgPSBsZWZ0LmNyaXRl
cmlhLCBiID0gcmlnaHQuY3JpdGVyaWE7CiAgICAgIHJldHVybiBhIDwgYiA/IC0x
IDogYSA+IGIgPyAxIDogMDsKICAgIH0pLnBsdWNrKCd2YWx1ZScpOwogIH0sCgog
IHRvQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMubWFwKCk7CiAg
fSwKCiAgemlwOiBmdW5jdGlvbigpIHsKICAgIHZhciBpdGVyYXRvciA9IFByb3Rv
dHlwZS5LLCBhcmdzID0gJEEoYXJndW1lbnRzKTsKICAgIGlmICh0eXBlb2YgYXJn
cy5sYXN0KCkgPT0gJ2Z1bmN0aW9uJykKICAgICAgaXRlcmF0b3IgPSBhcmdzLnBv
cCgpOwoKICAgIHZhciBjb2xsZWN0aW9ucyA9IFt0aGlzXS5jb25jYXQoYXJncyku
bWFwKCRBKTsKICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSwgaW5k
ZXgpIHsKICAgICAgcmV0dXJuIGl0ZXJhdG9yKGNvbGxlY3Rpb25zLnBsdWNrKGlu
ZGV4KSk7CiAgICB9KTsKICB9LAoKICBzaXplOiBmdW5jdGlvbigpIHsKICAgIHJl
dHVybiB0aGlzLnRvQXJyYXkoKS5sZW5ndGg7CiAgfSwKCiAgaW5zcGVjdDogZnVu
Y3Rpb24oKSB7CiAgICByZXR1cm4gJyM8RW51bWVyYWJsZTonICsgdGhpcy50b0Fy
cmF5KCkuaW5zcGVjdCgpICsgJz4nOwogIH0KfQoKT2JqZWN0LmV4dGVuZChFbnVt
ZXJhYmxlLCB7CiAgbWFwOiAgICAgRW51bWVyYWJsZS5jb2xsZWN0LAogIGZpbmQ6
ICAgIEVudW1lcmFibGUuZGV0ZWN0LAogIHNlbGVjdDogIEVudW1lcmFibGUuZmlu
ZEFsbCwKICBtZW1iZXI6ICBFbnVtZXJhYmxlLmluY2x1ZGUsCiAgZW50cmllczog
RW51bWVyYWJsZS50b0FycmF5Cn0pOwp2YXIgJEEgPSBBcnJheS5mcm9tID0gZnVu
Y3Rpb24oaXRlcmFibGUpIHsKICBpZiAoIWl0ZXJhYmxlKSByZXR1cm4gW107CiAg
aWYgKGl0ZXJhYmxlLnRvQXJyYXkpIHsKICAgIHJldHVybiBpdGVyYWJsZS50b0Fy
cmF5KCk7CiAgfSBlbHNlIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gaXRlcmFibGUubGVuZ3RoOyBpIDwgbGVuZ3Ro
OyBpKyspCiAgICAgIHJlc3VsdHMucHVzaChpdGVyYWJsZVtpXSk7CiAgICByZXR1
cm4gcmVzdWx0czsKICB9Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQp
IHsKICAkQSA9IEFycmF5LmZyb20gPSBmdW5jdGlvbihpdGVyYWJsZSkgewogICAg
aWYgKCFpdGVyYWJsZSkgcmV0dXJuIFtdOwogICAgaWYgKCEodHlwZW9mIGl0ZXJh
YmxlID09ICdmdW5jdGlvbicgJiYgaXRlcmFibGUgPT0gJ1tvYmplY3QgTm9kZUxp
c3RdJykgJiYKICAgICAgaXRlcmFibGUudG9BcnJheSkgewogICAgICByZXR1cm4g
aXRlcmFibGUudG9BcnJheSgpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHJlc3Vs
dHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGl0ZXJhYmxl
Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKQogICAgICAgIHJlc3VsdHMucHVzaChp
dGVyYWJsZVtpXSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQogIH0KfQoK
T2JqZWN0LmV4dGVuZChBcnJheS5wcm90b3R5cGUsIEVudW1lcmFibGUpOwoKaWYg
KCFBcnJheS5wcm90b3R5cGUuX3JldmVyc2UpCiAgQXJyYXkucHJvdG90eXBlLl9y
ZXZlcnNlID0gQXJyYXkucHJvdG90eXBlLnJldmVyc2U7CgpPYmplY3QuZXh0ZW5k
KEFycmF5LnByb3RvdHlwZSwgewogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRvcikg
ewogICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMubGVuZ3RoOyBpIDwg
bGVuZ3RoOyBpKyspCiAgICAgIGl0ZXJhdG9yKHRoaXNbaV0pOwogIH0sCgogIGNs
ZWFyOiBmdW5jdGlvbigpIHsKICAgIHRoaXMubGVuZ3RoID0gMDsKICAgIHJldHVy
biB0aGlzOwogIH0sCgogIGZpcnN0OiBmdW5jdGlvbigpIHsKICAgIHJldHVybiB0
aGlzWzBdOwogIH0sCgogIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRo
aXNbdGhpcy5sZW5ndGggLSAxXTsKICB9LAoKICBjb21wYWN0OiBmdW5jdGlvbigp
IHsKICAgIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbih2YWx1ZSkgewogICAg
ICByZXR1cm4gdmFsdWUgIT0gbnVsbDsKICAgIH0pOwogIH0sCgogIGZsYXR0ZW46
IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuaW5qZWN0KFtdLCBmdW5jdGlv
bihhcnJheSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIGFycmF5LmNvbmNhdCh2YWx1
ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PSBBcnJheSA/CiAgICAgICAgdmFsdWUu
ZmxhdHRlbigpIDogW3ZhbHVlXSk7CiAgICB9KTsKICB9LAoKICB3aXRob3V0OiBm
dW5jdGlvbigpIHsKICAgIHZhciB2YWx1ZXMgPSAkQShhcmd1bWVudHMpOwogICAg
cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgIHJldHVy
biAhdmFsdWVzLmluY2x1ZGUodmFsdWUpOwogICAgfSk7CiAgfSwKCiAgaW5kZXhP
ZjogZnVuY3Rpb24ob2JqZWN0KSB7CiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3Ro
ID0gdGhpcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgaWYgKHRoaXNb
aV0gPT0gb2JqZWN0KSByZXR1cm4gaTsKICAgIHJldHVybiAtMTsKICB9LAoKICBy
ZXZlcnNlOiBmdW5jdGlvbihpbmxpbmUpIHsKICAgIHJldHVybiAoaW5saW5lICE9
PSBmYWxzZSA/IHRoaXMgOiB0aGlzLnRvQXJyYXkoKSkuX3JldmVyc2UoKTsKICB9
LAoKICByZWR1Y2U6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMubGVuZ3Ro
ID4gMSA/IHRoaXMgOiB0aGlzWzBdOwogIH0sCgogIHVuaXE6IGZ1bmN0aW9uKHNv
cnRlZCkgewogICAgcmV0dXJuIHRoaXMuaW5qZWN0KFtdLCBmdW5jdGlvbihhcnJh
eSwgdmFsdWUsIGluZGV4KSB7CiAgICAgIGlmICgwID09IGluZGV4IHx8IChzb3J0
ZWQgPyBhcnJheS5sYXN0KCkgIT0gdmFsdWUgOiAhYXJyYXkuaW5jbHVkZSh2YWx1
ZSkpKQogICAgICAgIGFycmF5LnB1c2godmFsdWUpOwogICAgICByZXR1cm4gYXJy
YXk7CiAgICB9KTsKICB9LAoKICBjbG9uZTogZnVuY3Rpb24oKSB7CiAgICByZXR1
cm4gW10uY29uY2F0KHRoaXMpOwogIH0sCgogIHNpemU6IGZ1bmN0aW9uKCkgewog
ICAgcmV0dXJuIHRoaXMubGVuZ3RoOwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9u
KCkgewogICAgcmV0dXJuICdbJyArIHRoaXMubWFwKE9iamVjdC5pbnNwZWN0KS5q
b2luKCcsICcpICsgJ10nOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAg
ICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKG9iamVj
dCkgewogICAgICB2YXIgdmFsdWUgPSBPYmplY3QudG9KU09OKG9iamVjdCk7CiAg
ICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSByZXN1bHRzLnB1c2godmFsdWUp
OwogICAgfSk7CiAgICByZXR1cm4gJ1snICsgcmVzdWx0cy5qb2luKCcsICcpICsg
J10nOwogIH0KfSk7CgpBcnJheS5wcm90b3R5cGUudG9BcnJheSA9IEFycmF5LnBy
b3RvdHlwZS5jbG9uZTsKCmZ1bmN0aW9uICR3KHN0cmluZykgewogIHN0cmluZyA9
IHN0cmluZy5zdHJpcCgpOwogIHJldHVybiBzdHJpbmcgPyBzdHJpbmcuc3BsaXQo
L1xzKy8pIDogW107Cn0KCmlmIChQcm90b3R5cGUuQnJvd3Nlci5PcGVyYSl7CiAg
QXJyYXkucHJvdG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGFy
cmF5ID0gW107CiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gdGhpcy5sZW5n
dGg7IGkgPCBsZW5ndGg7IGkrKykgYXJyYXkucHVzaCh0aGlzW2ldKTsKICAgIGZv
ciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVu
Z3RoOyBpKyspIHsKICAgICAgaWYgKGFyZ3VtZW50c1tpXS5jb25zdHJ1Y3RvciA9
PSBBcnJheSkgewogICAgICAgIGZvciAodmFyIGogPSAwLCBhcnJheUxlbmd0aCA9
IGFyZ3VtZW50c1tpXS5sZW5ndGg7IGogPCBhcnJheUxlbmd0aDsgaisrKQogICAg
ICAgICAgYXJyYXkucHVzaChhcmd1bWVudHNbaV1bal0pOwogICAgICB9IGVsc2Ug
ewogICAgICAgIGFycmF5LnB1c2goYXJndW1lbnRzW2ldKTsKICAgICAgfQogICAg
fQogICAgcmV0dXJuIGFycmF5OwogIH0KfQp2YXIgSGFzaCA9IGZ1bmN0aW9uKG9i
amVjdCkgewogIGlmIChvYmplY3QgaW5zdGFuY2VvZiBIYXNoKSB0aGlzLm1lcmdl
KG9iamVjdCk7CiAgZWxzZSBPYmplY3QuZXh0ZW5kKHRoaXMsIG9iamVjdCB8fCB7
fSk7Cn07CgpPYmplY3QuZXh0ZW5kKEhhc2gsIHsKICB0b1F1ZXJ5U3RyaW5nOiBm
dW5jdGlvbihvYmopIHsKICAgIHZhciBwYXJ0cyA9IFtdOwogICAgcGFydHMuYWRk
ID0gYXJndW1lbnRzLmNhbGxlZS5hZGRQYWlyOwoKICAgIHRoaXMucHJvdG90eXBl
Ll9lYWNoLmNhbGwob2JqLCBmdW5jdGlvbihwYWlyKSB7CiAgICAgIGlmICghcGFp
ci5rZXkpIHJldHVybjsKICAgICAgdmFyIHZhbHVlID0gcGFpci52YWx1ZTsKCiAg
ICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHsKICAg
ICAgICBpZiAodmFsdWUuY29uc3RydWN0b3IgPT0gQXJyYXkpIHZhbHVlLmVhY2go
ZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgIHBhcnRzLmFkZChwYWlyLmtleSwg
dmFsdWUpOwogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAg
ICBwYXJ0cy5hZGQocGFpci5rZXksIHZhbHVlKTsKICAgIH0pOwoKICAgIHJldHVy
biBwYXJ0cy5qb2luKCcmJyk7CiAgfSwKCiAgdG9KU09OOiBmdW5jdGlvbihvYmpl
Y3QpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB0aGlzLnByb3RvdHlwZS5f
ZWFjaC5jYWxsKG9iamVjdCwgZnVuY3Rpb24ocGFpcikgewogICAgICB2YXIgdmFs
dWUgPSBPYmplY3QudG9KU09OKHBhaXIudmFsdWUpOwogICAgICBpZiAodmFsdWUg
IT09IHVuZGVmaW5lZCkgcmVzdWx0cy5wdXNoKHBhaXIua2V5LnRvSlNPTigpICsg
JzogJyArIHZhbHVlKTsKICAgIH0pOwogICAgcmV0dXJuICd7JyArIHJlc3VsdHMu
am9pbignLCAnKSArICd9JzsKICB9Cn0pOwoKSGFzaC50b1F1ZXJ5U3RyaW5nLmFk
ZFBhaXIgPSBmdW5jdGlvbihrZXksIHZhbHVlLCBwcmVmaXgpIHsKICBrZXkgPSBl
bmNvZGVVUklDb21wb25lbnQoa2V5KTsKICBpZiAodmFsdWUgPT09IHVuZGVmaW5l
ZCkgdGhpcy5wdXNoKGtleSk7CiAgZWxzZSB0aGlzLnB1c2goa2V5ICsgJz0nICsg
KHZhbHVlID09IG51bGwgPyAnJyA6IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkp
KTsKfQoKT2JqZWN0LmV4dGVuZChIYXNoLnByb3RvdHlwZSwgRW51bWVyYWJsZSk7
Ck9iamVjdC5leHRlbmQoSGFzaC5wcm90b3R5cGUsIHsKICBfZWFjaDogZnVuY3Rp
b24oaXRlcmF0b3IpIHsKICAgIGZvciAodmFyIGtleSBpbiB0aGlzKSB7CiAgICAg
IHZhciB2YWx1ZSA9IHRoaXNba2V5XTsKICAgICAgaWYgKHZhbHVlICYmIHZhbHVl
ID09IEhhc2gucHJvdG90eXBlW2tleV0pIGNvbnRpbnVlOwoKICAgICAgdmFyIHBh
aXIgPSBba2V5LCB2YWx1ZV07CiAgICAgIHBhaXIua2V5ID0ga2V5OwogICAgICBw
YWlyLnZhbHVlID0gdmFsdWU7CiAgICAgIGl0ZXJhdG9yKHBhaXIpOwogICAgfQog
IH0sCgogIGtleXM6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMucGx1Y2so
J2tleScpOwogIH0sCgogIHZhbHVlczogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4g
dGhpcy5wbHVjaygndmFsdWUnKTsKICB9LAoKICBtZXJnZTogZnVuY3Rpb24oaGFz
aCkgewogICAgcmV0dXJuICRIKGhhc2gpLmluamVjdCh0aGlzLCBmdW5jdGlvbiht
ZXJnZWRIYXNoLCBwYWlyKSB7CiAgICAgIG1lcmdlZEhhc2hbcGFpci5rZXldID0g
cGFpci52YWx1ZTsKICAgICAgcmV0dXJuIG1lcmdlZEhhc2g7CiAgICB9KTsKICB9
LAoKICByZW1vdmU6IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlc3VsdDsKICAgIGZv
cih2YXIgaSA9IDAsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5n
dGg7IGkrKykgewogICAgICB2YXIgdmFsdWUgPSB0aGlzW2FyZ3VtZW50c1tpXV07
CiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKXsKICAgICAgICBpZiAocmVz
dWx0ID09PSB1bmRlZmluZWQpIHJlc3VsdCA9IHZhbHVlOwogICAgICAgIGVsc2Ug
ewogICAgICAgICAgaWYgKHJlc3VsdC5jb25zdHJ1Y3RvciAhPSBBcnJheSkgcmVz
dWx0ID0gW3Jlc3VsdF07CiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSkKICAg
ICAgICB9CiAgICAgIH0KICAgICAgZGVsZXRlIHRoaXNbYXJndW1lbnRzW2ldXTsK
ICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfSwKCiAgdG9RdWVyeVN0cmluZzog
ZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gSGFzaC50b1F1ZXJ5U3RyaW5nKHRoaXMp
OwogIH0sCgogIGluc3BlY3Q6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICcjPEhh
c2g6eycgKyB0aGlzLm1hcChmdW5jdGlvbihwYWlyKSB7CiAgICAgIHJldHVybiBw
YWlyLm1hcChPYmplY3QuaW5zcGVjdCkuam9pbignOiAnKTsKICAgIH0pLmpvaW4o
JywgJykgKyAnfT4nOwogIH0sCgogIHRvSlNPTjogZnVuY3Rpb24oKSB7CiAgICBy
ZXR1cm4gSGFzaC50b0pTT04odGhpcyk7CiAgfQp9KTsKCmZ1bmN0aW9uICRIKG9i
amVjdCkgewogIGlmIChvYmplY3QgaW5zdGFuY2VvZiBIYXNoKSByZXR1cm4gb2Jq
ZWN0OwogIHJldHVybiBuZXcgSGFzaChvYmplY3QpOwp9OwoKLy8gU2FmYXJpIGl0
ZXJhdGVzIG92ZXIgc2hhZG93ZWQgcHJvcGVydGllcwppZiAoZnVuY3Rpb24oKSB7
CiAgdmFyIGkgPSAwLCBUZXN0ID0gZnVuY3Rpb24odmFsdWUpIHsgdGhpcy5rZXkg
PSB2YWx1ZSB9OwogIFRlc3QucHJvdG90eXBlLmtleSA9ICdmb28nOwogIGZvciAo
dmFyIHByb3BlcnR5IGluIG5ldyBUZXN0KCdiYXInKSkgaSsrOwogIHJldHVybiBp
ID4gMTsKfSgpKSBIYXNoLnByb3RvdHlwZS5fZWFjaCA9IGZ1bmN0aW9uKGl0ZXJh
dG9yKSB7CiAgdmFyIGNhY2hlID0gW107CiAgZm9yICh2YXIga2V5IGluIHRoaXMp
IHsKICAgIHZhciB2YWx1ZSA9IHRoaXNba2V5XTsKICAgIGlmICgodmFsdWUgJiYg
dmFsdWUgPT0gSGFzaC5wcm90b3R5cGVba2V5XSkgfHwgY2FjaGUuaW5jbHVkZShr
ZXkpKSBjb250aW51ZTsKICAgIGNhY2hlLnB1c2goa2V5KTsKICAgIHZhciBwYWly
ID0gW2tleSwgdmFsdWVdOwogICAgcGFpci5rZXkgPSBrZXk7CiAgICBwYWlyLnZh
bHVlID0gdmFsdWU7CiAgICBpdGVyYXRvcihwYWlyKTsKICB9Cn07Ck9iamVjdFJh
bmdlID0gQ2xhc3MuY3JlYXRlKCk7Ck9iamVjdC5leHRlbmQoT2JqZWN0UmFuZ2Uu
cHJvdG90eXBlLCBFbnVtZXJhYmxlKTsKT2JqZWN0LmV4dGVuZChPYmplY3RSYW5n
ZS5wcm90b3R5cGUsIHsKICBpbml0aWFsaXplOiBmdW5jdGlvbihzdGFydCwgZW5k
LCBleGNsdXNpdmUpIHsKICAgIHRoaXMuc3RhcnQgPSBzdGFydDsKICAgIHRoaXMu
ZW5kID0gZW5kOwogICAgdGhpcy5leGNsdXNpdmUgPSBleGNsdXNpdmU7CiAgfSwK
CiAgX2VhY2g6IGZ1bmN0aW9uKGl0ZXJhdG9yKSB7CiAgICB2YXIgdmFsdWUgPSB0
aGlzLnN0YXJ0OwogICAgd2hpbGUgKHRoaXMuaW5jbHVkZSh2YWx1ZSkpIHsKICAg
ICAgaXRlcmF0b3IodmFsdWUpOwogICAgICB2YWx1ZSA9IHZhbHVlLnN1Y2MoKTsK
ICAgIH0KICB9LAoKICBpbmNsdWRlOiBmdW5jdGlvbih2YWx1ZSkgewogICAgaWYg
KHZhbHVlIDwgdGhpcy5zdGFydCkKICAgICAgcmV0dXJuIGZhbHNlOwogICAgaWYg
KHRoaXMuZXhjbHVzaXZlKQogICAgICByZXR1cm4gdmFsdWUgPCB0aGlzLmVuZDsK
ICAgIHJldHVybiB2YWx1ZSA8PSB0aGlzLmVuZDsKICB9Cn0pOwoKdmFyICRSID0g
ZnVuY3Rpb24oc3RhcnQsIGVuZCwgZXhjbHVzaXZlKSB7CiAgcmV0dXJuIG5ldyBP
YmplY3RSYW5nZShzdGFydCwgZW5kLCBleGNsdXNpdmUpOwp9Cgp2YXIgQWpheCA9
IHsKICBnZXRUcmFuc3BvcnQ6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIFRyeS50
aGVzZSgKICAgICAgZnVuY3Rpb24oKSB7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVz
dCgpfSwKICAgICAgZnVuY3Rpb24oKSB7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0
KCdNc3htbDIuWE1MSFRUUCcpfSwKICAgICAgZnVuY3Rpb24oKSB7cmV0dXJuIG5l
dyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MSFRUUCcpfQogICAgKSB8fCBm
YWxzZTsKICB9LAoKICBhY3RpdmVSZXF1ZXN0Q291bnQ6IDAKfQoKQWpheC5SZXNw
b25kZXJzID0gewogIHJlc3BvbmRlcnM6IFtdLAoKICBfZWFjaDogZnVuY3Rpb24o
aXRlcmF0b3IpIHsKICAgIHRoaXMucmVzcG9uZGVycy5fZWFjaChpdGVyYXRvcik7
CiAgfSwKCiAgcmVnaXN0ZXI6IGZ1bmN0aW9uKHJlc3BvbmRlcikgewogICAgaWYg
KCF0aGlzLmluY2x1ZGUocmVzcG9uZGVyKSkKICAgICAgdGhpcy5yZXNwb25kZXJz
LnB1c2gocmVzcG9uZGVyKTsKICB9LAoKICB1bnJlZ2lzdGVyOiBmdW5jdGlvbihy
ZXNwb25kZXIpIHsKICAgIHRoaXMucmVzcG9uZGVycyA9IHRoaXMucmVzcG9uZGVy
cy53aXRob3V0KHJlc3BvbmRlcik7CiAgfSwKCiAgZGlzcGF0Y2g6IGZ1bmN0aW9u
KGNhbGxiYWNrLCByZXF1ZXN0LCB0cmFuc3BvcnQsIGpzb24pIHsKICAgIHRoaXMu
ZWFjaChmdW5jdGlvbihyZXNwb25kZXIpIHsKICAgICAgaWYgKHR5cGVvZiByZXNw
b25kZXJbY2FsbGJhY2tdID09ICdmdW5jdGlvbicpIHsKICAgICAgICB0cnkgewog
ICAgICAgICAgcmVzcG9uZGVyW2NhbGxiYWNrXS5hcHBseShyZXNwb25kZXIsIFty
ZXF1ZXN0LCB0cmFuc3BvcnQsIGpzb25dKTsKICAgICAgICB9IGNhdGNoIChlKSB7
fQogICAgICB9CiAgICB9KTsKICB9Cn07CgpPYmplY3QuZXh0ZW5kKEFqYXguUmVz
cG9uZGVycywgRW51bWVyYWJsZSk7CgpBamF4LlJlc3BvbmRlcnMucmVnaXN0ZXIo
ewogIG9uQ3JlYXRlOiBmdW5jdGlvbigpIHsKICAgIEFqYXguYWN0aXZlUmVxdWVz
dENvdW50Kys7CiAgfSwKICBvbkNvbXBsZXRlOiBmdW5jdGlvbigpIHsKICAgIEFq
YXguYWN0aXZlUmVxdWVzdENvdW50LS07CiAgfQp9KTsKCkFqYXguQmFzZSA9IGZ1
bmN0aW9uKCkge307CkFqYXguQmFzZS5wcm90b3R5cGUgPSB7CiAgc2V0T3B0aW9u
czogZnVuY3Rpb24ob3B0aW9ucykgewogICAgdGhpcy5vcHRpb25zID0gewogICAg
ICBtZXRob2Q6ICAgICAgICdwb3N0JywKICAgICAgYXN5bmNocm9ub3VzOiB0cnVl
LAogICAgICBjb250ZW50VHlwZTogICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVy
bGVuY29kZWQnLAogICAgICBlbmNvZGluZzogICAgICdVVEYtOCcsCiAgICAgIHBh
cmFtZXRlcnM6ICAgJycKICAgIH0KICAgIE9iamVjdC5leHRlbmQodGhpcy5vcHRp
b25zLCBvcHRpb25zIHx8IHt9KTsKCiAgICB0aGlzLm9wdGlvbnMubWV0aG9kID0g
dGhpcy5vcHRpb25zLm1ldGhvZC50b0xvd2VyQ2FzZSgpOwogICAgaWYgKHR5cGVv
ZiB0aGlzLm9wdGlvbnMucGFyYW1ldGVycyA9PSAnc3RyaW5nJykKICAgICAgdGhp
cy5vcHRpb25zLnBhcmFtZXRlcnMgPSB0aGlzLm9wdGlvbnMucGFyYW1ldGVycy50
b1F1ZXJ5UGFyYW1zKCk7CiAgfQp9CgpBamF4LlJlcXVlc3QgPSBDbGFzcy5jcmVh
dGUoKTsKQWpheC5SZXF1ZXN0LkV2ZW50cyA9CiAgWydVbmluaXRpYWxpemVkJywg
J0xvYWRpbmcnLCAnTG9hZGVkJywgJ0ludGVyYWN0aXZlJywgJ0NvbXBsZXRlJ107
CgpBamF4LlJlcXVlc3QucHJvdG90eXBlID0gT2JqZWN0LmV4dGVuZChuZXcgQWph
eC5CYXNlKCksIHsKICBfY29tcGxldGU6IGZhbHNlLAoKICBpbml0aWFsaXplOiBm
dW5jdGlvbih1cmwsIG9wdGlvbnMpIHsKICAgIHRoaXMudHJhbnNwb3J0ID0gQWph
eC5nZXRUcmFuc3BvcnQoKTsKICAgIHRoaXMuc2V0T3B0aW9ucyhvcHRpb25zKTsK
ICAgIHRoaXMucmVxdWVzdCh1cmwpOwogIH0sCgogIHJlcXVlc3Q6IGZ1bmN0aW9u
KHVybCkgewogICAgdGhpcy51cmwgPSB1cmw7CiAgICB0aGlzLm1ldGhvZCA9IHRo
aXMub3B0aW9ucy5tZXRob2Q7CiAgICB2YXIgcGFyYW1zID0gT2JqZWN0LmNsb25l
KHRoaXMub3B0aW9ucy5wYXJhbWV0ZXJzKTsKCiAgICBpZiAoIVsnZ2V0JywgJ3Bv
c3QnXS5pbmNsdWRlKHRoaXMubWV0aG9kKSkgewogICAgICAvLyBzaW11bGF0ZSBv
dGhlciB2ZXJicyBvdmVyIHBvc3QKICAgICAgcGFyYW1zWydfbWV0aG9kJ10gPSB0
aGlzLm1ldGhvZDsKICAgICAgdGhpcy5tZXRob2QgPSAncG9zdCc7CiAgICB9Cgog
ICAgdGhpcy5wYXJhbWV0ZXJzID0gcGFyYW1zOwoKICAgIGlmIChwYXJhbXMgPSBI
YXNoLnRvUXVlcnlTdHJpbmcocGFyYW1zKSkgewogICAgICAvLyB3aGVuIEdFVCwg
YXBwZW5kIHBhcmFtZXRlcnMgdG8gVVJMCiAgICAgIGlmICh0aGlzLm1ldGhvZCA9
PSAnZ2V0JykKICAgICAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZSgn
PycpID8gJyYnIDogJz8nKSArIHBhcmFtczsKICAgICAgZWxzZSBpZiAoL0tvbnF1
ZXJvcnxTYWZhcml8S0hUTUwvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpCiAg
ICAgICAgcGFyYW1zICs9ICcmXz0nOwogICAgfQoKICAgIHRyeSB7CiAgICAgIGlm
ICh0aGlzLm9wdGlvbnMub25DcmVhdGUpIHRoaXMub3B0aW9ucy5vbkNyZWF0ZSh0
aGlzLnRyYW5zcG9ydCk7CiAgICAgIEFqYXguUmVzcG9uZGVycy5kaXNwYXRjaCgn
b25DcmVhdGUnLCB0aGlzLCB0aGlzLnRyYW5zcG9ydCk7CgogICAgICB0aGlzLnRy
YW5zcG9ydC5vcGVuKHRoaXMubWV0aG9kLnRvVXBwZXJDYXNlKCksIHRoaXMudXJs
LAogICAgICAgIHRoaXMub3B0aW9ucy5hc3luY2hyb25vdXMpOwoKICAgICAgaWYg
KHRoaXMub3B0aW9ucy5hc3luY2hyb25vdXMpCiAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgdGhpcy5yZXNwb25kVG9SZWFkeVN0YXRlKDEpIH0uYmluZCh0
aGlzKSwgMTApOwoKICAgICAgdGhpcy50cmFuc3BvcnQub25yZWFkeXN0YXRlY2hh
bmdlID0gdGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcyk7CiAgICAgIHRoaXMu
c2V0UmVxdWVzdEhlYWRlcnMoKTsKCiAgICAgIHRoaXMuYm9keSA9IHRoaXMubWV0
aG9kID09ICdwb3N0JyA/ICh0aGlzLm9wdGlvbnMucG9zdEJvZHkgfHwgcGFyYW1z
KSA6IG51bGw7CiAgICAgIHRoaXMudHJhbnNwb3J0LnNlbmQodGhpcy5ib2R5KTsK
CiAgICAgIC8qIEZvcmNlIEZpcmVmb3ggdG8gaGFuZGxlIHJlYWR5IHN0YXRlIDQg
Zm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzICovCiAgICAgIGlmICghdGhpcy5vcHRp
b25zLmFzeW5jaHJvbm91cyAmJiB0aGlzLnRyYW5zcG9ydC5vdmVycmlkZU1pbWVU
eXBlKQogICAgICAgIHRoaXMub25TdGF0ZUNoYW5nZSgpOwoKICAgIH0KICAgIGNh
dGNoIChlKSB7CiAgICAgIHRoaXMuZGlzcGF0Y2hFeGNlcHRpb24oZSk7CiAgICB9
CiAgfSwKCiAgb25TdGF0ZUNoYW5nZTogZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVh
ZHlTdGF0ZSA9IHRoaXMudHJhbnNwb3J0LnJlYWR5U3RhdGU7CiAgICBpZiAocmVh
ZHlTdGF0ZSA+IDEgJiYgISgocmVhZHlTdGF0ZSA9PSA0KSAmJiB0aGlzLl9jb21w
bGV0ZSkpCiAgICAgIHRoaXMucmVzcG9uZFRvUmVhZHlTdGF0ZSh0aGlzLnRyYW5z
cG9ydC5yZWFkeVN0YXRlKTsKICB9LAoKICBzZXRSZXF1ZXN0SGVhZGVyczogZnVu
Y3Rpb24oKSB7CiAgICB2YXIgaGVhZGVycyA9IHsKICAgICAgJ1gtUmVxdWVzdGVk
LVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLAogICAgICAnWC1Qcm90b3R5cGUtVmVy
c2lvbic6IFByb3RvdHlwZS5WZXJzaW9uLAogICAgICAnQWNjZXB0JzogJ3RleHQv
amF2YXNjcmlwdCwgdGV4dC9odG1sLCBhcHBsaWNhdGlvbi94bWwsIHRleHQveG1s
LCAqLyonCiAgICB9OwoKICAgIGlmICh0aGlzLm1ldGhvZCA9PSAncG9zdCcpIHsK
ICAgICAgaGVhZGVyc1snQ29udGVudC10eXBlJ10gPSB0aGlzLm9wdGlvbnMuY29u
dGVudFR5cGUgKwogICAgICAgICh0aGlzLm9wdGlvbnMuZW5jb2RpbmcgPyAnOyBj
aGFyc2V0PScgKyB0aGlzLm9wdGlvbnMuZW5jb2RpbmcgOiAnJyk7CgogICAgICAv
KiBGb3JjZSAiQ29ubmVjdGlvbjogY2xvc2UiIGZvciBvbGRlciBNb3ppbGxhIGJy
b3dzZXJzIHRvIHdvcmsKICAgICAgICogYXJvdW5kIGEgYnVnIHdoZXJlIFhNTEh0
dHBSZXF1ZXN0IHNlbmRzIGFuIGluY29ycmVjdAogICAgICAgKiBDb250ZW50LWxl
bmd0aCBoZWFkZXIuIFNlZSBNb3ppbGxhIEJ1Z3ppbGxhICMyNDY2NTEuCiAgICAg
ICAqLwogICAgICBpZiAodGhpcy50cmFuc3BvcnQub3ZlcnJpZGVNaW1lVHlwZSAm
JgogICAgICAgICAgKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0dlY2tvXC8o
XGR7NH0pLykgfHwgWzAsMjAwNV0pWzFdIDwgMjAwNSkKICAgICAgICAgICAgaGVh
ZGVyc1snQ29ubmVjdGlvbiddID0gJ2Nsb3NlJzsKICAgIH0KCiAgICAvLyB1c2Vy
LWRlZmluZWQgaGVhZGVycwogICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMucmVx
dWVzdEhlYWRlcnMgPT0gJ29iamVjdCcpIHsKICAgICAgdmFyIGV4dHJhcyA9IHRo
aXMub3B0aW9ucy5yZXF1ZXN0SGVhZGVyczsKCiAgICAgIGlmICh0eXBlb2YgZXh0
cmFzLnB1c2ggPT0gJ2Z1bmN0aW9uJykKICAgICAgICBmb3IgKHZhciBpID0gMCwg
bGVuZ3RoID0gZXh0cmFzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSArPSAyKQogICAg
ICAgICAgaGVhZGVyc1tleHRyYXNbaV1dID0gZXh0cmFzW2krMV07CiAgICAgIGVs
c2UKICAgICAgICAkSChleHRyYXMpLmVhY2goZnVuY3Rpb24ocGFpcikgeyBoZWFk
ZXJzW3BhaXIua2V5XSA9IHBhaXIudmFsdWUgfSk7CiAgICB9CgogICAgZm9yICh2
YXIgbmFtZSBpbiBoZWFkZXJzKQogICAgICB0aGlzLnRyYW5zcG9ydC5zZXRSZXF1
ZXN0SGVhZGVyKG5hbWUsIGhlYWRlcnNbbmFtZV0pOwogIH0sCgogIHN1Y2Nlc3M6
IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICF0aGlzLnRyYW5zcG9ydC5zdGF0dXMK
ICAgICAgICB8fCAodGhpcy50cmFuc3BvcnQuc3RhdHVzID49IDIwMCAmJiB0aGlz
LnRyYW5zcG9ydC5zdGF0dXMgPCAzMDApOwogIH0sCgogIHJlc3BvbmRUb1JlYWR5
U3RhdGU6IGZ1bmN0aW9uKHJlYWR5U3RhdGUpIHsKICAgIHZhciBzdGF0ZSA9IEFq
YXguUmVxdWVzdC5FdmVudHNbcmVhZHlTdGF0ZV07CiAgICB2YXIgdHJhbnNwb3J0
ID0gdGhpcy50cmFuc3BvcnQsIGpzb24gPSB0aGlzLmV2YWxKU09OKCk7CgogICAg
aWYgKHN0YXRlID09ICdDb21wbGV0ZScpIHsKICAgICAgdHJ5IHsKICAgICAgICB0
aGlzLl9jb21wbGV0ZSA9IHRydWU7CiAgICAgICAgKHRoaXMub3B0aW9uc1snb24n
ICsgdGhpcy50cmFuc3BvcnQuc3RhdHVzXQogICAgICAgICB8fCB0aGlzLm9wdGlv
bnNbJ29uJyArICh0aGlzLnN1Y2Nlc3MoKSA/ICdTdWNjZXNzJyA6ICdGYWlsdXJl
JyldCiAgICAgICAgIHx8IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uKSh0cmFuc3Bv
cnQsIGpzb24pOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgdGhpcy5kaXNw
YXRjaEV4Y2VwdGlvbihlKTsKICAgICAgfQoKICAgICAgdmFyIGNvbnRlbnRUeXBl
ID0gdGhpcy5nZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScpOwogICAgICBpZiAoY29u
dGVudFR5cGUgJiYgY29udGVudFR5cGUuc3RyaXAoKS4KICAgICAgICBtYXRjaCgv
Xih0ZXh0fGFwcGxpY2F0aW9uKVwvKHgtKT8oamF2YXxlY21hKXNjcmlwdCg7Liop
PyQvaSkpCiAgICAgICAgICB0aGlzLmV2YWxSZXNwb25zZSgpOwogICAgfQoKICAg
IHRyeSB7CiAgICAgICh0aGlzLm9wdGlvbnNbJ29uJyArIHN0YXRlXSB8fCBQcm90
b3R5cGUuZW1wdHlGdW5jdGlvbikodHJhbnNwb3J0LCBqc29uKTsKICAgICAgQWph
eC5SZXNwb25kZXJzLmRpc3BhdGNoKCdvbicgKyBzdGF0ZSwgdGhpcywgdHJhbnNw
b3J0LCBqc29uKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgdGhpcy5kaXNwYXRj
aEV4Y2VwdGlvbihlKTsKICAgIH0KCiAgICBpZiAoc3RhdGUgPT0gJ0NvbXBsZXRl
JykgewogICAgICAvLyBhdm9pZCBtZW1vcnkgbGVhayBpbiBNU0lFOiBjbGVhbiB1
cAogICAgICB0aGlzLnRyYW5zcG9ydC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBQcm90
b3R5cGUuZW1wdHlGdW5jdGlvbjsKICAgIH0KICB9LAoKICBnZXRIZWFkZXI6IGZ1
bmN0aW9uKG5hbWUpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5z
cG9ydC5nZXRSZXNwb25zZUhlYWRlcihuYW1lKTsKICAgIH0gY2F0Y2ggKGUpIHsg
cmV0dXJuIG51bGwgfQogIH0sCgogIGV2YWxKU09OOiBmdW5jdGlvbigpIHsKICAg
IHRyeSB7CiAgICAgIHZhciBqc29uID0gdGhpcy5nZXRIZWFkZXIoJ1gtSlNPTicp
OwogICAgICByZXR1cm4ganNvbiA/IGpzb24uZXZhbEpTT04oKSA6IG51bGw7CiAg
ICB9IGNhdGNoIChlKSB7IHJldHVybiBudWxsIH0KICB9LAoKICBldmFsUmVzcG9u
c2U6IGZ1bmN0aW9uKCkgewogICAgdHJ5IHsKICAgICAgcmV0dXJuIGV2YWwoKHRo
aXMudHJhbnNwb3J0LnJlc3BvbnNlVGV4dCB8fCAnJykudW5maWx0ZXJKU09OKCkp
OwogICAgfSBjYXRjaCAoZSkgewogICAgICB0aGlzLmRpc3BhdGNoRXhjZXB0aW9u
KGUpOwogICAgfQogIH0sCgogIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihl
eGNlcHRpb24pIHsKICAgICh0aGlzLm9wdGlvbnMub25FeGNlcHRpb24gfHwgUHJv
dG90eXBlLmVtcHR5RnVuY3Rpb24pKHRoaXMsIGV4Y2VwdGlvbik7CiAgICBBamF4
LlJlc3BvbmRlcnMuZGlzcGF0Y2goJ29uRXhjZXB0aW9uJywgdGhpcywgZXhjZXB0
aW9uKTsKICB9Cn0pOwoKQWpheC5VcGRhdGVyID0gQ2xhc3MuY3JlYXRlKCk7CgpP
YmplY3QuZXh0ZW5kKE9iamVjdC5leHRlbmQoQWpheC5VcGRhdGVyLnByb3RvdHlw
ZSwgQWpheC5SZXF1ZXN0LnByb3RvdHlwZSksIHsKICBpbml0aWFsaXplOiBmdW5j
dGlvbihjb250YWluZXIsIHVybCwgb3B0aW9ucykgewogICAgdGhpcy5jb250YWlu
ZXIgPSB7CiAgICAgIHN1Y2Nlc3M6IChjb250YWluZXIuc3VjY2VzcyB8fCBjb250
YWluZXIpLAogICAgICBmYWlsdXJlOiAoY29udGFpbmVyLmZhaWx1cmUgfHwgKGNv
bnRhaW5lci5zdWNjZXNzID8gbnVsbCA6IGNvbnRhaW5lcikpCiAgICB9CgogICAg
dGhpcy50cmFuc3BvcnQgPSBBamF4LmdldFRyYW5zcG9ydCgpOwogICAgdGhpcy5z
ZXRPcHRpb25zKG9wdGlvbnMpOwoKICAgIHZhciBvbkNvbXBsZXRlID0gdGhpcy5v
cHRpb25zLm9uQ29tcGxldGUgfHwgUHJvdG90eXBlLmVtcHR5RnVuY3Rpb247CiAg
ICB0aGlzLm9wdGlvbnMub25Db21wbGV0ZSA9IChmdW5jdGlvbih0cmFuc3BvcnQs
IHBhcmFtKSB7CiAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpOwogICAgICBvbkNv
bXBsZXRlKHRyYW5zcG9ydCwgcGFyYW0pOwogICAgfSkuYmluZCh0aGlzKTsKCiAg
ICB0aGlzLnJlcXVlc3QodXJsKTsKICB9LAoKICB1cGRhdGVDb250ZW50OiBmdW5j
dGlvbigpIHsKICAgIHZhciByZWNlaXZlciA9IHRoaXMuY29udGFpbmVyW3RoaXMu
c3VjY2VzcygpID8gJ3N1Y2Nlc3MnIDogJ2ZhaWx1cmUnXTsKICAgIHZhciByZXNw
b25zZSA9IHRoaXMudHJhbnNwb3J0LnJlc3BvbnNlVGV4dDsKCiAgICBpZiAoIXRo
aXMub3B0aW9ucy5ldmFsU2NyaXB0cykgcmVzcG9uc2UgPSByZXNwb25zZS5zdHJp
cFNjcmlwdHMoKTsKCiAgICBpZiAocmVjZWl2ZXIgPSAkKHJlY2VpdmVyKSkgewog
ICAgICBpZiAodGhpcy5vcHRpb25zLmluc2VydGlvbikKICAgICAgICBuZXcgdGhp
cy5vcHRpb25zLmluc2VydGlvbihyZWNlaXZlciwgcmVzcG9uc2UpOwogICAgICBl
bHNlCiAgICAgICAgcmVjZWl2ZXIudXBkYXRlKHJlc3BvbnNlKTsKICAgIH0KCiAg
ICBpZiAodGhpcy5zdWNjZXNzKCkpIHsKICAgICAgaWYgKHRoaXMub25Db21wbGV0
ZSkKICAgICAgICBzZXRUaW1lb3V0KHRoaXMub25Db21wbGV0ZS5iaW5kKHRoaXMp
LCAxMCk7CiAgICB9CiAgfQp9KTsKCkFqYXguUGVyaW9kaWNhbFVwZGF0ZXIgPSBD
bGFzcy5jcmVhdGUoKTsKQWpheC5QZXJpb2RpY2FsVXBkYXRlci5wcm90b3R5cGUg
PSBPYmplY3QuZXh0ZW5kKG5ldyBBamF4LkJhc2UoKSwgewogIGluaXRpYWxpemU6
IGZ1bmN0aW9uKGNvbnRhaW5lciwgdXJsLCBvcHRpb25zKSB7CiAgICB0aGlzLnNl
dE9wdGlvbnMob3B0aW9ucyk7CiAgICB0aGlzLm9uQ29tcGxldGUgPSB0aGlzLm9w
dGlvbnMub25Db21wbGV0ZTsKCiAgICB0aGlzLmZyZXF1ZW5jeSA9ICh0aGlzLm9w
dGlvbnMuZnJlcXVlbmN5IHx8IDIpOwogICAgdGhpcy5kZWNheSA9ICh0aGlzLm9w
dGlvbnMuZGVjYXkgfHwgMSk7CgogICAgdGhpcy51cGRhdGVyID0ge307CiAgICB0
aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgIHRoaXMudXJsID0gdXJsOwoK
ICAgIHRoaXMuc3RhcnQoKTsKICB9LAoKICBzdGFydDogZnVuY3Rpb24oKSB7CiAg
ICB0aGlzLm9wdGlvbnMub25Db21wbGV0ZSA9IHRoaXMudXBkYXRlQ29tcGxldGUu
YmluZCh0aGlzKTsKICAgIHRoaXMub25UaW1lckV2ZW50KCk7CiAgfSwKCiAgc3Rv
cDogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnVwZGF0ZXIub3B0aW9ucy5vbkNvbXBs
ZXRlID0gdW5kZWZpbmVkOwogICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpOwog
ICAgKHRoaXMub25Db21wbGV0ZSB8fCBQcm90b3R5cGUuZW1wdHlGdW5jdGlvbiku
YXBwbHkodGhpcywgYXJndW1lbnRzKTsKICB9LAoKICB1cGRhdGVDb21wbGV0ZTog
ZnVuY3Rpb24ocmVxdWVzdCkgewogICAgaWYgKHRoaXMub3B0aW9ucy5kZWNheSkg
ewogICAgICB0aGlzLmRlY2F5ID0gKHJlcXVlc3QucmVzcG9uc2VUZXh0ID09IHRo
aXMubGFzdFRleHQgPwogICAgICAgIHRoaXMuZGVjYXkgKiB0aGlzLm9wdGlvbnMu
ZGVjYXkgOiAxKTsKCiAgICAgIHRoaXMubGFzdFRleHQgPSByZXF1ZXN0LnJlc3Bv
bnNlVGV4dDsKICAgIH0KICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMu
b25UaW1lckV2ZW50LmJpbmQodGhpcyksCiAgICAgIHRoaXMuZGVjYXkgKiB0aGlz
LmZyZXF1ZW5jeSAqIDEwMDApOwogIH0sCgogIG9uVGltZXJFdmVudDogZnVuY3Rp
b24oKSB7CiAgICB0aGlzLnVwZGF0ZXIgPSBuZXcgQWpheC5VcGRhdGVyKHRoaXMu
Y29udGFpbmVyLCB0aGlzLnVybCwgdGhpcy5vcHRpb25zKTsKICB9Cn0pOwpmdW5j
dGlvbiAkKGVsZW1lbnQpIHsKICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsK
ICAgIGZvciAodmFyIGkgPSAwLCBlbGVtZW50cyA9IFtdLCBsZW5ndGggPSBhcmd1
bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspCiAgICAgIGVsZW1lbnRzLnB1
c2goJChhcmd1bWVudHNbaV0pKTsKICAgIHJldHVybiBlbGVtZW50czsKICB9CiAg
aWYgKHR5cGVvZiBlbGVtZW50ID09ICdzdHJpbmcnKQogICAgZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQpOwogIHJldHVybiBFbGVtZW50
LmV4dGVuZChlbGVtZW50KTsKfQoKaWYgKFByb3RvdHlwZS5Ccm93c2VyRmVhdHVy
ZXMuWFBhdGgpIHsKICBkb2N1bWVudC5fZ2V0RWxlbWVudHNCeVhQYXRoID0gZnVu
Y3Rpb24oZXhwcmVzc2lvbiwgcGFyZW50RWxlbWVudCkgewogICAgdmFyIHJlc3Vs
dHMgPSBbXTsKICAgIHZhciBxdWVyeSA9IGRvY3VtZW50LmV2YWx1YXRlKGV4cHJl
c3Npb24sICQocGFyZW50RWxlbWVudCkgfHwgZG9jdW1lbnQsCiAgICAgIG51bGws
IFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxsKTsK
ICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBxdWVyeS5zbmFwc2hvdExlbmd0
aDsgaSA8IGxlbmd0aDsgaSsrKQogICAgICByZXN1bHRzLnB1c2gocXVlcnkuc25h
cHNob3RJdGVtKGkpKTsKICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBmdW5jdGlvbihjbGFzc05hbWUs
IHBhcmVudEVsZW1lbnQpIHsKICAgIHZhciBxID0gIi4vLypbY29udGFpbnMoY29u
Y2F0KCcgJywgQGNsYXNzLCAnICcpLCAnICIgKyBjbGFzc05hbWUgKyAiICcpXSI7
CiAgICByZXR1cm4gZG9jdW1lbnQuX2dldEVsZW1lbnRzQnlYUGF0aChxLCBwYXJl
bnRFbGVtZW50KTsKICB9Cgp9IGVsc2UgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgcGFyZW50RWxlbWVudCkgewog
IHZhciBjaGlsZHJlbiA9ICgkKHBhcmVudEVsZW1lbnQpIHx8IGRvY3VtZW50LmJv
ZHkpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJyk7CiAgdmFyIGVsZW1lbnRzID0g
W10sIGNoaWxkLCBwYXR0ZXJuID0gbmV3IFJlZ0V4cCgiKF58XFxzKSIgKyBjbGFz
c05hbWUgKyAiKFxcc3wkKSIpOwogIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBj
aGlsZHJlbi5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgY2hpbGQgPSBj
aGlsZHJlbltpXTsKICAgIHZhciBlbGVtZW50Q2xhc3NOYW1lID0gY2hpbGQuY2xh
c3NOYW1lOwogICAgaWYgKGVsZW1lbnRDbGFzc05hbWUubGVuZ3RoID09IDApIGNv
bnRpbnVlOwogICAgaWYgKGVsZW1lbnRDbGFzc05hbWUgPT0gY2xhc3NOYW1lIHx8
IGVsZW1lbnRDbGFzc05hbWUubWF0Y2gocGF0dGVybikpCiAgICAgIGVsZW1lbnRz
LnB1c2goRWxlbWVudC5leHRlbmQoY2hpbGQpKTsKICB9CiAgcmV0dXJuIGVsZW1l
bnRzOwp9OwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgppZiAoIXdp
bmRvdy5FbGVtZW50KSB2YXIgRWxlbWVudCA9IHt9OwoKRWxlbWVudC5leHRlbmQg
PSBmdW5jdGlvbihlbGVtZW50KSB7CiAgdmFyIEYgPSBQcm90b3R5cGUuQnJvd3Nl
ckZlYXR1cmVzOwogIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC50YWdOYW1lIHx8
IGVsZW1lbnQubm9kZVR5cGUgPT0gMyB8fAogICBlbGVtZW50Ll9leHRlbmRlZCB8
fCBGLlNwZWNpZmljRWxlbWVudEV4dGVuc2lvbnMgfHwgZWxlbWVudCA9PSB3aW5k
b3cpCiAgICByZXR1cm4gZWxlbWVudDsKCiAgdmFyIG1ldGhvZHMgPSB7fSwgdGFn
TmFtZSA9IGVsZW1lbnQudGFnTmFtZSwgY2FjaGUgPSBFbGVtZW50LmV4dGVuZC5j
YWNoZSwKICAgVCA9IEVsZW1lbnQuTWV0aG9kcy5CeVRhZzsKCiAgLy8gZXh0ZW5k
IG1ldGhvZHMgZm9yIGFsbCB0YWdzIChTYWZhcmkgZG9lc24ndCBuZWVkIHRoaXMp
CiAgaWYgKCFGLkVsZW1lbnRFeHRlbnNpb25zKSB7CiAgICBPYmplY3QuZXh0ZW5k
KG1ldGhvZHMsIEVsZW1lbnQuTWV0aG9kcyksCiAgICBPYmplY3QuZXh0ZW5kKG1l
dGhvZHMsIEVsZW1lbnQuTWV0aG9kcy5TaW11bGF0ZWQpOwogIH0KCiAgLy8gZXh0
ZW5kIG1ldGhvZHMgZm9yIHNwZWNpZmljIHRhZ3MKICBpZiAoVFt0YWdOYW1lXSkg
T2JqZWN0LmV4dGVuZChtZXRob2RzLCBUW3RhZ05hbWVdKTsKCiAgZm9yICh2YXIg
cHJvcGVydHkgaW4gbWV0aG9kcykgewogICAgdmFyIHZhbHVlID0gbWV0aG9kc1tw
cm9wZXJ0eV07CiAgICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgJiYg
IShwcm9wZXJ0eSBpbiBlbGVtZW50KSkKICAgICAgZWxlbWVudFtwcm9wZXJ0eV0g
PSBjYWNoZS5maW5kT3JTdG9yZSh2YWx1ZSk7CiAgfQoKICBlbGVtZW50Ll9leHRl
bmRlZCA9IFByb3RvdHlwZS5lbXB0eUZ1bmN0aW9uOwogIHJldHVybiBlbGVtZW50
Owp9OwoKRWxlbWVudC5leHRlbmQuY2FjaGUgPSB7CiAgZmluZE9yU3RvcmU6IGZ1
bmN0aW9uKHZhbHVlKSB7CiAgICByZXR1cm4gdGhpc1t2YWx1ZV0gPSB0aGlzW3Zh
bHVlXSB8fCBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHZhbHVlLmFwcGx5KG51
bGwsIFt0aGlzXS5jb25jYXQoJEEoYXJndW1lbnRzKSkpOwogICAgfQogIH0KfTsK
CkVsZW1lbnQuTWV0aG9kcyA9IHsKICB2aXNpYmxlOiBmdW5jdGlvbihlbGVtZW50
KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5zdHlsZS5kaXNwbGF5ICE9ICdub25l
JzsKICB9LAoKICB0b2dnbGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1l
bnQgPSAkKGVsZW1lbnQpOwogICAgRWxlbWVudFtFbGVtZW50LnZpc2libGUoZWxl
bWVudCkgPyAnaGlkZScgOiAnc2hvdyddKGVsZW1lbnQpOwogICAgcmV0dXJuIGVs
ZW1lbnQ7CiAgfSwKCiAgaGlkZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgJChl
bGVtZW50KS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgcmV0dXJuIGVsZW1l
bnQ7CiAgfSwKCiAgc2hvdzogZnVuY3Rpb24oZWxlbWVudCkgewogICAgJChlbGVt
ZW50KS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9
LAoKICByZW1vdmU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAk
KGVsZW1lbnQpOwogICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVs
ZW1lbnQpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgdXBkYXRlOiBmdW5j
dGlvbihlbGVtZW50LCBodG1sKSB7CiAgICBodG1sID0gdHlwZW9mIGh0bWwgPT0g
J3VuZGVmaW5lZCcgPyAnJyA6IGh0bWwudG9TdHJpbmcoKTsKICAgICQoZWxlbWVu
dCkuaW5uZXJIVE1MID0gaHRtbC5zdHJpcFNjcmlwdHMoKTsKICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7aHRtbC5ldmFsU2NyaXB0cygpfSwgMTApOwogICAgcmV0
dXJuIGVsZW1lbnQ7CiAgfSwKCiAgcmVwbGFjZTogZnVuY3Rpb24oZWxlbWVudCwg
aHRtbCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBodG1sID0gdHlw
ZW9mIGh0bWwgPT0gJ3VuZGVmaW5lZCcgPyAnJyA6IGh0bWwudG9TdHJpbmcoKTsK
ICAgIGlmIChlbGVtZW50Lm91dGVySFRNTCkgewogICAgICBlbGVtZW50Lm91dGVy
SFRNTCA9IGh0bWwuc3RyaXBTY3JpcHRzKCk7CiAgICB9IGVsc2UgewogICAgICB2
YXIgcmFuZ2UgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
ICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOwogICAgICBl
bGVtZW50LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKAogICAgICAgIHJhbmdlLmNy
ZWF0ZUNvbnRleHR1YWxGcmFnbWVudChodG1sLnN0cmlwU2NyaXB0cygpKSwgZWxl
bWVudCk7CiAgICB9CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2h0bWwuZXZh
bFNjcmlwdHMoKX0sIDEwKTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIGlu
c3BlY3Q6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1l
bnQpOwogICAgdmFyIHJlc3VsdCA9ICc8JyArIGVsZW1lbnQudGFnTmFtZS50b0xv
d2VyQ2FzZSgpOwogICAgJEgoeydpZCc6ICdpZCcsICdjbGFzc05hbWUnOiAnY2xh
c3MnfSkuZWFjaChmdW5jdGlvbihwYWlyKSB7CiAgICAgIHZhciBwcm9wZXJ0eSA9
IHBhaXIuZmlyc3QoKSwgYXR0cmlidXRlID0gcGFpci5sYXN0KCk7CiAgICAgIHZh
ciB2YWx1ZSA9IChlbGVtZW50W3Byb3BlcnR5XSB8fCAnJykudG9TdHJpbmcoKTsK
ICAgICAgaWYgKHZhbHVlKSByZXN1bHQgKz0gJyAnICsgYXR0cmlidXRlICsgJz0n
ICsgdmFsdWUuaW5zcGVjdCh0cnVlKTsKICAgIH0pOwogICAgcmV0dXJuIHJlc3Vs
dCArICc+JzsKICB9LAoKICByZWN1cnNpdmVseUNvbGxlY3Q6IGZ1bmN0aW9uKGVs
ZW1lbnQsIHByb3BlcnR5KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAg
IHZhciBlbGVtZW50cyA9IFtdOwogICAgd2hpbGUgKGVsZW1lbnQgPSBlbGVtZW50
W3Byb3BlcnR5XSkKICAgICAgaWYgKGVsZW1lbnQubm9kZVR5cGUgPT0gMSkKICAg
ICAgICBlbGVtZW50cy5wdXNoKEVsZW1lbnQuZXh0ZW5kKGVsZW1lbnQpKTsKICAg
IHJldHVybiBlbGVtZW50czsKICB9LAoKICBhbmNlc3RvcnM6IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLnJlY3Vyc2l2ZWx5Q29sbGVj
dCgncGFyZW50Tm9kZScpOwogIH0sCgogIGRlc2NlbmRhbnRzOiBmdW5jdGlvbihl
bGVtZW50KSB7CiAgICByZXR1cm4gJEEoJChlbGVtZW50KS5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnKicpKS5lYWNoKEVsZW1lbnQuZXh0ZW5kKTsKICB9LAoKICBmaXJz
dERlc2NlbmRhbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAk
KGVsZW1lbnQpLmZpcnN0Q2hpbGQ7CiAgICB3aGlsZSAoZWxlbWVudCAmJiBlbGVt
ZW50Lm5vZGVUeXBlICE9IDEpIGVsZW1lbnQgPSBlbGVtZW50Lm5leHRTaWJsaW5n
OwogICAgcmV0dXJuICQoZWxlbWVudCk7CiAgfSwKCiAgaW1tZWRpYXRlRGVzY2Vu
ZGFudHM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGlmICghKGVsZW1lbnQgPSAk
KGVsZW1lbnQpLmZpcnN0Q2hpbGQpKSByZXR1cm4gW107CiAgICB3aGlsZSAoZWxl
bWVudCAmJiBlbGVtZW50Lm5vZGVUeXBlICE9IDEpIGVsZW1lbnQgPSBlbGVtZW50
Lm5leHRTaWJsaW5nOwogICAgaWYgKGVsZW1lbnQpIHJldHVybiBbZWxlbWVudF0u
Y29uY2F0KCQoZWxlbWVudCkubmV4dFNpYmxpbmdzKCkpOwogICAgcmV0dXJuIFtd
OwogIH0sCgogIHByZXZpb3VzU2libGluZ3M6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK
ICAgIHJldHVybiAkKGVsZW1lbnQpLnJlY3Vyc2l2ZWx5Q29sbGVjdCgncHJldmlv
dXNTaWJsaW5nJyk7CiAgfSwKCiAgbmV4dFNpYmxpbmdzOiBmdW5jdGlvbihlbGVt
ZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS5yZWN1cnNpdmVseUNvbGxlY3Qo
J25leHRTaWJsaW5nJyk7CiAgfSwKCiAgc2libGluZ3M6IGZ1bmN0aW9uKGVsZW1l
bnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgcmV0dXJuIGVsZW1l
bnQucHJldmlvdXNTaWJsaW5ncygpLnJldmVyc2UoKS5jb25jYXQoZWxlbWVudC5u
ZXh0U2libGluZ3MoKSk7CiAgfSwKCiAgbWF0Y2g6IGZ1bmN0aW9uKGVsZW1lbnQs
IHNlbGVjdG9yKSB7CiAgICBpZiAodHlwZW9mIHNlbGVjdG9yID09ICdzdHJpbmcn
KQogICAgICBzZWxlY3RvciA9IG5ldyBTZWxlY3RvcihzZWxlY3Rvcik7CiAgICBy
ZXR1cm4gc2VsZWN0b3IubWF0Y2goJChlbGVtZW50KSk7CiAgfSwKCiAgdXA6IGZ1
bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb24sIGluZGV4KSB7CiAgICBlbGVtZW50
ID0gJChlbGVtZW50KTsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHJl
dHVybiAkKGVsZW1lbnQucGFyZW50Tm9kZSk7CiAgICB2YXIgYW5jZXN0b3JzID0g
ZWxlbWVudC5hbmNlc3RvcnMoKTsKICAgIHJldHVybiBleHByZXNzaW9uID8gU2Vs
ZWN0b3IuZmluZEVsZW1lbnQoYW5jZXN0b3JzLCBleHByZXNzaW9uLCBpbmRleCkg
OgogICAgICBhbmNlc3RvcnNbaW5kZXggfHwgMF07CiAgfSwKCiAgZG93bjogZnVu
Y3Rpb24oZWxlbWVudCwgZXhwcmVzc2lvbiwgaW5kZXgpIHsKICAgIGVsZW1lbnQg
PSAkKGVsZW1lbnQpOwogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgcmV0
dXJuIGVsZW1lbnQuZmlyc3REZXNjZW5kYW50KCk7CiAgICB2YXIgZGVzY2VuZGFu
dHMgPSBlbGVtZW50LmRlc2NlbmRhbnRzKCk7CiAgICByZXR1cm4gZXhwcmVzc2lv
biA/IFNlbGVjdG9yLmZpbmRFbGVtZW50KGRlc2NlbmRhbnRzLCBleHByZXNzaW9u
LCBpbmRleCkgOgogICAgICBkZXNjZW5kYW50c1tpbmRleCB8fCAwXTsKICB9LAoK
ICBwcmV2aW91czogZnVuY3Rpb24oZWxlbWVudCwgZXhwcmVzc2lvbiwgaW5kZXgp
IHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGFyZ3VtZW50cy5s
ZW5ndGggPT0gMSkgcmV0dXJuICQoU2VsZWN0b3IuaGFuZGxlcnMucHJldmlvdXNF
bGVtZW50U2libGluZyhlbGVtZW50KSk7CiAgICB2YXIgcHJldmlvdXNTaWJsaW5n
cyA9IGVsZW1lbnQucHJldmlvdXNTaWJsaW5ncygpOwogICAgcmV0dXJuIGV4cHJl
c3Npb24gPyBTZWxlY3Rvci5maW5kRWxlbWVudChwcmV2aW91c1NpYmxpbmdzLCBl
eHByZXNzaW9uLCBpbmRleCkgOgogICAgICBwcmV2aW91c1NpYmxpbmdzW2luZGV4
IHx8IDBdOwogIH0sCgogIG5leHQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Np
b24sIGluZGV4KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09IDEpIHJldHVybiAkKFNlbGVjdG9yLmhhbmRsZXJz
Lm5leHRFbGVtZW50U2libGluZyhlbGVtZW50KSk7CiAgICB2YXIgbmV4dFNpYmxp
bmdzID0gZWxlbWVudC5uZXh0U2libGluZ3MoKTsKICAgIHJldHVybiBleHByZXNz
aW9uID8gU2VsZWN0b3IuZmluZEVsZW1lbnQobmV4dFNpYmxpbmdzLCBleHByZXNz
aW9uLCBpbmRleCkgOgogICAgICBuZXh0U2libGluZ3NbaW5kZXggfHwgMF07CiAg
fSwKCiAgZ2V0RWxlbWVudHNCeVNlbGVjdG9yOiBmdW5jdGlvbigpIHsKICAgIHZh
ciBhcmdzID0gJEEoYXJndW1lbnRzKSwgZWxlbWVudCA9ICQoYXJncy5zaGlmdCgp
KTsKICAgIHJldHVybiBTZWxlY3Rvci5maW5kQ2hpbGRFbGVtZW50cyhlbGVtZW50
LCBhcmdzKTsKICB9LAoKICBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOiBmdW5jdGlv
bihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIHJldHVybiBkb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZSwgZWxlbWVudCk7CiAgfSwKCiAg
cmVhZEF0dHJpYnV0ZTogZnVuY3Rpb24oZWxlbWVudCwgbmFtZSkgewogICAgZWxl
bWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXIuSUUp
IHsKICAgICAgaWYgKCFlbGVtZW50LmF0dHJpYnV0ZXMpIHJldHVybiBudWxsOwog
ICAgICB2YXIgdCA9IEVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9uczsKICAg
ICAgaWYgKHQudmFsdWVzW25hbWVdKSByZXR1cm4gdC52YWx1ZXNbbmFtZV0oZWxl
bWVudCwgbmFtZSk7CiAgICAgIGlmICh0Lm5hbWVzW25hbWVdKSAgbmFtZSA9IHQu
bmFtZXNbbmFtZV07CiAgICAgIHZhciBhdHRyaWJ1dGUgPSBlbGVtZW50LmF0dHJp
YnV0ZXNbbmFtZV07CiAgICAgIHJldHVybiBhdHRyaWJ1dGUgPyBhdHRyaWJ1dGUu
bm9kZVZhbHVlIDogbnVsbDsKICAgIH0KICAgIHJldHVybiBlbGVtZW50LmdldEF0
dHJpYnV0ZShuYW1lKTsKICB9LAoKICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKGVsZW1l
bnQpIHsKICAgIHJldHVybiAkKGVsZW1lbnQpLmdldERpbWVuc2lvbnMoKS5oZWln
aHQ7CiAgfSwKCiAgZ2V0V2lkdGg6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIHJl
dHVybiAkKGVsZW1lbnQpLmdldERpbWVuc2lvbnMoKS53aWR0aDsKICB9LAoKICBj
bGFzc05hbWVzOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICByZXR1cm4gbmV3IEVs
ZW1lbnQuQ2xhc3NOYW1lcyhlbGVtZW50KTsKICB9LAoKICBoYXNDbGFzc05hbWU6
IGZ1bmN0aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewogICAgaWYgKCEoZWxlbWVu
dCA9ICQoZWxlbWVudCkpKSByZXR1cm47CiAgICB2YXIgZWxlbWVudENsYXNzTmFt
ZSA9IGVsZW1lbnQuY2xhc3NOYW1lOwogICAgaWYgKGVsZW1lbnRDbGFzc05hbWUu
bGVuZ3RoID09IDApIHJldHVybiBmYWxzZTsKICAgIGlmIChlbGVtZW50Q2xhc3NO
YW1lID09IGNsYXNzTmFtZSB8fAogICAgICAgIGVsZW1lbnRDbGFzc05hbWUubWF0
Y2gobmV3IFJlZ0V4cCgiKF58XFxzKSIgKyBjbGFzc05hbWUgKyAiKFxcc3wkKSIp
KSkKICAgICAgcmV0dXJuIHRydWU7CiAgICByZXR1cm4gZmFsc2U7CiAgfSwKCiAg
YWRkQ2xhc3NOYW1lOiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAg
IGlmICghKGVsZW1lbnQgPSAkKGVsZW1lbnQpKSkgcmV0dXJuOwogICAgRWxlbWVu
dC5jbGFzc05hbWVzKGVsZW1lbnQpLmFkZChjbGFzc05hbWUpOwogICAgcmV0dXJu
IGVsZW1lbnQ7CiAgfSwKCiAgcmVtb3ZlQ2xhc3NOYW1lOiBmdW5jdGlvbihlbGVt
ZW50LCBjbGFzc05hbWUpIHsKICAgIGlmICghKGVsZW1lbnQgPSAkKGVsZW1lbnQp
KSkgcmV0dXJuOwogICAgRWxlbWVudC5jbGFzc05hbWVzKGVsZW1lbnQpLnJlbW92
ZShjbGFzc05hbWUpOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgdG9nZ2xl
Q2xhc3NOYW1lOiBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpIHsKICAgIGlm
ICghKGVsZW1lbnQgPSAkKGVsZW1lbnQpKSkgcmV0dXJuOwogICAgRWxlbWVudC5j
bGFzc05hbWVzKGVsZW1lbnQpW2VsZW1lbnQuaGFzQ2xhc3NOYW1lKGNsYXNzTmFt
ZSkgPyAncmVtb3ZlJyA6ICdhZGQnXShjbGFzc05hbWUpOwogICAgcmV0dXJuIGVs
ZW1lbnQ7CiAgfSwKCiAgb2JzZXJ2ZTogZnVuY3Rpb24oKSB7CiAgICBFdmVudC5v
YnNlcnZlLmFwcGx5KEV2ZW50LCBhcmd1bWVudHMpOwogICAgcmV0dXJuICRBKGFy
Z3VtZW50cykuZmlyc3QoKTsKICB9LAoKICBzdG9wT2JzZXJ2aW5nOiBmdW5jdGlv
bigpIHsKICAgIEV2ZW50LnN0b3BPYnNlcnZpbmcuYXBwbHkoRXZlbnQsIGFyZ3Vt
ZW50cyk7CiAgICByZXR1cm4gJEEoYXJndW1lbnRzKS5maXJzdCgpOwogIH0sCgog
IC8vIHJlbW92ZXMgd2hpdGVzcGFjZS1vbmx5IHRleHQgbm9kZSBjaGlsZHJlbgog
IGNsZWFuV2hpdGVzcGFjZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVu
dCA9ICQoZWxlbWVudCk7CiAgICB2YXIgbm9kZSA9IGVsZW1lbnQuZmlyc3RDaGls
ZDsKICAgIHdoaWxlIChub2RlKSB7CiAgICAgIHZhciBuZXh0Tm9kZSA9IG5vZGUu
bmV4dFNpYmxpbmc7CiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09IDMgJiYgIS9c
Uy8udGVzdChub2RlLm5vZGVWYWx1ZSkpCiAgICAgICAgZWxlbWVudC5yZW1vdmVD
aGlsZChub2RlKTsKICAgICAgbm9kZSA9IG5leHROb2RlOwogICAgfQogICAgcmV0
dXJuIGVsZW1lbnQ7CiAgfSwKCiAgZW1wdHk6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK
ICAgIHJldHVybiAkKGVsZW1lbnQpLmlubmVySFRNTC5ibGFuaygpOwogIH0sCgog
IGRlc2NlbmRhbnRPZjogZnVuY3Rpb24oZWxlbWVudCwgYW5jZXN0b3IpIHsKICAg
IGVsZW1lbnQgPSAkKGVsZW1lbnQpLCBhbmNlc3RvciA9ICQoYW5jZXN0b3IpOwog
ICAgd2hpbGUgKGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGUpCiAgICAgIGlm
IChlbGVtZW50ID09IGFuY2VzdG9yKSByZXR1cm4gdHJ1ZTsKICAgIHJldHVybiBm
YWxzZTsKICB9LAoKICBzY3JvbGxUbzogZnVuY3Rpb24oZWxlbWVudCkgewogICAg
ZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2YXIgcG9zID0gUG9zaXRpb24uY3Vt
dWxhdGl2ZU9mZnNldChlbGVtZW50KTsKICAgIHdpbmRvdy5zY3JvbGxUbyhwb3Nb
MF0sIHBvc1sxXSk7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBnZXRTdHls
ZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVs
ZW1lbnQpOwogICAgc3R5bGUgPSBzdHlsZSA9PSAnZmxvYXQnID8gJ2Nzc0Zsb2F0
JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LnN0
eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUpIHsKICAgICAgdmFyIGNzcyA9IGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVs
bCk7CiAgICAgIHZhbHVlID0gY3NzID8gY3NzW3N0eWxlXSA6IG51bGw7CiAgICB9
CiAgICBpZiAoc3R5bGUgPT0gJ29wYWNpdHknKSByZXR1cm4gdmFsdWUgPyBwYXJz
ZUZsb2F0KHZhbHVlKSA6IDEuMDsKICAgIHJldHVybiB2YWx1ZSA9PSAnYXV0bycg
PyBudWxsIDogdmFsdWU7CiAgfSwKCiAgZ2V0T3BhY2l0eTogZnVuY3Rpb24oZWxl
bWVudCkgewogICAgcmV0dXJuICQoZWxlbWVudCkuZ2V0U3R5bGUoJ29wYWNpdHkn
KTsKICB9LAoKICBzZXRTdHlsZTogZnVuY3Rpb24oZWxlbWVudCwgc3R5bGVzLCBj
YW1lbGl6ZWQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIGVs
ZW1lbnRTdHlsZSA9IGVsZW1lbnQuc3R5bGU7CgogICAgZm9yICh2YXIgcHJvcGVy
dHkgaW4gc3R5bGVzKQogICAgICBpZiAocHJvcGVydHkgPT0gJ29wYWNpdHknKSBl
bGVtZW50LnNldE9wYWNpdHkoc3R5bGVzW3Byb3BlcnR5XSkKICAgICAgZWxzZQog
ICAgICAgIGVsZW1lbnRTdHlsZVsocHJvcGVydHkgPT0gJ2Zsb2F0JyB8fCBwcm9w
ZXJ0eSA9PSAnY3NzRmxvYXQnKSA/CiAgICAgICAgICAoZWxlbWVudFN0eWxlLnN0
eWxlRmxvYXQgPT09IHVuZGVmaW5lZCA/ICdjc3NGbG9hdCcgOiAnc3R5bGVGbG9h
dCcpIDoKICAgICAgICAgIChjYW1lbGl6ZWQgPyBwcm9wZXJ0eSA6IHByb3BlcnR5
LmNhbWVsaXplKCkpXSA9IHN0eWxlc1twcm9wZXJ0eV07CgogICAgcmV0dXJuIGVs
ZW1lbnQ7CiAgfSwKCiAgc2V0T3BhY2l0eTogZnVuY3Rpb24oZWxlbWVudCwgdmFs
dWUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgZWxlbWVudC5zdHls
ZS5vcGFjaXR5ID0gKHZhbHVlID09IDEgfHwgdmFsdWUgPT09ICcnKSA/ICcnIDoK
ICAgICAgKHZhbHVlIDwgMC4wMDAwMSkgPyAwIDogdmFsdWU7CiAgICByZXR1cm4g
ZWxlbWVudDsKICB9LAoKICBnZXREaW1lbnNpb25zOiBmdW5jdGlvbihlbGVtZW50
KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHZhciBkaXNwbGF5ID0g
JChlbGVtZW50KS5nZXRTdHlsZSgnZGlzcGxheScpOwogICAgaWYgKGRpc3BsYXkg
IT0gJ25vbmUnICYmIGRpc3BsYXkgIT0gbnVsbCkgLy8gU2FmYXJpIGJ1ZwogICAg
ICByZXR1cm4ge3dpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IGVs
ZW1lbnQub2Zmc2V0SGVpZ2h0fTsKCiAgICAvLyBBbGwgKldpZHRoIGFuZCAqSGVp
Z2h0IHByb3BlcnRpZXMgZ2l2ZSAwIG9uIGVsZW1lbnRzIHdpdGggZGlzcGxheSBu
b25lLAogICAgLy8gc28gZW5hYmxlIHRoZSBlbGVtZW50IHRlbXBvcmFyaWx5CiAg
ICB2YXIgZWxzID0gZWxlbWVudC5zdHlsZTsKICAgIHZhciBvcmlnaW5hbFZpc2li
aWxpdHkgPSBlbHMudmlzaWJpbGl0eTsKICAgIHZhciBvcmlnaW5hbFBvc2l0aW9u
ID0gZWxzLnBvc2l0aW9uOwogICAgdmFyIG9yaWdpbmFsRGlzcGxheSA9IGVscy5k
aXNwbGF5OwogICAgZWxzLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKICAgIGVscy5w
b3NpdGlvbiA9ICdhYnNvbHV0ZSc7CiAgICBlbHMuZGlzcGxheSA9ICdibG9jayc7
CiAgICB2YXIgb3JpZ2luYWxXaWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7CiAg
ICB2YXIgb3JpZ2luYWxIZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDsKICAg
IGVscy5kaXNwbGF5ID0gb3JpZ2luYWxEaXNwbGF5OwogICAgZWxzLnBvc2l0aW9u
ID0gb3JpZ2luYWxQb3NpdGlvbjsKICAgIGVscy52aXNpYmlsaXR5ID0gb3JpZ2lu
YWxWaXNpYmlsaXR5OwogICAgcmV0dXJuIHt3aWR0aDogb3JpZ2luYWxXaWR0aCwg
aGVpZ2h0OiBvcmlnaW5hbEhlaWdodH07CiAgfSwKCiAgbWFrZVBvc2l0aW9uZWQ6
IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwog
ICAgdmFyIHBvcyA9IEVsZW1lbnQuZ2V0U3R5bGUoZWxlbWVudCwgJ3Bvc2l0aW9u
Jyk7CiAgICBpZiAocG9zID09ICdzdGF0aWMnIHx8ICFwb3MpIHsKICAgICAgZWxl
bWVudC5fbWFkZVBvc2l0aW9uZWQgPSB0cnVlOwogICAgICBlbGVtZW50LnN0eWxl
LnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKICAgICAgLy8gT3BlcmEgcmV0dXJucyB0
aGUgb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlvbmluZyBjb250ZXh0LCB3
aGVuIGFuCiAgICAgIC8vIGVsZW1lbnQgaXMgcG9zaXRpb24gcmVsYXRpdmUgYnV0
IHRvcCBhbmQgbGVmdCBoYXZlIG5vdCBiZWVuIGRlZmluZWQKICAgICAgaWYgKHdp
bmRvdy5vcGVyYSkgewogICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gMDsKICAg
ICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSAwOwogICAgICB9CiAgICB9CiAgICBy
ZXR1cm4gZWxlbWVudDsKICB9LAoKICB1bmRvUG9zaXRpb25lZDogZnVuY3Rpb24o
ZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBpZiAoZWxl
bWVudC5fbWFkZVBvc2l0aW9uZWQpIHsKICAgICAgZWxlbWVudC5fbWFkZVBvc2l0
aW9uZWQgPSB1bmRlZmluZWQ7CiAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24g
PQogICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0KICAgICAgICBlbGVtZW50LnN0
eWxlLmxlZnQgPQogICAgICAgIGVsZW1lbnQuc3R5bGUuYm90dG9tID0KICAgICAg
ICBlbGVtZW50LnN0eWxlLnJpZ2h0ID0gJyc7CiAgICB9CiAgICByZXR1cm4gZWxl
bWVudDsKICB9LAoKICBtYWtlQ2xpcHBpbmc6IGZ1bmN0aW9uKGVsZW1lbnQpIHsK
ICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgaWYgKGVsZW1lbnQuX292ZXJm
bG93KSByZXR1cm4gZWxlbWVudDsKICAgIGVsZW1lbnQuX292ZXJmbG93ID0gZWxl
bWVudC5zdHlsZS5vdmVyZmxvdyB8fCAnYXV0byc7CiAgICBpZiAoKEVsZW1lbnQu
Z2V0U3R5bGUoZWxlbWVudCwgJ292ZXJmbG93JykgfHwgJ3Zpc2libGUnKSAhPSAn
aGlkZGVuJykKICAgICAgZWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4n
OwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfSwKCiAgdW5kb0NsaXBwaW5nOiBmdW5j
dGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlm
ICghZWxlbWVudC5fb3ZlcmZsb3cpIHJldHVybiBlbGVtZW50OwogICAgZWxlbWVu
dC5zdHlsZS5vdmVyZmxvdyA9IGVsZW1lbnQuX292ZXJmbG93ID09ICdhdXRvJyA/
ICcnIDogZWxlbWVudC5fb3ZlcmZsb3c7CiAgICBlbGVtZW50Ll9vdmVyZmxvdyA9
IG51bGw7CiAgICByZXR1cm4gZWxlbWVudDsKICB9Cn07CgpPYmplY3QuZXh0ZW5k
KEVsZW1lbnQuTWV0aG9kcywgewogIGNoaWxkT2Y6IEVsZW1lbnQuTWV0aG9kcy5k
ZXNjZW5kYW50T2YsCiAgY2hpbGRFbGVtZW50czogRWxlbWVudC5NZXRob2RzLmlt
bWVkaWF0ZURlc2NlbmRhbnRzCn0pOwoKaWYgKFByb3RvdHlwZS5Ccm93c2VyLk9w
ZXJhKSB7CiAgRWxlbWVudC5NZXRob2RzLl9nZXRTdHlsZSA9IEVsZW1lbnQuTWV0
aG9kcy5nZXRTdHlsZTsKICBFbGVtZW50Lk1ldGhvZHMuZ2V0U3R5bGUgPSBmdW5j
dGlvbihlbGVtZW50LCBzdHlsZSkgewogICAgc3dpdGNoKHN0eWxlKSB7CiAgICAg
IGNhc2UgJ2xlZnQnOgogICAgICBjYXNlICd0b3AnOgogICAgICBjYXNlICdyaWdo
dCc6CiAgICAgIGNhc2UgJ2JvdHRvbSc6CiAgICAgICAgaWYgKEVsZW1lbnQuX2dl
dFN0eWxlKGVsZW1lbnQsICdwb3NpdGlvbicpID09ICdzdGF0aWMnKSByZXR1cm4g
bnVsbDsKICAgICAgZGVmYXVsdDogcmV0dXJuIEVsZW1lbnQuX2dldFN0eWxlKGVs
ZW1lbnQsIHN0eWxlKTsKICAgIH0KICB9Owp9CmVsc2UgaWYgKFByb3RvdHlwZS5C
cm93c2VyLklFKSB7CiAgRWxlbWVudC5NZXRob2RzLmdldFN0eWxlID0gZnVuY3Rp
b24oZWxlbWVudCwgc3R5bGUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwog
ICAgc3R5bGUgPSAoc3R5bGUgPT0gJ2Zsb2F0JyB8fCBzdHlsZSA9PSAnY3NzRmxv
YXQnKSA/ICdzdHlsZUZsb2F0JyA6IHN0eWxlLmNhbWVsaXplKCk7CiAgICB2YXIg
dmFsdWUgPSBlbGVtZW50LnN0eWxlW3N0eWxlXTsKICAgIGlmICghdmFsdWUgJiYg
ZWxlbWVudC5jdXJyZW50U3R5bGUpIHZhbHVlID0gZWxlbWVudC5jdXJyZW50U3R5
bGVbc3R5bGVdOwoKICAgIGlmIChzdHlsZSA9PSAnb3BhY2l0eScpIHsKICAgICAg
aWYgKHZhbHVlID0gKGVsZW1lbnQuZ2V0U3R5bGUoJ2ZpbHRlcicpIHx8ICcnKS5t
YXRjaCgvYWxwaGFcKG9wYWNpdHk9KC4qKVwpLykpCiAgICAgICAgaWYgKHZhbHVl
WzFdKSByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZVsxXSkgLyAxMDA7CiAgICAgIHJl
dHVybiAxLjA7CiAgICB9CgogICAgaWYgKHZhbHVlID09ICdhdXRvJykgewogICAg
ICBpZiAoKHN0eWxlID09ICd3aWR0aCcgfHwgc3R5bGUgPT0gJ2hlaWdodCcpICYm
IChlbGVtZW50LmdldFN0eWxlKCdkaXNwbGF5JykgIT0gJ25vbmUnKSkKICAgICAg
ICByZXR1cm4gZWxlbWVudFsnb2Zmc2V0JytzdHlsZS5jYXBpdGFsaXplKCldICsg
J3B4JzsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICByZXR1cm4gdmFsdWU7
CiAgfTsKCiAgRWxlbWVudC5NZXRob2RzLnNldE9wYWNpdHkgPSBmdW5jdGlvbihl
bGVtZW50LCB2YWx1ZSkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB2
YXIgZmlsdGVyID0gZWxlbWVudC5nZXRTdHlsZSgnZmlsdGVyJyksIHN0eWxlID0g
ZWxlbWVudC5zdHlsZTsKICAgIGlmICh2YWx1ZSA9PSAxIHx8IHZhbHVlID09PSAn
JykgewogICAgICBzdHlsZS5maWx0ZXIgPSBmaWx0ZXIucmVwbGFjZSgvYWxwaGFc
KFteXCldKlwpL2dpLCcnKTsKICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICB9IGVs
c2UgaWYgKHZhbHVlIDwgMC4wMDAwMSkgdmFsdWUgPSAwOwogICAgc3R5bGUuZmls
dGVyID0gZmlsdGVyLnJlcGxhY2UoL2FscGhhXChbXlwpXSpcKS9naSwgJycpICsK
ICAgICAgJ2FscGhhKG9wYWNpdHk9JyArICh2YWx1ZSAqIDEwMCkgKyAnKSc7CiAg
ICByZXR1cm4gZWxlbWVudDsKICB9OwoKICAvLyBJRSBpcyBtaXNzaW5nIC5pbm5l
ckhUTUwgc3VwcG9ydCBmb3IgVEFCTEUtcmVsYXRlZCBlbGVtZW50cwogIEVsZW1l
bnQuTWV0aG9kcy51cGRhdGUgPSBmdW5jdGlvbihlbGVtZW50LCBodG1sKSB7CiAg
ICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGh0bWwgPSB0eXBlb2YgaHRtbCA9
PSAndW5kZWZpbmVkJyA/ICcnIDogaHRtbC50b1N0cmluZygpOwogICAgdmFyIHRh
Z05hbWUgPSBlbGVtZW50LnRhZ05hbWUudG9VcHBlckNhc2UoKTsKICAgIGlmIChb
J1RIRUFEJywnVEJPRFknLCdUUicsJ1REJ10uaW5jbHVkZSh0YWdOYW1lKSkgewog
ICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAg
ICAgIHN3aXRjaCAodGFnTmFtZSkgewogICAgICAgIGNhc2UgJ1RIRUFEJzoKICAg
ICAgICBjYXNlICdUQk9EWSc6CiAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gJzx0
YWJsZT48dGJvZHk+JyArICBodG1sLnN0cmlwU2NyaXB0cygpICsgJzwvdGJvZHk+
PC90YWJsZT4nOwogICAgICAgICAgZGVwdGggPSAyOwogICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSAnVFInOgogICAgICAgICAgZGl2LmlubmVySFRNTCA9ICc8
dGFibGU+PHRib2R5Pjx0cj4nICsgIGh0bWwuc3RyaXBTY3JpcHRzKCkgKyAnPC90
cj48L3Rib2R5PjwvdGFibGU+JzsKICAgICAgICAgIGRlcHRoID0gMzsKICAgICAg
ICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ1REJzoKICAgICAgICAgIGRpdi5pbm5l
ckhUTUwgPSAnPHRhYmxlPjx0Ym9keT48dHI+PHRkPicgKyAgaHRtbC5zdHJpcFNj
cmlwdHMoKSArICc8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPic7CiAgICAgICAg
ICBkZXB0aCA9IDQ7CiAgICAgIH0KICAgICAgJEEoZWxlbWVudC5jaGlsZE5vZGVz
KS5lYWNoKGZ1bmN0aW9uKG5vZGUpIHsgZWxlbWVudC5yZW1vdmVDaGlsZChub2Rl
KSB9KTsKICAgICAgZGVwdGgudGltZXMoZnVuY3Rpb24oKSB7IGRpdiA9IGRpdi5m
aXJzdENoaWxkIH0pOwogICAgICAkQShkaXYuY2hpbGROb2RlcykuZWFjaChmdW5j
dGlvbihub2RlKSB7IGVsZW1lbnQuYXBwZW5kQ2hpbGQobm9kZSkgfSk7CiAgICB9
IGVsc2UgewogICAgICBlbGVtZW50LmlubmVySFRNTCA9IGh0bWwuc3RyaXBTY3Jp
cHRzKCk7CiAgICB9CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBodG1sLmV2
YWxTY3JpcHRzKCkgfSwgMTApOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfQp9CmVs
c2UgaWYgKFByb3RvdHlwZS5Ccm93c2VyLkdlY2tvKSB7CiAgRWxlbWVudC5NZXRo
b2RzLnNldE9wYWNpdHkgPSBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkgewogICAg
ZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LnN0eWxlLm9wYWNpdHkg
PSAodmFsdWUgPT0gMSkgPyAwLjk5OTk5OSA6CiAgICAgICh2YWx1ZSA9PT0gJycp
ID8gJycgOiAodmFsdWUgPCAwLjAwMDAxKSA/IDAgOiB2YWx1ZTsKICAgIHJldHVy
biBlbGVtZW50OwogIH07Cn0KCkVsZW1lbnQuX2F0dHJpYnV0ZVRyYW5zbGF0aW9u
cyA9IHsKICBuYW1lczogewogICAgY29sc3BhbjogICAiY29sU3BhbiIsCiAgICBy
b3dzcGFuOiAgICJyb3dTcGFuIiwKICAgIHZhbGlnbjogICAgInZBbGlnbiIsCiAg
ICBkYXRldGltZTogICJkYXRlVGltZSIsCiAgICBhY2Nlc3NrZXk6ICJhY2Nlc3NL
ZXkiLAogICAgdGFiaW5kZXg6ICAidGFiSW5kZXgiLAogICAgZW5jdHlwZTogICAi
ZW5jVHlwZSIsCiAgICBtYXhsZW5ndGg6ICJtYXhMZW5ndGgiLAogICAgcmVhZG9u
bHk6ICAicmVhZE9ubHkiLAogICAgbG9uZ2Rlc2M6ICAibG9uZ0Rlc2MiCiAgfSwK
ICB2YWx1ZXM6IHsKICAgIF9nZXRBdHRyOiBmdW5jdGlvbihlbGVtZW50LCBhdHRy
aWJ1dGUpIHsKICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJp
YnV0ZSwgMik7CiAgICB9LAogICAgX2ZsYWc6IGZ1bmN0aW9uKGVsZW1lbnQsIGF0
dHJpYnV0ZSkgewogICAgICByZXR1cm4gJChlbGVtZW50KS5oYXNBdHRyaWJ1dGUo
YXR0cmlidXRlKSA/IGF0dHJpYnV0ZSA6IG51bGw7CiAgICB9LAogICAgc3R5bGU6
IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgcmV0dXJuIGVsZW1lbnQuc3R5bGUu
Y3NzVGV4dC50b0xvd2VyQ2FzZSgpOwogICAgfSwKICAgIHRpdGxlOiBmdW5jdGlv
bihlbGVtZW50KSB7CiAgICAgIHZhciBub2RlID0gZWxlbWVudC5nZXRBdHRyaWJ1
dGVOb2RlKCd0aXRsZScpOwogICAgICByZXR1cm4gbm9kZS5zcGVjaWZpZWQgPyBu
b2RlLm5vZGVWYWx1ZSA6IG51bGw7CiAgICB9CiAgfQp9OwoKKGZ1bmN0aW9uKCkg
ewogIE9iamVjdC5leHRlbmQodGhpcywgewogICAgaHJlZjogdGhpcy5fZ2V0QXR0
ciwKICAgIHNyYzogIHRoaXMuX2dldEF0dHIsCiAgICB0eXBlOiB0aGlzLl9nZXRB
dHRyLAogICAgZGlzYWJsZWQ6IHRoaXMuX2ZsYWcsCiAgICBjaGVja2VkOiAgdGhp
cy5fZmxhZywKICAgIHJlYWRvbmx5OiB0aGlzLl9mbGFnLAogICAgbXVsdGlwbGU6
IHRoaXMuX2ZsYWcKICB9KTsKfSkuY2FsbChFbGVtZW50Ll9hdHRyaWJ1dGVUcmFu
c2xhdGlvbnMudmFsdWVzKTsKCkVsZW1lbnQuTWV0aG9kcy5TaW11bGF0ZWQgPSB7
CiAgaGFzQXR0cmlidXRlOiBmdW5jdGlvbihlbGVtZW50LCBhdHRyaWJ1dGUpIHsK
ICAgIHZhciB0ID0gRWxlbWVudC5fYXR0cmlidXRlVHJhbnNsYXRpb25zLCBub2Rl
OwogICAgYXR0cmlidXRlID0gdC5uYW1lc1thdHRyaWJ1dGVdIHx8IGF0dHJpYnV0
ZTsKICAgIG5vZGUgPSAkKGVsZW1lbnQpLmdldEF0dHJpYnV0ZU5vZGUoYXR0cmli
dXRlKTsKICAgIHJldHVybiBub2RlICYmIG5vZGUuc3BlY2lmaWVkOwogIH0KfTsK
CkVsZW1lbnQuTWV0aG9kcy5CeVRhZyA9IHt9OwoKT2JqZWN0LmV4dGVuZChFbGVt
ZW50LCBFbGVtZW50Lk1ldGhvZHMpOwoKaWYgKCFQcm90b3R5cGUuQnJvd3NlckZl
YXR1cmVzLkVsZW1lbnRFeHRlbnNpb25zICYmCiBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKS5fX3Byb3RvX18pIHsKICB3aW5kb3cuSFRNTEVsZW1lbnQgPSB7
fTsKICB3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2JykuX19wcm90b19fOwogIFByb3RvdHlwZS5Ccm93c2Vy
RmVhdHVyZXMuRWxlbWVudEV4dGVuc2lvbnMgPSB0cnVlOwp9CgpFbGVtZW50Lmhh
c0F0dHJpYnV0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJpYnV0ZSkgewogIGlm
IChlbGVtZW50Lmhhc0F0dHJpYnV0ZSkgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmli
dXRlKGF0dHJpYnV0ZSk7CiAgcmV0dXJuIEVsZW1lbnQuTWV0aG9kcy5TaW11bGF0
ZWQuaGFzQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSk7Cn07CgpFbGVtZW50
LmFkZE1ldGhvZHMgPSBmdW5jdGlvbihtZXRob2RzKSB7CiAgdmFyIEYgPSBQcm90
b3R5cGUuQnJvd3NlckZlYXR1cmVzLCBUID0gRWxlbWVudC5NZXRob2RzLkJ5VGFn
OwoKICBpZiAoIW1ldGhvZHMpIHsKICAgIE9iamVjdC5leHRlbmQoRm9ybSwgRm9y
bS5NZXRob2RzKTsKICAgIE9iamVjdC5leHRlbmQoRm9ybS5FbGVtZW50LCBGb3Jt
LkVsZW1lbnQuTWV0aG9kcyk7CiAgICBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0
aG9kcy5CeVRhZywgewogICAgICAiRk9STSI6ICAgICBPYmplY3QuY2xvbmUoRm9y
bS5NZXRob2RzKSwKICAgICAgIklOUFVUIjogICAgT2JqZWN0LmNsb25lKEZvcm0u
RWxlbWVudC5NZXRob2RzKSwKICAgICAgIlNFTEVDVCI6ICAgT2JqZWN0LmNsb25l
KEZvcm0uRWxlbWVudC5NZXRob2RzKSwKICAgICAgIlRFWFRBUkVBIjogT2JqZWN0
LmNsb25lKEZvcm0uRWxlbWVudC5NZXRob2RzKQogICAgfSk7CiAgfQoKICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7CiAgICB2YXIgdGFnTmFtZSA9IG1ldGhv
ZHM7CiAgICBtZXRob2RzID0gYXJndW1lbnRzWzFdOwogIH0KCiAgaWYgKCF0YWdO
YW1lKSBPYmplY3QuZXh0ZW5kKEVsZW1lbnQuTWV0aG9kcywgbWV0aG9kcyB8fCB7
fSk7CiAgZWxzZSB7CiAgICBpZiAodGFnTmFtZS5jb25zdHJ1Y3RvciA9PSBBcnJh
eSkgdGFnTmFtZS5lYWNoKGV4dGVuZCk7CiAgICBlbHNlIGV4dGVuZCh0YWdOYW1l
KTsKICB9CgogIGZ1bmN0aW9uIGV4dGVuZCh0YWdOYW1lKSB7CiAgICB0YWdOYW1l
ID0gdGFnTmFtZS50b1VwcGVyQ2FzZSgpOwogICAgaWYgKCFFbGVtZW50Lk1ldGhv
ZHMuQnlUYWdbdGFnTmFtZV0pCiAgICAgIEVsZW1lbnQuTWV0aG9kcy5CeVRhZ1t0
YWdOYW1lXSA9IHt9OwogICAgT2JqZWN0LmV4dGVuZChFbGVtZW50Lk1ldGhvZHMu
QnlUYWdbdGFnTmFtZV0sIG1ldGhvZHMpOwogIH0KCiAgZnVuY3Rpb24gY29weSht
ZXRob2RzLCBkZXN0aW5hdGlvbiwgb25seUlmQWJzZW50KSB7CiAgICBvbmx5SWZB
YnNlbnQgPSBvbmx5SWZBYnNlbnQgfHwgZmFsc2U7CiAgICB2YXIgY2FjaGUgPSBF
bGVtZW50LmV4dGVuZC5jYWNoZTsKICAgIGZvciAodmFyIHByb3BlcnR5IGluIG1l
dGhvZHMpIHsKICAgICAgdmFyIHZhbHVlID0gbWV0aG9kc1twcm9wZXJ0eV07CiAg
ICAgIGlmICghb25seUlmQWJzZW50IHx8ICEocHJvcGVydHkgaW4gZGVzdGluYXRp
b24pKQogICAgICAgIGRlc3RpbmF0aW9uW3Byb3BlcnR5XSA9IGNhY2hlLmZpbmRP
clN0b3JlKHZhbHVlKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGZpbmRET01DbGFz
cyh0YWdOYW1lKSB7CiAgICB2YXIga2xhc3M7CiAgICB2YXIgdHJhbnMgPSB7CiAg
ICAgICJPUFRHUk9VUCI6ICJPcHRHcm91cCIsICJURVhUQVJFQSI6ICJUZXh0QXJl
YSIsICJQIjogIlBhcmFncmFwaCIsCiAgICAgICJGSUVMRFNFVCI6ICJGaWVsZFNl
dCIsICJVTCI6ICJVTGlzdCIsICJPTCI6ICJPTGlzdCIsICJETCI6ICJETGlzdCIs
CiAgICAgICJESVIiOiAiRGlyZWN0b3J5IiwgIkgxIjogIkhlYWRpbmciLCAiSDIi
OiAiSGVhZGluZyIsICJIMyI6ICJIZWFkaW5nIiwKICAgICAgIkg0IjogIkhlYWRp
bmciLCAiSDUiOiAiSGVhZGluZyIsICJINiI6ICJIZWFkaW5nIiwgIlEiOiAiUXVv
dGUiLAogICAgICAiSU5TIjogIk1vZCIsICJERUwiOiAiTW9kIiwgIkEiOiAiQW5j
aG9yIiwgIklNRyI6ICJJbWFnZSIsICJDQVBUSU9OIjoKICAgICAgIlRhYmxlQ2Fw
dGlvbiIsICJDT0wiOiAiVGFibGVDb2wiLCAiQ09MR1JPVVAiOiAiVGFibGVDb2wi
LCAiVEhFQUQiOgogICAgICAiVGFibGVTZWN0aW9uIiwgIlRGT09UIjogIlRhYmxl
U2VjdGlvbiIsICJUQk9EWSI6ICJUYWJsZVNlY3Rpb24iLCAiVFIiOgogICAgICAi
VGFibGVSb3ciLCAiVEgiOiAiVGFibGVDZWxsIiwgIlREIjogIlRhYmxlQ2VsbCIs
ICJGUkFNRVNFVCI6CiAgICAgICJGcmFtZVNldCIsICJJRlJBTUUiOiAiSUZyYW1l
IgogICAgfTsKICAgIGlmICh0cmFuc1t0YWdOYW1lXSkga2xhc3MgPSAnSFRNTCcg
KyB0cmFuc1t0YWdOYW1lXSArICdFbGVtZW50JzsKICAgIGlmICh3aW5kb3dba2xh
c3NdKSByZXR1cm4gd2luZG93W2tsYXNzXTsKICAgIGtsYXNzID0gJ0hUTUwnICsg
dGFnTmFtZSArICdFbGVtZW50JzsKICAgIGlmICh3aW5kb3dba2xhc3NdKSByZXR1
cm4gd2luZG93W2tsYXNzXTsKICAgIGtsYXNzID0gJ0hUTUwnICsgdGFnTmFtZS5j
YXBpdGFsaXplKCkgKyAnRWxlbWVudCc7CiAgICBpZiAod2luZG93W2tsYXNzXSkg
cmV0dXJuIHdpbmRvd1trbGFzc107CgogICAgd2luZG93W2tsYXNzXSA9IHt9Owog
ICAgd2luZG93W2tsYXNzXS5wcm90b3R5cGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KHRhZ05hbWUpLl9fcHJvdG9fXzsKICAgIHJldHVybiB3aW5kb3dba2xhc3Nd
OwogIH0KCiAgaWYgKEYuRWxlbWVudEV4dGVuc2lvbnMpIHsKICAgIGNvcHkoRWxl
bWVudC5NZXRob2RzLCBIVE1MRWxlbWVudC5wcm90b3R5cGUpOwogICAgY29weShF
bGVtZW50Lk1ldGhvZHMuU2ltdWxhdGVkLCBIVE1MRWxlbWVudC5wcm90b3R5cGUs
IHRydWUpOwogIH0KCiAgaWYgKEYuU3BlY2lmaWNFbGVtZW50RXh0ZW5zaW9ucykg
ewogICAgZm9yICh2YXIgdGFnIGluIEVsZW1lbnQuTWV0aG9kcy5CeVRhZykgewog
ICAgICB2YXIga2xhc3MgPSBmaW5kRE9NQ2xhc3ModGFnKTsKICAgICAgaWYgKHR5
cGVvZiBrbGFzcyA9PSAidW5kZWZpbmVkIikgY29udGludWU7CiAgICAgIGNvcHko
VFt0YWddLCBrbGFzcy5wcm90b3R5cGUpOwogICAgfQogIH0KCiAgT2JqZWN0LmV4
dGVuZChFbGVtZW50LCBFbGVtZW50Lk1ldGhvZHMpOwogIGRlbGV0ZSBFbGVtZW50
LkJ5VGFnOwp9OwoKdmFyIFRvZ2dsZSA9IHsgZGlzcGxheTogRWxlbWVudC50b2dn
bGUgfTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKQWJzdHJhY3Qu
SW5zZXJ0aW9uID0gZnVuY3Rpb24oYWRqYWNlbmN5KSB7CiAgdGhpcy5hZGphY2Vu
Y3kgPSBhZGphY2VuY3k7Cn0KCkFic3RyYWN0Lkluc2VydGlvbi5wcm90b3R5cGUg
PSB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWxlbWVudCwgY29udGVudCkgewog
ICAgdGhpcy5lbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuY29udGVudCA9
IGNvbnRlbnQuc3RyaXBTY3JpcHRzKCk7CgogICAgaWYgKHRoaXMuYWRqYWNlbmN5
ICYmIHRoaXMuZWxlbWVudC5pbnNlcnRBZGphY2VudEhUTUwpIHsKICAgICAgdHJ5
IHsKICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKHRoaXMu
YWRqYWNlbmN5LCB0aGlzLmNvbnRlbnQpOwogICAgICB9IGNhdGNoIChlKSB7CiAg
ICAgICAgdmFyIHRhZ05hbWUgPSB0aGlzLmVsZW1lbnQudGFnTmFtZS50b1VwcGVy
Q2FzZSgpOwogICAgICAgIGlmIChbJ1RCT0RZJywgJ1RSJ10uaW5jbHVkZSh0YWdO
YW1lKSkgewogICAgICAgICAgdGhpcy5pbnNlcnRDb250ZW50KHRoaXMuY29udGVu
dEZyb21Bbm9ueW1vdXNUYWJsZSgpKTsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgdGhyb3cgZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAg
IHRoaXMucmFuZ2UgPSB0aGlzLmVsZW1lbnQub3duZXJEb2N1bWVudC5jcmVhdGVS
YW5nZSgpOwogICAgICBpZiAodGhpcy5pbml0aWFsaXplUmFuZ2UpIHRoaXMuaW5p
dGlhbGl6ZVJhbmdlKCk7CiAgICAgIHRoaXMuaW5zZXJ0Q29udGVudChbdGhpcy5y
YW5nZS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodGhpcy5jb250ZW50KV0pOwog
ICAgfQoKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Y29udGVudC5ldmFsU2Ny
aXB0cygpfSwgMTApOwogIH0sCgogIGNvbnRlbnRGcm9tQW5vbnltb3VzVGFibGU6
IGZ1bmN0aW9uKCkgewogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOwogICAgZGl2LmlubmVySFRNTCA9ICc8dGFibGU+PHRib2R5Picg
KyB0aGlzLmNvbnRlbnQgKyAnPC90Ym9keT48L3RhYmxlPic7CiAgICByZXR1cm4g
JEEoZGl2LmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzKTsK
ICB9Cn0KCnZhciBJbnNlcnRpb24gPSBuZXcgT2JqZWN0KCk7CgpJbnNlcnRpb24u
QmVmb3JlID0gQ2xhc3MuY3JlYXRlKCk7Ckluc2VydGlvbi5CZWZvcmUucHJvdG90
eXBlID0gT2JqZWN0LmV4dGVuZChuZXcgQWJzdHJhY3QuSW5zZXJ0aW9uKCdiZWZv
cmVCZWdpbicpLCB7CiAgaW5pdGlhbGl6ZVJhbmdlOiBmdW5jdGlvbigpIHsKICAg
IHRoaXMucmFuZ2Uuc2V0U3RhcnRCZWZvcmUodGhpcy5lbGVtZW50KTsKICB9LAoK
ICBpbnNlcnRDb250ZW50OiBmdW5jdGlvbihmcmFnbWVudHMpIHsKICAgIGZyYWdt
ZW50cy5lYWNoKChmdW5jdGlvbihmcmFnbWVudCkgewogICAgICB0aGlzLmVsZW1l
bnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZnJhZ21lbnQsIHRoaXMuZWxlbWVu
dCk7CiAgICB9KS5iaW5kKHRoaXMpKTsKICB9Cn0pOwoKSW5zZXJ0aW9uLlRvcCA9
IENsYXNzLmNyZWF0ZSgpOwpJbnNlcnRpb24uVG9wLnByb3RvdHlwZSA9IE9iamVj
dC5leHRlbmQobmV3IEFic3RyYWN0Lkluc2VydGlvbignYWZ0ZXJCZWdpbicpLCB7
CiAgaW5pdGlhbGl6ZVJhbmdlOiBmdW5jdGlvbigpIHsKICAgIHRoaXMucmFuZ2Uu
c2VsZWN0Tm9kZUNvbnRlbnRzKHRoaXMuZWxlbWVudCk7CiAgICB0aGlzLnJhbmdl
LmNvbGxhcHNlKHRydWUpOwogIH0sCgogIGluc2VydENvbnRlbnQ6IGZ1bmN0aW9u
KGZyYWdtZW50cykgewogICAgZnJhZ21lbnRzLnJldmVyc2UoZmFsc2UpLmVhY2go
KGZ1bmN0aW9uKGZyYWdtZW50KSB7CiAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRC
ZWZvcmUoZnJhZ21lbnQsIHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTsKICAgIH0p
LmJpbmQodGhpcykpOwogIH0KfSk7CgpJbnNlcnRpb24uQm90dG9tID0gQ2xhc3Mu
Y3JlYXRlKCk7Ckluc2VydGlvbi5Cb3R0b20ucHJvdG90eXBlID0gT2JqZWN0LmV4
dGVuZChuZXcgQWJzdHJhY3QuSW5zZXJ0aW9uKCdiZWZvcmVFbmQnKSwgewogIGlu
aXRpYWxpemVSYW5nZTogZnVuY3Rpb24oKSB7CiAgICB0aGlzLnJhbmdlLnNlbGVj
dE5vZGVDb250ZW50cyh0aGlzLmVsZW1lbnQpOwogICAgdGhpcy5yYW5nZS5jb2xs
YXBzZSh0aGlzLmVsZW1lbnQpOwogIH0sCgogIGluc2VydENvbnRlbnQ6IGZ1bmN0
aW9uKGZyYWdtZW50cykgewogICAgZnJhZ21lbnRzLmVhY2goKGZ1bmN0aW9uKGZy
YWdtZW50KSB7CiAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChmcmFnbWVu
dCk7CiAgICB9KS5iaW5kKHRoaXMpKTsKICB9Cn0pOwoKSW5zZXJ0aW9uLkFmdGVy
ID0gQ2xhc3MuY3JlYXRlKCk7Ckluc2VydGlvbi5BZnRlci5wcm90b3R5cGUgPSBP
YmplY3QuZXh0ZW5kKG5ldyBBYnN0cmFjdC5JbnNlcnRpb24oJ2FmdGVyRW5kJyks
IHsKICBpbml0aWFsaXplUmFuZ2U6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5yYW5n
ZS5zZXRTdGFydEFmdGVyKHRoaXMuZWxlbWVudCk7CiAgfSwKCiAgaW5zZXJ0Q29u
dGVudDogZnVuY3Rpb24oZnJhZ21lbnRzKSB7CiAgICBmcmFnbWVudHMuZWFjaCgo
ZnVuY3Rpb24oZnJhZ21lbnQpIHsKICAgICAgdGhpcy5lbGVtZW50LnBhcmVudE5v
ZGUuaW5zZXJ0QmVmb3JlKGZyYWdtZW50LAogICAgICAgIHRoaXMuZWxlbWVudC5u
ZXh0U2libGluZyk7CiAgICB9KS5iaW5kKHRoaXMpKTsKICB9Cn0pOwoKLyotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpFbGVtZW50LkNsYXNzTmFtZXMgPSBD
bGFzcy5jcmVhdGUoKTsKRWxlbWVudC5DbGFzc05hbWVzLnByb3RvdHlwZSA9IHsK
ICBpbml0aWFsaXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB0aGlzLmVsZW1l
bnQgPSAkKGVsZW1lbnQpOwogIH0sCgogIF9lYWNoOiBmdW5jdGlvbihpdGVyYXRv
cikgewogICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZS5zcGxpdCgvXHMrLykuc2Vs
ZWN0KGZ1bmN0aW9uKG5hbWUpIHsKICAgICAgcmV0dXJuIG5hbWUubGVuZ3RoID4g
MDsKICAgIH0pLl9lYWNoKGl0ZXJhdG9yKTsKICB9LAoKICBzZXQ6IGZ1bmN0aW9u
KGNsYXNzTmFtZSkgewogICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNz
TmFtZTsKICB9LAoKICBhZGQ6IGZ1bmN0aW9uKGNsYXNzTmFtZVRvQWRkKSB7CiAg
ICBpZiAodGhpcy5pbmNsdWRlKGNsYXNzTmFtZVRvQWRkKSkgcmV0dXJuOwogICAg
dGhpcy5zZXQoJEEodGhpcykuY29uY2F0KGNsYXNzTmFtZVRvQWRkKS5qb2luKCcg
JykpOwogIH0sCgogIHJlbW92ZTogZnVuY3Rpb24oY2xhc3NOYW1lVG9SZW1vdmUp
IHsKICAgIGlmICghdGhpcy5pbmNsdWRlKGNsYXNzTmFtZVRvUmVtb3ZlKSkgcmV0
dXJuOwogICAgdGhpcy5zZXQoJEEodGhpcykud2l0aG91dChjbGFzc05hbWVUb1Jl
bW92ZSkuam9pbignICcpKTsKICB9LAoKICB0b1N0cmluZzogZnVuY3Rpb24oKSB7
CiAgICByZXR1cm4gJEEodGhpcykuam9pbignICcpOwogIH0KfTsKCk9iamVjdC5l
eHRlbmQoRWxlbWVudC5DbGFzc05hbWVzLnByb3RvdHlwZSwgRW51bWVyYWJsZSk7
Ci8qIFBvcnRpb25zIG9mIHRoZSBTZWxlY3RvciBjbGFzcyBhcmUgZGVyaXZlZCBm
cm9tIEphY2sgU2xvY3Vt4oCZcyBEb21RdWVyeSwKICogcGFydCBvZiBZVUktRXh0
IHZlcnNpb24gMC40MCwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIGFu
IE1JVC1zdHlsZQogKiBsaWNlbnNlLiAgUGxlYXNlIHNlZSBodHRwOi8vd3d3Lnl1
aS1leHQuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKi8KCnZhciBTZWxlY3Rv
ciA9IENsYXNzLmNyZWF0ZSgpOwoKU2VsZWN0b3IucHJvdG90eXBlID0gewogIGlu
aXRpYWxpemU6IGZ1bmN0aW9uKGV4cHJlc3Npb24pIHsKICAgIHRoaXMuZXhwcmVz
c2lvbiA9IGV4cHJlc3Npb24uc3RyaXAoKTsKICAgIHRoaXMuY29tcGlsZU1hdGNo
ZXIoKTsKICB9LAoKICBjb21waWxlTWF0Y2hlcjogZnVuY3Rpb24oKSB7CiAgICAv
LyBTZWxlY3RvcnMgd2l0aCBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMgY2FuJ3QgdXNl
IHRoZSBYUGF0aCB2ZXJzaW9uCiAgICBpZiAoUHJvdG90eXBlLkJyb3dzZXJGZWF0
dXJlcy5YUGF0aCAmJiAhKC9cW1tcdy1dKj86LykudGVzdCh0aGlzLmV4cHJlc3Np
b24pKQogICAgICByZXR1cm4gdGhpcy5jb21waWxlWFBhdGhNYXRjaGVyKCk7Cgog
ICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHBzID0gU2VsZWN0b3IucGF0dGVy
bnMsIGggPSBTZWxlY3Rvci5oYW5kbGVycywKICAgICAgICBjID0gU2VsZWN0b3Iu
Y3JpdGVyaWEsIGxlLCBwLCBtOwoKICAgIGlmIChTZWxlY3Rvci5fY2FjaGVbZV0p
IHsKICAgICAgdGhpcy5tYXRjaGVyID0gU2VsZWN0b3IuX2NhY2hlW2VdOyByZXR1
cm47CiAgICB9CiAgICB0aGlzLm1hdGNoZXIgPSBbInRoaXMubWF0Y2hlciA9IGZ1
bmN0aW9uKHJvb3QpIHsiLAogICAgICAgICAgICAgICAgICAgICJ2YXIgciA9IHJv
b3QsIGggPSBTZWxlY3Rvci5oYW5kbGVycywgYyA9IGZhbHNlLCBuOyJdOwoKICAg
IHdoaWxlIChlICYmIGxlICE9IGUgJiYgKC9cUy8pLnRlc3QoZSkpIHsKICAgICAg
bGUgPSBlOwogICAgICBmb3IgKHZhciBpIGluIHBzKSB7CiAgICAgICAgcCA9IHBz
W2ldOwogICAgICAgIGlmIChtID0gZS5tYXRjaChwKSkgewogICAgICAgICAgdGhp
cy5tYXRjaGVyLnB1c2godHlwZW9mIGNbaV0gPT0gJ2Z1bmN0aW9uJyA/IGNbaV0o
bSkgOgogICAgCSAgICAgIG5ldyBUZW1wbGF0ZShjW2ldKS5ldmFsdWF0ZShtKSk7
CiAgICAgICAgICBlID0gZS5yZXBsYWNlKG1bMF0sICcnKTsKICAgICAgICAgIGJy
ZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHRoaXMubWF0Y2hlci5w
dXNoKCJyZXR1cm4gaC51bmlxdWUobik7XG59Iik7CiAgICBldmFsKHRoaXMubWF0
Y2hlci5qb2luKCdcbicpKTsKICAgIFNlbGVjdG9yLl9jYWNoZVt0aGlzLmV4cHJl
c3Npb25dID0gdGhpcy5tYXRjaGVyOwogIH0sCgogIGNvbXBpbGVYUGF0aE1hdGNo
ZXI6IGZ1bmN0aW9uKCkgewogICAgdmFyIGUgPSB0aGlzLmV4cHJlc3Npb24sIHBz
ID0gU2VsZWN0b3IucGF0dGVybnMsCiAgICAgICAgeCA9IFNlbGVjdG9yLnhwYXRo
LCBsZSwgIG07CgogICAgaWYgKFNlbGVjdG9yLl9jYWNoZVtlXSkgewogICAgICB0
aGlzLnhwYXRoID0gU2VsZWN0b3IuX2NhY2hlW2VdOyByZXR1cm47CiAgICB9Cgog
ICAgdGhpcy5tYXRjaGVyID0gWycuLy8qJ107CiAgICB3aGlsZSAoZSAmJiBsZSAh
PSBlICYmICgvXFMvKS50ZXN0KGUpKSB7CiAgICAgIGxlID0gZTsKICAgICAgZm9y
ICh2YXIgaSBpbiBwcykgewogICAgICAgIGlmIChtID0gZS5tYXRjaChwc1tpXSkp
IHsKICAgICAgICAgIHRoaXMubWF0Y2hlci5wdXNoKHR5cGVvZiB4W2ldID09ICdm
dW5jdGlvbicgPyB4W2ldKG0pIDoKICAgICAgICAgICAgbmV3IFRlbXBsYXRlKHhb
aV0pLmV2YWx1YXRlKG0pKTsKICAgICAgICAgIGUgPSBlLnJlcGxhY2UobVswXSwg
JycpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9Cgog
ICAgdGhpcy54cGF0aCA9IHRoaXMubWF0Y2hlci5qb2luKCcnKTsKICAgIFNlbGVj
dG9yLl9jYWNoZVt0aGlzLmV4cHJlc3Npb25dID0gdGhpcy54cGF0aDsKICB9LAoK
ICBmaW5kRWxlbWVudHM6IGZ1bmN0aW9uKHJvb3QpIHsKICAgIHJvb3QgPSByb290
IHx8IGRvY3VtZW50OwogICAgaWYgKHRoaXMueHBhdGgpIHJldHVybiBkb2N1bWVu
dC5fZ2V0RWxlbWVudHNCeVhQYXRoKHRoaXMueHBhdGgsIHJvb3QpOwogICAgcmV0
dXJuIHRoaXMubWF0Y2hlcihyb290KTsKICB9LAoKICBtYXRjaDogZnVuY3Rpb24o
ZWxlbWVudCkgewogICAgcmV0dXJuIHRoaXMuZmluZEVsZW1lbnRzKGRvY3VtZW50
KS5pbmNsdWRlKGVsZW1lbnQpOwogIH0sCgogIHRvU3RyaW5nOiBmdW5jdGlvbigp
IHsKICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb247CiAgfSwKCiAgaW5zcGVjdDog
ZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gIiM8U2VsZWN0b3I6IiArIHRoaXMuZXhw
cmVzc2lvbi5pbnNwZWN0KCkgKyAiPiI7CiAgfQp9OwoKT2JqZWN0LmV4dGVuZChT
ZWxlY3RvciwgewogIF9jYWNoZToge30sCgogIHhwYXRoOiB7CiAgICBkZXNjZW5k
YW50OiAgICIvLyoiLAogICAgY2hpbGQ6ICAgICAgICAiLyoiLAogICAgYWRqYWNl
bnQ6ICAgICAiL2ZvbGxvd2luZy1zaWJsaW5nOjoqWzFdIiwKICAgIGxhdGVyU2li
bGluZzogJy9mb2xsb3dpbmctc2libGluZzo6KicsCiAgICB0YWdOYW1lOiAgICAg
IGZ1bmN0aW9uKG0pIHsKICAgICAgaWYgKG1bMV0gPT0gJyonKSByZXR1cm4gJyc7
CiAgICAgIHJldHVybiAiW2xvY2FsLW5hbWUoKT0nIiArIG1bMV0udG9Mb3dlckNh
c2UoKSArCiAgICAgICAgICAgICAiJyBvciBsb2NhbC1uYW1lKCk9JyIgKyBtWzFd
LnRvVXBwZXJDYXNlKCkgKyAiJ10iOwogICAgfSwKICAgIGNsYXNzTmFtZTogICAg
Iltjb250YWlucyhjb25jYXQoJyAnLCBAY2xhc3MsICcgJyksICcgI3sxfSAnKV0i
LAogICAgaWQ6ICAgICAgICAgICAiW0BpZD0nI3sxfSddIiwKICAgIGF0dHJQcmVz
ZW5jZTogIltAI3sxfV0iLAogICAgYXR0cjogZnVuY3Rpb24obSkgewogICAgICBt
WzNdID0gbVs1XSB8fCBtWzZdOwogICAgICByZXR1cm4gbmV3IFRlbXBsYXRlKFNl
bGVjdG9yLnhwYXRoLm9wZXJhdG9yc1ttWzJdXSkuZXZhbHVhdGUobSk7CiAgICB9
LAogICAgcHNldWRvOiBmdW5jdGlvbihtKSB7CiAgICAgIHZhciBoID0gU2VsZWN0
b3IueHBhdGgucHNldWRvc1ttWzFdXTsKICAgICAgaWYgKCFoKSByZXR1cm4gJyc7
CiAgICAgIGlmICh0eXBlb2YgaCA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGgobSk7
CiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGUoU2VsZWN0b3IueHBhdGgucHNldWRv
c1ttWzFdXSkuZXZhbHVhdGUobSk7CiAgICB9LAogICAgb3BlcmF0b3JzOiB7CiAg
ICAgICc9JzogICJbQCN7MX09JyN7M30nXSIsCiAgICAgICchPSc6ICJbQCN7MX0h
PScjezN9J10iLAogICAgICAnXj0nOiAiW3N0YXJ0cy13aXRoKEAjezF9LCAnI3sz
fScpXSIsCiAgICAgICckPSc6ICJbc3Vic3RyaW5nKEAjezF9LCAoc3RyaW5nLWxl
bmd0aChAI3sxfSkgLSBzdHJpbmctbGVuZ3RoKCcjezN9JykgKyAxKSk9JyN7M30n
XSIsCiAgICAgICcqPSc6ICJbY29udGFpbnMoQCN7MX0sICcjezN9JyldIiwKICAg
ICAgJ349JzogIltjb250YWlucyhjb25jYXQoJyAnLCBAI3sxfSwgJyAnKSwgJyAj
ezN9ICcpXSIsCiAgICAgICd8PSc6ICJbY29udGFpbnMoY29uY2F0KCctJywgQCN7
MX0sICctJyksICctI3szfS0nKV0iCiAgICB9LAogICAgcHNldWRvczogewogICAg
ICAnZmlyc3QtY2hpbGQnOiAnW25vdChwcmVjZWRpbmctc2libGluZzo6KildJywK
ICAgICAgJ2xhc3QtY2hpbGQnOiAgJ1tub3QoZm9sbG93aW5nLXNpYmxpbmc6Oiop
XScsCiAgICAgICdvbmx5LWNoaWxkJzogICdbbm90KHByZWNlZGluZy1zaWJsaW5n
OjoqIG9yIGZvbGxvd2luZy1zaWJsaW5nOjoqKV0nLAogICAgICAnZW1wdHknOiAg
ICAgICAiW2NvdW50KCopID0gMCBhbmQgKGNvdW50KHRleHQoKSkgPSAwIG9yIHRy
YW5zbGF0ZSh0ZXh0KCksICcgXHRcclxuJywgJycpID0gJycpXSIsCiAgICAgICdj
aGVja2VkJzogICAgICJbQGNoZWNrZWRdIiwKICAgICAgJ2Rpc2FibGVkJzogICAg
IltAZGlzYWJsZWRdIiwKICAgICAgJ2VuYWJsZWQnOiAgICAgIltub3QoQGRpc2Fi
bGVkKV0iLAogICAgICAnbm90JzogZnVuY3Rpb24obSkgewogICAgICAgIHZhciBl
ID0gbVs2XSwgcCA9IFNlbGVjdG9yLnBhdHRlcm5zLAogICAgICAgICAgICB4ID0g
U2VsZWN0b3IueHBhdGgsIGxlLCBtLCB2OwoKICAgICAgICB2YXIgZXhjbHVzaW9u
ID0gW107CiAgICAgICAgd2hpbGUgKGUgJiYgbGUgIT0gZSAmJiAoL1xTLykudGVz
dChlKSkgewogICAgICAgICAgbGUgPSBlOwogICAgICAgICAgZm9yICh2YXIgaSBp
biBwKSB7CiAgICAgICAgICAgIGlmIChtID0gZS5tYXRjaChwW2ldKSkgewogICAg
ICAgICAgICAgIHYgPSB0eXBlb2YgeFtpXSA9PSAnZnVuY3Rpb24nID8geFtpXSht
KSA6IG5ldyBUZW1wbGF0ZSh4W2ldKS5ldmFsdWF0ZShtKTsKICAgICAgICAgICAg
ICBleGNsdXNpb24ucHVzaCgiKCIgKyB2LnN1YnN0cmluZygxLCB2Lmxlbmd0aCAt
IDEpICsgIikiKTsKICAgICAgICAgICAgICBlID0gZS5yZXBsYWNlKG1bMF0sICcn
KTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAg
fQogICAgICAgIH0KICAgICAgICByZXR1cm4gIltub3QoIiArIGV4Y2x1c2lvbi5q
b2luKCIgYW5kICIpICsgIildIjsKICAgICAgfSwKICAgICAgJ250aC1jaGlsZCc6
ICAgICAgZnVuY3Rpb24obSkgewogICAgICAgIHJldHVybiBTZWxlY3Rvci54cGF0
aC5wc2V1ZG9zLm50aCgiKGNvdW50KC4vcHJlY2VkaW5nLXNpYmxpbmc6OiopICsg
MSkgIiwgbSk7CiAgICAgIH0sCiAgICAgICdudGgtbGFzdC1jaGlsZCc6IGZ1bmN0
aW9uKG0pIHsKICAgICAgICByZXR1cm4gU2VsZWN0b3IueHBhdGgucHNldWRvcy5u
dGgoIihjb3VudCguL2ZvbGxvd2luZy1zaWJsaW5nOjoqKSArIDEpICIsIG0pOwog
ICAgICB9LAogICAgICAnbnRoLW9mLXR5cGUnOiAgICBmdW5jdGlvbihtKSB7CiAg
ICAgICAgcmV0dXJuIFNlbGVjdG9yLnhwYXRoLnBzZXVkb3MubnRoKCJwb3NpdGlv
bigpICIsIG0pOwogICAgICB9LAogICAgICAnbnRoLWxhc3Qtb2YtdHlwZSc6IGZ1
bmN0aW9uKG0pIHsKICAgICAgICByZXR1cm4gU2VsZWN0b3IueHBhdGgucHNldWRv
cy5udGgoIihsYXN0KCkgKyAxIC0gcG9zaXRpb24oKSkgIiwgbSk7CiAgICAgIH0s
CiAgICAgICdmaXJzdC1vZi10eXBlJzogIGZ1bmN0aW9uKG0pIHsKICAgICAgICBt
WzZdID0gIjEiOyByZXR1cm4gU2VsZWN0b3IueHBhdGgucHNldWRvc1snbnRoLW9m
LXR5cGUnXShtKTsKICAgICAgfSwKICAgICAgJ2xhc3Qtb2YtdHlwZSc6ICAgZnVu
Y3Rpb24obSkgewogICAgICAgIG1bNl0gPSAiMSI7IHJldHVybiBTZWxlY3Rvci54
cGF0aC5wc2V1ZG9zWydudGgtbGFzdC1vZi10eXBlJ10obSk7CiAgICAgIH0sCiAg
ICAgICdvbmx5LW9mLXR5cGUnOiAgIGZ1bmN0aW9uKG0pIHsKICAgICAgICB2YXIg
cCA9IFNlbGVjdG9yLnhwYXRoLnBzZXVkb3M7IHJldHVybiBwWydmaXJzdC1vZi10
eXBlJ10obSkgKyBwWydsYXN0LW9mLXR5cGUnXShtKTsKICAgICAgfSwKICAgICAg
bnRoOiBmdW5jdGlvbihmcmFnbWVudCwgbSkgewogICAgICAgIHZhciBtbSwgZm9y
bXVsYSA9IG1bNl0sIHByZWRpY2F0ZTsKICAgICAgICBpZiAoZm9ybXVsYSA9PSAn
ZXZlbicpIGZvcm11bGEgPSAnMm4rMCc7CiAgICAgICAgaWYgKGZvcm11bGEgPT0g
J29kZCcpICBmb3JtdWxhID0gJzJuKzEnOwogICAgICAgIGlmIChtbSA9IGZvcm11
bGEubWF0Y2goL14oXGQrKSQvKSkgLy8gZGlnaXQgb25seQogICAgICAgICAgcmV0
dXJuICdbJyArIGZyYWdtZW50ICsgIj0gIiArIG1tWzFdICsgJ10nOwogICAgICAg
IGlmIChtbSA9IGZvcm11bGEubWF0Y2goL14oLT9cZCopP24oKFsrLV0pKFxkKykp
Py8pKSB7IC8vIGFuK2IKICAgICAgICAgIGlmIChtbVsxXSA9PSAiLSIpIG1tWzFd
ID0gLTE7CiAgICAgICAgICB2YXIgYSA9IG1tWzFdID8gTnVtYmVyKG1tWzFdKSA6
IDE7CiAgICAgICAgICB2YXIgYiA9IG1tWzJdID8gTnVtYmVyKG1tWzJdKSA6IDA7
CiAgICAgICAgICBwcmVkaWNhdGUgPSAiWygoI3tmcmFnbWVudH0gLSAje2J9KSBt
b2QgI3thfSA9IDApIGFuZCAiICsKICAgICAgICAgICIoKCN7ZnJhZ21lbnR9IC0g
I3tifSkgZGl2ICN7YX0gPj0gMCldIjsKICAgICAgICAgIHJldHVybiBuZXcgVGVt
cGxhdGUocHJlZGljYXRlKS5ldmFsdWF0ZSh7CiAgICAgICAgICAgIGZyYWdtZW50
OiBmcmFnbWVudCwgYTogYSwgYjogYiB9KTsKICAgICAgICB9CiAgICAgIH0KICAg
IH0KICB9LAoKICBjcml0ZXJpYTogewogICAgdGFnTmFtZTogICAgICAnbiA9IGgu
dGFnTmFtZShuLCByLCAiI3sxfSIsIGMpOyAgIGMgPSBmYWxzZTsnLAogICAgY2xh
c3NOYW1lOiAgICAnbiA9IGguY2xhc3NOYW1lKG4sIHIsICIjezF9IiwgYyk7IGMg
PSBmYWxzZTsnLAogICAgaWQ6ICAgICAgICAgICAnbiA9IGguaWQobiwgciwgIiN7
MX0iLCBjKTsgICAgICAgIGMgPSBmYWxzZTsnLAogICAgYXR0clByZXNlbmNlOiAn
biA9IGguYXR0clByZXNlbmNlKG4sIHIsICIjezF9Iik7IGMgPSBmYWxzZTsnLAog
ICAgYXR0cjogZnVuY3Rpb24obSkgewogICAgICBtWzNdID0gKG1bNV0gfHwgbVs2
XSk7CiAgICAgIHJldHVybiBuZXcgVGVtcGxhdGUoJ24gPSBoLmF0dHIobiwgciwg
IiN7MX0iLCAiI3szfSIsICIjezJ9Iik7IGMgPSBmYWxzZTsnKS5ldmFsdWF0ZSht
KTsKICAgIH0sCiAgICBwc2V1ZG86ICAgICAgIGZ1bmN0aW9uKG0pIHsKICAgICAg
aWYgKG1bNl0pIG1bNl0gPSBtWzZdLnJlcGxhY2UoLyIvZywgJ1xcIicpOwogICAg
ICByZXR1cm4gbmV3IFRlbXBsYXRlKCduID0gaC5wc2V1ZG8obiwgIiN7MX0iLCAi
I3s2fSIsIHIsIGMpOyBjID0gZmFsc2U7JykuZXZhbHVhdGUobSk7CiAgICB9LAog
ICAgZGVzY2VuZGFudDogICAnYyA9ICJkZXNjZW5kYW50IjsnLAogICAgY2hpbGQ6
ICAgICAgICAnYyA9ICJjaGlsZCI7JywKICAgIGFkamFjZW50OiAgICAgJ2MgPSAi
YWRqYWNlbnQiOycsCiAgICBsYXRlclNpYmxpbmc6ICdjID0gImxhdGVyU2libGlu
ZyI7JwogIH0sCgogIHBhdHRlcm5zOiB7CiAgICAvLyBjb21iaW5hdG9ycyBtdXN0
IGJlIGxpc3RlZCBmaXJzdAogICAgLy8gKGFuZCBkZXNjZW5kYW50IG5lZWRzIHRv
IGJlIGxhc3QgY29tYmluYXRvcikKICAgIGxhdGVyU2libGluZzogL15ccyp+XHMq
LywKICAgIGNoaWxkOiAgICAgICAgL15ccyo+XHMqLywKICAgIGFkamFjZW50OiAg
ICAgL15ccypcK1xzKi8sCiAgICBkZXNjZW5kYW50OiAgIC9eXHMvLAoKICAgIC8v
IHNlbGVjdG9ycyBmb2xsb3cKICAgIHRhZ05hbWU6ICAgICAgL15ccyooXCp8W1x3
XC1dKykoXGJ8JCk/LywKICAgIGlkOiAgICAgICAgICAgL14jKFtcd1wtXCpdKyko
XGJ8JCkvLAogICAgY2xhc3NOYW1lOiAgICAvXlwuKFtcd1wtXCpdKykoXGJ8JCkv
LAogICAgcHNldWRvOiAgICAgICAvXjooKGZpcnN0fGxhc3R8bnRofG50aC1sYXN0
fG9ubHkpKC1jaGlsZHwtb2YtdHlwZSl8ZW1wdHl8Y2hlY2tlZHwoZW58ZGlzKWFi
bGVkfG5vdCkoXCgoLio/KVwpKT8oXGJ8JHxcc3woPz06KSkvLAogICAgYXR0clBy
ZXNlbmNlOiAvXlxbKFtcd10rKVxdLywKICAgIGF0dHI6ICAgICAgICAgL1xbKCg/
Oltcdy1dKjopP1tcdy1dKylccyooPzooWyFeJCp+fF0/PSlccyooKFsnIl0pKFte
XF1dKj8pXDR8KFteJyJdW15cXV0qPykpKT9cXS8KICB9LAoKICBoYW5kbGVyczog
ewogICAgLy8gVVRJTElUWSBGVU5DVElPTlMKICAgIC8vIGpvaW5zIHR3byBjb2xs
ZWN0aW9ucwogICAgY29uY2F0OiBmdW5jdGlvbihhLCBiKSB7CiAgICAgIGZvciAo
dmFyIGkgPSAwLCBub2RlOyBub2RlID0gYltpXTsgaSsrKQogICAgICAgIGEucHVz
aChub2RlKTsKICAgICAgcmV0dXJuIGE7CiAgICB9LAoKICAgIC8vIG1hcmtzIGFu
IGFycmF5IG9mIG5vZGVzIGZvciBjb3VudGluZwogICAgbWFyazogZnVuY3Rpb24o
bm9kZXMpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rl
c1tpXTsgaSsrKQogICAgICAgIG5vZGUuX2NvdW50ZWQgPSB0cnVlOwogICAgICBy
ZXR1cm4gbm9kZXM7CiAgICB9LAoKICAgIHVubWFyazogZnVuY3Rpb24obm9kZXMp
IHsKICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsg
aSsrKQogICAgICAgIG5vZGUuX2NvdW50ZWQgPSB1bmRlZmluZWQ7CiAgICAgIHJl
dHVybiBub2RlczsKICAgIH0sCgogICAgLy8gbWFyayBlYWNoIGNoaWxkIG5vZGUg
d2l0aCBpdHMgcG9zaXRpb24gKGZvciBudGggY2FsbHMpCiAgICAvLyAib2ZUeXBl
IiBmbGFnIGluZGljYXRlcyB3aGV0aGVyIHdlJ3JlIGluZGV4aW5nIGZvciBudGgt
b2YtdHlwZQogICAgLy8gcmF0aGVyIHRoYW4gbnRoLWNoaWxkCiAgICBpbmRleDog
ZnVuY3Rpb24ocGFyZW50Tm9kZSwgcmV2ZXJzZSwgb2ZUeXBlKSB7CiAgICAgIHBh
cmVudE5vZGUuX2NvdW50ZWQgPSB0cnVlOwogICAgICBpZiAocmV2ZXJzZSkgewog
ICAgICAgIGZvciAodmFyIG5vZGVzID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzLCBp
ID0gbm9kZXMubGVuZ3RoIC0gMSwgaiA9IDE7IGkgPj0gMDsgaS0tKSB7CiAgICAg
ICAgICBub2RlID0gbm9kZXNbaV07CiAgICAgICAgICBpZiAobm9kZS5ub2RlVHlw
ZSA9PSAxICYmICghb2ZUeXBlIHx8IG5vZGUuX2NvdW50ZWQpKSBub2RlLm5vZGVJ
bmRleCA9IGorKzsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9y
ICh2YXIgaSA9IDAsIGogPSAxLCBub2RlcyA9IHBhcmVudE5vZGUuY2hpbGROb2Rl
czsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgICBpZiAobm9kZS5ub2Rl
VHlwZSA9PSAxICYmICghb2ZUeXBlIHx8IG5vZGUuX2NvdW50ZWQpKSBub2RlLm5v
ZGVJbmRleCA9IGorKzsKICAgICAgfQogICAgfSwKCiAgICAvLyBmaWx0ZXJzIG91
dCBkdXBsaWNhdGVzIGFuZCBleHRlbmRzIGFsbCBub2RlcwogICAgdW5pcXVlOiBm
dW5jdGlvbihub2RlcykgewogICAgICBpZiAobm9kZXMubGVuZ3RoID09IDApIHJl
dHVybiBub2RlczsKICAgICAgdmFyIHJlc3VsdHMgPSBbXSwgbjsKICAgICAgZm9y
ICh2YXIgaSA9IDAsIGwgPSBub2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspCiAgICAg
ICAgaWYgKCEobiA9IG5vZGVzW2ldKS5fY291bnRlZCkgewogICAgICAgICAgbi5f
Y291bnRlZCA9IHRydWU7CiAgICAgICAgICByZXN1bHRzLnB1c2goRWxlbWVudC5l
eHRlbmQobikpOwogICAgICAgIH0KICAgICAgcmV0dXJuIFNlbGVjdG9yLmhhbmRs
ZXJzLnVubWFyayhyZXN1bHRzKTsKICAgIH0sCgogICAgLy8gQ09NQklOQVRPUiBG
VU5DVElPTlMKICAgIGRlc2NlbmRhbnQ6IGZ1bmN0aW9uKG5vZGVzKSB7CiAgICAg
IHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICAgIGZvciAodmFyIGkgPSAw
LCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAg
ICAgIGguY29uY2F0KHJlc3VsdHMsIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
JyonKSk7CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKCiAgICBjaGlsZDog
ZnVuY3Rpb24obm9kZXMpIHsKICAgICAgdmFyIGggPSBTZWxlY3Rvci5oYW5kbGVy
czsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9k
ZSA9IG5vZGVzW2ldOyBpKyspIHsKICAgICAgICBmb3IgKHZhciBqID0gMCwgY2hp
bGRyZW4gPSBbXSwgY2hpbGQ7IGNoaWxkID0gbm9kZS5jaGlsZE5vZGVzW2pdOyBq
KyspCiAgICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT0gMSAmJiBjaGlsZC50
YWdOYW1lICE9ICchJykgcmVzdWx0cy5wdXNoKGNoaWxkKTsKICAgICAgfQogICAg
ICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgYWRqYWNlbnQ6IGZ1bmN0aW9u
KG5vZGVzKSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRzID0gW10sIG5v
ZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKSB7CiAgICAgICAgdmFyIG5leHQgPSB0
aGlzLm5leHRFbGVtZW50U2libGluZyhub2RlKTsKICAgICAgICBpZiAobmV4dCkg
cmVzdWx0cy5wdXNoKG5leHQpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRz
OwogICAgfSwKCiAgICBsYXRlclNpYmxpbmc6IGZ1bmN0aW9uKG5vZGVzKSB7CiAg
ICAgIHZhciBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICAgIGZvciAodmFyIGkg
PSAwLCByZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQog
ICAgICAgIGguY29uY2F0KHJlc3VsdHMsIEVsZW1lbnQubmV4dFNpYmxpbmdzKG5v
ZGUpKTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAoKICAgIG5leHRFbGVt
ZW50U2libGluZzogZnVuY3Rpb24obm9kZSkgewogICAgICB3aGlsZSAobm9kZSA9
IG5vZGUubmV4dFNpYmxpbmcpCgkgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PSAx
KSByZXR1cm4gbm9kZTsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9LAoKICAgIHBy
ZXZpb3VzRWxlbWVudFNpYmxpbmc6IGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgd2hp
bGUgKG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZykKICAgICAgICBpZiAobm9k
ZS5ub2RlVHlwZSA9PSAxKSByZXR1cm4gbm9kZTsKICAgICAgcmV0dXJuIG51bGw7
CiAgICB9LAoKICAgIC8vIFRPS0VOIEZVTkNUSU9OUwogICAgdGFnTmFtZTogZnVu
Y3Rpb24obm9kZXMsIHJvb3QsIHRhZ05hbWUsIGNvbWJpbmF0b3IpIHsKICAgICAg
dGFnTmFtZSA9IHRhZ05hbWUudG9VcHBlckNhc2UoKTsKICAgICAgdmFyIHJlc3Vs
dHMgPSBbXSwgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgICBpZiAobm9kZXMp
IHsKICAgICAgICBpZiAoY29tYmluYXRvcikgewogICAgICAgICAgLy8gZmFzdGxh
bmUgZm9yIG9yZGluYXJ5IGRlc2NlbmRhbnQgY29tYmluYXRvcnMKICAgICAgICAg
IGlmIChjb21iaW5hdG9yID09ICJkZXNjZW5kYW50IikgewogICAgICAgICAgICBm
b3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAg
ICAgICAgICAgaC5jb25jYXQocmVzdWx0cywgbm9kZS5nZXRFbGVtZW50c0J5VGFn
TmFtZSh0YWdOYW1lKSk7CiAgICAgICAgICAgIHJldHVybiByZXN1bHRzOwogICAg
ICAgICAgfSBlbHNlIG5vZGVzID0gdGhpc1tjb21iaW5hdG9yXShub2Rlcyk7CiAg
ICAgICAgICBpZiAodGFnTmFtZSA9PSAiKiIpIHJldHVybiBub2RlczsKICAgICAg
ICB9CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tp
XTsgaSsrKQogICAgICAgICAgaWYgKG5vZGUudGFnTmFtZS50b1VwcGVyQ2FzZSgp
ID09IHRhZ05hbWUpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgICByZXR1cm4g
cmVzdWx0czsKICAgICAgfSBlbHNlIHJldHVybiByb290LmdldEVsZW1lbnRzQnlU
YWdOYW1lKHRhZ05hbWUpOwogICAgfSwKCiAgICBpZDogZnVuY3Rpb24obm9kZXMs
IHJvb3QsIGlkLCBjb21iaW5hdG9yKSB7CiAgICAgIHZhciB0YXJnZXROb2RlID0g
JChpZCksIGggPSBTZWxlY3Rvci5oYW5kbGVyczsKICAgICAgaWYgKCFub2RlcyAm
JiByb290ID09IGRvY3VtZW50KSByZXR1cm4gdGFyZ2V0Tm9kZSA/IFt0YXJnZXRO
b2RlXSA6IFtdOwogICAgICBpZiAobm9kZXMpIHsKICAgICAgICBpZiAoY29tYmlu
YXRvcikgewogICAgICAgICAgaWYgKGNvbWJpbmF0b3IgPT0gJ2NoaWxkJykgewog
ICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ld
OyBpKyspCiAgICAgICAgICAgICAgaWYgKHRhcmdldE5vZGUucGFyZW50Tm9kZSA9
PSBub2RlKSByZXR1cm4gW3RhcmdldE5vZGVdOwogICAgICAgICAgfSBlbHNlIGlm
IChjb21iaW5hdG9yID09ICdkZXNjZW5kYW50JykgewogICAgICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAg
ICAgICAgaWYgKEVsZW1lbnQuZGVzY2VuZGFudE9mKHRhcmdldE5vZGUsIG5vZGUp
KSByZXR1cm4gW3RhcmdldE5vZGVdOwogICAgICAgICAgfSBlbHNlIGlmIChjb21i
aW5hdG9yID09ICdhZGphY2VudCcpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgICAgICAgIGlm
IChTZWxlY3Rvci5oYW5kbGVycy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKHRhcmdl
dE5vZGUpID09IG5vZGUpCiAgICAgICAgICAgICAgICByZXR1cm4gW3RhcmdldE5v
ZGVdOwogICAgICAgICAgfSBlbHNlIG5vZGVzID0gaFtjb21iaW5hdG9yXShub2Rl
cyk7CiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGkgPSAwLCBub2RlOyBub2Rl
ID0gbm9kZXNbaV07IGkrKykKICAgICAgICAgIGlmIChub2RlID09IHRhcmdldE5v
ZGUpIHJldHVybiBbdGFyZ2V0Tm9kZV07CiAgICAgICAgcmV0dXJuIFtdOwogICAg
ICB9CiAgICAgIHJldHVybiAodGFyZ2V0Tm9kZSAmJiBFbGVtZW50LmRlc2NlbmRh
bnRPZih0YXJnZXROb2RlLCByb290KSkgPyBbdGFyZ2V0Tm9kZV0gOiBbXTsKICAg
IH0sCgogICAgY2xhc3NOYW1lOiBmdW5jdGlvbihub2Rlcywgcm9vdCwgY2xhc3NO
YW1lLCBjb21iaW5hdG9yKSB7CiAgICAgIGlmIChub2RlcyAmJiBjb21iaW5hdG9y
KSBub2RlcyA9IHRoaXNbY29tYmluYXRvcl0obm9kZXMpOwogICAgICByZXR1cm4g
U2VsZWN0b3IuaGFuZGxlcnMuYnlDbGFzc05hbWUobm9kZXMsIHJvb3QsIGNsYXNz
TmFtZSk7CiAgICB9LAoKICAgIGJ5Q2xhc3NOYW1lOiBmdW5jdGlvbihub2Rlcywg
cm9vdCwgY2xhc3NOYW1lKSB7CiAgICAgIGlmICghbm9kZXMpIG5vZGVzID0gU2Vs
ZWN0b3IuaGFuZGxlcnMuZGVzY2VuZGFudChbcm9vdF0pOwogICAgICB2YXIgbmVl
ZGxlID0gJyAnICsgY2xhc3NOYW1lICsgJyAnOwogICAgICBmb3IgKHZhciBpID0g
MCwgcmVzdWx0cyA9IFtdLCBub2RlLCBub2RlQ2xhc3NOYW1lOyBub2RlID0gbm9k
ZXNbaV07IGkrKykgewogICAgICAgIG5vZGVDbGFzc05hbWUgPSBub2RlLmNsYXNz
TmFtZTsKICAgICAgICBpZiAobm9kZUNsYXNzTmFtZS5sZW5ndGggPT0gMCkgY29u
dGludWU7CiAgICAgICAgaWYgKG5vZGVDbGFzc05hbWUgPT0gY2xhc3NOYW1lIHx8
ICgnICcgKyBub2RlQ2xhc3NOYW1lICsgJyAnKS5pbmNsdWRlKG5lZWRsZSkpCiAg
ICAgICAgICByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIH0KICAgICAgcmV0dXJu
IHJlc3VsdHM7CiAgICB9LAoKICAgIGF0dHJQcmVzZW5jZTogZnVuY3Rpb24obm9k
ZXMsIHJvb3QsIGF0dHIpIHsKICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAg
Zm9yICh2YXIgaSA9IDAsIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAg
ICAgIGlmIChFbGVtZW50Lmhhc0F0dHJpYnV0ZShub2RlLCBhdHRyKSkgcmVzdWx0
cy5wdXNoKG5vZGUpOwogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAg
YXR0cjogZnVuY3Rpb24obm9kZXMsIHJvb3QsIGF0dHIsIHZhbHVlLCBvcGVyYXRv
cikgewogICAgICBpZiAoIW5vZGVzKSBub2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoIioiKTsKICAgICAgdmFyIGhhbmRsZXIgPSBTZWxlY3Rvci5vcGVy
YXRvcnNbb3BlcmF0b3JdLCByZXN1bHRzID0gW107CiAgICAgIGZvciAodmFyIGkg
PSAwLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewogICAgICAgIHZhciBu
b2RlVmFsdWUgPSBFbGVtZW50LnJlYWRBdHRyaWJ1dGUobm9kZSwgYXR0cik7CiAg
ICAgICAgaWYgKG5vZGVWYWx1ZSA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAg
aWYgKGhhbmRsZXIobm9kZVZhbHVlLCB2YWx1ZSkpIHJlc3VsdHMucHVzaChub2Rl
KTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgcHNl
dWRvOiBmdW5jdGlvbihub2RlcywgbmFtZSwgdmFsdWUsIHJvb3QsIGNvbWJpbmF0
b3IpIHsKICAgICAgaWYgKG5vZGVzICYmIGNvbWJpbmF0b3IpIG5vZGVzID0gdGhp
c1tjb21iaW5hdG9yXShub2Rlcyk7CiAgICAgIGlmICghbm9kZXMpIG5vZGVzID0g
cm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICByZXR1cm4gU2Vs
ZWN0b3IucHNldWRvc1tuYW1lXShub2RlcywgdmFsdWUsIHJvb3QpOwogICAgfQog
IH0sCgogIHBzZXVkb3M6IHsKICAgICdmaXJzdC1jaGlsZCc6IGZ1bmN0aW9uKG5v
ZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBpID0gMCwgcmVzdWx0
cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewogICAgICAgIGlm
IChTZWxlY3Rvci5oYW5kbGVycy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKG5vZGUp
KSBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAg
fQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0sCiAgICAnbGFzdC1jaGlsZCc6
IGZ1bmN0aW9uKG5vZGVzLCB2YWx1ZSwgcm9vdCkgewogICAgICBmb3IgKHZhciBp
ID0gMCwgcmVzdWx0cyA9IFtdLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykg
ewogICAgICAgIGlmIChTZWxlY3Rvci5oYW5kbGVycy5uZXh0RWxlbWVudFNpYmxp
bmcobm9kZSkpIGNvbnRpbnVlOwogICAgICAgICAgcmVzdWx0cy5wdXNoKG5vZGUp
OwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfSwKICAgICdvbmx5
LWNoaWxkJzogZnVuY3Rpb24obm9kZXMsIHZhbHVlLCByb290KSB7CiAgICAgIHZh
ciBoID0gU2VsZWN0b3IuaGFuZGxlcnM7CiAgICAgIGZvciAodmFyIGkgPSAwLCBy
ZXN1bHRzID0gW10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAg
IGlmICghaC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKG5vZGUpICYmICFoLm5leHRF
bGVtZW50U2libGluZyhub2RlKSkKICAgICAgICAgIHJlc3VsdHMucHVzaChub2Rl
KTsKICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9LAogICAgJ250aC1jaGlsZCc6
ICAgICAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewogICAgICBy
ZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgobm9kZXMsIGZvcm11bGEsIHJvb3Qp
OwogICAgfSwKICAgICdudGgtbGFzdC1jaGlsZCc6ICAgZnVuY3Rpb24obm9kZXMs
IGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0dXJuIFNlbGVjdG9yLnBzZXVkb3Mu
bnRoKG5vZGVzLCBmb3JtdWxhLCByb290LCB0cnVlKTsKICAgIH0sCiAgICAnbnRo
LW9mLXR5cGUnOiAgICAgIGZ1bmN0aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7
CiAgICAgIHJldHVybiBTZWxlY3Rvci5wc2V1ZG9zLm50aChub2RlcywgZm9ybXVs
YSwgcm9vdCwgZmFsc2UsIHRydWUpOwogICAgfSwKICAgICdudGgtbGFzdC1vZi10
eXBlJzogZnVuY3Rpb24obm9kZXMsIGZvcm11bGEsIHJvb3QpIHsKICAgICAgcmV0
dXJuIFNlbGVjdG9yLnBzZXVkb3MubnRoKG5vZGVzLCBmb3JtdWxhLCByb290LCB0
cnVlLCB0cnVlKTsKICAgIH0sCiAgICAnZmlyc3Qtb2YtdHlwZSc6ICAgIGZ1bmN0
aW9uKG5vZGVzLCBmb3JtdWxhLCByb290KSB7CiAgICAgIHJldHVybiBTZWxlY3Rv
ci5wc2V1ZG9zLm50aChub2RlcywgIjEiLCByb290LCBmYWxzZSwgdHJ1ZSk7CiAg
ICB9LAogICAgJ2xhc3Qtb2YtdHlwZSc6ICAgICBmdW5jdGlvbihub2RlcywgZm9y
bXVsYSwgcm9vdCkgewogICAgICByZXR1cm4gU2VsZWN0b3IucHNldWRvcy5udGgo
bm9kZXMsICIxIiwgcm9vdCwgdHJ1ZSwgdHJ1ZSk7CiAgICB9LAogICAgJ29ubHkt
b2YtdHlwZSc6ICAgICBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCkgewog
ICAgICB2YXIgcCA9IFNlbGVjdG9yLnBzZXVkb3M7CiAgICAgIHJldHVybiBwWyds
YXN0LW9mLXR5cGUnXShwWydmaXJzdC1vZi10eXBlJ10obm9kZXMsIGZvcm11bGEs
IHJvb3QpLCBmb3JtdWxhLCByb290KTsKICAgIH0sCgogICAgLy8gaGFuZGxlcyB0
aGUgYW4rYiBsb2dpYwogICAgZ2V0SW5kaWNlczogZnVuY3Rpb24oYSwgYiwgdG90
YWwpIHsKICAgICAgaWYgKGEgPT0gMCkgcmV0dXJuIGIgPiAwID8gW2JdIDogW107
CiAgICAgIHJldHVybiAkUigxLCB0b3RhbCkuaW5qZWN0KFtdLCBmdW5jdGlvbiht
ZW1vLCBpKSB7CiAgICAgICAgaWYgKDAgPT0gKGkgLSBiKSAlIGEgJiYgKGkgLSBi
KSAvIGEgPj0gMCkgbWVtby5wdXNoKGkpOwogICAgICAgIHJldHVybiBtZW1vOwog
ICAgICB9KTsKICAgIH0sCgogICAgLy8gaGFuZGxlcyBudGgoLWxhc3QpLWNoaWxk
LCBudGgoLWxhc3QpLW9mLXR5cGUsIGFuZCAoZmlyc3R8bGFzdCktb2YtdHlwZQog
ICAgbnRoOiBmdW5jdGlvbihub2RlcywgZm9ybXVsYSwgcm9vdCwgcmV2ZXJzZSwg
b2ZUeXBlKSB7CiAgICAgIGlmIChub2Rlcy5sZW5ndGggPT0gMCkgcmV0dXJuIFtd
OwogICAgICBpZiAoZm9ybXVsYSA9PSAnZXZlbicpIGZvcm11bGEgPSAnMm4rMCc7
CiAgICAgIGlmIChmb3JtdWxhID09ICdvZGQnKSAgZm9ybXVsYSA9ICcybisxJzsK
ICAgICAgdmFyIGggPSBTZWxlY3Rvci5oYW5kbGVycywgcmVzdWx0cyA9IFtdLCBp
bmRleGVkID0gW10sIG07CiAgICAgIGgubWFyayhub2Rlcyk7CiAgICAgIGZvciAo
dmFyIGkgPSAwLCBub2RlOyBub2RlID0gbm9kZXNbaV07IGkrKykgewogICAgICAg
IGlmICghbm9kZS5wYXJlbnROb2RlLl9jb3VudGVkKSB7CiAgICAgICAgICBoLmlu
ZGV4KG5vZGUucGFyZW50Tm9kZSwgcmV2ZXJzZSwgb2ZUeXBlKTsKICAgICAgICAg
IGluZGV4ZWQucHVzaChub2RlLnBhcmVudE5vZGUpOwogICAgICAgIH0KICAgICAg
fQogICAgICBpZiAoZm9ybXVsYS5tYXRjaCgvXlxkKyQvKSkgeyAvLyBqdXN0IGEg
bnVtYmVyCiAgICAgICAgZm9ybXVsYSA9IE51bWJlcihmb3JtdWxhKTsKICAgICAg
ICBmb3IgKHZhciBpID0gMCwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAg
ICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0gZm9ybXVsYSkgcmVzdWx0cy5w
dXNoKG5vZGUpOwogICAgICB9IGVsc2UgaWYgKG0gPSBmb3JtdWxhLm1hdGNoKC9e
KC0/XGQqKT9uKChbKy1dKShcZCspKT8vKSkgeyAvLyBhbitiCiAgICAgICAgaWYg
KG1bMV0gPT0gIi0iKSBtWzFdID0gLTE7CiAgICAgICAgdmFyIGEgPSBtWzFdID8g
TnVtYmVyKG1bMV0pIDogMTsKICAgICAgICB2YXIgYiA9IG1bMl0gPyBOdW1iZXIo
bVsyXSkgOiAwOwogICAgICAgIHZhciBpbmRpY2VzID0gU2VsZWN0b3IucHNldWRv
cy5nZXRJbmRpY2VzKGEsIGIsIG5vZGVzLmxlbmd0aCk7CiAgICAgICAgZm9yICh2
YXIgaSA9IDAsIG5vZGUsIGwgPSBpbmRpY2VzLmxlbmd0aDsgbm9kZSA9IG5vZGVz
W2ldOyBpKyspIHsKICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbDsgaisr
KQogICAgICAgICAgICBpZiAobm9kZS5ub2RlSW5kZXggPT0gaW5kaWNlc1tqXSkg
cmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgIH0KICAgICAgfQogICAgICBoLnVu
bWFyayhub2Rlcyk7CiAgICAgIGgudW5tYXJrKGluZGV4ZWQpOwogICAgICByZXR1
cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2VtcHR5JzogZnVuY3Rpb24obm9kZXMs
IHZhbHVlLCByb290KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRzID0g
W10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKSB7CiAgICAgICAgLy8gSUUg
dHJlYXRzIGNvbW1lbnRzIGFzIGVsZW1lbnQgbm9kZXMKICAgICAgICBpZiAobm9k
ZS50YWdOYW1lID09ICchJyB8fCAobm9kZS5maXJzdENoaWxkICYmICFub2RlLmlu
bmVySFRNTC5tYXRjaCgvXlxzKiQvKSkpIGNvbnRpbnVlOwogICAgICAgIHJlc3Vs
dHMucHVzaChub2RlKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAg
IH0sCgogICAgJ25vdCc6IGZ1bmN0aW9uKG5vZGVzLCBzZWxlY3Rvciwgcm9vdCkg
ewogICAgICB2YXIgaCA9IFNlbGVjdG9yLmhhbmRsZXJzLCBzZWxlY3RvclR5cGUs
IG07CiAgICAgIHZhciBleGNsdXNpb25zID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9y
KS5maW5kRWxlbWVudHMocm9vdCk7CiAgICAgIGgubWFyayhleGNsdXNpb25zKTsK
ICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9
IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYgKCFub2RlLl9jb3VudGVkKSByZXN1
bHRzLnB1c2gobm9kZSk7CiAgICAgIGgudW5tYXJrKGV4Y2x1c2lvbnMpOwogICAg
ICByZXR1cm4gcmVzdWx0czsKICAgIH0sCgogICAgJ2VuYWJsZWQnOiBmdW5jdGlv
bihub2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJl
c3VsdHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAg
aWYgKCFub2RlLmRpc2FibGVkKSByZXN1bHRzLnB1c2gobm9kZSk7CiAgICAgIHJl
dHVybiByZXN1bHRzOwogICAgfSwKCiAgICAnZGlzYWJsZWQnOiBmdW5jdGlvbihu
b2RlcywgdmFsdWUsIHJvb3QpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIHJlc3Vs
dHMgPSBbXSwgbm9kZTsgbm9kZSA9IG5vZGVzW2ldOyBpKyspCiAgICAgICAgaWYg
KG5vZGUuZGlzYWJsZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJu
IHJlc3VsdHM7CiAgICB9LAoKICAgICdjaGVja2VkJzogZnVuY3Rpb24obm9kZXMs
IHZhbHVlLCByb290KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCByZXN1bHRzID0g
W10sIG5vZGU7IG5vZGUgPSBub2Rlc1tpXTsgaSsrKQogICAgICAgIGlmIChub2Rl
LmNoZWNrZWQpIHJlc3VsdHMucHVzaChub2RlKTsKICAgICAgcmV0dXJuIHJlc3Vs
dHM7CiAgICB9CiAgfSwKCiAgb3BlcmF0b3JzOiB7CiAgICAnPSc6ICBmdW5jdGlv
bihudiwgdikgeyByZXR1cm4gbnYgPT0gdjsgfSwKICAgICchPSc6IGZ1bmN0aW9u
KG52LCB2KSB7IHJldHVybiBudiAhPSB2OyB9LAogICAgJ149JzogZnVuY3Rpb24o
bnYsIHYpIHsgcmV0dXJuIG52LnN0YXJ0c1dpdGgodik7IH0sCiAgICAnJD0nOiBm
dW5jdGlvbihudiwgdikgeyByZXR1cm4gbnYuZW5kc1dpdGgodik7IH0sCiAgICAn
Kj0nOiBmdW5jdGlvbihudiwgdikgeyByZXR1cm4gbnYuaW5jbHVkZSh2KTsgfSwK
ICAgICd+PSc6IGZ1bmN0aW9uKG52LCB2KSB7IHJldHVybiAoJyAnICsgbnYgKyAn
ICcpLmluY2x1ZGUoJyAnICsgdiArICcgJyk7IH0sCiAgICAnfD0nOiBmdW5jdGlv
bihudiwgdikgeyByZXR1cm4gKCctJyArIG52LnRvVXBwZXJDYXNlKCkgKyAnLScp
LmluY2x1ZGUoJy0nICsgdi50b1VwcGVyQ2FzZSgpICsgJy0nKTsgfQogIH0sCgog
IG1hdGNoRWxlbWVudHM6IGZ1bmN0aW9uKGVsZW1lbnRzLCBleHByZXNzaW9uKSB7
CiAgICB2YXIgbWF0Y2hlcyA9IG5ldyBTZWxlY3RvcihleHByZXNzaW9uKS5maW5k
RWxlbWVudHMoKSwgaCA9IFNlbGVjdG9yLmhhbmRsZXJzOwogICAgaC5tYXJrKG1h
dGNoZXMpOwogICAgZm9yICh2YXIgaSA9IDAsIHJlc3VsdHMgPSBbXSwgZWxlbWVu
dDsgZWxlbWVudCA9IGVsZW1lbnRzW2ldOyBpKyspCiAgICAgIGlmIChlbGVtZW50
Ll9jb3VudGVkKSByZXN1bHRzLnB1c2goZWxlbWVudCk7CiAgICBoLnVubWFyayht
YXRjaGVzKTsKICAgIHJldHVybiByZXN1bHRzOwogIH0sCgogIGZpbmRFbGVtZW50
OiBmdW5jdGlvbihlbGVtZW50cywgZXhwcmVzc2lvbiwgaW5kZXgpIHsKICAgIGlm
ICh0eXBlb2YgZXhwcmVzc2lvbiA9PSAnbnVtYmVyJykgewogICAgICBpbmRleCA9
IGV4cHJlc3Npb247IGV4cHJlc3Npb24gPSBmYWxzZTsKICAgIH0KICAgIHJldHVy
biBTZWxlY3Rvci5tYXRjaEVsZW1lbnRzKGVsZW1lbnRzLCBleHByZXNzaW9uIHx8
ICcqJylbaW5kZXggfHwgMF07CiAgfSwKCiAgZmluZENoaWxkRWxlbWVudHM6IGZ1
bmN0aW9uKGVsZW1lbnQsIGV4cHJlc3Npb25zKSB7CiAgICB2YXIgZXhwcnMgPSBl
eHByZXNzaW9ucy5qb2luKCcsJyksIGV4cHJlc3Npb25zID0gW107CiAgICBleHBy
cy5zY2FuKC8oKFtcdyM6Ln4+KygpXHMtXSt8XCp8XFsuKj9cXSkrKVxzKigsfCQp
LywgZnVuY3Rpb24obSkgewogICAgICBleHByZXNzaW9ucy5wdXNoKG1bMV0uc3Ry
aXAoKSk7CiAgICB9KTsKICAgIHZhciByZXN1bHRzID0gW10sIGggPSBTZWxlY3Rv
ci5oYW5kbGVyczsKICAgIGZvciAodmFyIGkgPSAwLCBsID0gZXhwcmVzc2lvbnMu
bGVuZ3RoLCBzZWxlY3RvcjsgaSA8IGw7IGkrKykgewogICAgICBzZWxlY3RvciA9
IG5ldyBTZWxlY3RvcihleHByZXNzaW9uc1tpXS5zdHJpcCgpKTsKICAgICAgaC5j
b25jYXQocmVzdWx0cywgc2VsZWN0b3IuZmluZEVsZW1lbnRzKGVsZW1lbnQpKTsK
ICAgIH0KICAgIHJldHVybiAobCA+IDEpID8gaC51bmlxdWUocmVzdWx0cykgOiBy
ZXN1bHRzOwogIH0KfSk7CgpmdW5jdGlvbiAkJCgpIHsKICByZXR1cm4gU2VsZWN0
b3IuZmluZENoaWxkRWxlbWVudHMoZG9jdW1lbnQsICRBKGFyZ3VtZW50cykpOwp9
CnZhciBGb3JtID0gewogIHJlc2V0OiBmdW5jdGlvbihmb3JtKSB7CiAgICAkKGZv
cm0pLnJlc2V0KCk7CiAgICByZXR1cm4gZm9ybTsKICB9LAoKICBzZXJpYWxpemVF
bGVtZW50czogZnVuY3Rpb24oZWxlbWVudHMsIGdldEhhc2gpIHsKICAgIHZhciBk
YXRhID0gZWxlbWVudHMuaW5qZWN0KHt9LCBmdW5jdGlvbihyZXN1bHQsIGVsZW1l
bnQpIHsKICAgICAgaWYgKCFlbGVtZW50LmRpc2FibGVkICYmIGVsZW1lbnQubmFt
ZSkgewogICAgICAgIHZhciBrZXkgPSBlbGVtZW50Lm5hbWUsIHZhbHVlID0gJChl
bGVtZW50KS5nZXRWYWx1ZSgpOwogICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7
CiAgICAgICAgIAlpZiAoa2V5IGluIHJlc3VsdCkgewogICAgICAgICAgICBpZiAo
cmVzdWx0W2tleV0uY29uc3RydWN0b3IgIT0gQXJyYXkpIHJlc3VsdFtrZXldID0g
W3Jlc3VsdFtrZXldXTsKICAgICAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWx1
ZSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHJlc3VsdFtrZXldID0gdmFs
dWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9
KTsKCiAgICByZXR1cm4gZ2V0SGFzaCA/IGRhdGEgOiBIYXNoLnRvUXVlcnlTdHJp
bmcoZGF0YSk7CiAgfQp9OwoKRm9ybS5NZXRob2RzID0gewogIHNlcmlhbGl6ZTog
ZnVuY3Rpb24oZm9ybSwgZ2V0SGFzaCkgewogICAgcmV0dXJuIEZvcm0uc2VyaWFs
aXplRWxlbWVudHMoRm9ybS5nZXRFbGVtZW50cyhmb3JtKSwgZ2V0SGFzaCk7CiAg
fSwKCiAgZ2V0RWxlbWVudHM6IGZ1bmN0aW9uKGZvcm0pIHsKICAgIHJldHVybiAk
QSgkKGZvcm0pLmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpLmluamVjdChbXSwK
ICAgICAgZnVuY3Rpb24oZWxlbWVudHMsIGNoaWxkKSB7CiAgICAgICAgaWYgKEZv
cm0uRWxlbWVudC5TZXJpYWxpemVyc1tjaGlsZC50YWdOYW1lLnRvTG93ZXJDYXNl
KCldKQogICAgICAgICAgZWxlbWVudHMucHVzaChFbGVtZW50LmV4dGVuZChjaGls
ZCkpOwogICAgICAgIHJldHVybiBlbGVtZW50czsKICAgICAgfQogICAgKTsKICB9
LAoKICBnZXRJbnB1dHM6IGZ1bmN0aW9uKGZvcm0sIHR5cGVOYW1lLCBuYW1lKSB7
CiAgICBmb3JtID0gJChmb3JtKTsKICAgIHZhciBpbnB1dHMgPSBmb3JtLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOwoKICAgIGlmICghdHlwZU5hbWUgJiYg
IW5hbWUpIHJldHVybiAkQShpbnB1dHMpLm1hcChFbGVtZW50LmV4dGVuZCk7Cgog
ICAgZm9yICh2YXIgaSA9IDAsIG1hdGNoaW5nSW5wdXRzID0gW10sIGxlbmd0aCA9
IGlucHV0cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICB2YXIgaW5w
dXQgPSBpbnB1dHNbaV07CiAgICAgIGlmICgodHlwZU5hbWUgJiYgaW5wdXQudHlw
ZSAhPSB0eXBlTmFtZSkgfHwgKG5hbWUgJiYgaW5wdXQubmFtZSAhPSBuYW1lKSkK
ICAgICAgICBjb250aW51ZTsKICAgICAgbWF0Y2hpbmdJbnB1dHMucHVzaChFbGVt
ZW50LmV4dGVuZChpbnB1dCkpOwogICAgfQoKICAgIHJldHVybiBtYXRjaGluZ0lu
cHV0czsKICB9LAoKICBkaXNhYmxlOiBmdW5jdGlvbihmb3JtKSB7CiAgICBmb3Jt
ID0gJChmb3JtKTsKICAgIEZvcm0uZ2V0RWxlbWVudHMoZm9ybSkuaW52b2tlKCdk
aXNhYmxlJyk7CiAgICByZXR1cm4gZm9ybTsKICB9LAoKICBlbmFibGU6IGZ1bmN0
aW9uKGZvcm0pIHsKICAgIGZvcm0gPSAkKGZvcm0pOwogICAgRm9ybS5nZXRFbGVt
ZW50cyhmb3JtKS5pbnZva2UoJ2VuYWJsZScpOwogICAgcmV0dXJuIGZvcm07CiAg
fSwKCiAgZmluZEZpcnN0RWxlbWVudDogZnVuY3Rpb24oZm9ybSkgewogICAgcmV0
dXJuICQoZm9ybSkuZ2V0RWxlbWVudHMoKS5maW5kKGZ1bmN0aW9uKGVsZW1lbnQp
IHsKICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSAhPSAnaGlkZGVuJyAmJiAhZWxl
bWVudC5kaXNhYmxlZCAmJgogICAgICAgIFsnaW5wdXQnLCAnc2VsZWN0JywgJ3Rl
eHRhcmVhJ10uaW5jbHVkZShlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSk7
CiAgICB9KTsKICB9LAoKICBmb2N1c0ZpcnN0RWxlbWVudDogZnVuY3Rpb24oZm9y
bSkgewogICAgZm9ybSA9ICQoZm9ybSk7CiAgICBmb3JtLmZpbmRGaXJzdEVsZW1l
bnQoKS5hY3RpdmF0ZSgpOwogICAgcmV0dXJuIGZvcm07CiAgfSwKCiAgcmVxdWVz
dDogZnVuY3Rpb24oZm9ybSwgb3B0aW9ucykgewogICAgZm9ybSA9ICQoZm9ybSks
IG9wdGlvbnMgPSBPYmplY3QuY2xvbmUob3B0aW9ucyB8fCB7fSk7CgogICAgdmFy
IHBhcmFtcyA9IG9wdGlvbnMucGFyYW1ldGVyczsKICAgIG9wdGlvbnMucGFyYW1l
dGVycyA9IGZvcm0uc2VyaWFsaXplKHRydWUpOwoKICAgIGlmIChwYXJhbXMpIHsK
ICAgICAgaWYgKHR5cGVvZiBwYXJhbXMgPT0gJ3N0cmluZycpIHBhcmFtcyA9IHBh
cmFtcy50b1F1ZXJ5UGFyYW1zKCk7CiAgICAgIE9iamVjdC5leHRlbmQob3B0aW9u
cy5wYXJhbWV0ZXJzLCBwYXJhbXMpOwogICAgfQoKICAgIGlmIChmb3JtLmhhc0F0
dHJpYnV0ZSgnbWV0aG9kJykgJiYgIW9wdGlvbnMubWV0aG9kKQogICAgICBvcHRp
b25zLm1ldGhvZCA9IGZvcm0ubWV0aG9kOwoKICAgIHJldHVybiBuZXcgQWpheC5S
ZXF1ZXN0KGZvcm0ucmVhZEF0dHJpYnV0ZSgnYWN0aW9uJyksIG9wdGlvbnMpOwog
IH0KfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpGb3JtLkVsZW1l
bnQgPSB7CiAgZm9jdXM6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICQoZWxlbWVu
dCkuZm9jdXMoKTsKICAgIHJldHVybiBlbGVtZW50OwogIH0sCgogIHNlbGVjdDog
ZnVuY3Rpb24oZWxlbWVudCkgewogICAgJChlbGVtZW50KS5zZWxlY3QoKTsKICAg
IHJldHVybiBlbGVtZW50OwogIH0KfQoKRm9ybS5FbGVtZW50Lk1ldGhvZHMgPSB7
CiAgc2VyaWFsaXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0g
JChlbGVtZW50KTsKICAgIGlmICghZWxlbWVudC5kaXNhYmxlZCAmJiBlbGVtZW50
Lm5hbWUpIHsKICAgICAgdmFyIHZhbHVlID0gZWxlbWVudC5nZXRWYWx1ZSgpOwog
ICAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdmFyIHBhaXIg
PSB7fTsKICAgICAgICBwYWlyW2VsZW1lbnQubmFtZV0gPSB2YWx1ZTsKICAgICAg
ICByZXR1cm4gSGFzaC50b1F1ZXJ5U3RyaW5nKHBhaXIpOwogICAgICB9CiAgICB9
CiAgICByZXR1cm4gJyc7CiAgfSwKCiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKGVsZW1l
bnQpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwogICAgdmFyIG1ldGhvZCA9
IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgcmV0dXJuIEZvcm0u
RWxlbWVudC5TZXJpYWxpemVyc1ttZXRob2RdKGVsZW1lbnQpOwogIH0sCgogIGNs
ZWFyOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAkKGVsZW1lbnQpLnZhbHVlID0g
Jyc7CiAgICByZXR1cm4gZWxlbWVudDsKICB9LAoKICBwcmVzZW50OiBmdW5jdGlv
bihlbGVtZW50KSB7CiAgICByZXR1cm4gJChlbGVtZW50KS52YWx1ZSAhPSAnJzsK
ICB9LAoKICBhY3RpdmF0ZTogZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVu
dCA9ICQoZWxlbWVudCk7CiAgICB0cnkgewogICAgICBlbGVtZW50LmZvY3VzKCk7
CiAgICAgIGlmIChlbGVtZW50LnNlbGVjdCAmJiAoZWxlbWVudC50YWdOYW1lLnRv
TG93ZXJDYXNlKCkgIT0gJ2lucHV0JyB8fAogICAgICAgICFbJ2J1dHRvbicsICdy
ZXNldCcsICdzdWJtaXQnXS5pbmNsdWRlKGVsZW1lbnQudHlwZSkpKQogICAgICAg
IGVsZW1lbnQuc2VsZWN0KCk7CiAgICB9IGNhdGNoIChlKSB7fQogICAgcmV0dXJu
IGVsZW1lbnQ7CiAgfSwKCiAgZGlzYWJsZTogZnVuY3Rpb24oZWxlbWVudCkgewog
ICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICBlbGVtZW50LmJsdXIoKTsKICAg
IGVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwogICAgcmV0dXJuIGVsZW1lbnQ7CiAg
fSwKCiAgZW5hYmxlOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBlbGVtZW50ID0g
JChlbGVtZW50KTsKICAgIGVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKICAgIHJl
dHVybiBlbGVtZW50OwogIH0KfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCgp2YXIgRmllbGQgPSBGb3JtLkVsZW1lbnQ7CnZhciAkRiA9IEZvcm0uRWxl
bWVudC5NZXRob2RzLmdldFZhbHVlOwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCgpGb3JtLkVsZW1lbnQuU2VyaWFsaXplcnMgPSB7CiAgaW5wdXQ6IGZ1
bmN0aW9uKGVsZW1lbnQpIHsKICAgIHN3aXRjaCAoZWxlbWVudC50eXBlLnRvTG93
ZXJDYXNlKCkpIHsKICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAgICBjYXNlICdy
YWRpbyc6CiAgICAgICAgcmV0dXJuIEZvcm0uRWxlbWVudC5TZXJpYWxpemVycy5p
bnB1dFNlbGVjdG9yKGVsZW1lbnQpOwogICAgICBkZWZhdWx0OgogICAgICAgIHJl
dHVybiBGb3JtLkVsZW1lbnQuU2VyaWFsaXplcnMudGV4dGFyZWEoZWxlbWVudCk7
CiAgICB9CiAgfSwKCiAgaW5wdXRTZWxlY3RvcjogZnVuY3Rpb24oZWxlbWVudCkg
ewogICAgcmV0dXJuIGVsZW1lbnQuY2hlY2tlZCA/IGVsZW1lbnQudmFsdWUgOiBu
dWxsOwogIH0sCgogIHRleHRhcmVhOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICBy
ZXR1cm4gZWxlbWVudC52YWx1ZTsKICB9LAoKICBzZWxlY3Q6IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKICAgIHJldHVybiB0aGlzW2VsZW1lbnQudHlwZSA9PSAnc2VsZWN0
LW9uZScgPwogICAgICAnc2VsZWN0T25lJyA6ICdzZWxlY3RNYW55J10oZWxlbWVu
dCk7CiAgfSwKCiAgc2VsZWN0T25lOiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2
YXIgaW5kZXggPSBlbGVtZW50LnNlbGVjdGVkSW5kZXg7CiAgICByZXR1cm4gaW5k
ZXggPj0gMCA/IHRoaXMub3B0aW9uVmFsdWUoZWxlbWVudC5vcHRpb25zW2luZGV4
XSkgOiBudWxsOwogIH0sCgogIHNlbGVjdE1hbnk6IGZ1bmN0aW9uKGVsZW1lbnQp
IHsKICAgIHZhciB2YWx1ZXMsIGxlbmd0aCA9IGVsZW1lbnQubGVuZ3RoOwogICAg
aWYgKCFsZW5ndGgpIHJldHVybiBudWxsOwoKICAgIGZvciAodmFyIGkgPSAwLCB2
YWx1ZXMgPSBbXTsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBvcHQgPSBl
bGVtZW50Lm9wdGlvbnNbaV07CiAgICAgIGlmIChvcHQuc2VsZWN0ZWQpIHZhbHVl
cy5wdXNoKHRoaXMub3B0aW9uVmFsdWUob3B0KSk7CiAgICB9CiAgICByZXR1cm4g
dmFsdWVzOwogIH0sCgogIG9wdGlvblZhbHVlOiBmdW5jdGlvbihvcHQpIHsKICAg
IC8vIGV4dGVuZCBlbGVtZW50IGJlY2F1c2UgaGFzQXR0cmlidXRlIG1heSBub3Qg
YmUgbmF0aXZlCiAgICByZXR1cm4gRWxlbWVudC5leHRlbmQob3B0KS5oYXNBdHRy
aWJ1dGUoJ3ZhbHVlJykgPyBvcHQudmFsdWUgOiBvcHQudGV4dDsKICB9Cn0KCi8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKQWJzdHJhY3QuVGltZWRPYnNl
cnZlciA9IGZ1bmN0aW9uKCkge30KQWJzdHJhY3QuVGltZWRPYnNlcnZlci5wcm90
b3R5cGUgPSB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWxlbWVudCwgZnJlcXVl
bmN5LCBjYWxsYmFjaykgewogICAgdGhpcy5mcmVxdWVuY3kgPSBmcmVxdWVuY3k7
CiAgICB0aGlzLmVsZW1lbnQgICA9ICQoZWxlbWVudCk7CiAgICB0aGlzLmNhbGxi
YWNrICA9IGNhbGxiYWNrOwoKICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy5nZXRW
YWx1ZSgpOwogICAgdGhpcy5yZWdpc3RlckNhbGxiYWNrKCk7CiAgfSwKCiAgcmVn
aXN0ZXJDYWxsYmFjazogZnVuY3Rpb24oKSB7CiAgICBzZXRJbnRlcnZhbCh0aGlz
Lm9uVGltZXJFdmVudC5iaW5kKHRoaXMpLCB0aGlzLmZyZXF1ZW5jeSAqIDEwMDAp
OwogIH0sCgogIG9uVGltZXJFdmVudDogZnVuY3Rpb24oKSB7CiAgICB2YXIgdmFs
dWUgPSB0aGlzLmdldFZhbHVlKCk7CiAgICB2YXIgY2hhbmdlZCA9ICgnc3RyaW5n
JyA9PSB0eXBlb2YgdGhpcy5sYXN0VmFsdWUgJiYgJ3N0cmluZycgPT0gdHlwZW9m
IHZhbHVlCiAgICAgID8gdGhpcy5sYXN0VmFsdWUgIT0gdmFsdWUgOiBTdHJpbmco
dGhpcy5sYXN0VmFsdWUpICE9IFN0cmluZyh2YWx1ZSkpOwogICAgaWYgKGNoYW5n
ZWQpIHsKICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLmVsZW1lbnQsIHZhbHVlKTsK
ICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTsKICAgIH0KICB9Cn0KCkZvcm0u
RWxlbWVudC5PYnNlcnZlciA9IENsYXNzLmNyZWF0ZSgpOwpGb3JtLkVsZW1lbnQu
T2JzZXJ2ZXIucHJvdG90eXBlID0gT2JqZWN0LmV4dGVuZChuZXcgQWJzdHJhY3Qu
VGltZWRPYnNlcnZlcigpLCB7CiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewogICAg
cmV0dXJuIEZvcm0uRWxlbWVudC5nZXRWYWx1ZSh0aGlzLmVsZW1lbnQpOwogIH0K
fSk7CgpGb3JtLk9ic2VydmVyID0gQ2xhc3MuY3JlYXRlKCk7CkZvcm0uT2JzZXJ2
ZXIucHJvdG90eXBlID0gT2JqZWN0LmV4dGVuZChuZXcgQWJzdHJhY3QuVGltZWRP
YnNlcnZlcigpLCB7CiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJu
IEZvcm0uc2VyaWFsaXplKHRoaXMuZWxlbWVudCk7CiAgfQp9KTsKCi8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKQWJzdHJhY3QuRXZlbnRPYnNlcnZlciA9
IGZ1bmN0aW9uKCkge30KQWJzdHJhY3QuRXZlbnRPYnNlcnZlci5wcm90b3R5cGUg
PSB7CiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWxlbWVudCwgY2FsbGJhY2spIHsK
ICAgIHRoaXMuZWxlbWVudCAgPSAkKGVsZW1lbnQpOwogICAgdGhpcy5jYWxsYmFj
ayA9IGNhbGxiYWNrOwoKICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy5nZXRWYWx1
ZSgpOwogICAgaWYgKHRoaXMuZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkg
PT0gJ2Zvcm0nKQogICAgICB0aGlzLnJlZ2lzdGVyRm9ybUNhbGxiYWNrcygpOwog
ICAgZWxzZQogICAgICB0aGlzLnJlZ2lzdGVyQ2FsbGJhY2sodGhpcy5lbGVtZW50
KTsKICB9LAoKICBvbkVsZW1lbnRFdmVudDogZnVuY3Rpb24oKSB7CiAgICB2YXIg
dmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7CiAgICBpZiAodGhpcy5sYXN0VmFsdWUg
IT0gdmFsdWUpIHsKICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLmVsZW1lbnQsIHZh
bHVlKTsKICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTsKICAgIH0KICB9LAoK
ICByZWdpc3RlckZvcm1DYWxsYmFja3M6IGZ1bmN0aW9uKCkgewogICAgRm9ybS5n
ZXRFbGVtZW50cyh0aGlzLmVsZW1lbnQpLmVhY2godGhpcy5yZWdpc3RlckNhbGxi
YWNrLmJpbmQodGhpcykpOwogIH0sCgogIHJlZ2lzdGVyQ2FsbGJhY2s6IGZ1bmN0
aW9uKGVsZW1lbnQpIHsKICAgIGlmIChlbGVtZW50LnR5cGUpIHsKICAgICAgc3dp
dGNoIChlbGVtZW50LnR5cGUudG9Mb3dlckNhc2UoKSkgewogICAgICAgIGNhc2Ug
J2NoZWNrYm94JzoKICAgICAgICBjYXNlICdyYWRpbyc6CiAgICAgICAgICBFdmVu
dC5vYnNlcnZlKGVsZW1lbnQsICdjbGljaycsIHRoaXMub25FbGVtZW50RXZlbnQu
YmluZCh0aGlzKSk7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgRXZlbnQub2JzZXJ2ZShlbGVtZW50LCAnY2hhbmdlJywgdGhpcy5v
bkVsZW1lbnRFdmVudC5iaW5kKHRoaXMpKTsKICAgICAgICAgIGJyZWFrOwogICAg
ICB9CiAgICB9CiAgfQp9CgpGb3JtLkVsZW1lbnQuRXZlbnRPYnNlcnZlciA9IENs
YXNzLmNyZWF0ZSgpOwpGb3JtLkVsZW1lbnQuRXZlbnRPYnNlcnZlci5wcm90b3R5
cGUgPSBPYmplY3QuZXh0ZW5kKG5ldyBBYnN0cmFjdC5FdmVudE9ic2VydmVyKCks
IHsKICBnZXRWYWx1ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gRm9ybS5FbGVt
ZW50LmdldFZhbHVlKHRoaXMuZWxlbWVudCk7CiAgfQp9KTsKCkZvcm0uRXZlbnRP
YnNlcnZlciA9IENsYXNzLmNyZWF0ZSgpOwpGb3JtLkV2ZW50T2JzZXJ2ZXIucHJv
dG90eXBlID0gT2JqZWN0LmV4dGVuZChuZXcgQWJzdHJhY3QuRXZlbnRPYnNlcnZl
cigpLCB7CiAgZ2V0VmFsdWU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIEZvcm0u
c2VyaWFsaXplKHRoaXMuZWxlbWVudCk7CiAgfQp9KTsKaWYgKCF3aW5kb3cuRXZl
bnQpIHsKICB2YXIgRXZlbnQgPSBuZXcgT2JqZWN0KCk7Cn0KCk9iamVjdC5leHRl
bmQoRXZlbnQsIHsKICBLRVlfQkFDS1NQQUNFOiA4LAogIEtFWV9UQUI6ICAgICAg
IDksCiAgS0VZX1JFVFVSTjogICAxMywKICBLRVlfRVNDOiAgICAgIDI3LAogIEtF
WV9MRUZUOiAgICAgMzcsCiAgS0VZX1VQOiAgICAgICAzOCwKICBLRVlfUklHSFQ6
ICAgIDM5LAogIEtFWV9ET1dOOiAgICAgNDAsCiAgS0VZX0RFTEVURTogICA0NiwK
ICBLRVlfSE9NRTogICAgIDM2LAogIEtFWV9FTkQ6ICAgICAgMzUsCiAgS0VZX1BB
R0VVUDogICAzMywKICBLRVlfUEFHRURPV046IDM0LAoKICBlbGVtZW50OiBmdW5j
dGlvbihldmVudCkgewogICAgcmV0dXJuICQoZXZlbnQudGFyZ2V0IHx8IGV2ZW50
LnNyY0VsZW1lbnQpOwogIH0sCgogIGlzTGVmdENsaWNrOiBmdW5jdGlvbihldmVu
dCkgewogICAgcmV0dXJuICgoKGV2ZW50LndoaWNoKSAmJiAoZXZlbnQud2hpY2gg
PT0gMSkpIHx8CiAgICAgICAgICAgICgoZXZlbnQuYnV0dG9uKSAmJiAoZXZlbnQu
YnV0dG9uID09IDEpKSk7CiAgfSwKCiAgcG9pbnRlclg6IGZ1bmN0aW9uKGV2ZW50
KSB7CiAgICByZXR1cm4gZXZlbnQucGFnZVggfHwgKGV2ZW50LmNsaWVudFggKwog
ICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgZG9j
dW1lbnQuYm9keS5zY3JvbGxMZWZ0KSk7CiAgfSwKCiAgcG9pbnRlclk6IGZ1bmN0
aW9uKGV2ZW50KSB7CiAgICByZXR1cm4gZXZlbnQucGFnZVkgfHwgKGV2ZW50LmNs
aWVudFkgKwogICAgICAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRv
cCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCkpOwogIH0sCgogIHN0b3A6IGZ1
bmN0aW9uKGV2ZW50KSB7CiAgICBpZiAoZXZlbnQucHJldmVudERlZmF1bHQpIHsK
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7CiAgICB9IGVsc2UgewogICAgICBldmVudC5yZXR1cm5WYWx1
ZSA9IGZhbHNlOwogICAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOwogICAg
fQogIH0sCgogIC8vIGZpbmQgdGhlIGZpcnN0IG5vZGUgd2l0aCB0aGUgZ2l2ZW4g
dGFnTmFtZSwgc3RhcnRpbmcgZnJvbSB0aGUKICAvLyBub2RlIHRoZSBldmVudCB3
YXMgdHJpZ2dlcmVkIG9uOyB0cmF2ZXJzZXMgdGhlIERPTSB1cHdhcmRzCiAgZmlu
ZEVsZW1lbnQ6IGZ1bmN0aW9uKGV2ZW50LCB0YWdOYW1lKSB7CiAgICB2YXIgZWxl
bWVudCA9IEV2ZW50LmVsZW1lbnQoZXZlbnQpOwogICAgd2hpbGUgKGVsZW1lbnQu
cGFyZW50Tm9kZSAmJiAoIWVsZW1lbnQudGFnTmFtZSB8fAogICAgICAgIChlbGVt
ZW50LnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPSB0YWdOYW1lLnRvVXBwZXJDYXNl
KCkpKSkKICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTsKICAgIHJl
dHVybiBlbGVtZW50OwogIH0sCgogIG9ic2VydmVyczogZmFsc2UsCgogIF9vYnNl
cnZlQW5kQ2FjaGU6IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUsIG9ic2VydmVyLCB1
c2VDYXB0dXJlKSB7CiAgICBpZiAoIXRoaXMub2JzZXJ2ZXJzKSB0aGlzLm9ic2Vy
dmVycyA9IFtdOwogICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewog
ICAgICB0aGlzLm9ic2VydmVycy5wdXNoKFtlbGVtZW50LCBuYW1lLCBvYnNlcnZl
ciwgdXNlQ2FwdHVyZV0pOwogICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
bmFtZSwgb2JzZXJ2ZXIsIHVzZUNhcHR1cmUpOwogICAgfSBlbHNlIGlmIChlbGVt
ZW50LmF0dGFjaEV2ZW50KSB7CiAgICAgIHRoaXMub2JzZXJ2ZXJzLnB1c2goW2Vs
ZW1lbnQsIG5hbWUsIG9ic2VydmVyLCB1c2VDYXB0dXJlXSk7CiAgICAgIGVsZW1l
bnQuYXR0YWNoRXZlbnQoJ29uJyArIG5hbWUsIG9ic2VydmVyKTsKICAgIH0KICB9
LAoKICB1bmxvYWRDYWNoZTogZnVuY3Rpb24oKSB7CiAgICBpZiAoIUV2ZW50Lm9i
c2VydmVycykgcmV0dXJuOwogICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IEV2
ZW50Lm9ic2VydmVycy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICBF
dmVudC5zdG9wT2JzZXJ2aW5nLmFwcGx5KHRoaXMsIEV2ZW50Lm9ic2VydmVyc1tp
XSk7CiAgICAgIEV2ZW50Lm9ic2VydmVyc1tpXVswXSA9IG51bGw7CiAgICB9CiAg
ICBFdmVudC5vYnNlcnZlcnMgPSBmYWxzZTsKICB9LAoKICBvYnNlcnZlOiBmdW5j
dGlvbihlbGVtZW50LCBuYW1lLCBvYnNlcnZlciwgdXNlQ2FwdHVyZSkgewogICAg
ZWxlbWVudCA9ICQoZWxlbWVudCk7CiAgICB1c2VDYXB0dXJlID0gdXNlQ2FwdHVy
ZSB8fCBmYWxzZTsKCiAgICBpZiAobmFtZSA9PSAna2V5cHJlc3MnICYmCiAgICAg
IChQcm90b3R5cGUuQnJvd3Nlci5XZWJLaXQgfHwgZWxlbWVudC5hdHRhY2hFdmVu
dCkpCiAgICAgIG5hbWUgPSAna2V5ZG93bic7CgogICAgRXZlbnQuX29ic2VydmVB
bmRDYWNoZShlbGVtZW50LCBuYW1lLCBvYnNlcnZlciwgdXNlQ2FwdHVyZSk7CiAg
fSwKCiAgc3RvcE9ic2VydmluZzogZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgb2Jz
ZXJ2ZXIsIHVzZUNhcHR1cmUpIHsKICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpOwog
ICAgdXNlQ2FwdHVyZSA9IHVzZUNhcHR1cmUgfHwgZmFsc2U7CgogICAgaWYgKG5h
bWUgPT0gJ2tleXByZXNzJyAmJgogICAgICAgIChQcm90b3R5cGUuQnJvd3Nlci5X
ZWJLaXQgfHwgZWxlbWVudC5hdHRhY2hFdmVudCkpCiAgICAgIG5hbWUgPSAna2V5
ZG93bic7CgogICAgaWYgKGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikgewog
ICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgb2JzZXJ2ZXIs
IHVzZUNhcHR1cmUpOwogICAgfSBlbHNlIGlmIChlbGVtZW50LmRldGFjaEV2ZW50
KSB7CiAgICAgIHRyeSB7CiAgICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCgnb24n
ICsgbmFtZSwgb2JzZXJ2ZXIpOwogICAgICB9IGNhdGNoIChlKSB7fQogICAgfQog
IH0KfSk7CgovKiBwcmV2ZW50IG1lbW9yeSBsZWFrcyBpbiBJRSAqLwppZiAoUHJv
dG90eXBlLkJyb3dzZXIuSUUpCiAgRXZlbnQub2JzZXJ2ZSh3aW5kb3csICd1bmxv
YWQnLCBFdmVudC51bmxvYWRDYWNoZSwgZmFsc2UpOwp2YXIgUG9zaXRpb24gPSB7
CiAgLy8gc2V0IHRvIHRydWUgaWYgbmVlZGVkLCB3YXJuaW5nOiBmaXJlZm94IHBl
cmZvcm1hbmNlIHByb2JsZW1zCiAgLy8gTk9UIG5lZWVkZWQgZm9yIHBhZ2Ugc2Ny
b2xsaW5nLCBvbmx5IGlmIGRyYWdnYWJsZSBjb250YWluZWQgaW4KICAvLyBzY3Jv
bGxhYmxlIGVsZW1lbnRzCiAgaW5jbHVkZVNjcm9sbE9mZnNldHM6IGZhbHNlLAoK
ICAvLyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZyB3aXRoaW5JbmNsdWRp
bmdTY3JvbGxvZmZzZXQsIGV2ZXJ5IHRpbWUgdGhlCiAgLy8gcGFnZSBpcyBzY3Jv
bGxlZAogIHByZXBhcmU6IGZ1bmN0aW9uKCkgewogICAgdGhpcy5kZWx0YVggPSAg
d2luZG93LnBhZ2VYT2Zmc2V0CiAgICAgICAgICAgICAgICB8fCBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdAogICAgICAgICAgICAgICAgfHwgZG9j
dW1lbnQuYm9keS5zY3JvbGxMZWZ0CiAgICAgICAgICAgICAgICB8fCAwOwogICAg
dGhpcy5kZWx0YVkgPSAgd2luZG93LnBhZ2VZT2Zmc2V0CiAgICAgICAgICAgICAg
ICB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wCiAgICAgICAg
ICAgICAgICB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcAogICAgICAgICAgICAg
ICAgfHwgMDsKICB9LAoKICByZWFsT2Zmc2V0OiBmdW5jdGlvbihlbGVtZW50KSB7
CiAgICB2YXIgdmFsdWVUID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAg
dmFsdWVUICs9IGVsZW1lbnQuc2Nyb2xsVG9wICB8fCAwOwogICAgICB2YWx1ZUwg
Kz0gZWxlbWVudC5zY3JvbGxMZWZ0IHx8IDA7CiAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50LnBhcmVudE5vZGU7CiAgICB9IHdoaWxlIChlbGVtZW50KTsKICAgIHJldHVy
biBbdmFsdWVMLCB2YWx1ZVRdOwogIH0sCgogIGN1bXVsYXRpdmVPZmZzZXQ6IGZ1
bmN0aW9uKGVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAwLCB2YWx1ZUwgPSAw
OwogICAgZG8gewogICAgICB2YWx1ZVQgKz0gZWxlbWVudC5vZmZzZXRUb3AgIHx8
IDA7CiAgICAgIHZhbHVlTCArPSBlbGVtZW50Lm9mZnNldExlZnQgfHwgMDsKICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgfSB3aGlsZSAo
ZWxlbWVudCk7CiAgICByZXR1cm4gW3ZhbHVlTCwgdmFsdWVUXTsKICB9LAoKICBw
b3NpdGlvbmVkT2Zmc2V0OiBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2YXIgdmFs
dWVUID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVUICs9IGVs
ZW1lbnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxlbWVudC5v
ZmZzZXRMZWZ0IHx8IDA7CiAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKICAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICBpZihlbGVtZW50LnRh
Z05hbWU9PSdCT0RZJykgYnJlYWs7CiAgICAgICAgdmFyIHAgPSBFbGVtZW50Lmdl
dFN0eWxlKGVsZW1lbnQsICdwb3NpdGlvbicpOwogICAgICAgIGlmIChwID09ICdy
ZWxhdGl2ZScgfHwgcCA9PSAnYWJzb2x1dGUnKSBicmVhazsKICAgICAgfQogICAg
fSB3aGlsZSAoZWxlbWVudCk7CiAgICByZXR1cm4gW3ZhbHVlTCwgdmFsdWVUXTsK
ICB9LAoKICBvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgIGlm
IChlbGVtZW50Lm9mZnNldFBhcmVudCkgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFy
ZW50OwogICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuYm9keSkgcmV0dXJuIGVs
ZW1lbnQ7CgogICAgd2hpbGUgKChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2Rl
KSAmJiBlbGVtZW50ICE9IGRvY3VtZW50LmJvZHkpCiAgICAgIGlmIChFbGVtZW50
LmdldFN0eWxlKGVsZW1lbnQsICdwb3NpdGlvbicpICE9ICdzdGF0aWMnKQogICAg
ICAgIHJldHVybiBlbGVtZW50OwoKICAgIHJldHVybiBkb2N1bWVudC5ib2R5Owog
IH0sCgogIC8vIGNhY2hlcyB4L3kgY29vcmRpbmF0ZSBwYWlyIHRvIHVzZSB3aXRo
IG92ZXJsYXAKICB3aXRoaW46IGZ1bmN0aW9uKGVsZW1lbnQsIHgsIHkpIHsKICAg
IGlmICh0aGlzLmluY2x1ZGVTY3JvbGxPZmZzZXRzKQogICAgICByZXR1cm4gdGhp
cy53aXRoaW5JbmNsdWRpbmdTY3JvbGxvZmZzZXRzKGVsZW1lbnQsIHgsIHkpOwog
ICAgdGhpcy54Y29tcCA9IHg7CiAgICB0aGlzLnljb21wID0geTsKICAgIHRoaXMu
b2Zmc2V0ID0gdGhpcy5jdW11bGF0aXZlT2Zmc2V0KGVsZW1lbnQpOwoKICAgIHJl
dHVybiAoeSA+PSB0aGlzLm9mZnNldFsxXSAmJgogICAgICAgICAgICB5IDwgIHRo
aXMub2Zmc2V0WzFdICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgJiYKICAgICAgICAg
ICAgeCA+PSB0aGlzLm9mZnNldFswXSAmJgogICAgICAgICAgICB4IDwgIHRoaXMu
b2Zmc2V0WzBdICsgZWxlbWVudC5vZmZzZXRXaWR0aCk7CiAgfSwKCiAgd2l0aGlu
SW5jbHVkaW5nU2Nyb2xsb2Zmc2V0czogZnVuY3Rpb24oZWxlbWVudCwgeCwgeSkg
ewogICAgdmFyIG9mZnNldGNhY2hlID0gdGhpcy5yZWFsT2Zmc2V0KGVsZW1lbnQp
OwoKICAgIHRoaXMueGNvbXAgPSB4ICsgb2Zmc2V0Y2FjaGVbMF0gLSB0aGlzLmRl
bHRhWDsKICAgIHRoaXMueWNvbXAgPSB5ICsgb2Zmc2V0Y2FjaGVbMV0gLSB0aGlz
LmRlbHRhWTsKICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5jdW11bGF0aXZlT2Zmc2V0
KGVsZW1lbnQpOwoKICAgIHJldHVybiAodGhpcy55Y29tcCA+PSB0aGlzLm9mZnNl
dFsxXSAmJgogICAgICAgICAgICB0aGlzLnljb21wIDwgIHRoaXMub2Zmc2V0WzFd
ICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgJiYKICAgICAgICAgICAgdGhpcy54Y29t
cCA+PSB0aGlzLm9mZnNldFswXSAmJgogICAgICAgICAgICB0aGlzLnhjb21wIDwg
IHRoaXMub2Zmc2V0WzBdICsgZWxlbWVudC5vZmZzZXRXaWR0aCk7CiAgfSwKCiAg
Ly8gd2l0aGluIG11c3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJlZm9yZQogIG92ZXJs
YXA6IGZ1bmN0aW9uKG1vZGUsIGVsZW1lbnQpIHsKICAgIGlmICghbW9kZSkgcmV0
dXJuIDA7CiAgICBpZiAobW9kZSA9PSAndmVydGljYWwnKQogICAgICByZXR1cm4g
KCh0aGlzLm9mZnNldFsxXSArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAtIHRoaXMu
eWNvbXApIC8KICAgICAgICBlbGVtZW50Lm9mZnNldEhlaWdodDsKICAgIGlmICht
b2RlID09ICdob3Jpem9udGFsJykKICAgICAgcmV0dXJuICgodGhpcy5vZmZzZXRb
MF0gKyBlbGVtZW50Lm9mZnNldFdpZHRoKSAtIHRoaXMueGNvbXApIC8KICAgICAg
ICBlbGVtZW50Lm9mZnNldFdpZHRoOwogIH0sCgogIHBhZ2U6IGZ1bmN0aW9uKGZv
ckVsZW1lbnQpIHsKICAgIHZhciB2YWx1ZVQgPSAwLCB2YWx1ZUwgPSAwOwoKICAg
IHZhciBlbGVtZW50ID0gZm9yRWxlbWVudDsKICAgIGRvIHsKICAgICAgdmFsdWVU
ICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxl
bWVudC5vZmZzZXRMZWZ0IHx8IDA7CgogICAgICAvLyBTYWZhcmkgZml4CiAgICAg
IGlmIChlbGVtZW50Lm9mZnNldFBhcmVudCA9PSBkb2N1bWVudC5ib2R5KQogICAg
ICAgIGlmIChFbGVtZW50LmdldFN0eWxlKGVsZW1lbnQsJ3Bvc2l0aW9uJyk9PSdh
YnNvbHV0ZScpIGJyZWFrOwoKICAgIH0gd2hpbGUgKGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudCk7CgogICAgZWxlbWVudCA9IGZvckVsZW1lbnQ7CiAgICBk
byB7CiAgICAgIGlmICghd2luZG93Lm9wZXJhIHx8IGVsZW1lbnQudGFnTmFtZT09
J0JPRFknKSB7CiAgICAgICAgdmFsdWVUIC09IGVsZW1lbnQuc2Nyb2xsVG9wICB8
fCAwOwogICAgICAgIHZhbHVlTCAtPSBlbGVtZW50LnNjcm9sbExlZnQgfHwgMDsK
ICAgICAgfQogICAgfSB3aGlsZSAoZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9k
ZSk7CgogICAgcmV0dXJuIFt2YWx1ZUwsIHZhbHVlVF07CiAgfSwKCiAgY2xvbmU6
IGZ1bmN0aW9uKHNvdXJjZSwgdGFyZ2V0KSB7CiAgICB2YXIgb3B0aW9ucyA9IE9i
amVjdC5leHRlbmQoewogICAgICBzZXRMZWZ0OiAgICB0cnVlLAogICAgICBzZXRU
b3A6ICAgICB0cnVlLAogICAgICBzZXRXaWR0aDogICB0cnVlLAogICAgICBzZXRI
ZWlnaHQ6ICB0cnVlLAogICAgICBvZmZzZXRUb3A6ICAwLAogICAgICBvZmZzZXRM
ZWZ0OiAwCiAgICB9LCBhcmd1bWVudHNbMl0gfHwge30pCgogICAgLy8gZmluZCBw
YWdlIHBvc2l0aW9uIG9mIHNvdXJjZQogICAgc291cmNlID0gJChzb3VyY2UpOwog
ICAgdmFyIHAgPSBQb3NpdGlvbi5wYWdlKHNvdXJjZSk7CgogICAgLy8gZmluZCBj
b29yZGluYXRlIHN5c3RlbSB0byB1c2UKICAgIHRhcmdldCA9ICQodGFyZ2V0KTsK
ICAgIHZhciBkZWx0YSA9IFswLCAwXTsKICAgIHZhciBwYXJlbnQgPSBudWxsOwog
ICAgLy8gZGVsdGEgWzAsMF0gd2lsbCBkbyBmaW5lIHdpdGggcG9zaXRpb246IGZp
eGVkIGVsZW1lbnRzLAogICAgLy8gcG9zaXRpb246YWJzb2x1dGUgbmVlZHMgb2Zm
c2V0UGFyZW50IGRlbHRhcwogICAgaWYgKEVsZW1lbnQuZ2V0U3R5bGUodGFyZ2V0
LCdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIHsKICAgICAgcGFyZW50ID0gUG9z
aXRpb24ub2Zmc2V0UGFyZW50KHRhcmdldCk7CiAgICAgIGRlbHRhID0gUG9zaXRp
b24ucGFnZShwYXJlbnQpOwogICAgfQoKICAgIC8vIGNvcnJlY3QgYnkgYm9keSBv
ZmZzZXRzIChmaXhlcyBTYWZhcmkpCiAgICBpZiAocGFyZW50ID09IGRvY3VtZW50
LmJvZHkpIHsKICAgICAgZGVsdGFbMF0gLT0gZG9jdW1lbnQuYm9keS5vZmZzZXRM
ZWZ0OwogICAgICBkZWx0YVsxXSAtPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsK
ICAgIH0KCiAgICAvLyBzZXQgcG9zaXRpb24KICAgIGlmKG9wdGlvbnMuc2V0TGVm
dCkgICB0YXJnZXQuc3R5bGUubGVmdCAgPSAocFswXSAtIGRlbHRhWzBdICsgb3B0
aW9ucy5vZmZzZXRMZWZ0KSArICdweCc7CiAgICBpZihvcHRpb25zLnNldFRvcCkg
ICAgdGFyZ2V0LnN0eWxlLnRvcCAgID0gKHBbMV0gLSBkZWx0YVsxXSArIG9wdGlv
bnMub2Zmc2V0VG9wKSArICdweCc7CiAgICBpZihvcHRpb25zLnNldFdpZHRoKSAg
dGFyZ2V0LnN0eWxlLndpZHRoID0gc291cmNlLm9mZnNldFdpZHRoICsgJ3B4JzsK
ICAgIGlmKG9wdGlvbnMuc2V0SGVpZ2h0KSB0YXJnZXQuc3R5bGUuaGVpZ2h0ID0g
c291cmNlLm9mZnNldEhlaWdodCArICdweCc7CiAgfSwKCiAgYWJzb2x1dGl6ZTog
ZnVuY3Rpb24oZWxlbWVudCkgewogICAgZWxlbWVudCA9ICQoZWxlbWVudCk7CiAg
ICBpZiAoZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9PSAnYWJzb2x1dGUnKSByZXR1
cm47CiAgICBQb3NpdGlvbi5wcmVwYXJlKCk7CgogICAgdmFyIG9mZnNldHMgPSBQ
b3NpdGlvbi5wb3NpdGlvbmVkT2Zmc2V0KGVsZW1lbnQpOwogICAgdmFyIHRvcCAg
ICAgPSBvZmZzZXRzWzFdOwogICAgdmFyIGxlZnQgICAgPSBvZmZzZXRzWzBdOwog
ICAgdmFyIHdpZHRoICAgPSBlbGVtZW50LmNsaWVudFdpZHRoOwogICAgdmFyIGhl
aWdodCAgPSBlbGVtZW50LmNsaWVudEhlaWdodDsKCiAgICBlbGVtZW50Ll9vcmln
aW5hbExlZnQgICA9IGxlZnQgLSBwYXJzZUZsb2F0KGVsZW1lbnQuc3R5bGUubGVm
dCAgfHwgMCk7CiAgICBlbGVtZW50Ll9vcmlnaW5hbFRvcCAgICA9IHRvcCAgLSBw
YXJzZUZsb2F0KGVsZW1lbnQuc3R5bGUudG9wIHx8IDApOwogICAgZWxlbWVudC5f
b3JpZ2luYWxXaWR0aCAgPSBlbGVtZW50LnN0eWxlLndpZHRoOwogICAgZWxlbWVu
dC5fb3JpZ2luYWxIZWlnaHQgPSBlbGVtZW50LnN0eWxlLmhlaWdodDsKCiAgICBl
bGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKICAgIGVsZW1lbnQu
c3R5bGUudG9wICAgID0gdG9wICsgJ3B4JzsKICAgIGVsZW1lbnQuc3R5bGUubGVm
dCAgID0gbGVmdCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLndpZHRoICA9IHdp
ZHRoICsgJ3B4JzsKICAgIGVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsg
J3B4JzsKICB9LAoKICByZWxhdGl2aXplOiBmdW5jdGlvbihlbGVtZW50KSB7CiAg
ICBlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIGlmIChlbGVtZW50LnN0eWxlLnBv
c2l0aW9uID09ICdyZWxhdGl2ZScpIHJldHVybjsKICAgIFBvc2l0aW9uLnByZXBh
cmUoKTsKCiAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsK
ICAgIHZhciB0b3AgID0gcGFyc2VGbG9hdChlbGVtZW50LnN0eWxlLnRvcCAgfHwg
MCkgLSAoZWxlbWVudC5fb3JpZ2luYWxUb3AgfHwgMCk7CiAgICB2YXIgbGVmdCA9
IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZS5sZWZ0IHx8IDApIC0gKGVsZW1lbnQu
X29yaWdpbmFsTGVmdCB8fCAwKTsKCiAgICBlbGVtZW50LnN0eWxlLnRvcCAgICA9
IHRvcCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLmxlZnQgICA9IGxlZnQgKyAn
cHgnOwogICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBlbGVtZW50Ll9vcmlnaW5h
bEhlaWdodDsKICAgIGVsZW1lbnQuc3R5bGUud2lkdGggID0gZWxlbWVudC5fb3Jp
Z2luYWxXaWR0aDsKICB9Cn0KCi8vIFNhZmFyaSByZXR1cm5zIG1hcmdpbnMgb24g
Ym9keSB3aGljaCBpcyBpbmNvcnJlY3QgaWYgdGhlIGNoaWxkIGlzIGFic29sdXRl
bHkKLy8gcG9zaXRpb25lZC4gIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCByZWRl
ZmluZSBQb3NpdGlvbi5jdW11bGF0aXZlT2Zmc2V0IGZvcgovLyBLSFRNTC9XZWJL
aXQgb25seS4KaWYgKFByb3RvdHlwZS5Ccm93c2VyLldlYktpdCkgewogIFBvc2l0
aW9uLmN1bXVsYXRpdmVPZmZzZXQgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICB2
YXIgdmFsdWVUID0gMCwgdmFsdWVMID0gMDsKICAgIGRvIHsKICAgICAgdmFsdWVU
ICs9IGVsZW1lbnQub2Zmc2V0VG9wICB8fCAwOwogICAgICB2YWx1ZUwgKz0gZWxl
bWVudC5vZmZzZXRMZWZ0IHx8IDA7CiAgICAgIGlmIChlbGVtZW50Lm9mZnNldFBh
cmVudCA9PSBkb2N1bWVudC5ib2R5KQogICAgICAgIGlmIChFbGVtZW50LmdldFN0
eWxlKGVsZW1lbnQsICdwb3NpdGlvbicpID09ICdhYnNvbHV0ZScpIGJyZWFrOwoK
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OwogICAgfSB3aGls
ZSAoZWxlbWVudCk7CgogICAgcmV0dXJuIFt2YWx1ZUwsIHZhbHVlVF07CiAgfQp9
CgpFbGVtZW50LmFkZE1ldGhvZHMoKTs=

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=thumbnailviewer.js
Content-Type: application/x-javascript; charset=iso-8859-1; name=thumbnailviewer.js
Content-Location: http://www.sciencedaily.com/scripts/thumbnailviewer.js
Content-Transfer-Encoding: Base64

Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBJbWFnZSBUaHVtYm5haWwgVmlld2Vy
IFNjcmlwdC0gQnkgRHluYW1pYyBEcml2ZSwgYXZhaWxhYmxlIGF0OiBodHRwOi8v
d3d3LmR5bmFtaWNkcml2ZS5jb20KLy8gTGFzdCB1cGRhdGVkOiBKYW4gMjJuZCwg
MjAwNwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp2YXIgdGh1bWJuYWlsdmlld2Vy
PXsKZW5hYmxlVGl0bGU6IGZhbHNlLCAvL1Nob3VsZCAidGl0bGUiIGF0dHJpYnV0
ZSBvZiBsaW5rIGJlIHVzZWQgYXMgZGVzY3JpcHRpb24/CmVuYWJsZUFuaW1hdGlv
bjogdHJ1ZSwgLy9FbmFibGUgZmFkaW5nIGFuaW1hdGlvbj8KZGVmaW5laGVhZGVy
OiAnPGRpdiBjbGFzcz0iaGVhZGVyYmFyIj48L2Rpdj4nLCAvL0RlZmluZSBIVE1M
IGZvciBoZWFkZXIgaW50ZXJmYWNlCmRlZmluZUxvYWRpbmc6ICc8aW1nIHNyYz0i
L2ltYWdlcy9sb2FkaW5nLmdpZiIgLz4gTG9hZGluZyBJbWFnZS4uLicsIC8vRGVm
aW5lIEhUTUwgZm9yICJsb2FkaW5nIiBkaXYKCi8vLy8vLy8vLy8vLy9ObyBuZWVk
IHRvIGVkaXQgYmV5b25kIGhlcmUvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgpz
Y3JvbGxiYXJ3aWR0aDogMTYsCm9wYWNpdHlzdHJpbmc6ICdmaWx0ZXI6cHJvZ2lk
OkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmFscGhhKG9wYWNpdHk9MTApOyAt
bW96LW9wYWNpdHk6IDAuMTsgb3BhY2l0eTogMC4xJywKdGFyZ2V0bGlua3M6W10s
IC8vQXJyYXkgdG8gaG9sZCBsaW5rcyB3aXRoIHJlbD0idGh1bWJuYWlsIgoKY3Jl
YXRldGh1bWJCb3g6ZnVuY3Rpb24oKXsKLy93cml0ZSBvdXQgSFRNTCBmb3IgSW1h
Z2UgVGh1bWJuYWlsIFZpZXdlciBwbHVzIGxvYWRpbmcgZGl2CmRvY3VtZW50Lndy
aXRlKCc8ZGl2IGlkPSJ0aHVtYkJveCIgb25jbGljaz0idGh1bWJuYWlsdmlld2Vy
LmNsb3NlaXQoKSI+Jyt0aGlzLmRlZmluZWhlYWRlcisnPGRpdiBzdHlsZT0icGFk
ZGluZzogMCA1cHgiPjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9w
OiA1cHg7IG1hcmdpbjogMCBhdXRvOyBwYWRkaW5nOiAycHg7IGJhY2tncm91bmQ6
ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICM5OTk7IGZvbnQtc3R5bGU6IGl0YWxp
YzsgZm9udC1zaXplOiAxMHB4OyB6LWluZGV4OiAxMDAxIj48aW1nIHNyYz0iL2lt
YWdlcy9jcm9zcy5wbmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgYWxpZ249Im1p
ZGRsZSIgYWx0PSIiIHN0eWxlPSJtYXJnaW4tdG9wOiAtNXB4Ij5jbG9zZTwvZGl2
PjwvZGl2PjxkaXYgaWQ9InRodW1iSW1hZ2UiPjwvZGl2PjwvZGl2PicpCmRvY3Vt
ZW50LndyaXRlKCc8ZGl2IGlkPSJ0aHVtYkxvYWRpbmciPicrdGhpcy5kZWZpbmVM
b2FkaW5nKyc8L2Rpdj4nKQp0aGlzLnRodW1iQm94PWRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0aHVtYkJveCIpCnRoaXMudGh1bWJJbWFnZT1kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGh1bWJJbWFnZSIpIC8vUmVmZXJlbmNlIGRpdiB0aGF0IGhv
bGRzIHRoZSBzaG93biBpbWFnZQp0aGlzLnRodW1iTG9hZGluZz1kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGh1bWJMb2FkaW5nIikgLy9SZWZlcmVuY2UgImxvYWRp
bmciIGRpdiB0aGF0IHdpbGwgYmUgc2hvd24gd2hpbGUgaW1hZ2UgaXMgZmV0Y2hl
ZAp0aGlzLnN0YW5kYXJkYm9keT0oZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFD
b21wYXQiKT8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IDogZG9jdW1lbnQuYm9k
eSAvL2NyZWF0ZSByZWZlcmVuY2UgdG8gY29tbW9uICJib2R5IiBhY3Jvc3MgZG9j
dHlwZXMKfSwKCgpjZW50ZXJEaXY6ZnVuY3Rpb24oZGl2b2JqKXsgLy9DZW50ZXJz
IGEgZGl2IGVsZW1lbnQgb24gdGhlIHBhZ2UKdmFyIGllPWRvY3VtZW50LmFsbCAm
JiAhd2luZG93Lm9wZXJhCnZhciBkb209ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQK
dmFyIHNjcm9sbF90b3A9KGllKT8gdGhpcy5zdGFuZGFyZGJvZHkuc2Nyb2xsVG9w
IDogd2luZG93LnBhZ2VZT2Zmc2V0CnZhciBzY3JvbGxfbGVmdD0oaWUpPyB0aGlz
LnN0YW5kYXJkYm9keS5zY3JvbGxMZWZ0IDogd2luZG93LnBhZ2VYT2Zmc2V0CnZh
ciBkb2N3aWR0aD0oaWUpPyB0aGlzLnN0YW5kYXJkYm9keS5jbGllbnRXaWR0aCA6
IHdpbmRvdy5pbm5lcldpZHRoLXRoaXMuc2Nyb2xsYmFyd2lkdGgKdmFyIGRvY2hl
aWdodD0oaWUpPyB0aGlzLnN0YW5kYXJkYm9keS5jbGllbnRIZWlnaHQ6IHdpbmRv
dy5pbm5lckhlaWdodAp2YXIgZG9jaGVpZ2h0Y29tcGxldGU9KHRoaXMuc3RhbmRh
cmRib2R5Lm9mZnNldEhlaWdodD50aGlzLnN0YW5kYXJkYm9keS5zY3JvbGxIZWln
aHQpPyB0aGlzLnN0YW5kYXJkYm9keS5vZmZzZXRIZWlnaHQgOiB0aGlzLnN0YW5k
YXJkYm9keS5zY3JvbGxIZWlnaHQgLy9GdWxsIHNjcm9sbCBoZWlnaHQgb2YgZG9j
dW1lbnQKdmFyIG9iandpZHRoPWRpdm9iai5vZmZzZXRXaWR0aCAvL3dpZHRoIG9m
IGRpdiBlbGVtZW50CnZhciBvYmpoZWlnaHQ9ZGl2b2JqLm9mZnNldEhlaWdodCAv
L2hlaWdodCBvZiBkaXYgZWxlbWVudAp2YXIgdG9wcG9zaXRpb249KGRvY2hlaWdo
dD5vYmpoZWlnaHQpPyBzY3JvbGxfdG9wK2RvY2hlaWdodC8yLW9iamhlaWdodC8y
KyJweCIgOiBzY3JvbGxfdG9wKzEwKyJweCIgLy9WZXJ0aWNhbCBwb3NpdGlvbiBv
ZiBkaXYgZWxlbWVudDogRWl0aGVyIGNlbnRlcmVkLCBvciBpZiBlbGVtZW50IGhl
aWdodCBsYXJnZXIgdGhhbiB2aWV3cG9pbnQgaGVpZ2h0LCAxMHB4IGZyb20gdG9w
IG9mIHZpZXdwb2ludApkaXZvYmouc3R5bGUubGVmdD1kb2N3aWR0aC8yLW9iandp
ZHRoLzIrInB4IiAvL0NlbnRlciBkaXYgZWxlbWVudCBob3Jpem9udGFsbHkKZGl2
b2JqLnN0eWxlLnRvcD1NYXRoLmZsb29yKHBhcnNlSW50KHRvcHBvc2l0aW9uKSkr
InB4IgpkaXZvYmouc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIKfSwKCnNob3d0
aHVtYkJveDpmdW5jdGlvbigpeyAvL1Nob3cgVGh1bWJCb3ggZGl2CnRoaXMuY2Vu
dGVyRGl2KHRoaXMudGh1bWJCb3gpCmlmICh0aGlzLmVuYWJsZUFuaW1hdGlvbil7
IC8vSWYgZmFkaW5nIGFuaW1hdGlvbiBlbmFibGVkCnRoaXMuY3VycmVudG9wYWNp
dHk9MC4xIC8vU3RhcnRpbmcgb3BhY2l0eSB2YWx1ZQp0aGlzLm9wYWNpdHl0aW1l
cj1zZXRJbnRlcnZhbCgidGh1bWJuYWlsdmlld2VyLm9wYWNpdHlhbmltYXRpb24o
KSIsIDIwKQp9Cn0sCgoKbG9hZGltYWdlOmZ1bmN0aW9uKGxpbmspeyAvL0xvYWQg
aW1hZ2UgZnVuY3Rpb24gdGhhdCBnZXRzIGF0dGFjaGVkIHRvIGVhY2ggbGluayBv
biB0aGUgcGFnZSB3aXRoIHJlbD0idGh1bWJuYWlsIgppZiAodGhpcy50aHVtYkJv
eC5zdHlsZS52aXNpYmlsaXR5PT0idmlzaWJsZSIpIC8vaWYgdGh1bWJveCBpcyB2
aXNpYmxlIG9uIHRoZSBwYWdlIGFscmVhZHkKdGhpcy5jbG9zZWl0KCkgLy9IaWRl
IGl0IGZpcnN0IChub3QgZG9pbmcgc28gY2F1c2VzIHRyaWdnZXJzIHNvbWUgcG9z
aXRpb25pbmcgYnVnIGluIEZpcmVmb3gKdmFyIGltYWdlSFRNTD0nPGltZyBzcmM9
IicrbGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKSsnIiBzdHlsZT0iJyt0aGlzLm9w
YWNpdHlzdHJpbmcrJyIgLz4nIC8vQ29uc3RydWN0IEhUTUwgZm9yIHNob3duIGlt
YWdlCmlmICh0aGlzLmVuYWJsZVRpdGxlICYmIGxpbmsuZ2V0QXR0cmlidXRlKCJ0
aXRsZSIpKSAvL1VzZSB0aXRsZSBhdHRyIG9mIHRoZSBsaW5rIGFzIGRlc2NyaXB0
aW9uPwppbWFnZUhUTUwrPSc8YnIgLz4nK2xpbmsuZ2V0QXR0cmlidXRlKCJ0aXRs
ZSIpCnRoaXMuY2VudGVyRGl2KHRoaXMudGh1bWJMb2FkaW5nKSAvL0NlbnRlciBh
bmQgZGlzcGxheSAibG9hZGluZyIgZGl2IHdoaWxlIHdlIHNldCB1cCB0aGUgaW1h
Z2UgdG8gYmUgc2hvd24KdGhpcy50aHVtYkltYWdlLmlubmVySFRNTD1pbWFnZUhU
TUwgLy9Qb3B1bGF0ZSB0aHVtYkltYWdlIGRpdiB3aXRoIHNob3duIGltYWdlJ3Mg
SFRNTCAod2hpbGUgc3RpbGwgaGlkZGVuKQp0aGlzLmZlYXR1cmVJbWFnZT10aGlz
LnRodW1iSW1hZ2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltZyIpWzBdIC8vUmVm
ZXJlbmNlIHNob3duIGltYWdlIGl0c2VsZgp0aGlzLmZlYXR1cmVJbWFnZS5vbmxv
YWQ9ZnVuY3Rpb24oKXsgLy9XaGVuIHRhcmdldCBpbWFnZSBoYXMgY29tcGxldGVs
eSBsb2FkZWQKdGh1bWJuYWlsdmlld2VyLnRodW1iTG9hZGluZy5zdHlsZS52aXNp
YmlsaXR5PSJoaWRkZW4iIC8vSGlkZSAibG9hZGluZyIgZGl2CnRodW1ibmFpbHZp
ZXdlci5zaG93dGh1bWJCb3goKSAvL0Rpc3BsYXkgInRodW1iYm94IiBkaXYgdG8g
dGhlIHdvcmxkIQp9CmlmIChkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5jcmVhdGVQ
b3B1cCkgLy9UYXJnZXQgSUU1LjAgYnJvd3NlcnMgb25seS4gQWRkcmVzcyBJRSBp
bWFnZSBjYWNoZSBub3QgZmlyaW5nIG9ubG9hZCBidWc6IHBhbm9yYW1pby5jb20v
YmxvZy9vbmxvYWQtZXZlbnQvCnRoaXMuZmVhdHVyZUltYWdlLnNyYz1saW5rLmdl
dEF0dHJpYnV0ZSgiaHJlZiIpCnRoaXMuZmVhdHVyZUltYWdlLm9uZXJyb3I9ZnVu
Y3Rpb24oKXsgLy9JZiBhbiBlcnJvciBoYXMgb2NjdXJyZWQgd2hpbGUgbG9hZGlu
ZyB0aGUgaW1hZ2UgdG8gc2hvdwp0aHVtYm5haWx2aWV3ZXIudGh1bWJMb2FkaW5n
LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIgLy9IaWRlICJsb2FkaW5nIiBkaXYs
IGdhbWUgb3Zlcgp9Cn0sCgpzZXRpbWdvcGFjaXR5OmZ1bmN0aW9uKHZhbHVlKXsg
Ly9TZXRzIHRoZSBvcGFjaXR5IG9mICJ0aHVtYmltYWdlIiBkaXYgcGVyIHRoZSBw
YXNzZWQgaW4gdmFsdWUgc2V0dGluZyAoMCB0byAxIGFuZCBpbiBiZXR3ZWVuKQp2
YXIgdGFyZ2V0b2JqZWN0PXRoaXMuZmVhdHVyZUltYWdlCmlmICh0YXJnZXRvYmpl
Y3QuZmlsdGVycyAmJiB0YXJnZXRvYmplY3QuZmlsdGVyc1swXSl7IC8vSUUgc3lu
dGF4CmlmICh0eXBlb2YgdGFyZ2V0b2JqZWN0LmZpbHRlcnNbMF0ub3BhY2l0eT09
Im51bWJlciIpIC8vSUU2CnRhcmdldG9iamVjdC5maWx0ZXJzWzBdLm9wYWNpdHk9
dmFsdWUqMTAwCmVsc2UgLy9JRSA1LjUKdGFyZ2V0b2JqZWN0LnN0eWxlLmZpbHRl
cj0iYWxwaGEob3BhY2l0eT0iK3ZhbHVlKjEwMCsiKSIKfQplbHNlIGlmICh0eXBl
b2YgdGFyZ2V0b2JqZWN0LnN0eWxlLk1vek9wYWNpdHkhPSJ1bmRlZmluZWQiKSAv
L09sZCBNb3ppbGxhIHN5bnRheAp0YXJnZXRvYmplY3Quc3R5bGUuTW96T3BhY2l0
eT12YWx1ZQplbHNlIGlmICh0eXBlb2YgdGFyZ2V0b2JqZWN0LnN0eWxlLm9wYWNp
dHkhPSJ1bmRlZmluZWQiKSAvL1N0YW5kYXJkIG9wYWNpdHkgc3ludGF4CnRhcmdl
dG9iamVjdC5zdHlsZS5vcGFjaXR5PXZhbHVlCmVsc2UgLy9Ob24gb2YgdGhlIGFi
b3ZlLCBzdG9wIG9wYWNpdHkgYW5pbWF0aW9uCnRoaXMuc3RvcGFuaW1hdGlvbigp
Cn0sCgpvcGFjaXR5YW5pbWF0aW9uOmZ1bmN0aW9uKCl7IC8vR3JhZHVhbGx5IGlu
Y3JlYXNlIG9wYWNpdHkgZnVuY3Rpb24KdGhpcy5zZXRpbWdvcGFjaXR5KHRoaXMu
Y3VycmVudG9wYWNpdHkpCnRoaXMuY3VycmVudG9wYWNpdHkrPTAuMQppZiAodGhp
cy5jdXJyZW50b3BhY2l0eT4xKQp0aGlzLnN0b3BhbmltYXRpb24oKQp9LAoKc3Rv
cGFuaW1hdGlvbjpmdW5jdGlvbigpewppZiAodHlwZW9mIHRoaXMub3BhY2l0eXRp
bWVyIT0idW5kZWZpbmVkIikKY2xlYXJJbnRlcnZhbCh0aGlzLm9wYWNpdHl0aW1l
cikKfSwKCgpjbG9zZWl0OmZ1bmN0aW9uKCl7IC8vQ2xvc2UgInRodW1iYm94IiBk
aXYgZnVuY3Rpb24KdGhpcy5zdG9wYW5pbWF0aW9uKCkKdGhpcy50aHVtYkJveC5z
dHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iCnRoaXMudGh1bWJJbWFnZS5pbm5lckhU
TUw9IiIKdGhpcy50aHVtYkJveC5zdHlsZS5sZWZ0PSItMjAwMHB4Igp0aGlzLnRo
dW1iQm94LnN0eWxlLnRvcD0iLTIwMDBweCIKfSwKCmNsZWFudXA6ZnVuY3Rpb24o
KXsgLy9DbGVhbiB1cCByb3V0aW5lIG9uIHBhZ2UgdW5sb2FkCnRoaXMudGh1bWJM
b2FkaW5nPW51bGwKaWYgKHRoaXMuZmVhdHVyZUltYWdlKSB0aGlzLmZlYXR1cmVJ
bWFnZS5vbmxvYWQ9bnVsbAp0aGlzLmZlYXR1cmVJbWFnZT1udWxsCnRoaXMudGh1
bWJJbWFnZT1udWxsCmZvciAodmFyIGk9MDsgaTx0aGlzLnRhcmdldGxpbmtzLmxl
bmd0aDsgaSsrKQp0aGlzLnRhcmdldGxpbmtzW2ldLm9uY2xpY2s9bnVsbAp0aGlz
LnRodW1iQm94PW51bGwKfSwKCmRvdGFzazpmdW5jdGlvbih0YXJnZXQsIGZ1bmN0
aW9ucmVmLCB0YXNrdHlwZSl7IC8vYXNzaWduIGEgZnVuY3Rpb24gdG8gZXhlY3V0
ZSB0byBhbiBldmVudCBoYW5kbGVyIChpZTogb251bmxvYWQpCnZhciB0YXNrdHlw
ZT0od2luZG93LmFkZEV2ZW50TGlzdGVuZXIpPyB0YXNrdHlwZSA6ICJvbiIrdGFz
a3R5cGUKaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKQp0YXJnZXQuYWRkRXZl
bnRMaXN0ZW5lcih0YXNrdHlwZSwgZnVuY3Rpb25yZWYsIGZhbHNlKQplbHNlIGlm
ICh0YXJnZXQuYXR0YWNoRXZlbnQpCnRhcmdldC5hdHRhY2hFdmVudCh0YXNrdHlw
ZSwgZnVuY3Rpb25yZWYpCn0sCgppbml0OmZ1bmN0aW9uKCl7IC8vSW5pdGlhbGl6
ZSB0aHVtYm5haWwgdmlld2VyIHNjcmlwdCBieSBzY2FubmluZyBwYWdlIGFuZCBh
dHRhY2hpbmcgYXBwcm9wcmlhdGUgZnVuY3Rpb24gdG8gbGlua3Mgd2l0aCByZWw9
InRodW1ibmFpbCIKaWYgKCF0aGlzLmVuYWJsZUFuaW1hdGlvbikKdGhpcy5vcGFj
aXR5c3RyaW5nPSIiCnZhciBwYWdlbGlua3M9ZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImEiKQpmb3IgKHZhciBpPTA7IGk8cGFnZWxpbmtzLmxlbmd0aDsg
aSsrKXsgLy9CRUdJTiBGT1IgTE9PUAppZiAocGFnZWxpbmtzW2ldLmdldEF0dHJp
YnV0ZSgicmVsIikgJiYgcGFnZWxpbmtzW2ldLmdldEF0dHJpYnV0ZSgicmVsIik9
PSJ0aHVtYm5haWwiKXsgLy9CZWdpbiBpZiBzdGF0ZW1lbnQKcGFnZWxpbmtzW2ld
Lm9uY2xpY2s9ZnVuY3Rpb24oKXsKdGh1bWJuYWlsdmlld2VyLnN0b3BhbmltYXRp
b24oKSAvL1N0b3AgYW55IGN1cnJlbnRseSBydW5uaW5nIGZhZGUgYW5pbWF0aW9u
IG9uICJ0aHVtYmJveCIgZGl2IGJlZm9yZSBwcm9jZWVkaW5nCnRodW1ibmFpbHZp
ZXdlci5sb2FkaW1hZ2UodGhpcykgLy9Mb2FkIGltYWdlCnJldHVybiBmYWxzZQp9
CnRoaXMudGFyZ2V0bGlua3NbdGhpcy50YXJnZXRsaW5rcy5sZW5ndGhdPXBhZ2Vs
aW5rc1tpXSAvL3N0b3JlIHJlZmVyZW5jZSB0byB0YXJnZXQgbGluawp9IC8vZW5k
IGlmIHN0YXRlbWVudAp9IC8vRU5EIEZPUiBMT09QCi8vUmVwb3NpdGlvbiAidGh1
bWJib3giIGRpdiB3aGVuIHBhZ2UgaXMgcmVzaXplZAp0aGlzLmRvdGFzayh3aW5k
b3csIGZ1bmN0aW9uKCl7aWYgKHRodW1ibmFpbHZpZXdlci50aHVtYkJveC5zdHls
ZS52aXNpYmlsaXR5PT0idmlzaWJsZSIpIHRodW1ibmFpbHZpZXdlci5jZW50ZXJE
aXYodGh1bWJuYWlsdmlld2VyLnRodW1iQm94KX0sICJyZXNpemUiKQoKCn0gLy9F
TkQgaW5pdCgpIGZ1bmN0aW9uCgp9Cgp0aHVtYm5haWx2aWV3ZXIuY3JlYXRldGh1
bWJCb3goKSAvL091dHB1dCBIVE1MIGZvciB0aGUgaW1hZ2UgdGh1bWJuYWlsIHZp
ZXdlcgp0aHVtYm5haWx2aWV3ZXIuZG90YXNrKHdpbmRvdywgZnVuY3Rpb24oKXt0
aHVtYm5haWx2aWV3ZXIuaW5pdCgpfSwgImxvYWQiKSAvL0luaXRpYWxpemUgc2Ny
aXB0IG9uIHBhZ2UgbG9hZAp0aHVtYm5haWx2aWV3ZXIuZG90YXNrKHdpbmRvdywg
ZnVuY3Rpb24oKXt0aHVtYm5haWx2aWV3ZXIuY2xlYW51cCgpfSwgInVubG9hZCIp

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=logo.gif
Content-Type: image/gif; name=logo.gif
Content-Location: http://www.sciencedaily.com/images/logo.gif
Content-Transfer-Encoding: Base64

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

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=share.png
Content-Type: image/png; name=share.png
Content-Location: http://www.sciencedaily.com/images/share.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK
6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKDSURBVDjL
jdFNTNJxHAZw69CWHjp16O2AZB3S1ovOObaI8NBYuuZAhqjIQkzJoSIZBmSCpVuK
/sE/WimU6N9SDM0R66IHbabie1hrg0MK3Zo5a8vwidgym8w8PKffvp89e35RAKJ2
ipp7WDxvjltZ6jwCr5W2bpHHtqUnx+77877jsZxzlO3roAWXuw5ha1pl9MZdAW2i
g8RyXyL8rnx8G6uH387AMnUMC2b6l10BJPdAfWDGhZVREuszT7D6hsTStBNDurO+
XQEZnEypx1a28XW2F8HFPqwtOBAYJlCde9EeEZCy4sTN4ksrRA4LZB57vZCfMElU
yH4E7Ap86r+LwIAGIy03cDr/lDNJGR/zDyBiHGc3i1ODjUIWtqbdIIexVY86kwZ3
HijR/86GmqFqJGhPWs8oTkRvAgb+uZGHhVfRV3UNni41OhU8EDlstBSkwjKjhnmq
Ag3uUtS6y9Dzvg0ljmKkFCaRm4CJT+/5OERtG4yqZMEwdQt1biV0EyW4PVEE1dsi
iMk8eMn0/w9Wp+PCNK1CQ6iBYeommkIpH5Qhy5AF/6Mrf4G955tUJlXxtsHieeWQ
2LJxvVuAAkoASUcmLugZPqW0qsprEQjDx3sY3ZIMhXt1+DNw77kdmnYKSsKKx+Pf
oTQtYX9KtzWG2Rod6aujaJwWHk8+uDawGITeA+SPA7nDQOYgwKcAYhQQajyIY9eQ
EYE5feLPyV4jFC8CELkAkWMDQmoDPGsQaWYgzRjEU8vL8GARAV8T099bUwqBdgzS
14D4VaiBA8gZALJ/t6j1Qqu4Hx4sIvChoyDFWZ1RmcyzORJLJsDSzoUyD5Z6FsxK
N+iXn/mM5ZLwYJGAX0F/sgCQt3xBAAAAAElFTkSuQmCC

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=blog.png
Content-Type: image/png; name=blog.png
Content-Location: http://www.sciencedaily.com/images/blog.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK
6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH8SURBVDjL
jZPfS1NhGMdXf0VEQhDUhdCN4X0IYT8ghIJQM0KoC4vushZddLELKyRhQQkSFIKE
GEkUCI2oxVhepG5zi1xbc0u3cDs7Z+ec/ezT+x62scmmHvhwDrzP93Pe57znsQE2
cR0SdAm6d+GwYL/M1LBVBV35fF4plUqVcrlMK8Q6TqdzYrukJuiW4Vwuh67rdbLZ
LJlMhmQyaUnigVlC05f4+dbB0tQplp92DsnwPimQBaZpUigUrLtE0zQURSGVSqHF
37DhGkVZeQdagszKLJ7HvZtNAhmuIQWGYaCqKps/ZkivPqCwPs/Gp0cYvjnKUTe+
F9fMJoFoo96zfJZ9K+sLpP33qRhujPANtr7dJPhqmO/PBxX3+PljTYLtqImPpH13
qZge9LUrmLEB1FU7sZd9jJw5MljNthYk/KLnxdFqeAjzdz9Z/z3Ck2fRE36qx9pa
kAjME1y4Lbb9GTMyTD52GUXsZO3ZadTkL6umrSD4ZZrAezvLH54Q915EjwywtXSH
8FQf+t+I9V12FLwe6wE1SmjyAi77Qb6Kt3rGe9H+hKzwrgLH9eMUPE4K3gm8jpPM
jRwlHfNTLBbr7Cjo7znA2NVOXA/PsThzi2wyah1pI+0E/9rNQQsqMtM4CyfE36fL
hb2ERa0mB7BR0CElexjnGnL0O2T2PyFunSz8jchwAAAAAElFTkSuQmCC

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=cite.png
Content-Type: image/png; name=cite.png
Content-Location: http://www.sciencedaily.com/images/cite.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAAA0AAAALCAYAAACksgdhAAAABGdBTUEAAK/INwWK
6QAAAZJpQ0NQSUNDIFByb2ZpbGUAAHiclZFNSxtRFIafO1IESbNxqkUo3FXMIkpQ
CgmUgpmFLbqIQTDJbjIzJoFxcrlztfoD3AvdlS6qha5KcVW6zA/ITrCbUij4AwpC
N0XGxW3JxiC+cOA5LwfOFzgjX6nYAfYSoxvrNdlsteX0d2bIAYAfpGqtXt9kov5c
IgAulnyl4sl1dyqnm602CBdwu5aLgNux/AJw3xhlQNQBN+j5IYgQKOnthgfiBMh3
LX8A8h3L50D+IOgaEEOgnIT9BMRvoBJGaQBOETCB0gac98BSs9WWdjSzAS+fwdRo
7LVT+PwJ5gtjr/gUnuzAt9Wxd72FAMTcKN1dXQFA5Grw6GeWXRdg+i3cnGTZ37Ms
u/kIUz9gmAT7+uDfXYRThftyu5vN7Q/A9r2b7f4AlOH0FezMwMYxvPsFi19g9ivU
H8N2Fady9T/srQBY8Py439G+iULZWK9JbxAPdKr8IHrQ2++XiQ4NgDdQR7rf7Rm5
plQcSW+wp/ZNpEvydRIsl+RKufwc4BaD4nFpIB2XkQAAAVdJREFUKJF1kU0oRHEU
xX//915ImgVDCSVkQfnYWJCFhd5iSo2UZ2tpaTWb2Xo2srBlp2YjZTH1phELSc0G
RZI3pRALycfIyLz/tRgfMzS3zurcc8+99yjH9eqBFWAKqKJypYG5RMz2leN6W9Hh
jonJkU4s06ioSGYuWd8594FeC4hMjXbxkof3ghAIaA2BQKAh0IICIkPtHJzddWVv
nwascKjGNJQi/yFoKWkW0Foo6OIQgFBtFUCj9W3/3axLHH7dylc17p/zgRbBMopk
QcsX+AEIALn8B8CDASQ39nzCddDeoOgMG3Q3GdRVK4IAmkOKvhaTZOaSi5tHHzhS
JS+fBkyA8cE2Zu0eAB5z72zuZ0kfXp0A0UTM9hGRf3Bcz799eJU171Qc13tzXC9e
yisRKTtyZjG1NNbfOr97fP0KxBMxe/lvZmWimcVUB7ANLCRi9mqloD8BXH65Lfxt
+RoAAAAASUVORK5CYII=

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=print.png
Content-Type: image/png; name=print.png
Content-Location: http://www.sciencedaily.com/images/print.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK
6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJtSURBVDjL
jZPfS1NhGMfPXfh3OG/E/yBImNkqrYGCzAthh+WNgXihwQYb2CoYukGwsdRLoYUW
QbRAhqzc2Q91IrrVhlhLqznL5Tyb23m3s317z1szBzM68Lk47/N9Pud5XjgcAK7O
VfM7/a2piE87HalRoLVHStrp1VKvLVi7fE9wns/WaXi58UgoH4kl/CxIyOZ/cyRK
SKRFmF/tw/B4p3jl7utLFwp6baHiySnBxheZUkHkM8HKrgSpUsVGWsaDN/tQG/1P
LxT02EIlRbBJBZtfZaztlSF8JEgdFqBMdnh8im7LSqWpYHJysqXHFiS5AkGMfi12
UP0zRRm+D6fwxvPI0dWu3Q8QvV7f0iCgzQZKnl4WjqkgcVDDeyrYpqLoXoWtsbxT
pLUyrlsFDA4O5vv7+w1MQBu7Z2dnEY1GcXsqjCwVJDM1JCixb1Vs0VXCdIoAXSVL
BTcfhhEIBDA+Pg6NRtOtCLbpg0wmA7PZ/F8oWUEQMDAwsKsIiCzLUFhfX4coiv8k
FAqhnh8bG6txFosFhBDG4uIiUqkUEzVDqc3Pz5/leZ4HZzKZkEgkGG63G8lkEn6/
vylKxuFwnOU7OzvBTUxMwOfzMex2O+LxOJaWlpoSi8VgtVrP8u3t7eDoHvB6vQyX
ywV6Jwyj0YjR0VE2Zl9fH7q6uqBWq9lZPd/W1gZuZGSk6vF42IHSuPD8JZbfBpvy
bOEFOjo6WHZubg6tra3gDAbDzNDQ0LZOpwPvCqNYIjg6IfhBOcxJSGdL2PtewKeM
iKJUBu8MQ6VSKc1bFFPDv8C7ItXhJ2sYdv/lDmOVodR4Z6R6vucXuxIEyKz+W40A
AAAASUVORK5CYII=

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=email.png
Content-Type: image/png; name=email.png
Content-Location: http://www.sciencedaily.com/images/email.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK
6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAITSURBVBgZ
pcHLThNhGIDh9/vn7/RApwc5VCmFWBPi1mvwAlx7BW69Afeu3bozcSE7E02ILjCR
hRrds8AEbKVS2gIdSjvTmf+TYqLu+zyiqszDMCf75PnnnVwhuNcLpwsXk8Q4BYeS
OsWpkqrinJI6JXVK6lSRdDq9PO+19vb37XK13Hj0YLMUTVVyWY//Cf8IVwQEGEeJ
N47S1YdPo4npDpNmnDh5udOh1YsZRcph39EaONpnjs65oxsqvZEyTaHdj3n2psPp
KDLBcuOOGUWpZDOG+q0S7751ObuYUisJGQ98T/Ct4Fuo5IX+MGZr95jKjRKLlSxX
xFxOEmaaN4us1Upsf+1yGk5ZKhp8C74H5ZwwCGO2drssLZZo1ouIcs2MJikz1oPm
apHlaoFXH1oMwphyTghyQj+MefG+RblcoLlaJG/5y4zGCTMikEwTctaxXq/w9kuX
dm9Cuzfh9acujXqFwE8xmuBb/hCwl1GKAnGccDwIadQCfD9DZ5Dj494QA2w2qtQW
84wmMZ1eyFI1QBVQwV5GiaZOpdsPaSwH5HMZULi9UmB9pYAAouBQbMHHrgQcnQwZ
V/KgTu1o8PMgipONu2t5KeaNiEkxgAiICDMCCFeEK5aNauAOfoXx8KR9ZOOLk8P7
j7er2WBhwWY9sdbDeIJnwBjBWBBAhGsCmiZxPD4/7Z98b/0QVWUehjkZ5vQb/Un5
e/DIsVsAAAAASUVORK5CYII=

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=bookmark.png
Content-Type: image/png; name=bookmark.png
Content-Location: http://www.sciencedaily.com/images/bookmark.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK
6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIASURBVDjL
pVPPaxNREJ6Vt01caH4oWk1T0ZKlGIo9RG+BUsEK4kEP/Q8qPXnpqRdPBf8A8Wah
hx7FQ0GF9FJ6UksqwfTSBDGyB5HkkphC9tfb7jfbtyQQTx142byZ75v5ZnZWC4KA
LmICPy+2DkvKIX2f/POz83LxCL7nrz+WPNcll49DrhM9v7xdO9JW330DuXrrqkFS
gig5iR2Cfv3t3gNxOnv5BwU+eZ5HuON5/PMPJZKJ+yKQfpW0S7TxdC6WJaWkyvff
1LDaFRAeLZj05MHsiPTS6hua0PUqtwC5sHq9zv9RYWl+nu5cETcnJ1M0M5WlWq3G
sX6/T+VymRzHDluZiGYAAsw0TQahV8uyyGq1qFgskm0bHIO/1+sx1rFtchJhArwE
yIQ1Gg2WD2A6nWawHQJVDIWgIJfLhQowTIeE9D0mKAU8qPC0220afsWFQoH93W6X
7yCDJ+DEBeBmsxnPIJVKxWQVUwry+XyUwBlKMKwA8jqdDhOVCqVAzQDVvXAXhOdG
BFgymYwrGoZBmUyGjxCCdF0fSahaFdgoTHRxfTveMCXvWfkuE3Y+f40qhgT/nMit
upzApdvT18bu+YeDQwY9Xl4aG9/d/URiMBhQq/dvZMeVghtT17lSZW9/rAKsvPa/
r9Fc2dw+Pe0/xI6kM9mT5vtXy+Nw2kU/5zOGRpvuMIu0YAAAAABJRU5ErkJggg==

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=addthis_widget.js
Content-Type: application/x-javascript; name=addthis_widget.js
Content-Location: http://s7.addthis.com/js/250/addthis_widget.js
Content-Transfer-Encoding: Base64

LyogKGMpIDIwMDgsIDIwMDkgQWRkIFRoaXMsIExMQyAqLwppZighd2luZG93Ll9h
dGUpe3ZhciBfYXRkPSJ3d3cuYWRkdGhpcy5jb20vIixfYXRyPSIvL3M3LmFkZHRo
aXMuY29tLyIsX2F0bj0iLy9sLmFkZHRoaXNjZG4uY29tLyIsX2V1Yz1lbmNvZGVV
UklDb21wb25lbnQsX2R1Yz1kZWNvZGVVUklDb21wb25lbnQsX2F0dT0idW5kZWZp
bmVkIixfYXRjPXtkcjowLHZlcjoyNTAsbG9jOjAsZW5vdGU6IiIsY3dhaXQ6NTAw
LHRhbXA6LTEsc2FtcDowLjAwNSxjYW1wOjEsdmFtcDoxLHhhbXA6MC4wNzMscGFt
cDowLjEsbWFtcDowLjcsYWRkcjotMSxhZGR0OjEseGZsOiEhd2luZG93LmFkZHRo
aXNfZGlzYWJsZV9mbGFzaCxhYmY6ISF3aW5kb3cuYWRkdGhpc19kb19hYn07KGZ1
bmN0aW9uKCl7dHJ5e3ZhciBJPXdpbmRvdy5sb2NhdGlvbjtpZihJLnByb3RvY29s
LmluZGV4T2YoImZpbGUiKT09PTApe19hdHI9Imh0dHA6IitfYXRyfWlmKEkuaG9z
dG5hbWUuaW5kZXhPZigibG9jYWxob3N0IikhPS0xKXtfYXRjLmxvYz0xfX1jYXRj
aChOKXt9dmFyIEw9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLE89
ZG9jdW1lbnQsdT13aW5kb3csdD11LmFkZEV2ZW50TGlzdGVuZXIsaD11LmF0dGFj
aEV2ZW50LEo9Ty5sb2NhdGlvbixRPXt3aW46L3dpbmRvd3MvLnRlc3QoTCkseHA6
L3dpbmRvd3MgbnQgNS4xLy50ZXN0KEwpfHwvd2luZG93cyBudCA1LjIvLnRlc3Qo
TCksY2hyOi9jaHJvbWUvLnRlc3QoTCksaXBoOi9pcGhvbmUvLnRlc3QoTCksc2Fm
Oi9zYWZhcmkvLnRlc3QoTCksd2ViOi93ZWJraXQvLnRlc3QoTCksb3ByOi9vcGVy
YS8udGVzdChMKSxtc2k6KC9tc2llLy50ZXN0KEwpKSYmISgvb3BlcmEvLnRlc3Qo
TCkpLGZmeDovZmlyZWZveC8udGVzdChMKSxmZjI6L2ZpcmVmb3hcLzIvLnRlc3Qo
TCksaWU2Oi9tc2llIDYuMC8udGVzdChMKSxpZTc6L21zaWUgNy4wLy50ZXN0KEwp
LG1vZDotMX0sbj17aXNCb3VuZDpmYWxzZSxpc1JlYWR5OmZhbHNlLHJlYWR5TGlz
dDp3aW5kb3cuYWRkdGhpc19vbmxvYWR8fFtdLG9uUmVhZHk6ZnVuY3Rpb24oKXtp
Zighbi5pc1JlYWR5KXtuLmlzUmVhZHk9dHJ1ZTt2YXIgYT1uLnJlYWR5TGlzdDtm
b3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7YVtiXS5jYWxsKHdpbmRvdyl9bi5y
ZWFkeUxpc3Q9W119fSxhZGRMb2FkOmZ1bmN0aW9uKGEpe3ZhciBiPXUub25sb2Fk
O2lmKHR5cGVvZiB1Lm9ubG9hZCE9ImZ1bmN0aW9uIil7dS5vbmxvYWQ9YX1lbHNl
e3Uub25sb2FkPWZ1bmN0aW9uKCl7aWYoYil7YigpfWEoKX19fSxiaW5kUmVhZHk6
ZnVuY3Rpb24oKXtpZihBLmlzQm91bmQpe3JldHVybn1BLmlzQm91bmQ9dHJ1ZTtp
ZihPLmFkZEV2ZW50TGlzdGVuZXImJiFRLm9wcil7Ty5hZGRFdmVudExpc3RlbmVy
KCJET01Db250ZW50TG9hZGVkIixBLm9uUmVhZHksZmFsc2UpfXZhciBhPXdpbmRv
dy5hZGR0aGlzX3Byb2R1Y3Q7aWYoYSYmYS5pbmRleE9mKCJmIik+LTEpe0Eub25S
ZWFkeSgpO3JldHVybn1pZihRLm1zaSYmd2luZG93PT10b3ApeyhmdW5jdGlvbigp
e2lmKEEuaXNSZWFkeSl7cmV0dXJufXRyeXtPLmRvY3VtZW50RWxlbWVudC5kb1Nj
cm9sbCgibGVmdCIpfWNhdGNoKGMpe3NldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxl
ZSwwKTtyZXR1cm59QS5vblJlYWR5KCl9KSgpfWlmKFEub3ByKXtPLmFkZEV2ZW50
TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKCl7aWYoQS5pc1Jl
YWR5KXtyZXR1cm59Zm9yKHZhciBjPTA7YzxPLnN0eWxlU2hlZXRzLmxlbmd0aDtj
Kyspe2lmKE8uc3R5bGVTaGVldHNbY10uZGlzYWJsZWQpe3NldFRpbWVvdXQoYXJn
dW1lbnRzLmNhbGxlZSwwKTtyZXR1cm59fUEub25SZWFkeSgpfSxmYWxzZSl9aWYo
US5zYWYpe3ZhciBiOyhmdW5jdGlvbigpe2lmKEEuaXNSZWFkeSl7cmV0dXJufWlm
KE8ucmVhZHlTdGF0ZSE9ImxvYWRlZCImJk8ucmVhZHlTdGF0ZSE9ImNvbXBsZXRl
Iil7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1pZihiPT09
dW5kZWZpbmVkKXt2YXIgYz1PLmduKCJsaW5rIik7Zm9yKHZhciBkPTA7ZDxjLmxl
bmd0aDtkKyspe2lmKGNbZF0uZ2V0QXR0cmlidXRlKCJyZWwiKT09InN0eWxlc2hl
ZXQiKXtiKyt9fXZhciBlPU8uZ24oInN0eWxlIik7Yis9ZS5sZW5ndGh9aWYoTy5z
dHlsZVNoZWV0cy5sZW5ndGghPWIpe3NldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxl
ZSwwKTtyZXR1cm59QS5vblJlYWR5KCl9KSgpfUEuYWRkTG9hZChBLm9uUmVhZHkp
fSxhcHBlbmQ6ZnVuY3Rpb24oYixhKXtBLmJpbmRSZWFkeSgpO2lmKEEuaXNSZWFk
eSl7Yi5jYWxsKHdpbmRvdyxbXSl9ZWxzZXtBLnJlYWR5TGlzdC5wdXNoKGZ1bmN0
aW9uKCl7cmV0dXJuIGIuY2FsbCh3aW5kb3csW10pfSl9fX0sQT1uLHY9ZnVuY3Rp
b24ocSxsLHAsYyl7aWYoIXEpe3JldHVybiBwfWlmKHEgaW5zdGFuY2VvZiBBcnJh
eSl7Zm9yKHZhciBlPTAsYT1xLmxlbmd0aCxiPXFbMF07ZTxhO2I9cVsrK2VdKXtw
PWwuY2FsbChjfHxxLHAsYixlLHEpfX1lbHNle2Zvcih2YXIgZCBpbiBxKXtwPWwu
Y2FsbChjfHxxLHAscVtkXSxkLHEpfX1yZXR1cm4gcH0sRD1BcnJheS5wcm90b3R5
cGUuc2xpY2UsRj1mdW5jdGlvbihiKXtyZXR1cm4gRC5hcHBseShiLEQuY2FsbChh
cmd1bWVudHMsMSkpfSxFPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoLyhe
XHMrfFxzKyQpL2csIiIpfSxNPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHYoRihhcmd1
bWVudHMsMSksZnVuY3Rpb24oZCxjKXtyZXR1cm4gdihjLGZ1bmN0aW9uKGwsaSxl
KXtsW2VdPWk7cmV0dXJuIGx9LGQpfSxhKX0saj1mdW5jdGlvbihiLGEpe3JldHVy
biB2KGIsZnVuY3Rpb24oZSxkLGMpe2M9RShjKTtpZihjKXtlLnB1c2goX2V1Yyhj
KSsiPSIrX2V1YyhFKGQpKSl9cmV0dXJuIGV9LFtdKS5qb2luKGF8fCImIil9LGc9
ZnVuY3Rpb24oYixhKXtyZXR1cm4gdigoYnx8IiIpLnNwbGl0KGF8fCImIiksZnVu
Y3Rpb24oaSxsKXt2YXIgZT1sLnNwbGl0KCI9IiksZD1FKF9kdWMoZVswXSkpLGM9
RShfZHVjKGUuc2xpY2UoMSkuam9pbigiPSIpKSk7aWYoZCl7aVtkXT1jfXJldHVy
biBpfSx7fSl9LGY9e3ZzdDpbXSxyZXY6IiRSZXY6IDc0NDI5ICQiLF9ldWM6X2V1
YyxfZHVjOl9kdWMscmVkdWNlOnYsc2xpY2U6RixzdHJpcDpFLGV4dGVuZDpNLHRv
S1Y6aixmcm9tS1Y6Zyxicm86USxjbGNrOjEsc2hvdzoxLGRsOkosY2FtcDpfYXRj
LmNhbXAtTWF0aC5yYW5kb20oKSxzYW1wOl9hdGMuc2FtcC1NYXRoLnJhbmRvbSgp
LHZhbXA6X2F0Yy52YW1wLU1hdGgucmFuZG9tKCksdGFtcDpfYXRjLnRhbXAtTWF0
aC5yYW5kb20oKSxwYW1wOl9hdGMucGFtcC1NYXRoLnJhbmRvbSgpLHhhbXA6X2F0
Yy54YW1wLU1hdGgucmFuZG9tKCksbWFtcDpfYXRjLm1hbXAtTWF0aC5yYW5kb20o
KSxhYjoiLSIsc2NudDoxLHNlcToxLGRjcDowLGluc3Q6MSx3YWl0OjUwMCx0bW86
bnVsbCxjdnQ6W10sc3Z0OltdLHN0dG06bmV3IERhdGUoKS5nZXRUaW1lKCksbWF4
OjQyOTQ5NjcyOTUscGl4OiJ0ZXYiLHNpZDowLHN1YjohIXdpbmRvdy5hdF9zdWIs
ZGJtOjAsdWlkOm51bGwsb290Om51bGwsc3dmOiIvL2Jpbi5jbGVhcnNwcmluZy5j
b20vYXQvdi8xL2J1dHRvbjEuNi5zd2YiLGV2dToiLy9vLmFkZHRoaXMuY29tL2F0
LyIsc3B0OiJzdGF0aWMvcjA3L3dpZGdldDEzLnBuZyIsaWZwcDpudWxsLHRyaW06
ZnVuY3Rpb24oYSxiKXt0cnl7YT1hLnJlcGxhY2UoL15bXHNcdTMwMDBdK3xbXHNc
dTMwMDBdKyQvZywiIik7aWYoYil7YT1fZXVjKGEpfX1jYXRjaChiKXt9cmV0dXJu
IGF9LGdhdDpmdW5jdGlvbigpe30sY29tOmZ1bmN0aW9uKGEpe2lmKHdpbmRvdy5w
YXJlbnQmJndpbmRvdy5wb3N0TWVzc2FnZSl7d2luZG93LnBhcmVudC5wb3N0TWVz
c2FnZShhLCIqIil9ZWxzZXtmLmlmbShhKX19LGlmd246ZnVuY3Rpb24oKXt2YXIg
Yj1mO3RyeXtiLnJlYyhiLnNpZnIuY29udGVudFdpbmRvdy5uYW1lKX1jYXRjaChj
KXt9fSxpZm06ZnVuY3Rpb24oYil7aWYoYWRkdGhpc193cGwpe3ZhciBjPShhZGR0
aGlzX3dwbC5zcGxpdCgiIyIpKVswXTt3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhy
ZWY9YysiI2F0IitifXJldHVybiBmYWxzZX0saGFzaDp3aW5kb3cubG9jYXRpb24u
aGFzaCxpZnA6ZnVuY3Rpb24oKXt2YXIgYz1mLGI9d2luZG93LmxvY2F0aW9uLmhh
c2gsaT0wO2lmKGImJmIuaW5kZXhPZigiI2F0Iik+LTEpe2I9Yi5zdWJzdHIoMyku
c3BsaXQoIjsiKTtmb3IodmFyIGUgaW4gYil7dmFyIGQ9YltlXS5sZW5ndGg+Mz9i
W2VdLnN1YnN0cigwLDMpOm51bGw7c3dpdGNoKGQpe2Nhc2Uic3NoIjppPTE7Yy5z
c2goYltlXS5zdWJzdHIoNCkpO2JyZWFrO2Nhc2UidWlkIjppPTE7Yy5hc2V0dXAo
YltlXS5zdWJzdHIoNCkpO2JyZWFrfX1pZihpKXtpZighYy5oYXNoLmxlbmd0aHx8
Yy5oYXNoPT0iIil7Yy5oYXNoPSIjIn13aW5kb3cubG9jYXRpb24uaGFzaD1jLmhh
c2h9fWlmKGMuZ3NzaCYmYy5ndWlkKXtjbGVhckludGVydmFsKGMuaWZwcCl9fSxw
bWg6ZnVuY3Rpb24oYSl7aWYoYS5vcmlnaW4uc2xpY2UoLTEyKT09Ii5hZGR0aGlz
LmNvbSIpe2YucmVjKGEuZGF0YSl9fSxfcmVjOltdLHJlYzpmdW5jdGlvbihkKXtp
ZighZCl7cmV0dXJufXZhciBsPWcoZCksYj1mLGM9Yi5zaWZyLGU9Yi5fcmVjO2lm
KGwuc3NoKXtiLnNzaChsLnNzaCl9aWYobC51aWQpe2IuYXNldHVwKGwudWlkKX1p
ZihsLmRibSl7Yi5kYm09bC5kYm19aWYoYyYmYy5wYXJlbnROb2RlKXt9Zm9yKHZh
ciBwPTA7cDxlLmxlbmd0aDtwKyspe2VbcF0obCl9fSxzc2g6ZnVuY3Rpb24oYil7
Zi5nc3NoPTE7dmFyIGE9d2luZG93LmFkZHRoaXNfc3NoPV9kdWMoYik7Zi5fc3No
PWEuc3BsaXQoIiwiKX0sbXVuOmZ1bmN0aW9uKGMpe3ZhciBhPTI5MTtpZihjKXtm
b3IodmFyIGI9MDtiPGMubGVuZ3RoO2IrKyl7YT0oYSooYy5jaGFyQ29kZUF0KGIp
K2IpKzMpJjEwNDg1NzV9fXJldHVybihhJjE2Nzc3MjE1KS50b1N0cmluZygzMil9
LGpzbDpmdW5jdGlvbigpe3JldHVybigoKCh1LmpRdWVyeXx8e30pLmZufHx7fSku
anF1ZXJ5JiYxKXwoKHUuUHJvdG90eXBlfHx7fSkuVmVyc2lvbiYmMil8KCh1LllV
SXx8e30pLnZlcnNpb258fCh1LllBSE9PfHx7fSkuVkVSU0lPTiYmNCl8KCh1LkV4
dHx8e30pLnZlcnNpb24mJjgpfCgodS5kb2pvfHx7fSkudmVyc2lvbiYmMTYpKX0s
aWJ0OmZ1bmN0aW9uKCl7aWYoZi5idGkpe3JldHVybiBmLmJ0aX12YXIgYT0od2lu
ZG93LmFkZHRoaXNfcHJvZHVjdHx8Im1lbiIpLnN1YnN0cigwLDMpLGI9YT09ImJr
bSJ8fGE9PSJmY3QifHxhPT0iZnhlIjtpZihiKXtmLmJ0aT1ifXJldHVybiBifSxv
ZmY6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigobmV3IERhdGUoKS5nZXRU
aW1lKCktZi5zdHRtKS8xMDApLnRvU3RyaW5nKDE2KX0scmFuOmZ1bmN0aW9uKCl7
cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk1KS50b1N0
cmluZygzNil9LHNyZDpmdW5jdGlvbigpe2lmKGYuZHIpe3JldHVybiImcHJlPSIr
X2V1YyhmLmRyKX1lbHNle3JldHVybiIifX0sY3N0OmZ1bmN0aW9uKGEpe3JldHVy
biJDWE5JRD0yMDAwMDAxLjUyMTU0NTYwODA1NDA0MzkwNyIrKGF8fDIpKyJOWEMi
fSxpbWd6OltdLGhycjpmdW5jdGlvbihjKXtpZihjJiZjLnVybHMmJmMudXJscyBp
bnN0YW5jZW9mIEFycmF5KXtmb3IodmFyIGI9MDtiPGMudXJscy5sZW5ndGg7Yisr
KXt2YXIgYT1uZXcgSW1hZ2UoKTtmLmltZ3oucHVzaChhKTthLnNyYz1jLnVybHNb
Yl19fX0sb21wOmZ1bmN0aW9uKCl7Zi5pbWcoX2F0Yy52ZXIrInNoIiwiMyIpO2lm
KGYubG5nKCkuaW5kZXhPZigiZW4iKT09MCl7aWYoZi5tYW1wPj0wKXtmLnhyZWQo
MjAwKX19fSxpbWc6ZnVuY3Rpb24ocCxyLGIpe2lmKCF3aW5kb3cuYXRfc3ViJiYh
X2F0Yy54dHIpe3ZhciBlPWYscT1lLmRyLGQ9KChlLnJldnx8IiIpLnNwbGl0KCIg
IikpO2lmKHEpe3E9cS5zcGxpdCgiPyIpLnNoaWZ0KCkuc3BsaXQoImh0dHA6Ly8i
KS5wb3AoKS5zcGxpdCgiaHR0cHM6Ly8iKS5wb3AoKTtpZihxLmxlbmd0aD4yNSl7
cT1xLnN1YnN0cigwLDI1KX19dmFyIGw9bmV3IEltYWdlKCk7ZS5pbWd6LnB1c2go
bCk7bC5zcmM9X2F0bisibGl2ZS90MDAvIitwKyIuZ2lmPyIrKGUudWlkIT09bnVs
bD8idWlkPSIrZS51aWQrIiYiOiIiKStlLnJhbigpKyImIitlLmNzdChyKSsoZS5w
dWIoKT8iJnB1Yj0iK2UucHViKCk6IiIpKyhxPyImZHI9IitfZXVjKHEpOiIiKSso
ZC5sZW5ndGg+MT8iJnJldj0iK2RbMV06IiIpKyhiPyImIitiOiIiKX19LGN1aWQ6
ZnVuY3Rpb24oKXtyZXR1cm4oKGYuc3R0bS8xMDAwKSZmLm1heCkudG9TdHJpbmco
MTYpKygiMDAwMDAwMDAiKyhNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGYubWF4
KzEpKSkudG9TdHJpbmcoMTYpKS5zbGljZSgtOCl9LHNzaWQ6ZnVuY3Rpb24oKXtp
ZihmLnNpZD09PTApe2Yuc2lkPWYuY3VpZCgpfXJldHVybiBmLnNpZH0sc2V2OmZ1
bmN0aW9uKGIsYSl7Zi5waXg9InNldi0iKyh0eXBlb2YoYikhPT0ibnVtYmVyIj9f
ZXVjKGIpOmIpO2Yuc3Z0LnB1c2goYisiOyIrZi5vZmYoKSk7aWYoYT09PTEpe2Yu
eG1pKHRydWUpfWVsc2V7Zi5zeG0odHJ1ZSl9fSxjZXY6ZnVuY3Rpb24oYixhKXtm
LnBpeD0iY2V2LSIrX2V1YyhiKTtmLmN2dC5wdXNoKF9ldWMoYikrIj0iK19ldWMo
YSkrIjsiK2Yub2ZmKCkpO2Yuc3htKHRydWUpfSxzeG06ZnVuY3Rpb24oYSl7aWYo
Zi50bW8hPT1udWxsKXtjbGVhclRpbWVvdXQoZi50bW8pfWlmKGEpe2YudG1vPWYu
c3RvKCJfYXRlLnhtaShmYWxzZSkiLGYud2FpdCl9fSxzdG86ZnVuY3Rpb24oYixh
KXtyZXR1cm4gc2V0VGltZW91dChiLGEpfSxzdGE6ZnVuY3Rpb24oKXt2YXIgYj1m
O3JldHVybiJBVC0iKyhiLnB1YigpP2IucHViKCk6InVua25vd24iKSsiLy0vIiti
LmFiKyIvIitiLnNzaWQoKSsiLyIrKGIuc2VxKyspKyhiLnVpZCE9PW51bGw/Ii8i
K2IudWlkOiIiKX0seHJlZDpmdW5jdGlvbihkKXt0cnl7dmFyIHM9d2luZG93LGFl
PWYsYj0wLFc9Ty5yZWZlcmVyfHxPLnJlZmVycmVyfHwiIixUPUo/Si5ocmVmOm51
bGwsYWE9Sj9KLmhvc3RuYW1lLnNwbGl0KCIuIikuc2xpY2UoLTIpLmpvaW4oIi4i
KTpudWxsLHk9MTAwLHE9MzAwLGFjPTAscD0xLGw9Mix4PTQsVj1hYyxhZD0iLmNv
bS8iLFk9MDtpZihXKXt2YXIgVT1XLnNwbGl0KCIvLyIpLnBvcCgpLnNwbGl0KCIv
Iikuc2hpZnQoKS5zcGxpdCgiPyIpLnNoaWZ0KCkuc3BsaXQoIi4iKS5zbGljZSgt
Mikuam9pbigiLiIpO2lmKFU9PWFhKXtWfD1sfWVsc2V7Vnw9eH19aWYoKChhZS5j
YW1wPj0wJiYoVy5pbmRleE9mKGFkKT4tMSYmVy5pbmRleE9mKCJhZGR0aGlzIik9
PS0xKSl8fGQpJiYoVCYmSiYmSi5wcm90b2NvbCYmKEoucHJvdG9jb2wuaW5kZXhP
ZigiaHR0cHMiKT09LTEpKSl7aWYoVyYmVy5tYXRjaCgvd3NcL3Jlc3VsdHNcLyhX
ZWJ8SW1hZ2VzfFZpZGVvfE5ld3MpLykpe1k9MTtWfD1wfWVsc2V7aWYoVy5pbmRl
eE9mKGFkKyJzZWFyY2giKT4tMXx8Vy5pbmRleE9mKGFkKyJ1cmwiKT4tMXx8Vy5p
bmRleE9mKGFkKyJ3ZWIiKT4tMXx8Vy5pbmRleE9mKGFkKyJhb2wiKT4tMXx8Vy5p
bmRleE9mKGFkKyJzP2JzIik+LTF8fFcuaW5kZXhPZigiaG90Ym90IithZCk+LTEp
e3ZhciBTPVcuc3BsaXQoIj8iKS5wb3AoKS5zcGxpdCgiJiIpO2Zvcih2YXIgWj0w
O1o8Uy5sZW5ndGg7WisrKXtpZihTW1pdLmluZGV4T2YoInE9Iik9PT0wfHxTW1pd
LmluZGV4T2YoImJzPSIpPT09MHx8U1taXS5pbmRleE9mKCJwPSIpPT09MHx8U1ta
XS5pbmRleE9mKCJxdWVyeSIpPT09MHx8U1taXS5pbmRleE9mKCJxcnkiKT09PTB8
fFNbWl0uaW5kZXhPZigidGV4dCIpPT09MCl7WT0xO2JyZWFrfX1WfD1wfX1pZigh
YWUuZGNwJiYhX2F0Yy54dHImJiFfYXRjLnhjayYmKFl8fGQpJiZhZS5tdW4oYWUu
cHViKCkpIT09Im11MnIiKXtpZighZCl7ZD15fWFlLmRjcD1kO3ZhciBYPU8uY2Uo
InNjcmlwdCIpO1guc3JjPSIvL2NmLmFkZHRoaXMuY29tL3JlZC9wLmpzb24/cmI9
IitWKyImZ2VuPSIrZCsiJmNhbGxiYWNrPV9hdGUuaHJyIisoYWUucHViKCk/IiZw
dWI9IithZS5wdWIoKToiIikrKGFlLnVpZCYmYWUudWlkIT09ImFub255bW91cyI/
IiZ1aWQ9IitfZXVjKGFlLnVpZCk6IiIpKyImdXJsPSIrX2V1YyhUKSsoVz8iJnJl
Zj0iK19ldWMoVyk6IiIpKyImIithZS5yYW4oKTtPLmduKCJoZWFkIilbMF0uYXBw
ZW5kQ2hpbGQoWCl9fX1jYXRjaChhYil7fX0seGxkOmZ1bmN0aW9uKCl7dmFyIGI9
ZixlPXsiNmpiNCI6MSxzaXJiOjEscThmYzoxLG12ODY6MSxxbW8wOjF9LGM9Yi5q
c2woKSxkPWIubXVuKGIucHViKCkpO2lmKCFiLnhsZF9wKXtiLnhsZF9wPTE7aWYo
ZVtkXSl7X2F0Yy5zYW1wLz00O2Iuc2FtcD1fYXRjLnNhbXAtTWF0aC5yYW5kb20o
KX1pZihiLnNhbXA+PTAmJiFiLnN1Yil7Yi5zZXYoIjIwIik7Yi5jZXYoInBsbyIs
TWF0aC5yb3VuZCgxL19hdGMuc2FtcCkpO2lmKGIuZHIpe2IuY2V2KCJwcmUiLGIu
ZHIpfX1pZihiLnhhbXA+PTAmJmIubG5nKCkuaW5kZXhPZigiZW4iKT09MCl7Yi54
cmVkKDEwMCl9ZWxzZXtiLnhyZWQoKX1iLmltZyhfYXRjLnZlcisibG8iLCIyIixj
PyJqc2w9IitjOiIiKX19LHhtaTpmdW5jdGlvbihyKXt2YXIgYj1mLHA9Yi5kbD9i
LmRsLmhvc3RuYW1lOiIiO2lmKCFiLnVpZCl7Yi5kY2soIlgiK2IuY3VpZCgpKX1l
bHNle2IuY29vKCl9aWYoYi5jdnQubGVuZ3RoK2Iuc3Z0Lmxlbmd0aD4wKXtiLnN4
bShmYWxzZSk7aWYoYi5zZXE9PT0xKXtiLmNldigicGluIixiLmluc3QpfWlmKF9h
dGMueHRyKXtyZXR1cm59aWYocC5pbmRleE9mKCIuZ292Iik+LTF8fHAuaW5kZXhP
ZigiLm1pbCIpPi0xKXtfYXRjLnhjaz0xfXZhciBzPWIucGl4KyItIitiLnJhbigp
KyIucG5nP2V2PSIrZi5zdGEoKSsiJnNlPSIrYi5zdnQuam9pbigiLCIpKyImY2U9
IitiLmN2dC5qb2luKCIsIikrKF9hdGMueGNrPyImeGNrPTEiOiIiKSxlPWIuZXZ1
K3M7Yi5jdnQ9W107Yi5zdnQ9W107aWYocil7dmFyIHE9ZG9jdW1lbnQsbD1xLmNl
KCJpZnJhbWUiKTtsLmlkPSJfYXRmIjtsLnNyYz1lO2Yub3BwKGwuc3R5bGUpO3Eu
Ym9keS5hcHBlbmRDaGlsZChsKTtsPXEuZ2V0RWxlbWVudEJ5SWQoIl9hdGYiKX1l
bHNle3ZhciBjPW5ldyBJbWFnZSgpO2IuaW1nei5wdXNoKGMpO2Muc3JjPWV9fX0s
bG9jOmZ1bmN0aW9uKCl7cmV0dXJuIF9hdGMubG9jfSxvcHA6ZnVuY3Rpb24oYSl7
YS53aWR0aD1hLmhlaWdodD0iMXB4IjthLnBvc2l0aW9uPSJhYnNvbHV0ZSI7YS56
SW5kZXg9MTAwMDAwfSxwdWI6ZnVuY3Rpb24oKXtyZXR1cm4gX2V1Yyh3aW5kb3cu
YWRkdGhpc19jb25maWcmJmFkZHRoaXNfY29uZmlnLnVzZXJuYW1lP2FkZHRoaXNf
Y29uZmlnLnVzZXJuYW1lOih3aW5kb3cuYWRkdGhpc19wdWJ8fCIiKSl9LHBsbzpb
XSxsYWQ6ZnVuY3Rpb24oYSl7Zi5wbG8ucHVzaChhKX0sbG5nOmZ1bmN0aW9uKCl7
cmV0dXJuIHdpbmRvdy5hZGR0aGlzX2xhbmd1YWdlfHwod2luZG93LmFkZHRoaXNf
Y29uZmlnfHx7fSkudWlfbGFuZ3VhZ2V8fChmLmJyby5tc2k/bmF2aWdhdG9yLnVz
ZXJMYW5ndWFnZTpuYXZpZ2F0b3IubGFuZ3VhZ2UpfSxpdmw6ZnVuY3Rpb24oYSl7
dmFyIGI9e2FmOjEsYWZyOiJhZiIsYXI6MSxhcmE6ImFyIixhejoxLGF6ZToiYXoi
LGJlOjEsYnllOiJiZSIsYmc6MSxidWw6ImJnIixibjoxLGJlbjoiYm4iLGJzOjEs
Ym9zOiJicyIsY2E6MSxjYXQ6ImNhIixjczoxLGNlczoiY3MiLGN6ZToiY3MiLGN5
OjEsY3ltOiJjeSIsZGE6MSxkYW46ImRhIixkZToxLGRldToiZGUiLGdlcjoiZGUi
LGVsOjEsZ3JlOiJlbCIsZWxsOiJlbGwiLGVzOjEsZXNsOiJlcyIsc3BhOiJzcGEi
LGV0OjEsZXN0OiJldCIsZmE6MSxmYXM6ImZhIixwZXI6ImZhIixmaToxLGZpbjoi
ZmkiLGZvOjEsZmFvOiJmbyIsZnI6MSxmcmE6ImZyIixmcmU6ImZyIixnYToxLGdh
ZToiZ2EiLGdkaDoiZ2EiLGdsOjEsZ2xnOiJnbCIsaGU6MSxoZWI6ImhlIixoaTox
LGhpbjoiaGluIixocjoxLGNybzoiaHIiLGh1OjEsaHVuOiJodSIsaWQ6MSxpbmQ6
ImlkIixpczoxLGljZToiaXMiLGl0OjEsaXRhOiJpdCIsamE6MSxqcG46ImphIixr
bzoxLGtvcjoia28iLGxiOjEsbHR6OiJsYiIsbHQ6MSxsaXQ6Imx0IixsdjoxLGxh
djoibHYiLG1rOjEsbWFjOiJtayIsbWFrOiJtayIsbXM6MSxtc2E6Im1zIixtYXk6
Im1zIixuYjoxLG5sOjEsbmxhOiJubCIsZHV0OiJubCIsbm86MSxubm86Im5vIixv
YzoxLG9jaToib2MiLHBsOjEscG9sOiJwbCIscHQ6MSxwb3I6InB0IixybzoxLHJv
bjoicm8iLHJ1bToicm8iLHJ1OjEscnVzOiJydSIsc2s6MSxzbGs6InNrIixzbG86
InNrIixzbDoxLHNsdjoic2wiLHNxOjEsYWxiOiJzcSIsc3I6MSxzZXI6InNyIixz
djoxLHN2ZToic3YiLHN3ZToic3YiLHRhOjEsdGFtOiJ0YSIsdGU6MSx0ZWc6InRl
Iix0aDoxLHRoYToidGgiLHRsOjEsdGdsOiJ0bCIsdHI6MSx0dXI6InRyIix1azox
LHVrcjoidWsiLHVyOjEsdXJkOiJ1ciIsdmk6MSx2aWU6InZpIiwiemgtaGsiOjEs
ImNoaS1oayI6InpoLWhrIiwiemhvLWhrIjoiemgtaGsiLCJ6aC10ciI6MSwiY2hp
LXRyIjoiemgtdHIiLCJ6aG8tdHIiOiJ6aC10ciIsInpoLXR3IjoxLCJjaGktdHci
OiJ6aC10dyIsInpoby10dyI6InpoLXR3Iix6aDoxLGNoaToiemgiLHpobzoiemgi
fTtpZihiW2FdKXtyZXR1cm4gYlthXX1hPWEuc3BsaXQoIi0iKS5zaGlmdCgpO2lm
KGJbYV0pe2lmKGJbYV09PT0xKXtyZXR1cm4gYX1lbHNle3JldHVybiBiW2FdfX1y
ZXR1cm4gMH0sYWxnOmZ1bmN0aW9uKGUsYyl7dmFyIGk9ZG9jdW1lbnQsYT0oZXx8
Zi5sbmcoKXx8ImVuIikudG9Mb3dlckNhc2UoKSxiPWYuaXZsKGEpO2lmKGEuaW5k
ZXhPZigiZW4iKSE9PTAmJighZi5wbGx8fGMpKXtpZihiKXtpZihiIT09MSl7YT1i
fWYucGxsPWYuYWpzKCJzdGF0aWMvcjA3L2xhbmcwMC8iK2ErIi5qcyIpfX19LGps
cjp7fSxhanM6ZnVuY3Rpb24oYSl7aWYoIWYuamxyW2FdKXt2YXIgYj1PLmNlKCJz
Y3JpcHQiKTtiLnNyYz1fYXRyK2E7Ty5nbigiaGVhZCIpWzBdLmFwcGVuZENoaWxk
KGIpO2YuamxyW2FdPTE7cmV0dXJuIGJ9cmV0dXJuIDF9LGpsbzpmdW5jdGlvbigp
e3RyeXt2YXIgcD1kb2N1bWVudCxiPWYsbD1iLmxuZygpO2IuYWxnKGwpO2lmKCFi
LnBsZCl7aWYoYi5icm8uaWU2KXt2YXIgYz1uZXcgSW1hZ2UoKTtiLmltZ3oucHVz
aChjKTtjLnNyYz1fYXRyK2Iuc3B0O2lmKHdpbmRvdy5hZGR0aGlzX2ZlZWQpe2M9
bmV3IEltYWdlKCk7Yi5pbWd6LnB1c2goYyk7Yy5zcmM9X2F0cisic3RhdGljL3Iw
NS9mZWVkMDAuZ2lmIn19aWYoYi5wbGwmJiF3aW5kb3cuYWRkdGhpc190cmFuc2xh
dGlvbnMpe2Iuc3RvKGZ1bmN0aW9uKCl7Yi5wbGQ9Yi5hanMoInN0YXRpYy9yMDcv
bWVudTQ2LmpzIil9LDEwKX1lbHNle2IucGxkPWIuYWpzKCJzdGF0aWMvcjA3L21l
bnU0Ni5qcyIpfX19Y2F0Y2goaSl7fX0saWd2OmZ1bmN0aW9uKGEsYil7aWYoIXUu
YWRkdGhpc19zaGFyZSl7dS5hZGR0aGlzX3NoYXJlPXt9fWlmKCFhZGR0aGlzX3No
YXJlLnVybCl7dS5hZGR0aGlzX3NoYXJlLnVybD11LmFkZHRoaXNfdXJsfHxhfWlm
KCFhZGR0aGlzX3NoYXJlLnRpdGxlKXt1LmFkZHRoaXNfc2hhcmUudGl0bGU9dS5h
ZGR0aGlzX3RpdGxlfHxifWlmKCF1LmFkZHRoaXNfY29uZmlnKXt1LmFkZHRoaXNf
Y29uZmlnPXt1c2VybmFtZTp1LmFkZHRoaXNfcHVifX1lbHNle2lmKGFkZHRoaXNf
Y29uZmlnLmRhdGFfdXNlX2ZsYXNoPT09ZmFsc2Upe19hdGMueGZsPTF9aWYoYWRk
dGhpc19jb25maWcuZGF0YV91c2VfY29va2llcz09PWZhbHNlKXtfYXRjLnhjaz0x
fX19LGxvZDpmdW5jdGlvbihTKXt0cnl7dmFyIFU9d2luZG93LGFrPWYseD1hay5i
cm8ubXNpLGQ9MCxaPU8ucmVmZXJlcnx8Ty5yZWZlcnJlcnx8IiIsWD1KP0ouaHJl
ZjpudWxsLGFnPUouaG9zdG5hbWUsYWo9WD9YLmluZGV4T2YoInNtc19zcyIpOi0x
LGFoPSgoUz09PTF8fFUuYWRkdGhpc19sb2FkX2ZsYXNoKSYmIV9hdGMuYWJmKSxh
Yz0oKFUuYWRkdGhpc19sYW5ndWFnZXx8KFUuYWRkdGhpc19jb25maWc/VS5hZGR0
aGlzX2NvbmZpZy51aV9sYW5ndWFnZTpudWxsKXx8KGFrLmJyby5tc2k/bmF2aWdh
dG9yLnVzZXJMYW5ndWFnZTpuYXZpZ2F0b3IubGFuZ3VhZ2UpKS5zcGxpdCgiLSIp
KS5zaGlmdCgpLHM9KEouaHJlZi5pbmRleE9mKF9hdHIpPT0tMSkmJiFhay5icm8u
aWU2JiYhYWsuYnJvLmllNyxhZD1PLmduKCJsaW5rIikscT1fYXRyKyJzdGF0aWMv
cjA3L3NoMTEuaHRtbCIseT0iX2F0ZS5pZnduKCkiLHIsVDtpZighVS5wb3N0TWVz
c2FnZSl7dmFyIFc9Ty5nbigiaW1nIik7Zm9yKHZhciBhZT0wO2FlPFcubGVuZ3Ro
O2FlKyspe2lmKFdbYWVdLnNyYy5zcGxpdCgiLy8iKS5wb3AoKS5pbmRleE9mKGFn
KT09MCl7cj1XW2FlXS5zcmM7YnJlYWt9fX1pZihzJiYoIV9hdGMueGljfHwoVS5w
b3N0TWVzc2FnZXx8YWsuYnJvLm1zaSkpKXtpZigheCl7VD1PLmNlKCJpZnJhbWUi
KX1lbHNle3ZhciBWPU8uY2UoImRpdiIpO1Yuc3R5bGUudmlzaWJpbGl0eT0iaGlk
ZGVuIjthay5vcHAoVi5zdHlsZSk7Ty5ib2R5Lmluc2VydEJlZm9yZShWLE8uYm9k
eS5maXJzdENoaWxkKTtWLmlubmVySFRNTD0nPGlmcmFtZSBpZD0iX2F0c3NoIiB3
aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJfYXRzc2giICcrKCFVLnBvc3RNZXNz
YWdlPydvbmxvYWQ9IicreSsnIiAnOiIiKSsiPiI7VD1PLmdldEVsZW1lbnRCeUlk
KCJfYXRzc2giKX19Zm9yKHZhciBhZT0wO2FlPGFkLmxlbmd0aDthZSsrKXt2YXIg
YWI9YWRbYWVdO2lmKGFiLnJlbCYmYWIucmVsPT0iY2Fub25pY2FsIiYmYWIuaHJl
Zil7WD1hYi5ocmVmfX1hay5pZ3YoWCxPLnRpdGxlfHwiIik7YWsuZ292KCk7YWsu
ZHI9Wjt2YXIgcD0oYWsuc3dmJiYhX2F0Yy54ZmwmJiEoYWsubG9jKCkpJiYhX2F0
Yy5hYmYmJihhaHx8YWsudWlkPT09bnVsbHx8KGFrLnVpZCE9PSJhbm9ueW1vdXMi
JiZhay5vb3QmJigobmV3IERhdGUoKSkuZ2V0VGltZSgpLWFrLm9vdD42MDQ4MDAw
MCkpKSk7cSs9IiNzd2ZwPSIrKHAmJng/MTowKSsoWiYmWiE9WD8iJmRyPSIrX2V1
YyhaKToiIikrIiZkdT0iK19ldWMoWCkrKGFrLnhhbXA+MD8iJnB4PTEiOiIiKSsi
JnZyPSIrX2V1YyhfYXRjLnZlcikrKF9hdGMueGNrPyImeGNrPTEiOiIiKSsiJnBz
cD0iKyhNYXRoLmNlaWwoMS9fYXRjLnBhbXApKTtpZigheCYmcCl7dmFyIGM9ZnVu
Y3Rpb24oZSxsLGEpe3ZhciBpPU8uY2UoInBhcmFtIik7aS5uYW1lPWw7aS52YWx1
ZT1hO2UuYXBwZW5kQ2hpbGQoaSl9LFY9Ty5jZSgiZGl2IiksWT0iYXRmZiIsYj1Z
KyJjIixhYT1PLmNlKCJvYmplY3QiKTtWLmlkPWI7Ty5ib2R5Lmluc2VydEJlZm9y
ZShWLE8uYm9keS5maXJzdENoaWxkKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFy
IGE9Ty5nZXRFbGVtZW50QnlJZChiKTthYS5pZD1ZO2FhLmRhdGE9YWsuc3dmO2Fh
LndpZHRoPWFhLmhlaWdodD0iMXB4IjthYS50eXBlPSJhcHBsaWNhdGlvbi94LXNo
b2Nrd2F2ZS1mbGFzaCI7YyhhYSwid21vZGUiLCJ0cmFuc3BhcmVudCIpO2MoYWEs
ImFsbG93U2NyaXB0QWNjZXNzIiwiYWx3YXlzIik7YS5hcHBlbmRDaGlsZChhYSl9
LDEwKX1pZihzJiZUKXtULmlkPSJfYXRzc2giO2FrLm9wcChULnN0eWxlKTtULmZy
YW1lYm9yZGVyPVQuc3R5bGUuYm9yZGVyPTA7VC5zdHlsZS50b3A9VC5zdHlsZS5s
ZWZ0PTA7aWYoVS5wb3N0TWVzc2FnZSl7VC5zcmM9cTtpZih4KXtVLmF0dGFjaEV2
ZW50KCJvbm1lc3NhZ2UiLGFrLnBtaCl9ZWxzZXtVLmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLGFrLnBtaCxmYWxzZSl9VD1PLmJvZHkuYXBwZW5kQ2hpbGQoVCl9
ZWxzZXtpZihyJiYhX2F0Yy54aWMmJmFrLmJyby5tc2kmJndpbmRvdz09dG9wKXtU
Lm9ubG9hZD15O1Quc3JjPXI7VD1PLmJvZHkuYXBwZW5kQ2hpbGQoVCk7VC5zcmM9
cSsiJndwbD0iK19ldWMocil9fWFrLnNpZnI9VH1pZighYWgpe2lmKHApe2FrLnVv
bygpO2lmKGFrLmJyby5pZTZ8fGFrLmJyby5pZTcpe2FrLnN0bygiaWYgKF9hdGUu
eGxkKSBfYXRlLnhsZCgpIiw1MDAwKX1lbHNle2FrLnN0bygiX2F0ZS54bGQoKSIs
NTAwMCl9fWVsc2V7YWsuZ3VpZD0xO2FrLnhsZCgpfWlmKGFqPi0xJiZYLmluZGV4
T2YoX2F0ZCsiYm9vayIpPT0tMSl7dmFyIGFmPVguc3Vic3RyKGFqKTthZj1hZi5z
cGxpdCgiJiIpLnNoaWZ0KCkuc3BsaXQoIiMiKS5zaGlmdCgpLnNwbGl0KCI9Iiku
cG9wKCk7aWYoYWsudmFtcD49MCYmIWFrLnN1YiYmYWYubGVuZ3RoKXthay5jZXYo
InBsdiIsTWF0aC5yb3VuZCgxL19hdGMudmFtcCkpO2FrLmNldigicnNjIixhZil9
fX1pZih3aW5kb3cuYWRkdGhpc19sYW5ndWFnZXx8KHdpbmRvdy5hZGR0aGlzX2Nv
bmZpZ3x8e30pLnVpX2xhbmd1YWdlKXthay5hbGcoKX1pZihhay5wbG8ubGVuZ3Ro
PjApe2FrLmpsbygpfX1jYXRjaChhaSl7fX0sa2NrOmZ1bmN0aW9uKGEpe3ZhciBi
PWRvY3VtZW50O2lmKGIuY29va2llKXtiLmNvb2tpZT1hKyI9IDsgZXhwaXJlcz1U
dWUsIDMxIE1hciAyMDA5IDA1OjQ3OjExIFVUQzsgcGF0aD0vIn19LHJjazpmdW5j
dGlvbihlKXt2YXIgcD1kb2N1bWVudDtpZihwLmNvb2tpZSl7dmFyIGI9cC5jb29r
aWUuc3BsaXQoIjsiKTtmb3IodmFyIGw9MDtsPGIubGVuZ3RoO2wrKyl7dmFyIHE9
YltsXSxhPXEuaW5kZXhPZihlKyI9Iik7aWYoYT49MCl7cmV0dXJuIHEuc3Vic3Ry
aW5nKGErKGUubGVuZ3RoKzEpKX19fXJldHVybn0sdW9vOmZ1bmN0aW9uKCl7Zi5z
Y2soIl9jc29vdCIsKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSl9LGNvbzpmdW5jdGlv
bihhKXtpZihmLnVpZD09ImFub255bW91cyImJiFmLm9vdCl7X2F0Yy54Y2s9MTtm
LnVvbygpfX0sZGNrOmZ1bmN0aW9uKGEpe2YudWlkPWE7Zi5zY2soIl9jc3VpZCIs
YSk7Zi5jb28oKX0sZ292OmZ1bmN0aW9uKCl7dmFyIGI9Zi5kbD9mLmRsLmhvc3Ru
YW1lOiIiO2lmKGIuaW5kZXhPZigiLmdvdiIpPi0xfHxiLmluZGV4T2YoIi5taWwi
KT4tMSl7X2F0Yy54Y2s9MTtfYXRjLnhmbD0xfXZhciBjPWYucHViKCksYT1bInVz
YXJteW1lZGlhIiwiZ292ZGVsaXZlcnkiXTtmb3IoSyBpbiBhKXtpZihjPT1hW0td
KXtfYXRjLnhjaz0xO19hdGMueGZsPTE7YnJlYWt9fX0sc2NrOmZ1bmN0aW9uKGIs
YSxjKXtmLmdvdigpO2lmKCFfYXRjLnhjayl7Ty5jb29raWU9YisiPSIrYSsoIWM/
IjsgZXhwaXJlcz1XZWQsIDA0IE9jdCAyMDI4IDAzOjE5OjUzIEdNVCI6IiIpKyI7
IHBhdGg9LyJ9fSxhc2V0dXA6ZnVuY3Rpb24oYil7dmFyIGM9Zjt0cnl7aWYoIWMu
Z3VpZCl7Yy5ndWlkPTE7aWYoYiE9PW51bGwmJmIhPT1fYXR1KXtjLmRjayhiKX1j
LnhsZCgpfX1jYXRjaChkKXt9cmV0dXJuIGJ9LGFvOmZ1bmN0aW9uKGIsaSxlLGMs
ZCxhKXtmLmxhZChbIm9wZW4iLGIsaSxlLGMsZCxhXSk7Zi5qbG8oKTtyZXR1cm4g
ZmFsc2V9LGFjOmZ1bmN0aW9uKCl7fSxhczpmdW5jdGlvbihiLGMsYSl7Zi5sYWQo
WyJzZW5kIixiLGMsYV0pO2YuamxvKCl9fSxSPWY7dS5fYXRlPVI7dS5fYWRyPUE7
Ty5jZT1PLmNyZWF0ZUVsZW1lbnQ7Ty5nbj1PLmdldEVsZW1lbnRzQnlUYWdOYW1l
O0EuYmluZFJlYWR5KCk7aWYoIV9hdGMub3N0KXtpZighdS5hZGR0aGlzX2NvbmYp
e3UuYWRkdGhpc19jb25mPXt9fWZvcih2YXIgSyBpbiBhZGR0aGlzX2NvbmYpe19h
dGNbS109YWRkdGhpc19jb25mW0tdfV9hdGMub3N0PTF9QS5hcHBlbmQoUi5sb2Qp
O2lmKE8uY29va2llKXt2YXIgbT1PLmNvb2tpZS5zcGxpdCgiOyIpO2Zvcih2YXIg
Sz0wO0s8bS5sZW5ndGg7SysrKXt2YXIgUD1tW0tdLG89UC5pbmRleE9mKCJfY3N1
aWQ9Iiksaz1QLmluZGV4T2YoIl9jc29vdD0iKTtpZihvPj0wKXtmLnVpZD1QLnN1
YnN0cmluZyhvKzcpfWVsc2V7aWYoaz49MCl7Zi5vb3Q9UC5zdWJzdHJpbmcoays3
KX19fX10cnl7aWYoIV9hdGMueGNzKXt2YXIgST1PLmNlKCJsaW5rIik7SS5yZWw9
InN0eWxlc2hlZXQiO0kudHlwZT0idGV4dC9jc3MiO0kuaHJlZj1fYXRyKyJzdGF0
aWMvcjA3L3dpZGdldDI5LmNzcyI7SS5tZWRpYT0iYWxsIjtPLmduKCJoZWFkIilb
MF0uYXBwZW5kQ2hpbGQoSSl9fWNhdGNoKE4pe312YXIgSD1PLmduKCJzY3JpcHQi
KSx6PUhbSC5sZW5ndGgtMV0sQj16LnNyYy5pbmRleE9mKCIjIik+LTE/ei5zcmMu
cmVwbGFjZSgvXlteXCNdK1wjPy8sIiIpOnouc3JjLnJlcGxhY2UoL15bXlw/XStc
Pz8vLCIiKSxDPWcoQik7aWYoQy5wdWIpe3UuYWRkdGhpc19wdWI9X2R1YyhDLnB1
Yil9ZWxzZXtpZihDLnVzZXJuYW1lKXt1LmFkZHRoaXNfcHViPV9kdWMoQy51c2Vy
bmFtZSl9fWlmKHUuYWRkdGhpc19wdWImJnUuYWRkdGhpc19jb25maWcpe3UuYWRk
dGhpc19jb25maWcudXNlcm5hbWU9dS5hZGR0aGlzX3B1Yn1pZihDLmRvbXJlYWR5
KXtfYXRjLmRyPTF9dHJ5e2lmKF9hdGMudmVyPT09MTIwKXt2YXIgRz0iYXRiIit1
Ll9hdGUuY3VpZCgpO08ud3JpdGUoJzxzcGFuIGlkPSInK0crJyI+PC9zcGFuPicp
O3UuX2F0ZS5pZ3YoKTt1Ll9hdGUubGFkKFsic3BhbiIsRyxhZGR0aGlzX3NoYXJl
LnVybHx8Ilt1cmxdIixhZGR0aGlzX3NoYXJlLnRpdGxlfHwiW3RpdGxlXSJdKX1p
Zih1LmFkZHRoaXNfY2xpY2tvdXQpe2YubGFkKFsiY291dCJdKX19Y2F0Y2goTil7
fX0pKCk7ZnVuY3Rpb24gYWRkdGhpc19vcGVuKGIsZixlLGMsZCxhKXtpZih0eXBl
b2YgZD09InN0cmluZyIpe2Q9bnVsbH1yZXR1cm4gX2F0ZS5hbyhiLGYsZSxjLGQs
YSl9ZnVuY3Rpb24gYWRkdGhpc19jbG9zZSgpe19hdGUuYWMoKX1mdW5jdGlvbiBh
ZGR0aGlzX3NlbmR0byhiLGMsYSl7X2F0ZS5hcyhiLGMsYSk7cmV0dXJuIGZhbHNl
fWlmKF9hdGMuZHIpe19hZHIub25SZWFkeSgpfX1lbHNle19hdGUuaW5zdCsrfWlm
KF9hdGMuYWJmKXthZGR0aGlzX29wZW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImFiIiksImVtYWlsYWIiLHdpbmRvdy5hZGR0aGlzX3VybHx8IltVUkxdIix3aW5k
b3cuYWRkdGhpc190aXRsZXx8IltUSVRMRV0iKX07aWYoIXdpbmRvdy5hZGR0aGlz
fHx3aW5kb3cuYWRkdGhpcy5ub2RlVHlwZSE9PXVuZGVmaW5lZCl7d2luZG93LmFk
ZHRoaXM9KGZ1bmN0aW9uKCl7dmFyIGE9e2FpbToiQUlNIixkb21haW50b29sc3do
b2lzOiJXaG9pcyBMb29rdXAiLGtpcnRzeToia0lSVFNZIixsaW5rYWdvZ286Ikxp
bmstYS1Hb2dvIixtZW5lYW1lOiJNZW4mZWFjdXRlO2FtZSIsbWlzdGVyd29uZzoi
TWlzdGVyIFdvbmciLG1haWx0bzoiRW1haWwgQXBwIixteWFvbDoibXlBT0wiLG15
c3BhY2U6Ik15U3BhY2UiLHJlYWRpdGxhdGVyOiJSZWFkIEl0IExhdGVyIixzaGV0
b2xkbWU6IlNoZSBUb2xkIE1lIixzdHVtYmxldXBvbjoiU3R1bWJsZVVwb24iLHR5
cGVwYWQ6IlR5cGVQYWQiLHdvcmRwcmVzczoiV29yZFByZXNzIix5YWhvb2JrbToi
WSEgQm9va21hcmtzIix5YWhvb21haWw6IlkhIE1haWwifSxjPWZ1bmN0aW9uKGYs
Zyl7dmFyIGg7aWYod2luZG93Ll9hdHcmJl9hdHcubGlzdCl7aD1fYXR3Lmxpc3Rb
Zl19ZWxzZXtpZihhW2ZdKXtoPWFbZl19ZWxzZXtoPShnP2Y6KGYuc3Vic3RyKDAs
MSkudG9VcHBlckNhc2UoKStmLnN1YnN0cigxKSkpfX1yZXR1cm4gaC5yZXBsYWNl
KC8mbmJzcDsvZywiICIpfTtmdW5jdGlvbiBkKGcsZil7cmV0dXJuIGZ1bmN0aW9u
KCl7YWRkdGhpcy5wbG8ucHVzaCh7Y2FsbDpnLGFyZ3M6YXJndW1lbnRzLG5zOmZ9
KX19ZnVuY3Rpb24gYihoKXt2YXIgZz10aGlzLGY9dGhpcy5xdWV1ZT1bXTt0aGlz
Lm5hbWU9aDt0aGlzLmNhbGw9ZnVuY3Rpb24oKXtmLnB1c2goYXJndW1lbnRzKX07
dGhpcy5jYWxsLnF1ZXVlcj10aGlzO3RoaXMuZmx1c2g9ZnVuY3Rpb24obCxrKXtm
b3IodmFyIGo9MDtqPGYubGVuZ3RoO2orKyl7bC5hcHBseShrfHxnLGZbal0pfXJl
dHVybiBsfX1yZXR1cm57b3N0OjAsY2FjaGU6e30scGxvOltdLGxpbmtzOltdLGVt
czpbXSxfUXVldWVyOmIsX3F1ZXVlRm9yOmQsYnV0dG9uOmQoImJ1dHRvbiIpLHRv
b2xib3g6ZCgidG9vbGJveCIpLHVwZGF0ZTpkKCJ1cGRhdGUiKSx1dGlsOntnZXRT
ZXJ2aWNlTmFtZTpjfX19KSgpfV9hZHIuYXBwZW5kKChmdW5jdGlvbigpe2lmKCF3
aW5kb3cuYWRkdGhpcy5vc3Qpe3ZhciBkPWRvY3VtZW50LHU9dW5kZWZpbmVkLHc9
d2luZG93LHVuYWNjZW50PWZ1bmN0aW9uKHMpe2lmKHMuaW5kZXhPZigiJiIpPi0x
KXtzPXMucmVwbGFjZSgvJihbYWVpb3VdKS4rOy9nLCIkMSIpfXJldHVybiBzfSxj
dXN0b21TZXJ2aWNlcz17fSxnbG9iYWxDb25maWc9dy5hZGR0aGlzX2NvbmZpZyxn
bG9iYWxTaGFyZT13LmFkZHRoaXNfc2hhcmUsdXBDb25maWc9e30sdXBTaGFyZT17
fSxib2R5PWQuZ24oImJvZHkiKS5pdGVtKDApLG1yZz1mdW5jdGlvbihvLG4pe2lm
KG4mJm8hPT1uKXtmb3IodmFyIGsgaW4gbil7aWYob1trXT09PXUpe29ba109bltr
XX19fX0sYWRkZ2E9ZnVuY3Rpb24obyxzcyxhdSl7dmFyIG9sZGNsaWNrPW8ub25j
bGlja3x8ZnVuY3Rpb24oKXt9O2lmKG8uY29uZi5kYXRhX2dhX3RyYWNrZXJ8fGFk
ZHRoaXNfY29uZmlnLmRhdGFfZ2FfdHJhY2tlcnx8by5jb25mLmRhdGFfZ2FfcHJv
cGVydHl8fGFkZHRoaXNfY29uZmlnLmRhdGFfZ2FfcHJvcGVydHkpe28ub25jbGlj
az1mdW5jdGlvbigpe19hdGUuZ2F0KHNzLGF1LG8uY29uZixvLnNoYXJlKTtvbGRj
bGljaygpfX19LHJwbD1mdW5jdGlvbihvLG4pe3ZhciByPXt9O2Zvcih2YXIgayBp
biBvKXtpZihuW2tdKXtyW2tdPW5ba119ZWxzZXtyW2tdPW9ba119fXJldHVybiBy
fSxhZGR0aGlzPXdpbmRvdy5hZGR0aGlzLGdlbmlldT1mdW5jdGlvbihzaGFyZSl7
cmV0dXJuIm1haWx0bzo/c3ViamVjdD0iK19ldWMoc2hhcmUudGl0bGU/c2hhcmUu
dGl0bGU6IiUyMCIpKyImYm9keT0iK19ldWMoc2hhcmUudGl0bGU/c2hhcmUudGl0
bGU6IiIpKyhzaGFyZS50aXRsZT8iJTBEJTBBIjoiIikrX2V1YyhzaGFyZS51cmwp
KyIlMEQlMEElMEQlMEFTaGFyZWQgdmlhIEFkZFRoaXMuY29tIn0sZ2ViY249ZnVu
Y3Rpb24ob1BhcmVudCx0YWcsY2xhc3NOYW1lLGFsbG93U3VmZml4LG9wdGltaXph
YmxlKXt0YWc9dGFnLnRvVXBwZXJDYXNlKCk7dmFyIGVscz0ob1BhcmVudD09Ym9k
eSYmYWRkdGhpcy5jYWNoZVt0YWddP2FkZHRoaXMuY2FjaGVbdGFnXToob1BhcmVu
dHx8Ym9keSkuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnKSkscnY9W10saSxvO2lm
KG9QYXJlbnQ9PWJvZHkpe2FkZHRoaXMuY2FjaGVbdGFnXT1lbHN9aWYob3B0aW1p
emFibGUpe2ZvcihpPTA7aTxlbHMubGVuZ3RoO2krKyl7bz1lbHNbaV07aWYoby5j
bGFzc05hbWUuaW5kZXhPZihjbGFzc05hbWUpPi0xKXtydi5wdXNoKG8pfX19ZWxz
ZXtjbGFzc05hbWU9Y2xhc3NOYW1lLnJlcGxhY2UoL1wtL2csIlxcLSIpO3ZhciBy
eD1uZXcgUmVnRXhwKCIoXnxcXHMpIitjbGFzc05hbWUrKGFsbG93U3VmZml4PyJc
XHcqIjoiIikrIihcXHN8JCkiKTtmb3IoaT0wO2k8ZWxzLmxlbmd0aDtpKyspe289
ZWxzW2ldO2lmKHJ4LnRlc3Qoby5jbGFzc05hbWUpKXtydi5wdXNoKG8pfX19cmV0
dXJuKHJ2KX0sYl90aXRsZT17ZW1haWw6IkVtYWlsIixtYWlsdG86IkVtYWlsIixw
cmludDoiUHJpbnQiLGZhdm9yaXRlczoiU2F2ZSB0byBGYXZvcml0ZXMiLHR3aXR0
ZXI6IlR3ZWV0IFRoaXMiLGRpZ2c6IkRpZ2cgVGhpcyJ9LGpzb249e2VtYWlsX3Zh
cnM6MSx0ZW1wbGF0ZXM6MSxzZXJ2aWNlc19jdXN0b206MX0sbm9zZW5kPXttb3Jl
OjEsZW1haWw6MSxtYWlsdG86MX0sbm93aW5kb3c9e2VtYWlsOjEsbWFpbHRvOjEs
cHJpbnQ6MSxtb3JlOjEsZmF2b3JpdGVzOjF9LGFfY29uZmlnPVsidXNlcm5hbWUi
LCJzZXJ2aWNlc19jdXN0b20iLCJzZXJ2aWNlc19jdXN0b21fbmFtZSIsInNlcnZp
Y2VzX2N1c3RvbV91cmwiLCJzZXJ2aWNlc19jdXN0b21fdGl0bGUiLCJzZXJ2aWNl
c19leGNsdWRlIiwic2VydmljZXNfY29tcGFjdCIsInNlcnZpY2VzX2V4cGFuZGVk
IiwidWlfY2xpY2siLCJ1aV9oaWRlX2VtYmVkIiwidWlfZGVsYXkiLCJ1aV9ob3Zl
cl9kaXJlY3Rpb24iLCJ1aV9sYW5ndWFnZSIsInVpX29mZnNldF90b3AiLCJ1aV9v
ZmZzZXRfbGVmdCIsInVpX2hlYWRlcl9jb2xvciIsInVpX2hlYWRlcl9iYWNrZ3Jv
dW5kIiwidWlfdXNlX2VtYmVkZGFibGVfc2VydmljZXNfYmV0YSIsInVpX2ljb25z
IiwidWlfY29icmFuZCIsImRhdGFfdXNlX2ZsYXNoIiwiZGF0YV91c2VfY29va2ll
cyIsImRhdGFfdHJhY2tfbGlua2JhY2siXSxhX3NoYXJlPVsidXJsIiwidGl0bGUi
LCJ0ZW1wbGF0ZXMiLCJlbWFpbF90ZW1wbGF0ZSIsImVtYWlsX3ZhcnMiLCJodG1s
Iiwic3dmdXJsIiwid2lkdGgiLCJoZWlnaHQiLCJzY3JlZW5zaG90IiwiYXV0aG9y
IiwiZGVzY3JpcHRpb24iLCJjb250ZW50Il0sZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZT1kLmdldEVsZW1lbnRzQnlDbGFzc25hbWV8fGdlYmNuLF9zdmN1cmw9ZnVuY3Rp
b24oY29uZmlnLHNoYXJlKXt2YXIgc3Y9Y29uZmlnLnNlcnZpY2VzIGluc3RhbmNl
b2YgQXJyYXk/Y29uZmlnLnNlcnZpY2VzWzBdOmNvbmZpZy5zZXJ2aWNlc3x8IiI7
cmV0dXJuImh0dHA6Ly8iK19hdGQrImJvb2ttYXJrLnBocD92PSIrX2F0Yy52ZXIr
IiZwdWI9IitfZXVjKF9hdGUucHViKCkpKyImcz0iK3N2KyhzaGFyZS51cmw/IiZ1
cmw9IitfZXVjKHNoYXJlLnVybCk6IiIpKyhzaGFyZS50aXRsZT8iJnRpdGxlPSIr
X2V1YyhzaGFyZS50aXRsZSk6IiIpKyImdHQ9MCJ9LF9zZWxlY3Q9ZnVuY3Rpb24o
d2hhdCl7aWYodHlwZW9mIHdoYXQ9PSJzdHJpbmciKXt2YXIgYz13aGF0LnN1YnN0
cigwLDEpO2lmKGM9PSIjIil7d2hhdD1kLmdldEVsZW1lbnRCeUlkKHdoYXQuc3Vi
c3RyKDEpKX1lbHNle2lmKGM9PSIuIil7d2hhdD1nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKGJvZHksIioiLHdoYXQuc3Vic3RyKDEpKX1lbHNle319fWlmKCEod2hhdCBp
bnN0YW5jZW9mIEFycmF5KSl7d2hhdD1bd2hhdF19cmV0dXJuIHdoYXR9LF9wYXJz
ZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZWwsYXR0cnMsb3ZlcnJpZGVzLGNoaWxkV2lu
cyl7dmFyIHJ2PXt9O292ZXJyaWRlcz1vdmVycmlkZXN8fHt9O2Zvcih2YXIgaT0w
O2k8YXR0cnMubGVuZ3RoO2krKyl7aWYob3ZlcnJpZGVzW2F0dHJzW2ldXSYmIWNo
aWxkV2lucyl7cnZbYXR0cnNbaV1dPW92ZXJyaWRlc1thdHRyc1tpXV19ZWxzZXtp
ZihlbCl7dmFyIHA9ImFkZHRoaXM6IithdHRyc1tpXSx2PWVsLmdldEF0dHJpYnV0
ZT9lbC5nZXRBdHRyaWJ1dGUocCl8fGVsW3BdOmVsW3BdO2lmKHYpe3J2W2F0dHJz
W2ldXT12fWVsc2V7aWYob3ZlcnJpZGVzW2F0dHJzW2ldXSl7cnZbYXR0cnNbaV1d
PW92ZXJyaWRlc1thdHRyc1tpXV19fWlmKHJ2W2F0dHJzW2ldXT09PSJ0cnVlIil7
cnZbYXR0cnNbaV1dPXRydWV9ZWxzZXtpZihydlthdHRyc1tpXV09PT0iZmFsc2Ui
KXtydlthdHRyc1tpXV09ZmFsc2V9fX19aWYocnZbYXR0cnNbaV1dIT09dW5kZWZp
bmVkJiZqc29uW2F0dHJzW2ldXSYmKHR5cGVvZiBydlthdHRyc1tpXV09PSJzdHJp
bmciKSl7ZXZhbCgidmFyIGUgPSAiK3J2W2F0dHJzW2ldXSk7cnZbYXR0cnNbaV1d
PWV9fXJldHVybiBydn0sX3Byb2Nlc3NDdXN0b21TZXJ2aWNlcz1mdW5jdGlvbihj
b25mKXt2YXIgYWNzPShjb25mfHx7fSkuc2VydmljZXNfY3VzdG9tO2lmKCFhY3Mp
e3JldHVybn1pZighKGFjcyBpbnN0YW5jZW9mIEFycmF5KSl7YWNzPVthY3NdfWZv
cih2YXIgaT0wO2k8YWNzLmxlbmd0aDtpKyspe3ZhciBzZXJ2aWNlPWFjc1tpXTtp
ZihzZXJ2aWNlLm5hbWUmJnNlcnZpY2UuaWNvbiYmc2VydmljZS51cmwpe3NlcnZp
Y2UuY29kZT1zZXJ2aWNlLnVybD1zZXJ2aWNlLnVybC5yZXBsYWNlKC8gL2csIiIp
O2lmKHNlcnZpY2UuY29kZS5pbmRleE9mKCJodHRwIik9PT0wKXtzZXJ2aWNlLmNv
ZGU9c2VydmljZS5jb2RlLnN1YnN0cigoc2VydmljZS5jb2RlLmluZGV4T2YoImh0
dHBzIik9PT0wPzg6NykpfXNlcnZpY2UuY29kZT1zZXJ2aWNlLmNvZGUuc3BsaXQo
Ij8iKS5zaGlmdCgpLnNwbGl0KCIvIikuc2hpZnQoKS50b0xvd2VyQ2FzZSgpO2N1
c3RvbVNlcnZpY2VzW3NlcnZpY2UuY29kZV09c2VydmljZX19fSxfZ2V0Q3VzdG9t
U2VydmljZT1mdW5jdGlvbihzcyxjb25mKXtyZXR1cm4gY3VzdG9tU2VydmljZXNb
c3NdfHx7fX0sX2dldEFUdHJpYnV0ZXM9ZnVuY3Rpb24oZWwsY29uZmlnLHNoYXJl
LGNoaWxkV2lucyl7dmFyIHJ2PXtjb25mOmNvbmZpZ3x8e30sc2hhcmU6c2hhcmV8
fHt9fTtydi5jb25mPV9wYXJzZUF0dHJpYnV0ZXMoZWwsYV9jb25maWcsY29uZmln
LGNoaWxkV2lucyk7cnYuc2hhcmU9X3BhcnNlQXR0cmlidXRlcyhlbCxhX3NoYXJl
LHNoYXJlLGNoaWxkV2lucyk7cmV0dXJuIHJ2fSxfcmVuZGVyPWZ1bmN0aW9uKHdo
YXQsY29uZixhdHRycyl7aWYod2hhdCl7Y29uZj1jb25mfHx7fTthdHRycz1hdHRy
c3x8e307dmFyIGNvbmZpZz1jb25mLmNvbmZ8fGdsb2JhbENvbmZpZyxzaGFyZT1j
b25mLnNoYXJlfHxnbG9iYWxTaGFyZTt2YXIgb25tb3VzZW92ZXI9YXR0cnMub25t
b3VzZW92ZXIsb25tb3VzZW91dD1hdHRycy5vbm1vdXNlb3V0LG9uY2xpY2s9YXR0
cnMub25jbGljayxpbnRlcm5hbD1hdHRycy5pbnRlcm5hbCxzcz1hdHRycy5zaW5n
bGVzZXJ2aWNlO2lmKHNzKXtjb25maWcucHJvZHVjdD0idGJ4LSIrX2F0Yy52ZXI7
aWYob25jbGljaz09PXUpe29uY2xpY2s9bm9zZW5kW3NzXT9mdW5jdGlvbihlbCxj
b25maWcsc2hhcmUpe3ZhciBzPXJwbChzaGFyZSx1cFNoYXJlKTtyZXR1cm4gYWRk
dGhpc19vcGVuKGVsLHNzLHMudXJsLHMudGl0bGUscnBsKGNvbmZpZyx1cENvbmZp
Zykscyl9Om5vd2luZG93W3NzXT9mdW5jdGlvbihlbCxjb25maWcsc2hhcmUpe3Zh
ciBzPXJwbChzaGFyZSx1cFNoYXJlKTtyZXR1cm4gYWRkdGhpc19zZW5kdG8oc3Ms
cnBsKGNvbmZpZyx1cENvbmZpZykscyl9Om51bGx9fWVsc2V7aWYoIWF0dHJzLm5v
ZXZlbnRzKXtpZighYXR0cnMubm9ob3Zlcil7aWYob25tb3VzZW92ZXI9PT11KXtv
bm1vdXNlb3Zlcj1mdW5jdGlvbihlbCxjb25maWcsc2hhcmUpe3JldHVybiBhZGR0
aGlzX29wZW4oZWwsIiIsbnVsbCxudWxsLGNvbmZpZyxzaGFyZSl9fWlmKG9ubW91
c2VvdXQ9PT11KXtvbm1vdXNlb3V0PWZ1bmN0aW9uKGVsKXtyZXR1cm4gYWRkdGhp
c19jbG9zZSgpfX1pZihvbmNsaWNrPT09dSl7b25jbGljaz1mdW5jdGlvbihlbCxj
b25maWcsc2hhcmUpe3JldHVybiBhZGR0aGlzX3NlbmR0bygibW9yZSIsY29uZmln
LHNoYXJlKX19fWVsc2V7aWYob25jbGljaz09PXUpe29uY2xpY2s9ZnVuY3Rpb24o
ZWwsY29uZmlnLHNoYXJlKXtyZXR1cm4gYWRkdGhpc19vcGVuKGVsLCJtb3JlIixu
dWxsLG51bGwsY29uZmlnLHNoYXJlKX19fX19d2hhdD1fc2VsZWN0KHdoYXQpO2Zv
cih2YXIgaT0wO2k8d2hhdC5sZW5ndGg7aSsrKXt2YXIgbz13aGF0W2ldLG9hdHRy
PV9nZXRBVHRyaWJ1dGVzKG8sY29uZmlnLHNoYXJlLHRydWUpfHx7fTttcmcob2F0
dHIuY29uZixnbG9iYWxDb25maWcpO21yZyhvYXR0ci5zaGFyZSxnbG9iYWxTaGFy
ZSk7by5jb25mPW9hdHRyLmNvbmY7by5zaGFyZT1vYXR0ci5zaGFyZTtpZihvLmNv
bmYudWlfbGFuZ3VhZ2Upe19hdGUuYWxnKG8uY29uZi51aV9sYW5ndWFnZSl9X3By
b2Nlc3NDdXN0b21TZXJ2aWNlcyhvLmNvbmYpO2lmKCFvLmNvbmZ8fCFvLmNvbmYu
dWlfY2xpY2spe2lmKG9ubW91c2VvdmVyKXtvLm9ubW91c2VvdmVyPWZ1bmN0aW9u
KCl7cmV0dXJuIG9ubW91c2VvdmVyKHRoaXMsdGhpcy5jb25mLHRoaXMuc2hhcmUp
fX1pZihvbm1vdXNlb3V0KXtvLm9ubW91c2VvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4g
b25tb3VzZW91dCh0aGlzKX19aWYob25jbGljayl7by5vbmNsaWNrPWZ1bmN0aW9u
KCl7cmV0dXJuIG9uY2xpY2sodGhpcyx0aGlzLmNvbmYsdGhpcy5zaGFyZSl9fX1l
bHNle2lmKG9uY2xpY2spe28ub25jbGljaz1mdW5jdGlvbigpe3JldHVybiBhZGR0
aGlzX29wZW4odGhpcywiIixudWxsLG51bGwsdGhpcy5jb25mLHRoaXMuc2hhcmUp
fX19aWYoby50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PSJhIil7aWYoc3Mpe3ZhciBj
dXN0b21TZXJ2aWNlPV9nZXRDdXN0b21TZXJ2aWNlKHNzLG8uY29uZik7by5jb25m
LnByb2R1Y3Q9InRieC0iK19hdGMudmVyO2lmKGN1c3RvbVNlcnZpY2UmJmN1c3Rv
bVNlcnZpY2UuY29kZSYmY3VzdG9tU2VydmljZS5pY29uKXtpZihvLmZpcnN0Q2hp
bGQmJm8uZmlyc3RDaGlsZC5jbGFzc05hbWUuaW5kZXhPZigiYXQzMDBicyIpPi0x
KXtvLmZpcnN0Q2hpbGQuc3R5bGUuYmFja2dyb3VuZD0idXJsKCIrY3VzdG9tU2Vy
dmljZS5pY29uKyIpIG5vLXJlcGVhdCB0b3AgbGVmdCJ9fWlmKCFub3dpbmRvd1tz
c10pe3ZhciB0PV9hdGUudHJpbSx0ZW1wbGF0ZT1vLnNoYXJlLnRlbXBsYXRlcyYm
by5zaGFyZS50ZW1wbGF0ZXNbc3NdP28uc2hhcmUudGVtcGxhdGVzW3NzXToiIix1
cmw9by5zaGFyZS51cmx8fGFkZHRoaXNfc2hhcmUudXJsLHRpdGxlPW8uc2hhcmUu
dGl0bGV8fGFkZHRoaXNfc2hhcmUudGl0bGUsc3dmdXJsPW8uc2hhcmUuc3dmdXJs
fHxhZGR0aGlzX3NoYXJlLnN3ZnVybCx3aWR0aD1vLnNoYXJlLndpZHRofHxhZGR0
aGlzX3NoYXJlLndpZHRoLGhlaWdodD1vLnNoYXJlLmhlaWdodHx8YWRkdGhpc19z
aGFyZS5oZWlnaHQsZGVzY3JpcHRpb249by5zaGFyZS5kZXNjcmlwdGlvbnx8YWRk
dGhpc19zaGFyZS5kZXNjcmlwdGlvbixzY3JlZW5zaG90PW8uc2hhcmUuc2NyZWVu
c2hvdHx8YWRkdGhpc19zaGFyZS5zY3JlZW5zaG90O28uaHJlZj0iLy8iK19hdGQr
ImJvb2ttYXJrLnBocD9wdWI9Iit0KGFkZHRoaXNfY29uZmlnLnVzZXJuYW1lfHxv
LmNvbmYudXNlcm5hbWV8fF9hdGUucHViKCksMSkrIiZ2PSIrX2F0Yy52ZXIrIiZz
b3VyY2U9dGJ4LSIrX2F0Yy52ZXIrIiZ0dD0wJnM9IitzcysiJnVybD0iK19ldWMo
dXJsfHwiIikrIiZ0aXRsZT0iK3QodGl0bGV8fCIiLDEpKyImY29udGVudD0iK3Qo
by5zaGFyZS5jb250ZW50fHxhZGR0aGlzX3NoYXJlLmNvbnRlbnR8fCIiLDEpKyh0
ZW1wbGF0ZT8iJnRlbXBsYXRlPSIrX2V1Yyh0ZW1wbGF0ZSk6IiIpKyhvLmNvbmYu
ZGF0YV90cmFja19saW5rYmFjaz8iJnNtc19zcz0xIjoiIikrIiZsbmc9Iisoby5j
b25mLnVpX2xhbmd1YWdlfHxfYXRlLmxuZygpfHwieHkiKS5zcGxpdCgiLSIpLnNo
aWZ0KCkrKGRlc2NyaXB0aW9uPyImZGVzY3JpcHRpb249Iit0KGRlc2NyaXB0aW9u
LDEpOiIiKSsoc3dmdXJsPyImc3dmdXJsPSIrX2V1Yyhzd2Z1cmwpOiIiKSsoYXR0
cnMuaXNzaD8iJmlwcz0xIjoiIikrKHdpZHRoPyImd2lkdGg9IitfZXVjKHdpZHRo
KToiIikrKGhlaWdodD8iJmhlaWdodD0iK19ldWMoaGVpZ2h0KToiIikrKHNjcmVl
bnNob3Q/IiZzY3JlZW5zaG90PSIrX2V1YyhzY3JlZW5zaG90KToiIikrKGN1c3Rv
bVNlcnZpY2UmJmN1c3RvbVNlcnZpY2UudXJsPyImYWNuPSIrX2V1YyhjdXN0b21T
ZXJ2aWNlLm5hbWUpKyImYWNjPSIrX2V1YyhjdXN0b21TZXJ2aWNlLmNvZGUpKyIm
YWN1PSIrX2V1YyhjdXN0b21TZXJ2aWNlLnVybCk6IiIpKyhfYXRlLnVpZD8iJnVp
ZD0iK19ldWMoX2F0ZS51aWQpOiIiKTthZGRnYShvLHNzLHVybCk7by50YXJnZXQ9
Il9ibGFuayI7YWRkdGhpcy5saW5rcy5wdXNoKG8pfWVsc2V7aWYoc3M9PSJtYWls
dG8ifHwoc3M9PSJlbWFpbCImJihvLmNvbmYudWlfdXNlX21haWx0b3x8X2F0ZS5i
cm8uaXBoKSkpe28ub25jbGljaz1mdW5jdGlvbigpe307by5ocmVmPWdlbmlldShv
LnNoYXJlKTthZGRnYShvLHNzLHVybCk7YWRkdGhpcy5lbXMucHVzaChvKX19aWYo
IW8udGl0bGUpe28udGl0bGU9dW5hY2NlbnQoYl90aXRsZVtzc10/Yl90aXRsZVtz
c106IlNlbmQgdG8gIithZGR0aGlzLnV0aWwuZ2V0U2VydmljZU5hbWUoc3MsIWN1
c3RvbVNlcnZpY2UpKX19fWlmKGludGVybmFsKXt2YXIgYXBwPWludGVybmFsO2lm
KCFvLmhhc0NoaWxkTm9kZXMoKSl7aWYoaW50ZXJuYWw9PSJpbWciKXt2YXIgaW1n
PWQuY2UoImltZyIpO2ltZy53aWR0aD0xMjU7aW1nLmhlaWdodD0xNjtpbWcuYm9y
ZGVyPTA7aW1nLmFsdD0iU2hhcmUiO2ltZy5zcmM9Ii8vczcuYWRkdGhpcy5jb20v
c3RhdGljL2J0bi92Mi9sZy1zaGFyZS1lbi5naWYiO2FwcD1pbWd9by5hcHBlbmRD
aGlsZChhcHApfX19fX0sYnV0dG9ucz1nZWJjbihib2R5LCJBIiwiYWRkdGhpc19i
dXR0b25fIix0cnVlLHRydWUpLF9yZW5kZXJUb29sYm94PWZ1bmN0aW9uKGNvbGxl
Y3Rpb24sY29uZmlnLHNoYXJlLHJlcHJvY2Vzcyl7Zm9yKHZhciBpPTA7aTxjb2xs
ZWN0aW9uLmxlbmd0aDtpKyspe3ZhciBiPWNvbGxlY3Rpb25baV07aWYoYj09bnVs
bCl7Y29udGludWV9aWYocmVwcm9jZXNzIT09ZmFsc2V8fCFiLm9zdCl7dmFyIGNv
bmZpZz1jb25maWd8fGdsb2JhbENvbmZpZyxzaGFyZT1zaGFyZXx8Z2xvYmFsU2hh
cmUsYXR0cj1fZ2V0QVR0cmlidXRlcyhiLGNvbmZpZyxzaGFyZSx0cnVlKSxoYz0w
LGE9ImF0MzAwIixjPWIuY2xhc3NOYW1lfHwiIixzPWMubWF0Y2goL2FkZHRoaXNf
YnV0dG9uXyhbXHdcLl0rKSg/OlxzfCQpLyksb3B0aW9ucz11LHN2PXMmJnMubGVu
Z3RoP3NbMV06MDtpZihzdil7aWYoc3YuaW5kZXhPZigicHJlZmVycmVkIik+LTEp
e3M9Yy5tYXRjaCgvYWRkdGhpc19idXR0b25fcHJlZmVycmVkXyhbMC05XSspKD86
XHN8JCkvKTt2YXIgc3ZpZHg9KChzJiZzLmxlbmd0aCk/TWF0aC5taW4oMTIsTWF0
aC5tYXgoMSxwYXJzZUludChzWzFdKSkpOjEpLTE7aWYod2luZG93Ll9hdHcpe3Zh
ciBleGNsPV9hdHcuY29uZi5zZXJ2aWNlc19leGNsdWRlLGxvY29wdHM9X2F0dy5s
b2Msb3B0cz1hZGR0aGlzX29wdGlvbnMucmVwbGFjZSgiLG1vcmUiLCIiKS5zcGxp
dCgiLCIpO2lmKHN2aWR4PG9wdHMubGVuZ3RoKXtzdj1vcHRzW3N2aWR4XTtsb2Nv
cHRzPWxvY29wdHMucmVwbGFjZShzdiwiIikucmVwbGFjZSgiLCwiLCIiKS5yZXBs
YWNlKC8sJHxeLC8sIiIpfWVsc2V7aWYodHlwZW9mIGxvY29wdHMhPSJhcnJheSIp
e2xvY29wdHM9bG9jb3B0cy5zcGxpdCgiLCIpfWRve2lmKHN2aWR4PGxvY29wdHMu
bGVuZ3RoKXtzdj1sb2NvcHRzW3N2aWR4XX1lbHNle2JyZWFrfX13aGlsZShleGNs
LmluZGV4T2Yoc3ZpZHgrKyk9PS0xKX1iLl9pcHM9MTtpZihiLmNsYXNzTmFtZS5p
bmRleE9mKHN2KT09LTEpe2IuY2xhc3NOYW1lKz0iIGFkZHRoaXNfYnV0dG9uXyIr
c3Z9fWVsc2V7aWYoY29uZmlnLnVpX2xhbmd1YWdlfHx3aW5kb3cuYWRkdGhpc19s
YW5ndWFnZSl7X2F0ZS5hbGcoY29uZmlnLnVpX2xhbmd1YWdlKX1fYXRlLnBsby5w
dXNoKFsiZGVjbyIsX3JlbmRlclRvb2xib3gsW2JdLGNvbmZpZyxzaGFyZSx0cnVl
XSk7aWYoX2F0ZS5nc3NoKXtfYXRlLnBsZD1fYXRlLmFqcygic3RhdGljL3IwNy9t
ZW51NDYuanMiKX1lbHNle2lmKCFfYXRlLnBsZCl7X2F0ZS5wbGQ9MTtfYXRlLnN0
bygiX2F0ZS5wbGQgPSBfYXRlLmFqcygnc3RhdGljL3IwNy9tZW51NDYuanMnKTsi
LDEwMCl9fWNvbnRpbnVlfX1pZighYi5jaGlsZE5vZGVzLmxlbmd0aCl7dmFyIHNw
PWQuY2UoInNwYW4iKTtiLmFwcGVuZENoaWxkKHNwKTtzcC5jbGFzc05hbWU9YSsi
YnMgYXQxNXRfIitzdn1lbHNle2lmKGIuY2hpbGROb2Rlcy5sZW5ndGg9PTEpe3Zh
ciBjbj1iLmNoaWxkTm9kZXNbMF07aWYoY24ubm9kZVR5cGU9PTMpe3ZhciBzcD1k
LmNlKCJzcGFuIiksdHY9Y24ubm9kZVZhbHVlO2IuaW5zZXJ0QmVmb3JlKHNwLGNu
KTtzcC5jbGFzc05hbWU9YSsiYnMgYXQxNXRfIitzdn19ZWxzZXtoYz0xfX1pZihz
dj09PSJjb21wYWN0Iil7aWYoIWhjJiZjLmluZGV4T2YoYSk9PS0xKXtiLmNsYXNz
TmFtZSs9IiAiK2ErIm0ifX1lbHNle2lmKHN2PT09ImV4cGFuZGVkIil7aWYoIWhj
JiZjLmluZGV4T2YoYSk9PS0xKXtiLmNsYXNzTmFtZSs9IiAiK2ErIm0ifW9wdGlv
bnM9e25vaG92ZXI6dHJ1ZX19ZWxzZXtpZighaGMmJmMuaW5kZXhPZihhKT09LTEp
e2IuY2xhc3NOYW1lKz0iICIrYSsiYiJ9b3B0aW9ucz17c2luZ2xlc2VydmljZTpz
dn19fWlmKGIuX2lwcyl7aWYoIW9wdGlvbnMpe29wdGlvbnM9e319b3B0aW9ucy5p
c3NoPXRydWV9X3JlbmRlcihbYl0sYXR0cixvcHRpb25zKTtiLm9zdD0xfX19fSxn
YXQ9ZnVuY3Rpb24ocyxhdSxjb25mLHNoYXJlKXt2YXIgcGFnZVRyYWNrZXI9Y29u
Zi5kYXRhX2dhX3RyYWNrZXIscHJvcGVydHlJZD1jb25mLmRhdGFfZ2FfcHJvcGVy
dHk7aWYocHJvcGVydHlJZCYmdHlwZW9mKHdpbmRvdy5fZ2F0KT09Im9iamVjdCIp
e3BhZ2VUcmFja2VyPV9nYXQuX2dldFRyYWNrZXIocHJvcGVydHlJZCl9aWYocGFn
ZVRyYWNrZXImJnR5cGVvZihwYWdlVHJhY2tlcik9PSJzdHJpbmciKXtwYWdlVHJh
Y2tlcj13aW5kb3dbcGFnZVRyYWNrZXJdfWlmKHBhZ2VUcmFja2VyJiZ0eXBlb2Yo
cGFnZVRyYWNrZXIpPT0ib2JqZWN0Iil7dmFyIGdhVXJsPWF1fHwoc2hhcmV8fHt9
KS51cmx8fGxvY2F0aW9uLmhyZWY7aWYoZ2FVcmwudG9Mb3dlckNhc2UoKS5yZXBs
YWNlKCJodHRwcyIsImh0dHAiKS5pbmRleE9mKCJodHRwJTNhJTJmJTJmIik9PTAp
e2dhVXJsPV9kdWMoZ2FVcmwpfXRyeXtwYWdlVHJhY2tlci5fdHJhY2tFdmVudCgi
YWRkdGhpcyIscyxnYVVybCl9Y2F0Y2goZSl7dHJ5e3BhZ2VUcmFja2VyLl9pbml0
RGF0YSgpO3BhZ2VUcmFja2VyLl90cmFja0V2ZW50KCJhZGR0aGlzIixzLGdhVXJs
KX1jYXRjaChlKXt9fX19O19hdGUuZ2F0PWdhdDthZGR0aGlzLnVwZGF0ZT1mdW5j
dGlvbih3aGljaCx3aGF0LHZhbHVlKXtpZih3aGljaD09InNoYXJlIil7aWYoIXdp
bmRvdy5hZGR0aGlzX3NoYXJlKXt3aW5kb3cuYWRkdGhpc19zaGFyZT17fX13aW5k
b3cuYWRkdGhpc19zaGFyZVt3aGF0XT12YWx1ZTt1cFNoYXJlW3doYXRdPXZhbHVl
O2Zvcih2YXIgaSBpbiBhZGR0aGlzLmxpbmtzKXt2YXIgbz1hZGR0aGlzLmxpbmtz
W2ldLHJ4PW5ldyBSZWdFeHAoIiYiK3doYXQrIj0oLiopJiIpLG5zPSImIit3aGF0
KyI9IitfZXVjKHZhbHVlKSsiJiI7by5ocmVmPW8uaHJlZi5yZXBsYWNlKHJ4LG5z
KTtpZihvLmhyZWYuaW5kZXhPZih3aGF0KT09LTEpe28uaHJlZis9bnN9fWZvcih2
YXIgaSBpbiBhZGR0aGlzLmVtcyl7dmFyIG89YWRkdGhpcy5lbXNbaV07by5ocmVm
PWdlbmlldShhZGR0aGlzX3NoYXJlKX19ZWxzZXtpZih3aGljaD09ImNvbmZpZyIp
e2lmKCF3aW5kb3cuYWRkdGhpc19jb25maWcpe3dpbmRvdy5hZGR0aGlzX2NvbmZp
Zz17fX13aW5kb3cuYWRkdGhpc19jb25maWdbd2hhdF09dmFsdWU7dXBDb25maWdb
d2hhdF09dmFsdWV9fX07YWRkdGhpcy5idXR0b249ZnVuY3Rpb24od2hhdCxjb25m
aWcsc2hhcmUpe19yZW5kZXIod2hhdCx7Y29uZjpjb25maWcsc2hhcmU6c2hhcmV9
LHtpbnRlcm5hbDoiaW1nIn0pfTthZGR0aGlzLnRvb2xib3g9ZnVuY3Rpb24od2hh
dCxjb25maWcsc2hhcmUpe3ZhciB0b29sYm94ZXM9X3NlbGVjdCh3aGF0KTtmb3Io
dmFyIGk9MDtpPHRvb2xib3hlcy5sZW5ndGg7aSsrKXt2YXIgdGI9dG9vbGJveGVz
W2ldLGF0dHI9X2dldEFUdHJpYnV0ZXModGIsY29uZmlnLHNoYXJlKSxzcD1kLmNl
KCJkaXYiKSxjPXRiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIik7aWYoYyl7X3Jl
bmRlclRvb2xib3goYyxhdHRyLmNvbmYsYXR0ci5zaGFyZSl9dGIuYXBwZW5kQ2hp
bGQoc3ApO3NwLmNsYXNzTmFtZT0iYXRjbGVhciJ9fTthZGR0aGlzLnJlYWR5PWZ1
bmN0aW9uKCl7dmFyIGF0PWFkZHRoaXMsYT0iLmFkZHRoaXNfIjtpZihhdC5vc3Qp
e3JldHVybn1hdC5vc3Q9MTthZGR0aGlzLnRvb2xib3goYSsidG9vbGJveCIpO2Fk
ZHRoaXMuYnV0dG9uKGErImJ1dHRvbiIpO19yZW5kZXJUb29sYm94KGJ1dHRvbnMs
bnVsbCxudWxsLGZhbHNlKTtmb3IodmFyIGk9MCxwbG89YXQucGxvLHE7aTxwbG8u
bGVuZ3RoO2krKyl7cT1wbG9baV07KHEubnM/YXRbcS5uc106YXQpW3EuY2FsbF0u
YXBwbHkodGhpcyxxLmFyZ3MpfX07d2luZG93LmFkZHRoaXM9YWRkdGhpczt3aW5k
b3cuYWRkdGhpcy5yZWFkeSgpfX0pKTtfYXRlLmV4dGVuZChhZGR0aGlzLHt1c2Vy
OihmdW5jdGlvbigpe3ZhciBmPV9hdGUsYz1hZGR0aGlzLGc9e30sZD0wLGo7ZnVu
Y3Rpb24gaShhLGspe3JldHVybiBmLnJlZHVjZShbImdldElEIiwiZ2V0U2Vydmlj
ZVNoYXJlSGlzdG9yeSJdLGEsayl9ZnVuY3Rpb24gaChhLGspe3JldHVybiBmdW5j
dGlvbihsKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bChmW2FdfHxrKX0sMCl9fWZ1
bmN0aW9uIGIoKXtpZihkKXtyZXR1cm59aWYoaiE9PW51bGwpe2NsZWFyVGltZW91
dChqKX1qPW51bGw7ZD0xO2koZnVuY3Rpb24obCxhLGspe2dbYV09Z1thXS5xdWV1
ZXIuZmx1c2goaC5hcHBseShjLGxba10pLGMpO3JldHVybiBsfSxbWyJ1aWQiLCIi
XSxbIl9zc2giLFtdXV0pfWYuX3JlYy5wdXNoKGIpO2o9c2V0VGltZW91dChiLDUw
MDApO2cuZ2V0UHJlZmVycmVkU2VydmljZXM9ZnVuY3Rpb24oYSl7aWYod2luZG93
Ll9hdHcpe2EoYWRkdGhpc19vcHRpb25zLnNwbGl0KCIsIikpfWVsc2V7Zi5wbG8u
cHVzaChbInByZWYiLGFdKTtfYXRlLmFsZygpO2lmKGYuZ3NzaCl7Zi5wbGQ9Zi5h
anMoInN0YXRpYy9yMDcvbWVudTQ2LmpzIil9ZWxzZXtpZighZi5wbGQpe2YucGxk
PTE7Zi5zdG8oIl9hdGUucGxkID0gX2F0ZS5hanMoJ3N0YXRpYy9yMDcvbWVudTQ2
LmpzJyk7IiwxMDApfX19fTtyZXR1cm4gaShmdW5jdGlvbihrLGEpe2tbYV09KG5l
dyBjLl9RdWV1ZXIoYSkpLmNhbGw7cmV0dXJuIGt9LGcpfSkoKX0pOw==

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=google-story2-rb.js
Content-Type: application/x-javascript; charset=iso-8859-1; name=google-story2-rb.js
Content-Location: http://www.sciencedaily.com/scripts/google-story2-rb.js
Content-Transfer-Encoding: Base64

ZnVuY3Rpb24gd29yZHdyYXAgKHRleHQpIHsKCXJldHVybiB0ZXh0LnJlcGxhY2Uo
LyhbQS1aXC9cLl17MX0pL2csIiYjODIwMzskMSIpOwp9CgpmdW5jdGlvbiBnb29n
bGVfYWRfcmVxdWVzdF9kb25lKGdvb2dsZV9hZHMpIHsKCgl2YXIgZ29vZ2xlX251
bV9hZHMgPSBnb29nbGVfYWRzLmxlbmd0aDsKCWlmIChnb29nbGVfbnVtX2FkcyA8
PSAwKSByZXR1cm47CgkKCXZhciBmaXJzdEFkVW5pdCAJPSAnPGRpdiBzdHlsZT0i
Zm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogMHB4
IDAgMnB4IDAiPjxhIGhyZWY9IicgKyBnb29nbGVfaW5mby5mZWVkYmFja191cmwg
KyAnIiBjbGFzcz0iYmxhY2siPkFkcyBieSBHb29nbGU8L2E+PC9kaXY+PGhyIC8+
JzsKCXZhciBzZWNvbmRBZFVuaXQgCT0gKGdvb2dsZV9udW1fYWRzID4gNCkgPyBm
aXJzdEFkVW5pdCA6ICcnOwoJCglmb3IgKGkgPSAwOyBpIDwgZ29vZ2xlX251bV9h
ZHM7IGkrKykgewoJCgkJaWYgKGdvb2dsZV9udW1fYWRzID09IDEgfHwgKGdvb2ds
ZV9udW1fYWRzID09IDUgJiYgaSA9PSA0KSkgewoJCQl2YXIgaXRlbSA9CSc8c3Ry
b25nPjxhIG9ubW91c2VvdmVyPSJqYXZhc2NyaXB0OndpbmRvdy5zdGF0dXM9XCcn
ICsKCQkJCQkJCWdvb2dsZV9hZHNbaV0udXJsICsgJ1wnO3JldHVybiB0cnVlOyIg
JyArCgkJCQkJCQknb25tb3VzZW91dD0iamF2YXNjcmlwdDp3aW5kb3cuc3RhdHVz
PVwnXCc7cmV0dXJuIHRydWU7IiAnICsKCQkJCQkJCSdocmVmPSInICsgZ29vZ2xl
X2Fkc1tpXS51cmwgKyAnIiBjbGFzcz0icmVkIj4nICsKCQkJCgkJCQkJCQknPHNw
YW4gc3R5bGU9ImZvbnQtc2l6ZTogMjBweCI+JyArIGdvb2dsZV9hZHNbaV0ubGlu
ZTEgKyAnPC9zcGFuPjwvYT48L3N0cm9uZz48YnIgLz4nICsgCgkJCQkJCQknPHNw
YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweCI+JyArIGdvb2dsZV9hZHNbaV0ubGlu
ZTIgKyAnPC9zcGFuPjxiciAvPicgKyAKCQkJCQkJCSc8c3BhbiBzdHlsZT0iZm9u
dC1zaXplOiAxNnB4Ij4nICsgZ29vZ2xlX2Fkc1tpXS5saW5lMyArICc8L3NwYW4+
PGJyIC8+JyArIAoJCQkJCQkJCgkJCQkJCQknPGEgb25tb3VzZW92ZXI9ImphdmFz
Y3JpcHQ6d2luZG93LnN0YXR1cz1cJycgKwoJCQkJCQkJZ29vZ2xlX2Fkc1tpXS51
cmwgKyAnXCc7cmV0dXJuIHRydWU7IiAnICsKCQkJCQkJCSdvbm1vdXNlb3V0PSJq
YXZhc2NyaXB0OndpbmRvdy5zdGF0dXM9XCdcJztyZXR1cm4gdHJ1ZTsiICcgKwoJ
CQkJCQkJJ2hyZWY9IicgKyBnb29nbGVfYWRzW2ldLnVybCArICciIGNsYXNzPSJi
bHVlIj4nICsKCQkJCQkJCQoJCQkJCQkJJzxzcGFuIHN0eWxlPSJmb250LXNpemU6
IDE0cHgiPicgKyB3b3Jkd3JhcChnb29nbGVfYWRzW2ldLnZpc2libGVfdXJsKSAr
ICc8L3NwYW4+PC9hPic7CQoJCX0gZWxzZSB7CgkJCXZhciBpdGVtID0JJzxzdHJv
bmc+PGEgb25tb3VzZW92ZXI9ImphdmFzY3JpcHQ6d2luZG93LnN0YXR1cz1cJycg
KwoJCQkJCQkJZ29vZ2xlX2Fkc1tpXS51cmwgKyAnXCc7cmV0dXJuIHRydWU7IiAn
ICsKCQkJCQkJCSdvbm1vdXNlb3V0PSJqYXZhc2NyaXB0OndpbmRvdy5zdGF0dXM9
XCdcJztyZXR1cm4gdHJ1ZTsiICcgKwoJCQkJCQkJJ2hyZWY9IicgKyBnb29nbGVf
YWRzW2ldLnVybCArICciIGNsYXNzPSJyZWQiPicgKwoJCQkKCQkJCQkJCWdvb2ds
ZV9hZHNbaV0ubGluZTEgKyAnPC9hPjwvc3Ryb25nPjxiciAvPicgKyAKCQkJCQkJ
CWdvb2dsZV9hZHNbaV0ubGluZTIgKyAnPGJyIC8+JyArIAoJCQkJCQkJZ29vZ2xl
X2Fkc1tpXS5saW5lMyArICc8YnIgLz4nICsgCgkJCQkJCQkKCQkJCQkJCSc8YSBv
bm1vdXNlb3Zlcj0iamF2YXNjcmlwdDp3aW5kb3cuc3RhdHVzPVwnJyArCgkJCQkJ
CQlnb29nbGVfYWRzW2ldLnVybCArICdcJztyZXR1cm4gdHJ1ZTsiICcgKwoJCQkJ
CQkJJ29ubW91c2VvdXQ9ImphdmFzY3JpcHQ6d2luZG93LnN0YXR1cz1cJ1wnO3Jl
dHVybiB0cnVlOyIgJyArCgkJCQkJCQknaHJlZj0iJyArIGdvb2dsZV9hZHNbaV0u
dXJsICsgJyIgY2xhc3M9ImJsdWUiPicgKwoJCQkJCQkJCgkJCQkJCQl3b3Jkd3Jh
cChnb29nbGVfYWRzW2ldLnZpc2libGVfdXJsKSArICc8L2E+JzsJCgkJfQoKCQlm
aXJzdEFkVW5pdAkJKz0gKGkgPCA0KSA/ICgnPGRpdj4nICsgaXRlbSArICc8L2Rp
dj4nKSA6ICcnOwoJCXNlY29uZEFkVW5pdAkrPSAoaSA+IDMgJiYgaSA8IDgpID8g
KCc8ZGl2PicgKyBpdGVtICsgJzwvZGl2PicpIDogJyc7CgkJCgl9CgoJdmFyIGJv
dHRvbSA9ICc8ZGl2IGNsYXNzPSJjbGVhciI+PC9kaXY+JzsKCWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJnb29nbGVwaG90byIpLmlubmVySFRNTCA9IGZpcnN0QWRV
bml0ICsgYm90dG9tOwoJaWYgKGdvb2dsZV9hZHMubGVuZ3RoID4gNCkgewoJCWRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJnb29nbGVyZWxhdGVkIikuaW5uZXJIVE1M
ID0gc2Vjb25kQWRVbml0ICsgYm90dG9tOwoJfQp9Cgpnb29nbGVfYWRfY2xpZW50
ID0gInB1Yi0xNzg3NjcyNjU4NzU5MDc0IjsKZ29vZ2xlX2FkX291dHB1dCA9ICJq
cyI7Cmdvb2dsZV9tYXhfbnVtX2FkcyA9ICI4IjsKZ29vZ2xlX2ZlZWRiYWNrID0g
Im9uIjsKZ29vZ2xlX2FkX3JlZ2lvbiA9ICJ0ZXN0IjsKCg==

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=show_ads.js
Content-Type: text/javascript; charset=UTF-8; name=show_ads.js
Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js
Content-Transfer-Encoding: Quoted-Printable

(function(){var g=3Dtrue,h=3Dnull,j=3Dfalse,aa=3D(new Date).getTime(),k=3D=
function(a){var b=3D(new Date).getTime()-aa;b=3D"&dtd=3D"+(b<1E3?b:"M");=
return a+b};var l=3Dthis,ba=3Dfunction(a,b,c){a=3Da.split(".");c=3Dc||l;=
!(a[0]in c)&&c.execScript&&c.execScript("var "+a[0]);for(var d;a.length&=
&(d=3Da.shift());)if(!a.length&&b!=3D=3Dundefined)c[d]=3Db;else c=3Dc[d]=
?c[d]:(c[d]=3D{})},m=3Dfunction(a){var b=3Dtypeof a;if(b=3D=3D"object")i=
f(a){if(a instanceof Array||!(a instanceof Object)&&Object.prototype.toS=
tring.call(a)=3D=3D"[object Array]"||typeof a.length=3D=3D"number"&&type=
of a.splice!=3D"undefined"&&typeof a.propertyIsEnumerable!=3D"undefined"=
&&!a.propertyIsEnumerable("splice"))return"array";
if(!(a instanceof Object)&&(Object.prototype.toString.call(a)=3D=3D"[obj=
ect Function]"||typeof a.call!=3D"undefined"&&typeof a.propertyIsEnumera=
ble!=3D"undefined"&&!a.propertyIsEnumerable("call")))return"function"}el=
se return"null";else if(b=3D=3D"function"&&typeof a.call=3D=3D"undefined=
")return"object";return b},o=3Dfunction(a){return m(a)=3D=3D"array"},ca=3D=
function(a){var b=3Dm(a);return b=3D=3D"array"||b=3D=3D"object"&&typeof =
a.length=3D=3D"number"},p=3Dfunction(a){return typeof a=3D=3D"string"},d=
a=3Dfunction(a){a=3Dm(a);return a=3D=3D"object"||
a=3D=3D"array"||a=3D=3D"function"},ea=3Dfunction(a){var b=3Dm(a);if(b=3D=
=3D"object"||b=3D=3D"array"){if(a.clone)return a.clone.call(a);b=3Db=3D=3D=
"array"?[]:{};for(var c in a)b[c]=3Dea(a[c]);return b}return a},fa=3Dfun=
ction(a,b){var c=3Db||l;if(arguments.length>2){var d=3DArray.prototype.s=
lice.call(arguments,2);return function(){var e=3DArray.prototype.slice.c=
all(arguments);Array.prototype.unshift.apply(e,d);return a.apply(c,e)}}e=
lse return function(){return a.apply(c,arguments)}},ga=3DDate.now||funct=
ion(){return+new Date},q=3Dfunction(a,
b,c){ba(a,b,c)};var r=3Dfunction(a,b){a=3DparseFloat(a);return isNaN(a)|=
|a>1||a<0?b:a},s=3Dfunction(a,b){if(a=3D=3D"true")return g;if(a=3D=3D"fa=
lse")return j;return b},ha=3D/^([\w-]+\.)*([\w-]{2,})(\:[0-9]+)?$/,t=3Df=
unction(a,b){if(!a)return b;return(a=3Da.match(ha))?a[0]:b};var ia=3Dfun=
ction(){return t("","googleads.g.doubleclick.net")},ja=3Dfunction(){retu=
rn t("","pagead2.googlesyndication.com")},u=3Dfunction(){return t("","pa=
gead2.googlesyndication.com")};var v=3DArray.prototype,ka=3Dv.forEach?fu=
nction(a,b,c){v.forEach.call(a,b,c)}:function(a,b,c){for(var d=3Da.lengt=
h,e=3Dp(a)?a.split(""):a,f=3D0;f<d;f++)f in e&&b.call(c,e[f],f,a)},la=3D=
function(){return v.concat.apply(v,arguments)},ma=3Dfunction(a){if(o(a))=
return la(a);else{for(var b=3D[],c=3D0,d=3Da.length;c<d;c++)b[c]=3Da[c];=
return b}};var w=3Dfunction(a,b){this.width=3Da;this.height=3Db};w.proto=
type.clone=3Dfunction(){return new w(this.width,this.height)};w.prototyp=
e.toString=3Dfunction(){return"("+this.width+" x "+this.height+")"};w.pr=
ototype.ceil=3Dfunction(){this.width=3DMath.ceil(this.width);this.height=
=3DMath.ceil(this.height);return this};w.prototype.floor=3Dfunction(){th=
is.width=3DMath.floor(this.width);this.height=3DMath.floor(this.height);=
return this};
w.prototype.round=3Dfunction(){this.width=3DMath.round(this.width);this.=
height=3DMath.round(this.height);return this};w.prototype.scale=3Dfuncti=
on(a){this.width*=3Da;this.height*=3Da;return this};var na=3Dfunction(a,=
b,c){for(var d in a)b.call(c,a[d],d,a)};var ta=3Dfunction(a,b){if(b)retu=
rn a.replace(oa,"&amp;").replace(pa,"&lt;").replace(qa,"&gt;").replace(r=
a,"&quot;");else{if(!sa.test(a))return a;if(a.indexOf("&")!=3D-1)a=3Da.r=
eplace(oa,"&amp;");if(a.indexOf("<")!=3D-1)a=3Da.replace(pa,"&lt;");if(a=
.indexOf(">")!=3D-1)a=3Da.replace(qa,"&gt;");if(a.indexOf('"')!=3D-1)a=3D=
a.replace(ra,"&quot;");return a}},oa=3D/&/g,pa=3D/</g,qa=3D/>/g,ra=3D/\"=
/g,sa=3D/[&<>\"]/,wa=3Dfunction(a){if(a.indexOf("&")!=3D-1)return"docume=
nt"in l&&a.indexOf("<")=3D=3D-1?ua(a):va(a);return a},ua=3Dfunction(a){v=
ar b=3D
l.document.createElement("a");b.innerHTML=3Da;b.normalize&&b.normalize()=
;a=3Db.firstChild.nodeValue;b.innerHTML=3D"";return a},va=3Dfunction(a){=
return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"=
&";case "lt":return"<";case "gt":return">";case "quot":return'"';default=
:if(c.charAt(0)=3D=3D"#"){c=3DNumber("0"+c.substr(1));if(!isNaN(c))retur=
n String.fromCharCode(c)}return b}})},xa=3Dfunction(a,b){for(var c=3Db.l=
ength,d=3D0;d<c;d++){var e=3Dc=3D=3D1?b:b.charAt(d);if(a.charAt(0)=3D=3D=
e&&a.charAt(a.length-1)=3D=3De)return a.substring(1,
a.length-1)}return a},ya=3Dfunction(a,b){var c=3D0;a=3DString(a).replace=
(/^[\s\xa0]+|[\s\xa0]+$/g,"").split(".");b=3DString(b).replace(/^[\s\xa0=
]+|[\s\xa0]+$/g,"").split(".");for(var d=3DMath.max(a.length,b.length),e=
=3D0;c=3D=3D0&&e<d;e++){var f=3Da[e]||"",i=3Db[e]||"",n=3Dnew RegExp("(\=
\d*)(\\D*)","g"),y=3Dnew RegExp("(\\d*)(\\D*)","g");do{var F=3Dn.exec(f)=
||["","",""],G=3Dy.exec(i)||["","",""];if(F[0].length=3D=3D0&&G[0].lengt=
h=3D=3D0)break;c=3DF[1].length=3D=3D0?0:parseInt(F[1],10);var ob=3DG[1].=
length=3D=3D0?0:parseInt(G[1],10);c=3Dx(c,ob)||
x(F[2].length=3D=3D0,G[2].length=3D=3D0)||x(F[2],G[2])}while(c=3D=3D0)}r=
eturn c},x=3Dfunction(a,b){if(a<b)return-1;else if(a>b)return 1;return 0=
};ga();var z,A,B,C,D,za,Aa,Ba,Ca,Da=3Dfunction(){return l.navigator?l.na=
vigator.userAgent:h},E=3Dfunction(){return l.navigator},Ea=3Dfunction(){=
D=3DC=3DB=3DA=3Dz=3Dj;var a;if(a=3DDa()){var b=3DE();z=3Da.indexOf("Oper=
a")=3D=3D0;A=3D!z&&a.indexOf("MSIE")!=3D-1;C=3D(B=3D!z&&a.indexOf("WebKi=
t")!=3D-1)&&a.indexOf("Mobile")!=3D-1;D=3D!z&&!B&&b.product=3D=3D"Gecko"=
}};Ea();
var H=3Dz,I=3DA,Fa=3DD,Ga=3DB,Ha=3DC,Ia=3Dfunction(){var a=3DE();return =
a&&a.platform||""},Ja=3DIa(),Ka=3Dfunction(){za=3DJa.indexOf("Mac")!=3D-=
1;Aa=3DJa.indexOf("Win")!=3D-1;Ba=3DJa.indexOf("Linux")!=3D-1;Ca=3D!!E()=
&&(E().appVersion||"").indexOf("X11")!=3D-1};Ka();
var La=3Dza,Ma=3DAa,Na=3DBa,Oa=3Dfunction(){var a=3D"",b;if(H&&l.opera){=
a=3Dl.opera.version;a=3Dtypeof a=3D=3D"function"?a():a}else{if(Fa)b=3D/r=
v\:([^\);]+)(\)|;)/;else if(I)b=3D/MSIE\s+([^\);]+)(\)|;)/;else if(Ga)b=3D=
/WebKit\/(\S+)/;if(b)a=3D(a=3Db.exec(Da()))?a[1]:""}return a},Pa=3DOa(),=
Qa=3D{},J=3Dfunction(a){return Qa[a]||(Qa[a]=3Dya(Pa,a)>=3D0)};var Ra=3D=
function(a){return p(a)?document.getElementById(a):a},Sa=3DRa,Ua=3Dfunct=
ion(a,b){na(b,function(c,d){if(d=3D=3D"style")a.style.cssText=3Dc;else i=
f(d=3D=3D"class")a.className=3Dc;else if(d=3D=3D"for")a.htmlFor=3Dc;else=
 if(d in Ta)a.setAttribute(Ta[d],c);else a[d]=3Dc})},Ta=3D{cellpadding:"=
cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"rowSpa=
n",valign:"vAlign",height:"height",width:"width",usemap:"useMap",framebo=
rder:"frameBorder",type:"type"},Va=3Dfunction(a){var b=3Da.document;if(G=
a&&!J("500")&&!Ha){if(typeof a.innerHeight=3D=3D
"undefined")a=3Dwindow;b=3Da.innerHeight;var c=3Da.document.documentElem=
ent.scrollHeight;if(a=3D=3Da.top)if(c<b)b-=3D15;return new w(a.innerWidt=
h,b)}a=3Db.compatMode=3D=3D"CSS1Compat"&&(!H||H&&J("9.50"))?b.documentEl=
ement:b.body;return new w(a.clientWidth,a.clientHeight)},Xa=3Dfunction()=
{return Wa(document,arguments)},Wa=3Dfunction(a,b){var c=3Db[0],d=3Db[1]=
;if(I&&d&&(d.name||d.type)){c=3D["<",c];d.name&&c.push(' name=3D"',ta(d.=
name),'"');if(d.type){c.push(' type=3D"',ta(d.type),'"');d=3Dea(d);delet=
e d.type}c.push(">");c=3Dc.join("")}var e=3D
a.createElement(c);if(d)if(p(d))e.className=3Dd;else Ua(e,d);if(b.length=
>2){d=3Dfunction(i){if(i)e.appendChild(p(i)?a.createTextNode(i):i)};for(=
c=3D2;c<b.length;c++){var f=3Db[c];ca(f)&&!(da(f)&&f.nodeType>0)?ka(Ya(f=
)?ma(f):f,d):d(f)}}return e},Za=3Dfunction(a,b){a.appendChild(b)},Ya=3Df=
unction(a){if(a&&typeof a.length=3D=3D"number")if(da(a))return typeof a.=
item=3D=3D"function"||typeof a.item=3D=3D"string";else if(m(a)=3D=3D"fun=
ction")return typeof a.item=3D=3D"function";return j};var $a=3Ddocument,=
K=3Dwindow;u();var L=3Dfunction(a,b){for(var c in a)Object.prototype.has=
OwnProperty.call(a,c)&&b.call(h,a[c],c,a)},ab=3Dfunction(a){if(arguments=
.length<2)return a.length;for(var b=3D1,c=3Darguments.length;b<c;++b)a.p=
ush(arguments[b]);return a.length};function M(a){return typeof encodeURI=
Component=3D=3D"function"?encodeURIComponent(a):escape(a)}
function bb(a,b,c){var d=3Ddocument.createElement("script");d.type=3D"te=
xt/javascript";if(b)d.onload=3Db;if(c)d.id=3Dc;d.src=3Da;var e=3Ddocumen=
t.getElementsByTagName("head")[0];if(!e)return j;window.setTimeout(funct=
ion(){e.appendChild(d)},0);return g}function cb(a,b){a.google_image_requ=
ests||(a.google_image_requests=3D[]);var c=3Dnew Image;c.src=3Db;a.googl=
e_image_requests.push(c)}function db(a){if(a in eb)return eb[a];return e=
b[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var eb=3D{};
function fb(){if(navigator.plugins&&navigator.mimeTypes.length){var a=3D=
navigator.plugins["Shockwave Flash"];if(a&&a.description)return a.descri=
ption.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else if(navigat=
or.userAgent&&navigator.userAgent.indexOf("Windows CE")>=3D0){a=3D3;for(=
var b=3D1;b;)try{b=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash."+=
(a+1));a++}catch(c){b=3Dh}return a.toString()}else if(db("msie")&&!windo=
w.opera){b=3Dh;try{b=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.=
7")}catch(d){a=3D
0;try{b=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");a=3D6;b.A=
llowScriptAccess=3D"always"}catch(e){if(a=3D=3D6)return a.toString()}try=
{b=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(f){}}if(b)=
{a=3Db.GetVariable("$version").split(" ")[1];return a.replace(/,/g,".")}=
}return"0"}function N(a){var b=3Da.google_ad_format;if(b)return b.indexO=
f("_0ads")>0;return a.google_ad_output!=3D"html"&&a.google_num_radlinks>=
0}function O(a){return!!a&&a.indexOf("_sdo")!=3D-1}
function P(a,b){if(!(Math.random()<1.0E-4)){var c=3DMath.random();if(c<b=
){b=3DMath.floor(c/b*a.length);return a[b]}}return""}
var gb=3Dfunction(a){a.u_tz=3D-(new Date).getTimezoneOffset();a.u_his=3D=
window.history.length;a.u_java=3Dnavigator.javaEnabled();if(window.scree=
n){a.u_h=3Dwindow.screen.height;a.u_w=3Dwindow.screen.width;a.u_ah=3Dwin=
dow.screen.availHeight;a.u_aw=3Dwindow.screen.availWidth;a.u_cd=3Dwindow=
.screen.colorDepth}if(navigator.plugins)a.u_nplug=3Dnavigator.plugins.le=
ngth;if(navigator.mimeTypes)a.u_nmime=3Dnavigator.mimeTypes.length},hb=3D=
function(a){var b=3DK;if(a&&b.top!=3Db)b=3Db.top;try{return b.document&&=
!b.document.body?new w(-1,
-1):Va(b||window)}catch(c){return new w(-12245933,-12245933)}},ib=3Dfunc=
tion(a,b){var c=3Da.length;if(c=3D=3D0)return 0;b=3Db||305419896;for(var=
 d=3D0;d<c;d++){var e=3Da.charCodeAt(d);b^=3D(b<<5)+(b>>2)+e&4294967295}=
return b},jb=3Dfunction(a){if(a=3D=3Da.top)return 0;var b=3D[];b.push(do=
cument.URL);a.name&&b.push(a.name);a=3Dg;a=3Dhb(!a);b.push(a.width.toStr=
ing());b.push(a.height.toString());b=3Dib(b.join(""));return b>0?b:42949=
67296+b};var kb=3D{google_ad_channel:"channel",google_ad_host:"host",goo=
gle_ad_host_channel:"h_ch",google_ad_host_tier_id:"ht_id",google_ad_sect=
ion:"region",google_ad_type:"ad_type",google_adtest:"adtest",google_allo=
w_expandable_ads:"ea",google_alternate_ad_url:"alternate_ad_url",google_=
alternate_color:"alt_color",google_bid:"bid",google_city:"gcs",google_co=
lor_bg:"color_bg",google_color_border:"color_border",google_color_line:"=
color_line",google_color_link:"color_link",google_color_text:"color_text=
",google_color_url:"color_url",
google_contents:"contents",google_country:"gl",google_cust_age:"cust_age=
",google_cust_ch:"cust_ch",google_cust_gender:"cust_gender",google_cust_=
id:"cust_id",google_cust_interests:"cust_interests",google_cust_job:"cus=
t_job",google_cust_l:"cust_l",google_cust_lh:"cust_lh",google_cust_u_url=
:"cust_u_url",google_disable_video_autoplay:"disable_video_autoplay",goo=
gle_ed:"ed",google_encoding:"oe",google_feedback:"feedback_link",google_=
flash_version:"flash",google_font_face:"f",google_font_size:"fs",google_=
hints:"hints",
google_kw:"kw",google_kw_type:"kw_type",google_language:"hl",google_page=
_url:"url",google_region:"gr",google_reuse_colors:"reuse_colors",google_=
safe:"adsafe",google_tag_info:"gut",google_targeting:"targeting",google_=
ui_features:"ui",google_ui_version:"uiv",google_video_doc_id:"video_doc_=
id",google_video_product_type:"video_product_type"},lb=3D{google_ad_clie=
nt:"client",google_ad_format:"format",google_ad_output:"output",google_a=
d_callback:"callback",google_ad_height:"h",google_ad_override:"google_ad=
_override",
google_ad_slot:"slotname",google_ad_width:"w",google_ctr_threshold:"ctr_=
t",google_image_size:"image_size",google_last_modified_time:"lmt",google=
_max_num_ads:"num_ads",google_max_radlink_len:"max_radlink_len",google_n=
um_radlinks:"num_radlinks",google_num_radlinks_per_unit:"num_radlinks_pe=
r_unit",google_only_ads_with_video:"only_ads_with_video",google_rl_dest_=
url:"rl_dest_url",google_rl_filtering:"rl_filtering",google_rl_mode:"rl_=
mode",google_rt:"rt",google_skip:"skip"},mb=3D{google_only_pyv_ads:"pyv"=
,
google_with_pyv_ads:"withpyv"};function nb(a,b){try{return a.top.documen=
t.URL=3D=3Db.URL}catch(c){}return j}function pb(a,b,c,d){c=3Dc||a.google=
_ad_width;d=3Dd||a.google_ad_height;if(nb(a,b))return j;var e=3Db.docume=
ntElement;if(c&&d){var f=3D1,i=3D1;if(a.innerHeight){f=3Da.innerWidth;i=3D=
a.innerHeight}else if(e&&e.clientHeight){f=3De.clientWidth;i=3De.clientH=
eight}else if(b.body){f=3Db.body.clientWidth;i=3Db.body.clientHeight}if(=
i>2*d||f>2*c)return j}return g}function qb(a,b){L(b,function(c,d){a["goo=
gle_"+d]=3Dc})}
function rb(a,b){if(!b)return a.URL;return a.referrer}function sb(a,b){i=
f(!b&&a.google_referrer_url=3D=3Dh)return"0";else if(b&&a.google_referre=
r_url=3D=3Dh)return"1";else if(!b&&a.google_referrer_url!=3Dh)return"2";=
else if(b&&a.google_referrer_url!=3Dh)return"3";return"4"}function tb(a,=
b,c,d){a.page_url=3Drb(c,d);a.page_location=3Dh}function ub(a,b,c,d){a.p=
age_url=3Db.google_page_url;a.page_location=3Drb(c,d)||"EMPTY"}
function vb(a,b){var c=3D{},d=3Dpb(a,b,a.google_ad_width,a.google_ad_hei=
ght);c.iframing=3Dsb(a,d);a.google_page_url?ub(c,a,b,d):tb(c,a,b,d);c.la=
st_modified_time=3Db.URL=3D=3Dc.page_url?Date.parse(b.lastModified)/1E3:=
h;c.referrer_url=3Dd?a.google_referrer_url:a.google_page_url&&a.google_r=
eferrer_url?a.google_referrer_url:b.referrer;return c}function wb(a){var=
 b=3D{},c=3Da.URL.substring(a.URL.lastIndexOf("http"));b.iframing=3Dh;b.=
page_url=3Dc;b.page_location=3Da.URL;b.last_modified_time=3Dh;b.referrer=
_url=3Dc;return b}
function xb(a,b){b=3Dyb(a,b);qb(a,b)}function yb(a,b){return a=3Da.googl=
e_page_url=3D=3Dh&&zb[b.domain]?wb(b):vb(a,b)}var zb=3D{};zb["ad.yieldma=
nager.com"]=3Dg;var Ab=3Dr("0.0001",0),Bb=3Dr("1",0.01),Cb=3Dr("0.01",0)=
,Db=3Dr("0.01",0),Eb=3Dr("0.008",0),Fb=3Dr("0.01",0),Gb=3Dr("0",0);var H=
b=3Ds("false",j),Ib=3Ds("false",j),Jb=3Ds("false",j);var Kb=3Dfunction(a=
,b,c){b=3Dfa(b,l,a);a=3Dwindow.onerror;window.onerror=3Db;try{c()}catch(=
d){c=3Dd.toString();var e=3D"";if(d.fileName)e=3Dd.fileName;var f=3D-1;i=
f(d.lineNumber)f=3Dd.lineNumber;b=3Db(c,e,f);if(!b)throw d;}window.onerr=
or=3Da};q("google_protectAndRun",Kb);
var Mb=3Dfunction(a,b,c,d){if(Math.random()<0.01){var e=3D$a;a=3D["http:=
//",ja(),"/pagead/gen_204","?id=3Djserror","&jscb=3D",Hb?1:0,"&jscd=3D",=
Ib?1:0,"&context=3D",M(a),"&msg=3D",M(b),"&file=3D",M(c),"&line=3D",M(d.=
toString()),"&url=3D",M(e.URL.substring(0,512)),"&ref=3D",M(e.referrer.s=
ubstring(0,512))];a.push(Lb());cb(K,a.join(""))}return!Jb};q("google_han=
dleError",Mb);
var Ob=3Dfunction(a){Nb|=3Da},Nb=3D0,Lb=3Dfunction(){var a=3D["&client=3D=
",M(K.google_ad_client),"&format=3D",M(K.google_ad_format),"&slotname=3D=
",M(K.google_ad_slot),"&output=3D",M(K.google_ad_output),"&ad_type=3D",M=
(K.google_ad_type)];return a.join("")};var Q=3D"",Rb=3Dfunction(){if(win=
dow.google_ad_frameborder=3D=3Dh)window.google_ad_frameborder=3D0;if(win=
dow.google_ad_output=3D=3Dh)window.google_ad_output=3D"html";if(O(window=
.google_ad_format)){var a=3Dwindow.google_ad_format.match(/^(\d+)x(\d+)_=
.*/);if(a){window.google_ad_width=3DparseInt(a[1],10);window.google_ad_h=
eight=3DparseInt(a[2],10);window.google_ad_output=3D"html"}}window.googl=
e_ad_format=3DPb(window.google_ad_format,window.google_ad_output,window.=
google_ad_width,window.google_ad_height,window.google_ad_slot,
!!window.google_override_format);Q=3Dwindow.google_ad_client||"";window.=
google_ad_client=3DQb(window.google_ad_format,window.google_ad_client);x=
b(window,document);if(window.google_num_slots_by_channel=3D=3Dh)window.g=
oogle_num_slots_by_channel=3D{};if(window.google_viewed_host_channels=3D=
=3Dh)window.google_viewed_host_channels=3D{};if(window.google_num_slots_=
by_client=3D=3Dh)window.google_num_slots_by_client=3D{};if(window.google=
_prev_ad_formats_by_region=3D=3Dh)window.google_prev_ad_formats_by_regio=
n=3D{};if(window.google_prev_ad_slotnames_by_region=3D=3D
h)window.google_prev_ad_slotnames_by_region=3D{};if(window.google_correl=
ator=3D=3Dh)window.google_correlator=3D(new Date).getTime();if(window.go=
ogle_adslot_loaded=3D=3Dh)window.google_adslot_loaded=3D{};if(window.goo=
gle_adContentsBySlot=3D=3Dh)window.google_adContentsBySlot=3D{};if(windo=
w.google_flash_version=3D=3Dh)window.google_flash_version=3Dfb();if(wind=
ow.google_new_domain_checked=3D=3Dh)window.google_new_domain_checked=3D0=
;if(window.google_new_domain_enabled=3D=3Dh)window.google_new_domain_ena=
bled=3D0;if(!window.google_num_ad_slots)window.google_num_ad_slots=3D
0;if(!window.google_num_0ad_slots)window.google_num_0ad_slots=3D0;if(!wi=
ndow.google_num_sdo_slots)window.google_num_sdo_slots=3D0;window.google_=
ad_section=3Dwindow.google_ad_section||window.google_ad_region||"";windo=
w.google_country=3Dwindow.google_country||window.google_gl||"";a=3D(new =
Date).getTime();if(o(window.google_color_bg))window.google_color_bg=3DR(=
window.google_color_bg,a);if(o(window.google_color_text))window.google_c=
olor_text=3DR(window.google_color_text,a);if(o(window.google_color_link)=
)window.google_color_link=3D
R(window.google_color_link,a);if(o(window.google_color_url))window.googl=
e_color_url=3DR(window.google_color_url,a);if(o(window.google_color_bord=
er))window.google_color_border=3DR(window.google_color_border,a);if(o(wi=
ndow.google_color_line))window.google_color_line=3DR(window.google_color=
_line,a)},Sb=3Dfunction(a){L(kb,function(b,c){a[c]=3Dh});L(lb,function(b=
,c){a[c]=3Dh});L(mb,function(b,c){a[c]=3Dh});a.google_container_id=3Dh;a=
.google_eids=3Dh;a.google_page_location=3Dh;a.google_referrer_url=3Dh;a.=
google_ad_region=3Dh;
a.google_gl=3Dh},R=3Dfunction(a,b){Ob(2);return a[b%a.length]},Qb=3Dfunc=
tion(a,b){if(!b)return"";b=3Db.toLowerCase();return b=3DO(a)?Tb(b):Ub(b)=
},Ub=3Dfunction(a){if(a&&a.substring(0,3)!=3D"ca-")a=3D"ca-"+a;return a}=
,Tb=3Dfunction(a){if(a&&a.substring(0,7)!=3D"ca-aff-")a=3D"ca-aff-"+a;re=
turn a},Pb=3Dfunction(a,b,c,d,e,f){if(!a&&b=3D=3D"html")a=3Dc+"x"+d;retu=
rn a=3DVb(a,e,f)?a.toLowerCase():""},Vb=3Dfunction(a,b,c){if(!a)return j=
;if(!b)return g;return c};var S=3Ddocument,T=3Dnavigator,U=3Dwindow;
function Wb(){var a=3DS.cookie,b=3DMath.round((new Date).getTime()/1E3),=
c=3DU.google_analytics_domain_name;c=3Dtypeof c=3D=3D"undefined"?Xb("aut=
o"):Xb(c);var d=3Da.indexOf("__utma=3D"+c+".")>-1,e=3Da.indexOf("__utmb=3D=
"+c)>-1,f=3Da.indexOf("__utmc=3D"+c)>-1,i=3D{},n=3D!!U&&!!U.gaGlobal;if(=
d){a=3Da.split("__utma=3D"+c+".")[1].split(";")[0].split(".");i.sid=3De&=
&f?a[3]+"":n&&U.gaGlobal.sid?U.gaGlobal.sid:b+"";i.vid=3Da[0]+"."+a[1];i=
.from_cookie=3Dg}else{i.sid=3Dn&&U.gaGlobal.sid?U.gaGlobal.sid:b+"";i.vi=
d=3Dn&&U.gaGlobal.vid?U.gaGlobal.vid:
(Math.round(Math.random()*2147483647)^Yb()&2147483647)+"."+b;i.from_cook=
ie=3Dj}i.dh=3Dc;i.hid=3Dn&&U.gaGlobal.hid?U.gaGlobal.hid:Math.round(Math=
.random()*2147483647);return U.gaGlobal=3Di}
function Yb(){var a=3DS.cookie?S.cookie:"",b=3DU.history.length,c,d=3D[T=
.appName,T.version,T.language?T.language:T.browserLanguage,T.platform,T.=
userAgent,T.javaEnabled()?1:0].join("");if(U.screen)d+=3DU.screen.width+=
"x"+U.screen.height+U.screen.colorDepth;else if(U.java){c=3Djava.awt.Too=
lkit.getDefaultToolkit().getScreenSize();d+=3Dc.screen.width+"x"+c.scree=
n.height}d+=3Da;d+=3DS.referrer?S.referrer:"";for(a=3Dd.length;b>0;)d+=3D=
b--^a++;return Zb(d)}
function Zb(a){var b=3D1,c=3D0,d;if(!(a=3D=3Dundefined||a=3D=3D"")){b=3D=
0;for(d=3Da.length-1;d>=3D0;d--){c=3Da.charCodeAt(d);b=3D(b<<6&268435455=
)+c+(c<<14);c=3Db&266338304;b=3Dc!=3D0?b^c>>21:b}}return b}function Xb(a=
){if(!a||a=3D=3D""||a=3D=3D"none")return 1;if("auto"=3D=3Da){a=3DS.domai=
n;if("www."=3D=3Da.substring(0,4))a=3Da.substring(4,a.length)}return Zb(=
a.toLowerCase())};var V=3Dfunction(){this.defaultBucket=3D[];this.layers=
=3D{};for(var a=3D0,b=3Darguments.length;a<b;++a)this.layers[arguments[a=
]]=3D""},$b=3Dfunction(a){for(var b=3Dnew V,c=3D0,d=3Da.defaultBucket.le=
ngth;c<d;++c)b.defaultBucket.push(a.defaultBucket[c]);L(a.layers,fa(V.pr=
ototype.f,b));return b},ac=3Dfunction(a){if(!(a&&a.defaultBucket&&a.defa=
ultBucket.push&&a.layers))return j;var b=3Dg,c=3Dfunction(d,e){if(!(e in=
 a)||typeof d!=3Dtypeof a[e])b=3Dj};L(V.prototype,c);return b};V.prototy=
pe.f=3Dfunction(a,b){this.layers[b]=3Da};
V.prototype.z=3Dfunction(a,b){if(a=3D=3D"")return"";if(!b){this.defaultB=
ucket.push(a);return a}if(this.layers.hasOwnProperty(b))return this.laye=
rs[b]=3Da;return""};V.prototype.d=3Dfunction(a,b,c){if(!(Math.random()<1=
.0E-4)&&this.p(c)){var d=3DMath.random();if(d<b){b=3DMath.floor(a.length=
*d/b);if(a=3Da[b])return this.z(a,c)}}return""};V.prototype.p=3Dfunction=
(a){if(!a)return g;return this.layers.hasOwnProperty(a)&&this.layers[a]=3D=
=3D""};V.prototype.a=3Dfunction(a){if(this.layers.hasOwnProperty(a))retu=
rn this.layers[a];return""};
V.prototype.o=3Dfunction(){var a=3D[],b=3Dfunction(c){c!=3D""&&a.push(c)=
};L(this.layers,b);if(this.defaultBucket.length>0&&a.length>0)return thi=
s.defaultBucket.join(",")+","+a.join(",");return this.defaultBucket.join=
(",")+a.join(",")};var bc=3D{google:1,googlegroups:1,gmail:1,googlemail:=
1,googleimages:1,googleprint:1};function cc(a){a=3Da.google_page_locatio=
n||a.google_page_url;if(!a)return j;a=3Da.toString();if(a.indexOf("http:=
//")=3D=3D0)a=3Da.substring(7,a.length);else if(a.indexOf("https://")=3D=
=3D0)a=3Da.substring(8,a.length);var b=3Da.indexOf("/");if(b=3D=3D-1)b=3D=
a.length;a=3Da.substring(0,b);a=3Da.split(".");b=3Dj;if(a.length>=3D3)b=3D=
a[a.length-3]in bc;if(a.length>=3D2)b=3Db||a[a.length-2]in bc;return b}
function dc(a,b,c){if(cc(a)){a.google_new_domain_checked=3D1;return j}if=
(a.google_new_domain_checked=3D=3D0){var d=3DMath.random();if(d<=3Dc){c=3D=
"http://"+ia()+"/pagead/test_domain.js";d=3D"script";b.write("<"+d+' src=
=3D"'+c+'"></'+d+">");a.google_new_domain_checked=3D1;return g}}return j=
}var ec=3Dfunction(a,b){if(!b)return j;if(b.a("1")=3D=3D"44901211")retur=
n 0=3D=3Da%2;if(b.a("1")=3D=3D"44901215")return 0=3D=3DMath.floor(a/2)%2=
;if(b.a("1")=3D=3D"44901216")return 1=3D=3DMath.floor(a/2)%2;return j};
function fc(a,b,c){if(!cc(a)&&a.google_new_domain_enabled=3D=3D1)return =
ec(b,c)?"http://"+t("","googleads2.g.doubleclick.net"):"http://"+ia();re=
turn"http://"+ja()};var W=3Dfunction(a){this.A=3Da;this.i=3D[];this.h=3D=
0;this.b=3D[];this.t=3D0;this.c=3D[];this.r=3Dj;this.j=3Dthis.k=3D"";thi=
s.q=3Dj};W.prototype.v=3Dfunction(a,b){var c=3Dthis.A[b],d=3Dthis.i;this=
.A[b]=3Dfunction(e){if(e&&e.length>0){var f=3De.length>1?e[1].url:h;d.pu=
sh([a,wa(e[0].url),f])}c(e)}};W.prototype.u=3Dfunction(){this.h++};W.pro=
totype.w=3Dfunction(a){this.b.push(a)};var gc=3D"http://"+u()+"/pagead/o=
sd.js";W.prototype.s=3Dfunction(){if(!this.r){bb(gc);this.r=3Dg}};
W.prototype.l=3Dfunction(a){if(this.h>0)for(var b=3Ddocument.getElements=
ByTagName("iframe"),c=3Dthis.q?"google_ads_iframe_":"google_ads_frame",d=
=3D0;d<b.length;d++){var e=3Db.item(d);e.src&&e.name&&e.name.indexOf(c)=3D=
=3D0&&a(e,e.src)}};
W.prototype.m=3Dfunction(a){var b=3Dthis.i;if(b.length>0)for(var c=3Ddoc=
ument.getElementsByTagName("a"),d=3D0;d<c.length;d++)for(var e=3D0;e<b.l=
ength;e++)if(c.item(d).href=3D=3Db[e][1]){var f=3Dc.item(d).parentNode;i=
f(b[e][2])for(var i=3Df,n=3D0;n<4;n++){if(i.innerHTML.indexOf(b[e][2])>0=
){f=3Di;break}i=3Di.parentNode}a(f,b[e][0]);b.splice(e,1);break}};W.prot=
otype.n=3Dfunction(a){for(var b=3D0;b<this.b.length;b++){var c=3Dthis.b[=
b],d=3Dhc(c);if(d)(d=3Ddocument.getElementById("google_ads_div_"+d))&&a(=
d,c)}};
W.prototype.e=3Dfunction(a){this.m(a);this.n(a);this.l(a)};W.prototype.s=
etupOsd=3Dfunction(a,b,c){this.t=3Da;this.k=3Db;this.j=3Dc};W.prototype.=
getOsdMode=3Dfunction(){return this.t};W.prototype.getEid=3Dfunction(){r=
eturn this.k};W.prototype.getCorrelator=3Dfunction(){return this.j};W.pr=
ototype.g=3Dfunction(){return this.i.length+this.h+this.b.length};W.prot=
otype.setValidOutputTypes=3Dfunction(a){this.c=3Da};
W.prototype.registerAdBlockByType=3Dfunction(a,b,c){if(this.c.length>0){=
for(var d=3D0;d<this.c.length;d++)if(this.c[d]=3D=3Da){this.q=3Dc;if(a=3D=
=3D"js")this.v(b,"google_ad_request_done");else if(a=3D=3D"html")this.u(=
);else a=3D=3D"json_html"&&this.w(b)}this.s()}};var hc=3Dfunction(a){if(=
(a=3Da.match(/[&\?](?:slotname)=3D([^&]+)/))&&a.length=3D=3D2)return a[1=
];return""},ic=3Dfunction(){window.__google_ad_urls||(window.__google_ad=
_urls=3Dnew W(window));return window.__google_ad_urls};q("Goog_AdSense_g=
etAdAdapterInstance",ic);
q("Goog_AdSense_OsdAdapter",W);q("Goog_AdSense_OsdAdapter.prototype.numB=
locks",W.prototype.g);q("Goog_AdSense_OsdAdapter.prototype.findBlocks",W=
.prototype.e);q("Goog_AdSense_OsdAdapter.prototype.getOsdMode",W.prototy=
pe.getOsdMode);q("Goog_AdSense_OsdAdapter.prototype.getEid",W.prototype.=
getEid);q("Goog_AdSense_OsdAdapter.prototype.getCorrelator",W.prototype.=
getCorrelator);q("Goog_AdSense_OsdAdapter.prototype.setValidOutputTypes"=
,W.prototype.setValidOutputTypes);
q("Goog_AdSense_OsdAdapter.prototype.setupOsd",W.prototype.setupOsd);q("=
Goog_AdSense_OsdAdapter.prototype.registerAdBlockByType",W.prototype.reg=
isterAdBlockByType);var jc=3Dfunction(a,b){var c=3Da.nodeType=3D=3D9?a:a=
.ownerDocument||a.document;if(c.defaultView&&c.defaultView.getComputedSt=
yle)if(a=3Dc.defaultView.getComputedStyle(a,""))return a[b];return h},kc=
=3Dfunction(a,b){return jc(a,b)||(a.currentStyle?a.currentStyle[b]:h)||a=
.style[b]},lc=3Dfunction(a,b,c,d){if(/^\d+px?$/.test(b))return parseInt(=
b,10);else{var e=3Da.style[c],f=3Da.runtimeStyle[c];a.runtimeStyle[c]=3D=
a.currentStyle[c];a.style[c]=3Db;b=3Da.style[d];a.style[c]=3De;a.runtime=
Style[c]=3Df;return b}},mc=3Dfunction(a){var b=3D
a.nodeType=3D=3D9?a:a.ownerDocument||a.document,c=3D"";if(b.createTextRa=
nge){c=3Db.body.createTextRange();c.moveToElementText(a);c=3Dc.queryComm=
andValue("FontName")}if(!c){c=3Dkc(a,"fontFamily");if(H&&Na)c=3Dc.replac=
e(/ \[[^\]]*\]/,"")}a=3Dc.split(",");if(a.length>1)c=3Da[0];return xa(c,=
"\"'")},nc=3D/[^\d]+$/,oc=3Dfunction(a){return(a=3Da.match(nc))&&a[0]||h=
},pc=3D{cm:1,"in":1,mm:1,pc:1,pt:1},qc=3D{em:1,ex:1},rc=3Dfunction(a){va=
r b=3Dkc(a,"fontSize"),c=3Doc(b);if(b&&"px"=3D=3Dc)return parseInt(b,10)=
;if(I)if(c in pc)return lc(a,b,"left",
"pixelLeft");else if(a.parentNode&&a.parentNode.nodeType=3D=3D1&&c in qc=
){a=3Da.parentNode;c=3Dkc(a,"fontSize");return lc(a,b=3D=3Dc?"1em":b,"le=
ft","pixelLeft")}c=3DXa("span",{style:"visibility:hidden;position:absolu=
te;line-height:0;padding:0;margin:0;border:0;height:1em;"});Za(a,c);b=3D=
c.offsetHeight;c&&c.parentNode&&c.parentNode.removeChild(c);return b};va=
r sc,X=3D{};function tc(a){if(a=3D=3D1)return g;return!X[a]}function uc(=
a,b){if(!(!a||a=3D=3D""))if(b=3D=3D1)if(X[b])X[b]+=3D","+a;else X[b]=3Da=
;else X[b]=3Da}function vc(){var a=3D[];L(X,function(b){a.push(b)});retu=
rn a.join(",")}function wc(a,b){if(o(a))for(var c=3D0;c<a.length;c++)p(a=
[c])&&uc(a[c],b)}var Y=3Dj;
function xc(a,b){var c=3D"script";Y=3Dyc(a,b);if(!Y)a.google_allow_expan=
dable_ads=3Dj;var d=3D!zc();Y&&d&&b.write("<"+c+' src=3D"http://'+u()+'/=
pagead/expansion_embed.js"></'+c+">");a=3Ddc(a,b,Bb);(d=3Dd||a)&&db("msi=
e")&&!window.opera?b.write("<"+c+' src=3D"http://'+u()+'/pagead/render_a=
ds.js"></'+c+">"):b.write("<"+c+'>google_protectAndRun("ads_core.google_=
render_ad", google_handleError, google_render_ad);</'+c+">")}function Z(=
a){return a!=3Dh?'"'+a+'"':'""'}
function Ac(a){var b=3D"google_unique_id";if(a[b])++a[b];else a[b]=3D1;r=
eturn a[b]}var Bc=3Dfunction(a,b){var c=3Db.slice(-1),d=3Dc=3D=3D"?"||c=3D=
=3D"#"?"":"&",e=3D[b];b=3Dfunction(f,i){if(f||f=3D=3D=3D0||f=3D=3D=3Dj){=
if(typeof f=3D=3D"boolean")f=3Df?1:0;ab(e,d,i,"=3D",M(f));d=3D"&"}};L(a,=
b);return e.join("")};function Cc(){var a=3DI&&J("6"),b=3DFa&&J("1.8.1")=
,c=3DGa&&J("525");if(Ma&&(a||b||c))return g;else if(La&&(c||b))return g;=
else if(Na&&b)return g;return j}
function zc(){return(typeof ExpandableAdSlotFactory=3D=3D"function"||typ=
eof ExpandableAdSlotFactory=3D=3D"object")&&typeof ExpandableAdSlotFacto=
ry.createIframe=3D=3D"function"}function yc(a,b){if(a.google_allow_expan=
dable_ads=3D=3D=3Dj||!b.body||a.google_ad_output!=3D"html"||pb(a,b)||!Dc=
(a)||isNaN(a.google_ad_height)||isNaN(a.google_ad_width)||!Cc())return j=
;return g}function Dc(a){var b=3Da.google_ad_format;if(O(b))return j;if(=
N(a)&&b!=3D"468x15_0ads_al")return j;return g}
function Ec(){var a;if(K.google_ad_output=3D=3D"html"&&!(N(K)||O(K.googl=
e_ad_format))&&tc(0)){a=3D["6083035","6083034"];a=3DP(a,Gb);uc(a,0)}retu=
rn a=3D=3D"6083035"}function Fc(a,b){if((a.google_unique_id||0)!=3D0||O(=
a.google_ad_format))return"";var c=3D"";a=3DN(a);if(b=3D=3D"html"||a)c=3D=
P(["36815001","36815002"],Cb);if(c=3D=3D""&&(b=3D=3D"js"||a))c=3DP(["368=
15003","36815004"],Db);if(c=3D=3D""&&(b=3D=3D"html"||b=3D=3D"js"))c=3DP(=
["36813005","36813006"],Eb);return c}
function Gc(){var a=3Dic(),b=3Dwindow.google_enable_osd,c;if(b=3D=3D=3Dg=
){c=3D"36813006";Hc(c,a)}else if(b!=3D=3Dj&&tc(0)){c=3Da.getEid();if(c=3D=
=3D"")(c=3DFc(window,window.google_ad_output))&&Hc(c,a);else if(c!=3D"36=
815001"&&c!=3D"36815002"&&c!=3D"36815003"&&c!=3D"36815004"&&c!=3D"368130=
05"&&c!=3D"36813006")c=3D""}if(c){uc(c,0);return c}return""}
function Hc(a,b){var c=3Db.getOsdMode(),d=3D[];switch(a){case "36815004"=
:c=3D1;d=3D["js"];break;case "36815002":c=3D1;d=3D["html"];break;case "3=
6813006":c=3D0;d=3D["html","js"];break}d.length>0&&b.setValidOutputTypes=
(d);b.setupOsd(c,a,window.google_correlator)}
function Ic(a,b,c,d){var e=3DAc(a);c=3DBc({ifi:e},c);c=3Dc.substring(0,1=
992);c=3Dc.replace(/%\w?$/,"");var f=3D"script";if((a.google_ad_output=3D=
=3D"js"||a.google_ad_output=3D=3D"json_html")&&(a.google_ad_request_done=
||a.google_radlink_request_done))b.write("<"+f+' language=3D"JavaScript1=
.1" src=3D'+Z(k(c))+"></"+f+">");else if(a.google_ad_output=3D=3D"html")=
if(Y&&zc()){b=3Da.google_container_id||d||h;a["google_expandable_ad_slot=
"+e]=3DExpandableAdSlotFactory.createIframe("google_ads_frame"+e,k(c),a.=
google_ad_width,a.google_ad_height,
b)}else{e=3D'<iframe name=3D"google_ads_frame" width=3D'+Z(a.google_ad_w=
idth)+" height=3D"+Z(a.google_ad_height)+" frameborder=3D"+Z(a.google_ad=
_frameborder)+" src=3D"+Z(k(c))+' marginwidth=3D"0" marginheight=3D"0" v=
space=3D"0" hspace=3D"0" allowtransparency=3D"true" scrolling=3D"no"></i=
frame>';a.google_container_id?Jc(a.google_container_id,b,e):b.write(e)}r=
eturn c}function Kc(a){Sb(a)}
function Lc(a){var b=3DMc().a("ac1")=3D=3D"44901217";if(!Nc(b))return j;=
b=3DEc();var c=3Dfc(window,window.google_unique_id||0,Mc());a=3DOc(a);b=3D=
c+Pc(a.google_ad_format,b);window.google_ad_url=3DBc(a,b);return g}
var Sc=3Dfunction(a){a.dt=3Daa;var b=3Dwindow.google_prev_ad_formats_by_=
region,c=3Dwindow.google_ad_section,d=3Dwindow.google_ad_format,e=3Dwind=
ow.google_ad_slot;if(b[c])if(!O(d)){a.prev_fmts=3Db[c];if(window.google_=
num_slots_by_client.length>1)a.slot=3Dwindow.google_num_slots_by_client[=
Q]}var f=3Dwindow.google_prev_ad_slotnames_by_region;if(f[c])a.prev_slot=
names=3Df[c].toLowerCase();if(d){if(!O(d))if(b[c])b[c]+=3D","+d;else b[c=
]=3Dd}else if(e)if(f[c])f[c]+=3D","+e;else f[c]=3De;a.correlator=3Dwindo=
w.google_correlator;if(window.google_new_domain_checked=3D=3D
1&&window.google_new_domain_enabled=3D=3D0)a.dblk=3D1;if(window.google_a=
d_channel){b=3Dwindow.google_num_slots_by_channel;c=3D"";d=3Dwindow.goog=
le_ad_channel.split(Qc);for(e=3D0;e<d.length;e++){f=3Dd[e];if(b[f])c+=3D=
f+"+";else b[f]=3D1}a.pv_ch=3Dc}if(window.google_ad_host_channel){b=3DRc=
(window.google_ad_host_channel,window.google_viewed_host_channels);a.pv_=
h_ch=3Db}if(Hb)a.jscb=3D1;if(Ib)a.jscd=3D1;a.frm=3Dwindow.google_iframin=
g;b=3DWb();a.ga_vid=3Db.vid;a.ga_sid=3Db.sid;a.ga_hid=3Db.hid;a.ga_fc=3D=
b.from_cookie;a.ga_wpids=3Dwindow.google_analytics_uacct},
Tc=3Dfunction(a){var b=3Dg;if(b=3Dhb(b)){a.biw=3Db.width;a.bih=3Db.heigh=
t}},Uc=3Dfunction(a){var b=3Djb(window);if(b!=3D0)a.ifk=3Db.toString()};=
function Rc(a,b){var c=3Da.split("|");a=3D-1;for(var d=3D[],e=3D0;e<c.le=
ngth;e++){var f=3Dc[e].split(Qc);b[e]||(b[e]=3D{});for(var i=3D"",n=3D0;=
n<f.length;n++){var y=3Df[n];if(y!=3D"")if(b[e][y])i+=3D"+"+y;else b[e][=
y]=3D1}i=3Di.slice(1);d[e]=3Di;if(i!=3D"")a=3De}b=3D"";if(a>-1){for(e=3D=
0;e<a;e++)b+=3Dd[e]+"|";b+=3Dd[a]}return b}
var $=3Dfunction(){if(window.google_exp_persistent&&ac(window.google_exp=
_persistent))return window.google_exp_persistent;return new V("1","ac1")=
};q("google_exp_persistent",$());var Mc=3Dfunction(){sc||(sc=3D$b($()));=
return sc};function Vc(){var a=3D["44901211","44901215","44901216","4490=
1212"];$().d(a,Ab,"1");a=3D["44901217","44901218"];$().d(a,Fb,"ac1")}
function Wc(){0=3D=3D(window.google_unique_id||0)&&Vc();var a=3DGc(),b=3D=
Math.random()<0.01,c=3Dh,d=3D"";if(b){d=3D"google_temp_span";c=3DXc(d)}b=
=3DLc(c);c&&c.id=3D=3Dd&&(c&&c.parentNode?c.parentNode.removeChild(c):h)=
;if(b){c=3DIc(window,document,window.google_ad_url);a&&ic().registerAdBl=
ockByType(window.google_ad_output,c,j);Kc(window)}}
var Yc=3Dfunction(a){L(lb,function(b,c){a[b]=3Dwindow[c]});L(kb,function=
(b,c){a[b]=3Dwindow[c]});L(mb,function(b,c){a[b]=3Dwindow[c]})},Zc=3Dfun=
ction(a){wc(window.google_eids,1);a.eid=3Dvc();var b=3DMc().o();if(a.eid=
.length>0&&b.length>0)a.eid+=3D",";a.eid+=3Db};function $c(a,b,c,d){a=3D=
Mb(a,b,c,d);xc(window,document);return a}function ad(){Rb()}
function bd(a){var b=3D{};a=3Da.split("?");a=3Da[a.length-1].split("&");=
for(var c=3D0;c<a.length;c++){var d=3Da[c].split("=3D");if(d[0])try{b[d[=
0].toLowerCase()]=3Dd.length>1?window.decodeURIComponent?decodeURICompon=
ent(d[1].replace(/\+/g," ")):unescape(d[1]):""}catch(e){}}return b}funct=
ion cd(){var a=3Dwindow,b=3Dbd(document.URL);if(b.google_ad_override){a.=
google_ad_override=3Db.google_ad_override;a.google_adtest=3D"on"}}
function Jc(a,b,c){if(a)if((a=3Db.getElementById(a))&&c&&c.length!=3D"")=
{a.style.visibility=3D"visible";a.innerHTML=3Dc}}
var Pc=3Dfunction(a,b){return a=3DO(a)?"/pagead/sdo?":b?"/pagead/render_=
iframe_ads.html#":"/pagead/ads?"},dd=3Dfunction(a,b){b.dff=3Dmc(a);b.dfs=
=3Drc(a)},ed=3Dfunction(a){a.ref=3Dwindow.google_referrer_url;a.loc=3Dwi=
ndow.google_page_location},Nc=3Dfunction(a){var b=3Dwindow.google_prev_a=
d_formats_by_region,c=3Dwindow.google_prev_ad_slotnames_by_region,d=3Dwi=
ndow.google_ad_section;if(O(window.google_ad_format)){window.google_num_=
sdo_slots+=3D1;if(!a&&window.google_num_sdo_slots>4)return j}else if(N(w=
indow)){window.google_num_0ad_slots+=3D
1;if(!a&&window.google_num_0ad_slots>3)return j}else{window.google_num_a=
d_slots+=3D1;if(window.google_num_slots_to_rotate){Ob(1);b[d]=3Dh;c[d]=3D=
h;if(window.google_num_slot_to_show=3D=3Dh)window.google_num_slot_to_sho=
w=3D(new Date).getTime()%window.google_num_slots_to_rotate+1;if(window.g=
oogle_num_slot_to_show!=3Dwindow.google_num_ad_slots)return j}else if(!a=
&&window.google_num_ad_slots>6&&d=3D=3D"")return j}a=3Dwindow.google_num=
_slots_by_client;if(a[Q])a[Q]+=3D1;else{a[Q]=3D1;a.length+=3D1}return g}=
,Oc=3Dfunction(a){var b=3D
{};Yc(b);Sc(b);gb(b);a&&dd(a,b);Tc(b);Uc(b);Zc(b);ed(b);b.fu=3DNb;return=
 b},Xc=3Dfunction(a){var b=3Dwindow.google_container_id&&Sa(window.googl=
e_container_id)||Sa(a);if(!b&&!window.google_container_id&&a){document.w=
rite("<span id=3D"+a+"></span>");b=3DSa(a)}return b},Qc=3D/[+, ]/;window=
.google_render_ad=3DWc;function fd(){if(Jb&&typeof K.alternateShowAds=3D=
=3D"function")K.alternateShowAds.call(h);else{cd();Kb("show_ads.google_i=
nit_globals",$c,ad);xc(window,document)}}Kb("show_ads.main",Mb,fd);})()

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=2008-02-07.jpg
Content-Type: image/jpeg; name=2008-02-07.jpg
Content-Location: http://www.sciencedaily.com/videos/images/2008/2008-02-07.jpg
Content-Transfer-Encoding: Base64

/9j/4AAQSkZJRgABAgEASABIAAD/4ReTRXhpZgAATU0AKgAAAAgABwESAAMAAAAB
AAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAc
AAAAcgEyAAIAAAAUAAAAjodpAAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQ
QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzADIwMDg6MDE6MzEgMTk6NTE6MTUA
AAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAoKADAAQAAAABAAAAewAAAAAAAAAG
AQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAA
AgEABAAAAAEAAAEuAgIABAAAAAEAABZdAAAAAAAAAEgAAAABAAAASAAAAAH/2P/g
ABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/b
AIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwR
EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAewCgAwEi
AAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEA
AQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIR
AwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZE
k1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm
9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUy
gZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi
8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//a
AAwDAQACEQMRAD8A8qSSSSUqDyp103WkNrrc8nQBoJJPyWj0XpFvUxY0EV0VH1L7
nGGtY0O3Oc5bOP1a30zR0Gp+Lh1aXZDI+02Dl3p2u/o9f8licIWtMq2eWfj5FbxX
ZU9jzw1zSD/mlOcTLBINNgI59p0/Bd90fo+Dm4Zymuc7Jb+lfLi60ifo+tO/2Kx1
DplgxLMkYk7gfTsfoZH+kc5P9rxW+54Pm5puDtprcHeEGU7MfIsfsZU97x+a1pJ+
4Lv8LpIyKPVxsP1rHe9zoky7+WP3f5KJ1L6tPx8eu+2wNu2bS/cRYx/5u21hDkva
8U+54PnT6bayRYxzCDBDgRr81Fdo7qmNdQMLrjxmUz6YzCIyKHfRaMkf9qMf9y3+
cXP9a6Pd0rJFbjvpsG6m1urXNPG149rkwxr9qRK3LhJEThNXK+zOmAQm9E+K28DG
ZbSXOaCd8T8gk/DqBPtH3K9i5fFKESbsjXVqy5oRnKFfKacT0T4peifFa5xavAJD
Fqh2g4RPK4h3+1X3odnH9LzS9PvK1jj1DsFB1Fe3gcphwYx0K4cyD0cvZ5pbB4q6
+pvgELYJ4UZwx8WQZQX/0PKlKqt9tjaqxue8hrQO5OgUVv8A1Lx2P6s7Mtbup6fS
/Jf4ewez/pIxFlBNB0c7GdXj0/VbBMOD2uz7h+fYWl/o/wAplH/n1aGB9W78Z3o4
5JsaJbPBIlzmn+sqH1dxsbOZbnZF/p5ltptZB90knc0f1l6f9mqOMz0R7qxuYe5M
fnf1lFzXMjDLGK+cgk/uwiV+KIqRIv5oR/vyj8zx/wBV8C8dZutrPo11PmxngSPc
wf13K59ZsvqTnXVvYxuGwEVnQkns6PpLdoZQx7ra2NY62HOIEEmPzlyfW+kX0ZD8
v7Q54e/dTUAS4vmW7Y/cVsam2sh+q/VMLprqn3GxvqM27i+WiSHT6S6jrTMe3Afk
Mq+0PYN9TRrJPDto+kuc+rvTTfRbi9Src57HTte0gtJJ3/pPzl1TA2pjKmDaysBr
QOwARI1BU8jk9JxKunBvUKv1jLl7+22fohYvTmNzmXfVe8izYXP6fcT7mmDY+j+3
/g/5a2uo9C631DPte5wrqc8w7dptnTT+qsbqgx+iZWPZhPNmRh3Msc4wASCTt/BK
Q69l0ezy1tb6bX1PEPYS1wPiEwC3vrrjVM6x9sxxGPnsbkVf2xJWCCoJCjTKDYd3
puUyqgtc0k+oTI+AU7Mlh4aUT6r9Nq6n1CnCuc5jLXu3OZEjaw2abvb+aj5XSGOy
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
//////////////8D6AAAAAD/////////////////////////////A+gAAAAA////
/////////////////////////wPoAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAA
AAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADPQAAAAYAAAAAAAAAAAAAAHsA
AACgAAAABAAzADgAOQBhAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA
AACgAAAAewAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAB
AAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAA
AABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAewAA
AABSZ2h0bG9uZwAAAKAAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNs
aWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAA
Bm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAA
VHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAAB
AAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAA
AABCdG9tbG9uZwAAAHsAAAAAUmdodGxvbmcAAACgAAAAA3VybFRFWFQAAAABAAAA
AAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVY
VAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAA
AAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZh
dWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1
bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5v
bmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAA
DGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJ
TQQoAAAAAAAMAAAAAT/wAAAAAAAAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAW
eQAAAAEAAACgAAAAewAAAeAAAOagAAAWXQAYAAH/2P/gABBKRklGAAECAABIAEgA
AP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL
CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
DAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAewCgAwEiAAIRAQMRAf/dAAQACv/E
AT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIG
FJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKz
hMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cR
AAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLh
coKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE
1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A8qSS
SSUqDyp103WkNrrc8nQBoJJPyWj0XpFvUxY0EV0VH1L7nGGtY0O3Oc5bOP1a30zR
0Gp+Lh1aXZDI+02Dl3p2u/o9f8licIWtMq2eWfj5FbxXZU9jzw1zSD/mlOcTLBIN
NgI59p0/Bd90fo+Dm4Zymuc7Jb+lfLi60ifo+tO/2Kx1DplgxLMkYk7gfTsfoZH+
kc5P9rxW+54Pm5puDtprcHeEGU7MfIsfsZU97x+a1pJ+4Lv8LpIyKPVxsP1rHe9z
oky7+WP3f5KJ1L6tPx8eu+2wNu2bS/cRYx/5u21hDkva8U+54PnT6bayRYxzCDBD
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
VTOm4DhDmVa2vH/D5Lv0liwSVHKX2r4x77dl5VvpWRiUZjbMtm+kAhwgOOo7Nd7V
SlKUxe939WXNPTn7RDTc8gfEMWi8mSsr6skjprgP9M78jFoWOOquYj6I+TmZofrZ
+awcd6p2HRHDjvVSxxhSiWqwQ1RE+8a91OogFxPiP4oBd7whOvIc9vYz+CUzapQs
IL3aWfH+KovcfFWXumt3yVJ5TCWfFF//1vKkkkklMg72FniQZ+EqKSSSlcKbL7q/
oPLVBJEX0tBrqzststcXWOLie5US5x5JMcSmSSN9U6KSSSQUpJJJJT1XQ+o4lGC5
ll7GO9Qna5wBiGq27quEf+1Nf+cFxSSsQlk4RUQQ1ZxxccrkQb10exHVMLdP2iv/
ADgq1nUMU8XM/wA4Ll0k4Sy38g+1bw4f3z9j0P2zH3A+qz/OCC7Ko3k+q3v3CxEk
TLN+4PtTw4f3z9jqHIqLCN7Z+KrPsYfzh96qJJhlk/d/FfEY+kvwf//ZADhCSU0E
IQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAA
ABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMAMgAAAAEAOEJJ
TQQGAAAAAAAHAAQAAQABAQD/4TqxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4w
LwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6
a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4Onht
cHRrPSIzLjEuMS0xMTIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRm
OkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBN
TT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAg
eG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9S
ZXNvdXJjZVJlZiMiPgogICAgICAgICA8eGFwTU06RG9jdW1lbnRJRD51dWlkOjlD
NDEzQjdENUZEMERDMTFBOEM2QzQ4MzBFMkQxQ0M1PC94YXBNTTpEb2N1bWVudElE
PgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOjlENDEzQjdENUZEMERD
MTFBOEM2QzQ4MzBFMkQxQ0M1PC94YXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8
eGFwTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD51dWlkOkFGMEExMDc4NUZEMERDMTFB
OEM2QzQ4MzBFMkQxQ0M1PC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8
c3RSZWY6ZG9jdW1lbnRJRD51dWlkOkFGMEExMDc4NUZEMERDMTFBOEM2QzQ4MzBF
MkQxQ0M1PC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICA8L3hhcE1NOkRlcml2
ZWRGcm9tPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNj
cmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRw
Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHhhcDpDcmVhdGVE
YXRlPjIwMDgtMDEtMzFUMTk6NTE6MTUtMDU6MDA8L3hhcDpDcmVhdGVEYXRlPgog
ICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAwOC0wMS0zMVQxOTo1MToxNS0wNTow
MDwveGFwOk1vZGlmeURhdGU+CiAgICAgICAgIDx4YXA6TWV0YWRhdGFEYXRlPjIw
MDgtMDEtMzFUMTk6NTE6MTUtMDU6MDA8L3hhcDpNZXRhZGF0YURhdGU+CiAgICAg
ICAgIDx4YXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dz
PC94YXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAg
ICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxu
czpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAg
ICA8ZGM6Zm9ybWF0PmltYWdlL2pwZWc8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6
RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIi
CiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNv
bS9waG90b3Nob3AvMS4wLyI+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2Rl
PjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SGlz
dG9yeS8+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYx
OTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgIDwvcmRmOkRlc2Ny
aXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAg
ICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4w
LyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRp
b24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlm
ZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAw
LzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0
aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpO
YXRpdmVEaWdlc3Q+MjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAs
NTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEs
MjcyLDMwNSwzMTUsMzM0MzI7NzFCMTA2OTNDMkU5QzdDMTdBMDM2NDAxRUMyMTc5
REI8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K
ICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAg
eG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAg
ICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTYwPC9leGlmOlBpeGVsWERpbWVu
c2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjEyMzwvZXhpZjpQ
aXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhp
ZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpOYXRpdmVEaWdlc3Q+MzY4NjQs
NDA5NjAsNDA5NjEsMzcxMjEsMzcxMjIsNDA5NjIsNDA5NjMsMzc1MTAsNDA5NjQs
MzY4NjcsMzY4NjgsMzM0MzQsMzM0MzcsMzQ4NTAsMzQ4NTIsMzQ4NTUsMzQ4NTYs
MzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQs
MzczODUsMzczODYsMzczOTYsNDE0ODMsNDE0ODQsNDE0ODYsNDE0ODcsNDE0ODgs
NDE0OTIsNDE0OTMsNDE0OTUsNDE3MjgsNDE3MjksNDE3MzAsNDE5ODUsNDE5ODYs
NDE5ODcsNDE5ODgsNDE5ODksNDE5OTAsNDE5OTEsNDE5OTIsNDE5OTMsNDE5OTQs
NDE5OTUsNDE5OTYsNDIwMTYsMCwyLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0
LDE1LDE2LDE3LDE4LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDMwO0RBN0U0N0VC
QTFFMTBCQTVEODQyOTc0NzQwMzgwRkEyPC9leGlmOk5hdGl2ZURpZ2VzdD4KICAg
ICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Cjw/eHBhY2tldCBlbmQ9InciPz7/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQ
AABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAA
AAAAAAAAAAAAAQAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNjAAABhAAA
AGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAACLAAA
ABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAA
AIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAA
AAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENv
cHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAA
AAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2
LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZ
WiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAA
JKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAA
AAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYt
Mi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5J
RUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg
Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBW
aWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZ
WiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA
Ao8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAo
AC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCf
AKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEf
ASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJ
AdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKi
AqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOu
A7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTw
BP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZq
BnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgf
CDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woR
CicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxD
DFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62
DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFt
EYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRq
FIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReu
F9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7
G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8T
Hz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4
I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneier
J9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu
LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGC
Mbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp
NyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTyk
POM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1
QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kd
SWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/d
UCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3
V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5s
Xr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9
ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5r
bsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4
d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/l
gEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokz
iZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLj
k02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3
nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adu
p+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJL
ssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2P
vgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6
ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO
1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM
4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO60
70DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH
/Jj9Kf26/kv+3P9t////7gAOQWRvYmUAZAAAAAAB/9sAhAAGBAQEBQQGBQUGCQYF
BgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
DAwMAQcHBw0MDRgQEBgUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAB7AKADAREAAhEBAxEB/90ABAAU/8QA
sgAAAQQDAQAAAAAAAAAAAAAABgMEBQcAAQIIAQADAQEBAQEAAAAAAAAAAAAAAgMB
BAUGBxAAAgEDAwIDBQQGBgkEAwAAAQIDEQQFABIGIRMxIgdBUTJCFGGRUmJxgdFy
IxXwocGColOx4ZKyM0NzJDTSg5MWVCUXEQACAQIEAwUECAQHAAAAAAAAAQIRAyEx
EgRBURMiMlIUBWFxgULwsfFygpKiFWKy0uKRocHC8jMk/9oADAMBAAIRAxEAPwDy
poAzQBuhpWnTwroAVt7K8uXVLeCSZ3JCLGjMSQKkAAHW0MqdTY+/gmEE9tLFM3wx
OjKx/QpFdFAqdnEZVSwaynBT4gYn6fp6aKBqQkbO8WTttBIJPwFG3fdTRRhU6hx2
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

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=reuters-logo.gif
Content-Type: image/gif; name=reuters-logo.gif
Content-Location: http://www.sciencedaily.com/images/reuters-logo.gif
Content-Transfer-Encoding: Base64

R0lGODlhoQAxAOYAAAA+lwA/mABFmgBLnQNOoAVRoQtUow9YpRNUoxNZpRZcqBhb
pxleqB1hqSRlrCZorSlpri5ssDBusDRxsjt2tT54tkB5t0R8uEh6t0h+ukyCu1KG
vVSIv1aJwFuNwV+Qw2WTxWmXx22Yx22ZyHOdynegzHuizYCmz4Gn0IWp0Yqs0o6w
1ZO01pe22Ji32Ju52aG926XA3anD3q3F4LPK4rnO5bvQ5sDT58XW6cfY6s3c7M/f
8M/g8dDe7dPh7tTi8Nrl8d7o8+Lr9Ojv9ulaI+pjLurw9+tlMezy+O13Se14S++E
WvKLY/KTbvKaePOkhPW0m/a5ofeYcve+qPfDr/imhfjHtfjMu/rXyvrZzPu8o/vl
3PzQvv3q4/3x7P7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAQAAAAALAAAAAChADEAAAf/gF+Cg4SFhoeIiYqLjI2O
j5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+
v7VGLDE6wMacOgMCAw4jPcfQlToEA9UCBiJI0duP0wMG1coSPty5QkBAQpBeTElc
PwMgQTPgyg4/lzgO+/z7Ehoq1A1S0a/gPhCCaPCTYShIhH0kvsAwSHHCkC8kKPYz
IUiHxggAgxjyIQJCAgMoHXig0YgKESJMdhgAIkjDMmUTLtW4qUyAz54LWAoiwTNc
OAEXBMVYJuCFISAFlHn4wqKo0aMG1HWwalQAwi84uvpkKiDBDEIxDHAtK1DRFiVH
/7TAS/FFB4OuESvZCJfgAb+o1RgILHGTgOHD1DQoZeq0EBBwAqa+QJCgcoJwBSwn
cKDOQ2HEhgeEEBS2Wl9+9QYkEPgjtYEHJquddeSlLrUGgJVVm6nX2glCPSZYY/iF
cDUXOpIr10Hzy1JljQk9lirIiHUjOiBruG5E2xfPAwrMWK5cYGkBeQX5oGCtcYqb
GvB9EQKDxSIqWQRlsVJX9QfhA1zwAWS/UbKXMnQRogJT9hV3Uw6KPNfUU5BNVYgQ
kHFwCHgFtHXIeRwR0gJTCYJwEw6QOEHEEVtkUQQRVfBAgFAQVCCIC9XkZKA1JiDh
I3YACkCccQOkQMORRz4ziP+E0Q0yXWSGYKiMhoZwyAKSRzZHmjUj+OijDuxBJ8gJ
N1lAg4eKMPFSFle8JAUPBRTzxQQbJGQamo8c+A0DfCoAmAANGCEIkVd5hRZjFFJ3
YYYbcqVMiFvuxicDfoajAGtqhWOAAxmkQE4iWzwxhSBRPNEFPBKwAEJ4JLDgQDUE
yCmJnj1d5YANgxA6lk8WLiamYxVGyWiVPO0qAKRgiXUVA0IJUgMEtfZkQHqOTMOU
NbpVg+IkeiYAAQT1EKCCd4PeNEEG6GaAQYO+CsDuID9EBeWiUzY6AAEUpKtuDISU
ptq3qaVwkSEzjHDBA5kq8y4hVyjRxBdeNKHEOwN4AIT/DAYkQMMPGsAqayQHCoCC
ICvcNBohRG6LCA1cGsKyMiMIWy+x4Wn5oTV5vRBOr4n8QEI4FCCyxEtXtAmTDgU0
Z4GFpa22I4KDADjAbOVqq0gQ9TBg8xcdKwODzAJQWQiHWxcC4iAW3NTkfIc0UA0E
iEBxhBJddJFEXHN94cMCEKjz8wA6cmtNgl/o2UBbRI7AwuKMXznIBjc58EIPP9CQ
QTgMDEyIlGHbS4AJjTN+Q6QClDCIN6rZTEEELHwqRArUIAVqbYJ0YRsz9SgArTIj
Py0A4d8x1UGuNxnrUwBJCfLDAsUXkFs1awvCudiEgNeTsQB8dZ7pg4zAlGKCmMBU
/gENOHDAUfwywmZ/CXQgtaYiUbKTAAAUKH0CY7kwFADG75p8RxL4yVHKEj3pEcAn
4CvEBvjXP/ppzycAoJYQGDAWFQjiAgLsygCQlQgsvChGMxKEBLrCwUj8AAQobJYg
ZIBCEIRoBi2MYQwXJhEPRKABDYDABQKSCCSMAIUFfIEMh5g+ILSQaglpIaRm4AGT
oCQBEQCByhZhtCbASU4VOErgeEEuXZxDCJp7RKlONYAIvCAER3FA2crBxtsJUAAT
WGMby4E6ZUxrjngkRDIEQAAHkOBTecyjEVwgAyUF8pCITKQiF8nIRjrykZCMpCQn
SclKWvKSmMykJjeZiUAAADs=

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=cache.gif
Content-Type: image/gif; name=cache.gif
Content-Location: http://www.sciencedaily.com/cache.php?url=/releases/2010/02/100224132651.htm
Content-Transfer-Encoding: Base64

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------------GRdmKkLcvs6qnZ1AQyG3wo
Content-Disposition: inline; filename=quant.js
Content-Type: application/x-javascript; name=quant.js
Content-Location: http://edge.quantserve.com/quant.js
Content-Transfer-Encoding: Base64

Ly8KLy8gRm9yIGNvcnJlY3QgbWVhc3VyZW1lbnQsIERPIE5PVCBIT1NUIFRISVMg
RlJPTSBBTk9USEVSIFNFUlZFUgovLwpmdW5jdGlvbiBfcWNkc3QoKXtpZihfcWN0
em9mZigwKSE9X3FjdHpvZmYoNikpcmV0dXJuIDE7cmV0dXJuIDA7fQpmdW5jdGlv
biBfcWN0em9mZihtKXsKdmFyIGQxPW5ldyBEYXRlKDIwMDAsbSwxLDAsMCwwLDAp
Owp2YXIgdD1kMS50b0dNVFN0cmluZygpOwp2YXIgZDM9bmV3IERhdGUodC5zdWJz
dHJpbmcoMCx0Lmxhc3RJbmRleE9mKCIgIiktMSkpOwpyZXR1cm4gZDEtZDM7Cn0K
ZnVuY3Rpb24gX3FjZXVjKHMpewppZih0eXBlb2YoZW5jb2RlVVJJQ29tcG9uZW50
KT09J2Z1bmN0aW9uJyl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzKTt9CmVs
c2V7cmV0dXJuIGVzY2FwZShzKTt9Cn0KZnVuY3Rpb24gX3Fjcm5kKCl7cmV0dXJu
IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSoyMTQ3NDgzNjQ3KTt9CmZ1bmN0aW9u
IF9xY2djKG4pewogdmFyIHY9Jyc7CiB2YXIgYz1kb2N1bWVudC5jb29raWU7aWYo
IWMpcmV0dXJuIHY7CiB2YXIgaT1jLmluZGV4T2YobisiPSIpOwogdmFyIGxlbj1p
K24ubGVuZ3RoKzE7CiBpZihpPi0xKXsKICB2YXIgZW5kPWMuaW5kZXhPZigiOyIs
IGxlbik7CiAgaWYoZW5kPDApZW5kPWMubGVuZ3RoOwogIHY9Yy5zdWJzdHJpbmco
bGVuLGVuZCk7CiB9CiByZXR1cm4gdjsKfQpmdW5jdGlvbiBfcWNkb21haW4oKXsK
IHZhciBkPWRvY3VtZW50LmRvbWFpbjsKIGlmKGQuc3Vic3RyaW5nKDAsNCk9PSJ3
d3cuIilkPWQuc3Vic3RyaW5nKDQsZC5sZW5ndGgpOwogdmFyIGE9ZC5zcGxpdCgi
LiIpO3ZhciBsZW49YS5sZW5ndGg7CiBpZihsZW48MylyZXR1cm4gZDsKIHZhciBl
PWFbbGVuLTFdOwogaWYoZS5sZW5ndGg8MylyZXR1cm4gZDsKIGQ9YVtsZW4tMl0r
Ii4iK2FbbGVuLTFdOwogcmV0dXJuIGQ7Cn0KZnVuY3Rpb24gX3Fjc2MobSl7CiB2
YXIgcz0iIjt2YXIgZD1fcWNkb21haW4oKTsKIGlmIChtPT0iYWQifHxkPT0iZG91
YmxlY2xpY2submV0Inx8ZD09ImF0ZG10LmNvbSJ8fGQ9PSJ5aWVsZG1hbmFnZXIu
Y29tInx8ZD09ImZpbXNlcnZlLmNvbSJ8fAogIGQ9PSJ0cmliYWxmdXNpb24uY29t
Inx8ZD09InRyYWZmaWNtcC5jb20iKXtzKz0iO2ZwYW49dTtmcGE9IjtyZXR1cm4g
czt9CiB2YXIgdT1kb2N1bWVudDt2YXIgYT1fcWNnYygiX19xY2EiKTsKIGlmKGEu
bGVuZ3RoPjApe3MrPSI7ZnBhbj0wO2ZwYT0iK2E7fQogZWxzZXsKICB2YXIgZGE9
bmV3IERhdGUoKTsKICBhPSdQMC0nK19xY3JuZCgpKyctJytkYS5nZXRUaW1lKCk7
CiAgdS5jb29raWU9Il9fcWNhPSIrYSsiOyBleHBpcmVzPVN1biwgMTggSmFuIDIw
MzggMDA6MDA6MDAgR01UOyBwYXRoPS87IGRvbWFpbj0iK2Q7CiAgYT1fcWNnYygi
X19xY2EiKTsKICBpZihhLmxlbmd0aD4wKXtzKz0iO2ZwYW49MTtmcGE9IithO30K
ICBlbHNle3MrPSI7ZnBhbj11O2ZwYT0iO30KIH0KIHJldHVybiBzOwp9CmZ1bmN0
aW9uIF9xY2RjKG4pewogZG9jdW1lbnQuY29va2llPW4rIj07IGV4cGlyZXM9VGh1
LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQ7IHBhdGg9LzsgZG9tYWluPSIrX3Fj
ZG9tYWluKCk7Cn0KZnVuY3Rpb24gX3FweGxvYWQoKXsKIGlmKChfcWltZykmJiB0
eXBlb2YgX3FpbWcud2lkdGggPT0ibnVtYmVyIil7CiAgaWYgKF9xaW1nLndpZHRo
PT0zKXtfcWNkYygiX19xY2EiKTt9Cn19CmZ1bmN0aW9uIHF1YW50c2VydmUoKXsK
IHZhciByPV9xY3JuZCgpOwogdmFyIHNyPScnLHFvPScnLHFtPScnLHVybD0nJyxy
ZWY9JycsamU9J3UnLG5zPScxJyxtZWRpYT0nd2VicGFnZScsZXZlbnQ9J2xvYWQn
OwogaWYodHlwZW9mIF9xb3B0aW9ucyAhPSJ1bmRlZmluZWQiICYmIF9xb3B0aW9u
cyE9bnVsbCl7CiAgZm9yKHZhciBrIGluIF9xb3B0aW9ucyl7CiAgIGlmKHR5cGVv
ZihfcW9wdGlvbnNba10pIT0nc3RyaW5nJyl7Y29udGludWU7fQogICBpZihrPT0n
cWFjY3QnKXtfcWFjY3Q9X3FvcHRpb25zW2tdO30KICAgZWxzZXtxbys9JzsnK2sr
Jz0nK19xY2V1YyhfcW9wdGlvbnNba10pO30KICAgaWYoaz09J21lZGlhJyl7bWVk
aWE9X3FvcHRpb25zW2tdO30KICAgaWYoaz09J2V2ZW50Jyl7ZXZlbnQ9X3FvcHRp
b25zW2tdO30KICB9CiAgX3FvcHRpb25zPW51bGw7CiB9CiBpZigodHlwZW9mIF9x
YWNjdCA9PSJ1bmRlZmluZWQiKXx8KF9xYWNjdC5sZW5ndGg9PTApKXJldHVybjsK
IGlmKG1lZGlhPT0nd2VicGFnZScgJiYgZXZlbnQ9PSdsb2FkJyl7CiAgaWYoKHR5
cGVvZiBfcXBpeGVsc2VudCAhPSJ1bmRlZmluZWQiKSYmKF9xcGl4ZWxzZW50PT1f
cWFjY3QpKXJldHVybjsKICBfcXBpeGVsc2VudD1fcWFjY3Q7fQogdmFyIGNlPShu
YXZpZ2F0b3IuY29va2llRW5hYmxlZCk/IjEiOiIwIjsKIGlmKHR5cGVvZiBuYXZp
Z2F0b3IuamF2YUVuYWJsZWQgIT0ndW5kZWZpbmVkJylqZT0obmF2aWdhdG9yLmph
dmFFbmFibGVkKCkpPyIxIjoiMCI7CiBpZih0eXBlb2YgX3FtZXRhICE9InVuZGVm
aW5lZCIgJiYgX3FtZXRhIT1udWxsKXtxbT0nO209JytfcWNldWMoX3FtZXRhKTtf
cW1ldGE9bnVsbDt9CiBpZihzZWxmLnNjcmVlbil7c3I9c2NyZWVuLndpZHRoKyJ4
IitzY3JlZW4uaGVpZ2h0KyJ4IitzY3JlZW4uY29sb3JEZXB0aDt9CiB2YXIgZD1u
ZXcgRGF0ZSgpOwogdmFyIGRzdD1fcWNkc3QoKTsKIHZhciBkZz0iUDEwMTUwLVct
T3AtdSI7dmFyIHFzPSJodHRwOi8vcGl4ZWwucXVhbnRzZXJ2ZS5jb20iOwogdmFy
IGZwPV9xY3NjKG1lZGlhKTsKIGlmKHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5kb3cu
bG9jYXRpb24uaHJlZil1cmw9X3FjZXVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsK
IGlmKHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQucmVmZXJyZXIp
cmVmPV9xY2V1Yyh3aW5kb3cuZG9jdW1lbnQucmVmZXJyZXIpOwogaWYoc2VsZj09
dG9wKW5zPScwJzsKIF9xaW1nPW5ldyBJbWFnZSgpOwogX3FpbWcuYWx0PSIiOwog
X3FpbWcuc3JjPXFzKycvcGl4ZWwnKyc7cj0nK3IrZnArJztucz0nK25zKyc7dXJs
PScrdXJsKyc7cmVmPScrcmVmKyc7Y2U9JytjZSsnO2plPScramUrJztzcj0nK3Ny
Kyc7ZGc9JytkZysnO2RzdD0nK2RzdCsnO2V0PScrZC5nZXRUaW1lKCkrJzt0em89
JytkLmdldFRpbWV6b25lT2Zmc2V0KCkrJzthPScrX3FhY2N0K3FvK3FtOwogX3Fp
bWcub25sb2FkPWZ1bmN0aW9uKCkge19xcHhsb2FkKCk7fQp9CnF1YW50c2VydmUo
KTsK

------------GRdmKkLcvs6qnZ1AQyG3wo--

