Team:UCL/QWERTYtest

From 2014.igem.org

(Difference between revisions)
 
(31 intermediate revisions not shown)
Line 1: Line 1:
 +
{{:Team:UCL/Template:headerx}}
<html>
<html>
-
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css" />
+
<!--- These are the script & stylesheet links for the javascript based tab feature (ask sanjay before altering this) --->
-
<link rel="stylesheet" href="http://graphics8.nytimes.com/css/0.1/screen/common/shell.css?action=raw&ctype=text/css" type="text/css" " />
+
<script type="text/javascript" src="https://2014.igem.org/Team:UCL/Template:SCJtabcontent.js?action=raw&ctype=text/javascript"></script>
-
<link rel="stylesheet" href="http://graphics8.nytimes.com/css/0.1/screen/common/global.css?action=raw&ctype=text/css" type="text/css" " />
+
<link rel="stylesheet" href="https://2014.igem.org/Team:UCL/Template:SCJpapercollapse.css?action=raw&ctype=text/css" type="text/css" />
-
<link rel="stylesheet" href="http://graphics8.nytimes.com/css/0.1/print/styles.css?action=raw&ctype=text/css" type="text/css" />
+
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
-
<link rel="stylesheet" href="http://graphics8.nytimes.com/css/0.1/screen/build/interactive/styles.css?v=20120611?action=raw&ctype=text/css" type="text/css" />
+
<script type="text/javascript" src="https://2014.igem.org/Team:UCL/Template:SCJpapercollapse.js?action=raw&ctype=text/javascript"></script>
-
 
+
<link rel="stylesheet" href="https://2014.igem.org/Team:UCL/Template:SCJtabcontentcss.css?action=raw&ctype=text/css" type="text/css" />
-
<div id="main">
+
<!--- These are the script & stylesheet links for the javascript based gallery feature (ask sanjay before altering this) --->
-
<div id="interactiveShell">
+
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
-
<div class="columnGroup firstColumnGroup">
+
<script type="text/javascript" src="https://2014.igem.org/Team:UCL/Template:jquery.nivo.slider.js?action=raw&ctype=text/javascript"></script>
-
<div class="ledeStory">
+
<link rel="stylesheet" href="https://2014.igem.org/Team:UCL/Template:nivo-slider.css?action=raw&ctype=text/css" type="text/css" />
-
<div class="module insetHFullWidth">
+
<link rel="stylesheet" href="https://2014.igem.org/Team:UCL/Template:nivosliderdefault.css?action=raw&ctype=text/css" type="text/css" />
<script type="text/javascript">
<script type="text/javascript">
-
var articleToolsShareData = {"url":"http:\/\/www.nytimes.com\/interactive\/2012\/06\/14\/us\/how-the-supreme-court-could-rule-on-the-health-care-law.html","headline":"How the Supreme Court Could Rule on the Health Care Law","description":"What could happen to the health care law depending on what the Supreme Court decides on key questions.","keywords":"Medicine and Health,Supreme Court","section":"us","sub_section":null,"section_display":"U.S.","sub_section_display":null,"byline":null,"pubdate":"June 14, 2012","passkey":null};
+
$(window).load(function() {
-
function getShareURL() {
+
     $('#slider').nivoSlider({startSlide: 1, manualAdvance: false, directionNav: true, controlNav: true, manualAdvance: false});
-
    return encodeURIComponent(articleToolsShareData.url);
+
});
-
}
+
-
function getShareHeadline() {
+
-
    return encodeURIComponent(articleToolsShareData.headline);
+
-
}
+
-
function getShareDescription() {
+
-
     return encodeURIComponent(articleToolsShareData.description);
+
-
}
+
-
function getShareKeywords() {
+
-
    return encodeURIComponent(articleToolsShareData.keywords);
+
-
}
+
-
function getShareSection() {
+
-
    return encodeURIComponent(articleToolsShareData.section);
+
-
}
+
-
function getShareSubSection() {
+
-
return encodeURIComponent(articleToolsShareData.sub_section);
+
-
}
+
-
function getShareSectionDisplay() {
+
-
    return encodeURIComponent(articleToolsShareData.section_display);
+
-
}
+
-
function getShareSubSectionDisplay() {
+
-
    return encodeURIComponent(articleToolsShareData.sub_section_display);
+
-
}
+
-
function getShareByline() {
+
-
    return encodeURIComponent(articleToolsShareData.byline);
+
-
}
+
-
function getSharePubdate() {
+
-
    return encodeURIComponent(articleToolsShareData.pubdate);
+
-
}
+
-
function getSharePasskey() {
+
-
    return encodeURIComponent(articleToolsShareData.passkey);
+
-
}
+
</script>
</script>
-
<div id="articleToolsTop" class="articleTools">
 
-
<div class="box">
 
-
<div class="inset">
 
-
<ul id="toolsList" class="toolsList wrap">        <li id="twitter_item">            <a id="twitter_button">                <span>Twitter</span>            </a>        </li>            <li id="linkedin_item">            <a id="linkedin_button">Linkedin</a>        </li>   
 
-
<li class="email">
 
-
<a id="emailThis" onclick="s_code_linktrack('Article-Tool-EmailSignIn');" href="javascript:void(0);">Sign In to E-Mail</a>
+
<!--- This is the coding for the Sustainable Bioprocessing Header Image (ask sanjay before altering this) --->
-
</li>
+
-
<!--NYT_DYNAMIC_SPLITPAGE <li class="singlePage">-->
+
-
<a href="/interactive/2012/06/14/us/how-the-supreme-court-could-rule-on-the-health-care-law.html?ref=us&amp;pagewanted=all"><!--NYT_DYNAMIC_SPLITPAGE Single Page--></a>
+
-
<!--NYT_DYNAMIC_SPLITPAGE </li>-->
+
-
<li id="shareMenu" class="closed" style="width: 168px;"><a href="#" class="shareButton">Share</a><a href="#" class="hidden" style="opacity: 0;">Close</a><ul id="shareList" class="hidden" style="opacity: 0;"><li class="digg"><a href="#">Digg</a></li><li class="reddit"><a href="#">Reddit</a></li><li class="tumblr"><a href="#">Tumblr</a></li><li class="permalink"><a href="#">Permalink</a></li><li id="shareMenuAd"><script src="http://www.nytimes.com/adx/bin/adx_remote.html?type=fastscript&amp;page=www.nytimes.com/yr/mo/day/&amp;posall=Frame6A&amp;query=qstring&amp;keywords=?"></script></li></ul></li></ul>
+
-
</div>
+
-
</div>
+
-
</div>
+
-
<script type="text/javascript" language="JavaScript">
+
-
    writePost();
+
-
    </script>
+
-
<div class="storyHeader">
+
-
<h6 class="dateline">
+
-
<span>Published: </span>June 14, 2012                                    </h6>
+
-
<h1>How the Supreme Court Could Rule on the Health Care Law</h1>
+
-
</div><!--close .storyHeader -->
+
-
<div class="storySummary">
+
-
<span class="summary">The Supreme Court will issue a decision this month on President Obama’s<br>2010 health care law. The court is considering a series of questions to<br>determine whether the law, or parts of it, will survive.</span>
+
-
<span class="noWrap refer">
+
-
<a href="/2012/06/15/us/politics/parties-strategize-for-dealing-with-supreme-court-decision-on-health-care.html">Related Article »</a>
+
-
</span>
+
-
</div><!--close .storySummary -->
+
-
</div><!--end .module insetHFullWidth -->
+
-
<div id="interactiveFreeFormMain">
+
-
<!--BEGIN Stencil generated content. -->
+
-
<!--Project ID: 2012/0611-scotus/ -->
+
-
<!--Generated at: Thu Jun 14 19:55:15 2012 -->
+
-
<style type="text/css">
+
-
/********************************
 
-
** FILE: base2.css
 
-
********************************/
 
-
/* Structure */
+
<div id="TopGapO"></div>
-
#interactiveFreeFormMain {
+
-
  margin: 20px;
+
-
  font-family: Arial;
+
-
  line-height: 1.4;
+
-
  min-height: 2000px; }
+
-
.nytg-decisionTree {
+
<div id="BPimagewrapperHeader">
-
  position: relative;
+
<img src="https://static.igem.org/mediawiki/2014/9/95/OBioprocessing_Bannero.jpg" width="100%" height="auto" alt="Sustainable Bioprocessing" /></div>
-
  height: 885px;
+
-
  width: 100%; }
+
-
  .nytg-decisionTree .nytg-choice {
+
-
    color: #CCC;
+
-
    position: absolute;
+
-
    margin: 0 auto;
+
-
    width: 720px;
+
-
    left: 110px; }
+
-
  .nytg-decisionTree .nytg-choiceText {
+
-
    font-size: 1.3em;
+
-
    margin: 0.8em auto 1.6em auto;
+
-
line-height:1.6em;
+
-
    width: 700px;
+
-
    text-align: center;
+
-
}
+
-
  .nytg-decisionTree .nytg-question {
+
-
    font-family: nyt-franklin,arial;
+
-
font-weight:bold;
+
-
    font-size: 2.7em;
+
-
    text-align: center;
+
-
    line-height: 1.3; }
+
-
  .nytg-decisionTree .nytg-buttons {
+
-
    margin: 1em auto 0 auto;
+
-
    width: 650px;
+
-
    text-align: center; }
+
-
  .nytg-decisionTree .nytg-button {
+
-
    background-color: #004276;
+
-
    border-radius: 3px;
+
-
    color: white;
+
-
    font-size: 1.25em;
+
-
    display: inline-block;
+
-
    margin: 0 1em 0 0;
+
-
    text-align: center;
+
-
    opacity: 0;
+
-
    cursor: pointer;
+
-
    background-color: white;
+
-
    font-family: nyt-franklin,arial;
+
-
    font-weight: bold;
+
-
    font-size: 15px;
+
-
    min-width: 50px;
+
-
    padding: 4px 13px;
+
-
    border-radius: 5px;
+
-
    zoom: 1;
+
-
    *display: inline;
+
-
    box-shadow: 0px 0px 10px rgba(0,0,0,.2);
+
-
}
+
-
.nytg-decisionTree .nytg-button:hover {
+
-
    box-shadow: 0px 0px 8px rgba(0,0,0,.4);
+
-
}
+
-
  .nytg-decisionTree #nytg-choice1-yes,
+
<div class="textArena">
-
  .nytg-decisionTree #nytg-choice1-no,
+
-
  .nytg-decisionTree #nytg-choice2-yes,
+
-
  .nytg-decisionTree #nytg-choice2-no {
+
-
    width: 50px; }
+
-
  .nytg-decisionTree .nytg-activeChoice {
+
-
    color: #000;
+
-
    transition: color 1s;
+
-
    -webkit-transition: color 1s; }
+
-
    .nytg-decisionTree .nytg-activeChoice .nytg-button {
+
-
      background-color: #004276;
+
-
      opacity: 1;
+
-
      -webkit-transition: opacity 1s;
+
-
      background-color: white;
+
-
      border: 1px solid #ccc;
+
-
      color: black; }
+
-
  .nytg-decisionTree .nytg-activeChoice .nytg-choiceText{
+
-
color:#666;
+
-
+
-
}
+
-
  .nytg-decisionTree .nytg-selected.nytg-button {
+
-
    background-color: #222;
+
-
    color: white;
+
-
    -webkit-transition: all 0.25s;
+
-
    background-color: #004276; }
+
-
  .nytg-decisionTree .nytg-inactive.nytg-button {
+
-
    /*
+
-
    background-color: transparent;
+
-
    color: #999;
+
-
    -webkit-transition: all 0.25s;
+
-
    background-color: #CCC;
+
-
    color: #666;
+
-
    background-color: $buttonbg;
+
-
    color: white;
+
-
    */ }
+
-
  .nytg-decisionTree .nytg-miniOutcome {
+
-
    position: absolute;
+
-
    width: 250px;
+
-
    display: none; }
+
-
  .nytg-decisionTree .nytg-miniOutcomeTitle {
+
-
    margin: 0 0 0.25em; }
+
-
  .nytg-decisionTree .nytg-miniOutcomeText {
+
-
    font-size: 1.25em; }
+
-
.nytg-fixie {
+
<!--- This is the coding for the tabs (ask sanjay before altering this) --->
-
  overflow-x: hidden;
+
<ul class="tabs">
-
  overflow-y: visible;
+
<li class="selected"><a href="#view1">Methods today</a></li>
-
  z-index: 10;
+
<li class=""><a href="#view2">Design</a></li>
-
  /*
+
<li class=""><a href="#view3">Implementation</a></li>
-
  border: 1px solid #ccc;
+
<li class=""><a href="#view4">Commercial</a></li>
-
 
+
<li class=""><a href="#view5">Experiments</a></li>
-
 
+
<li class=""><a href="#view6">Future</a></li>
-
  width: 770px;
+
<li class=""><a href="#view7">Basics</a></li>
-
  padding: 15px;
+
</ul>
-
  border-width: 0 1px 1px;
+
<div class="tabcontents">
-
  */ }
+
-
.nytg-choice-inner {
+
<!--- This is the first section --->
-
  padding-bottom: 10px;
+
<div style="display: none;" id="view1">
-
  background-color: white; }
+
<h4>Challenges in the textile industry</h4>
 +
<br>
-
.nytg-choice img {
+
<div class="collapse-card">
-
   display: none; }
+
   <div class="title">
 +
    <i class="fa fa-question-circle fa-2x fa-fw"></i>
 +
    <span>123</span>
 +
    <strong>Mambo no 5</strong>
 +
  </div>
 +
  <div class="body">
 +
<div class="SCJMFHIGHLIGHT">
 +
<p>
 +
<img src="https://static.igem.org/mediawiki/2014/7/72/Current_process.png" style="float:right;margin:0 0 0 10px;" width="50%">
 +
<b>Case study sheet 1: treatment strategy for cotton textile mill wastes</b>
 +
<br>
 +
In their investigation of textile processing technology, both conventional and novel, Babu et al. have emphasized the importance of waste minimization in terms of pollution load and production costs.
 +
</p>
 +
</div>
 +
  </div>
 +
</div>
-
.nytg-fixed .nytg-choice-inner {
 
-
  padding-bottom: 10px; }
 
-
 
+
<p>The global production of dyestuff amounts to over millions of tons per year. Azodyes represent two thirds of this value, a majority of which find their way to wastewater effluent streams. Characterized by the presence of one or more azo group (more), this type of organic colorant is also found in cosmetics, pharmaceuticals and food industries. While azodyes are a dye-class of choice in the textile industry, their global consumption is taking a toll on the environment.</p>
-
.nytg-fixed.nytg-activeChoice img {
+
Img.
-
  display: block; }
+
-
.nytg-colA, .nytg-colB {
+
<br>
-
  width: 100%;
+
<h4>Conventional textile effluent treatment process</h4>
-
  float: left; }
+
<br><p>The considerable structural diversity and recalcitrant nature of Azodyes make traditional wastewater treatment technologies markedly ineffective. Hence there exists an array of methods that deal with the removal of synthetic dyes from dyestuff-rich effluents, in order to reduce their environmental impact. These include large-scale physio-chemical processes outlined in the flow sheet below and a variety of organic/inorganic-support based adsorption and photocatalytic and oxidative decolorization. The latter are however more recent methods that are currently too expensive and not scalable to production scales.</p>
 +
<br><b>General process flowsheet for a wastewater treatment plant</b>
 +
<br>
 +
<img src="https://static.igem.org/mediawiki/2014/0/03/Screen_Shot_2014-10-15_at_8.00.24_PM.png" style="margin:0 0 0 15px;" width="65%">
 +
<br>
 +
The unit operations involved are:
 +
<br><b>Screening</b> – ‘separation of particles on the basis of size i.e. removing dyeing process debris which may damage equipement’
 +
<br><b>Equalization</b> – ‘Reducing the variability in composition of textile waste prior to treatment’
 +
<br><b>Neutralization: pH control</b> – ‘Reduce downstream consumption of chemicals for used in the physiochemical stages i.e. coagulation and flocculation’
 +
<br><b>Coagulation</b> – ‘Used to remove waste materials in suspended or colloidal form’
 +
<br><b>Flocculation</b> – ‘Converts finely divided suspended solids into larger particles so that efficient, rapid settling can occur’
 +
<br><b>Primary treatment</b> – ‘gravity seperation/clarification/sedimentation unit to separate larger solid particles
 +
<br><b>Secondary treatment</b> – ‘removing/reducing concentration of organic and inorganic compounds through microbial decomposition’
 +
<br>
 +
<br><BR>
 +
<!-- div is a divisor tag that just separates content. This class makes the paragraph in it black-->
 +
<div class="SCJMFHIGHLIGHT">
 +
<p>
 +
<img src="https://static.igem.org/mediawiki/2014/7/72/Current_process.png" style="float:right;margin:0 0 0 10px;" width="50%">
 +
<b>Case study sheet 1: treatment strategy for cotton textile mill wastes</b>
 +
<br>
 +
In their investigation of textile processing technology, both conventional and novel, Babu et al. have emphasized the importance of waste minimization in terms of pollution load and production costs.
 +
</p>
 +
</div>
 +
<br><br>
-
.nytg-colA {
+
<!---Gallery Slider START--->
-
  width: 40%;
+
<div class="gallerycontainer">
-
  padding: 0 0 2em 0;
+
<div class="slider-wrapper theme-default"><div class="ribbon"></div>
-
  margin: 0 0em 2em 8%; }
+
<div id="slider" class="nivoSlider">
-
 
+
    <img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/4/43/Makeitathome%21.jpg" alt="">
-
.nytg-colB {
+
    <img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/1/18/UCL_plant_1.jpg" alt="">
-
  width: 40%;  
+
<img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/1/16/Processucl.png" alt="">
-
 
+
    <img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" alt="">
-
  border: 1px solid #ccc;
+
    <img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/5/53/B3.PNG" alt="">
-
  border-width: 0 0 0 1px;
+
    <img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/3/38/B5.PNG" alt="">
-
  margin-left: 1.5em;
+
<img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/b/b0/Plant_2-_UCL.jpg" alt="">
-
  padding-left: 1.5em; }
+
     <img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/c/c6/Screen_Shot_2014-10-06_at_12.37.15_PM.png" alt="">
-
 
+
     <img style="width: 100px; visibility: hidden; display: inline;" src="https://static.igem.org/mediawiki/2014/b/b0/Microfluidic_3.png" alt="">
-
.nytg-outcomeList {
+
<img style="display: inline; height: 0px; width: 100px;" src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" class="nivo-main-image"><div class="nivo-caption"></div><div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div><div style="opacity: 1; left: 0px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="0" rel="0"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-0px;"></div><div style="opacity: 1; left: 13px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="1" rel="0"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-13px;"></div><div style="opacity: 1; left: 26px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="2" rel="0"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-26px;"></div><div style="opacity: 1; left: 39px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="3" rel="0"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-39px;"></div><div style="opacity: 1; left: 52px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="4" rel="0"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-52px;"></div><div style="opacity: 1; left: 65px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="5" rel="0"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-65px;"></div><div style="opacity: 1; left: 78px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="6" rel="0"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-78px;"></div><div style="opacity: 1; left: 91px; top: 0px; width: 9px; height: 0px;" class="nivo-box" name="7" rel="0"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-91px;"></div><div style="opacity: 1; left: 0px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="0" rel="1"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-0px;"></div><div style="opacity: 1; left: 13px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="1" rel="1"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-13px;"></div><div style="opacity: 1; left: 26px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="2" rel="1"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-26px;"></div><div style="opacity: 1; left: 39px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="3" rel="1"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-39px;"></div><div style="opacity: 1; left: 52px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="4" rel="1"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-52px;"></div><div style="opacity: 1; left: 65px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="5" rel="1"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-65px;"></div><div style="opacity: 1; left: 78px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="6" rel="1"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-78px;"></div><div style="opacity: 1; left: 91px; top: 0px; width: 9px; height: 0px;" class="nivo-box" name="7" rel="1"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-91px;"></div><div style="opacity: 1; left: 0px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="0" rel="2"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-0px;"></div><div style="opacity: 1; left: 13px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="1" rel="2"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-13px;"></div><div style="opacity: 1; left: 26px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="2" rel="2"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-26px;"></div><div style="opacity: 1; left: 39px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="3" rel="2"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-39px;"></div><div style="opacity: 1; left: 52px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="4" rel="2"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-52px;"></div><div style="opacity: 1; left: 65px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="5" rel="2"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-65px;"></div><div style="opacity: 1; left: 78px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="6" rel="2"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-78px;"></div><div style="opacity: 1; left: 91px; top: 0px; width: 9px; height: 0px;" class="nivo-box" name="7" rel="2"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-91px;"></div><div style="opacity: 1; left: 0px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="0" rel="3"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-0px;"></div><div style="opacity: 1; left: 13px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="1" rel="3"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-13px;"></div><div style="opacity: 1; left: 26px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="2" rel="3"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-26px;"></div><div style="opacity: 1; left: 39px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="3" rel="3"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-39px;"></div><div style="opacity: 1; left: 52px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="4" rel="3"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-52px;"></div><div style="opacity: 1; left: 65px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="5" rel="3"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-65px;"></div><div style="opacity: 1; left: 78px; top: 0px; width: 13px; height: 0px;" class="nivo-box" name="6" rel="3"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-78px;"></div><div style="opacity: 1; left: 91px; top: 0px; width: 9px; height: 0px;" class="nivo-box" name="7" rel="3"><img src="https://static.igem.org/mediawiki/2014/e/e2/Uclbiopro.PNG" style="position:absolute; width:100px; height:auto; display:block; top:-0px; left:-91px;"></div></div><div class="nivo-controlNav"><a class="nivo-control" rel="0">1</a><a class="nivo-control" rel="1">2</a><a class="nivo-control" rel="2">3</a><a class="nivo-control active" rel="3">4</a><a class="nivo-control" rel="4">5</a><a class="nivo-control" rel="5">6</a><a class="nivo-control" rel="6">7</a><a class="nivo-control" rel="7">8</a><a class="nivo-control" rel="8">9</a></div>
-
  margin: 0 0 20px;
+
<div id="htmlcaption" class="nivo-html-caption">
-
  float: left;
+
    <strong>This</strong> is an example of a <em>HTML</em> caption with <a href="#">a link</a>.
-
  clear: both;
+
-
  width: 100%; }
+
-
 
+
-
.nytg-outcomeTitle {
+
-
  font-size: 2.8em;
+
-
  margin: 0 0 20px;
+
-
  text-align: center; }
+
-
 
+
-
.nytg-outcomeButton {
+
-
  width: 20%;
+
-
  border: 1px solid #ccc;
+
-
  padding: 10px;
+
-
  float: left;
+
-
  font-size: 1.5em;
+
-
  font-family: Arial;
+
-
  height: 32px; }
+
-
 
+
-
.nytg-resultShell {
+
-
  font-family: Arial, sans-serif;
+
-
  line-height: 1.4;
+
-
  width: 800px;
+
-
  margin: 0 auto;
+
-
  display: none; }
+
-
  .nytg-resultShell .nytg-sectionHed {
+
-
     margin: 0 0 1em; }
+
-
  .nytg-resultShell .nytg-summary {
+
-
    border-radius: 0.5em;
+
-
     font-family: Arial;
+
-
    width: 666px;
+
-
    margin: 0 auto 4.5em auto;
+
-
    text-align: center;
+
-
    line-height: 1.5; }
+
-
  .nytg-resultShell .nytg-summaryText {
+
-
    text-align: left; }
+
-
    .nytg-resultShell .nytg-summaryText p {
+
-
      font-size: 1.3em;
+
-
      margin: 0.8em auto 1.5em auto;
+
-
/*      text-align: center;*/
+
-
      line-height: 1.6em; }
+
-
    .nytg-resultShell .nytg-summaryText strong {
+
-
      line-height: 15px;
+
-
      font-size: 1.4em; }
+
-
  .nytg-resultShell .nytg-summaryTitle {
+
-
    font-size: 0.85em;
+
-
    line-height: 1.133em;
+
-
    text-transform: uppercase;
+
-
    color: #333;
+
-
    margin: 0 0 1em; }
+
-
  .nytg-resultShell .nytg-effectHeader {
+
-
    text-align: center;
+
-
    font-size: 1.5em;
+
-
    font-weight: bold; }
+
-
  .nytg-resultShell .nytg-effectList {
+
-
    float: left; }
+
-
  .nytg-resultShell .nytg-effect {
+
-
    float: left;
+
-
    margin: 0em 1em 2em 0;
+
-
    width: 100%; }
+
-
  .nytg-resultShell .nytg-effectTitle {
+
-
    /* text-transform: uppercase; */
+
-
    font-size: 1.25em;
+
-
    font-weight: bold;
+
-
    margin: 0 0 0.5em; }
+
-
  .nytg-resultShell .nytg-effectText {
+
-
    font-family: Arial;
+
-
    font-size: 1.25em; }
+
-
  .nytg-resultShell .nytg-states {
+
-
    margin-right: 0; }
+
-
 
+
-
.nytg-provisionList .nytg-provisionColA,
+
-
.nytg-provisionList .nytg-provisionColB {
+
-
  float: left;
+
-
  width: 100%; }
+
-
.nytg-provisionList .nytg-provisionColA {
+
-
  margin-right: 3%; }
+
-
.nytg-provisionList .nytg-provisionGroup {
+
-
  margin: 0 0 2em; }
+
-
.nytg-provisionList .nytg-provisionGroupTitle {
+
-
  text-transform: uppercase;
+
-
  font-size: 1.1em;
+
-
  font-weight: normal;
+
-
  margin: 0 0 0.5em; }
+
-
.nytg-provisionList .nytg-provisionList {
+
-
  border: 1px solid #eee;
+
-
  border-width: 0 0 0px; }
+
-
.nytg-provisionList .nytg-provision {
+
-
  padding: 0.2em 0;
+
-
  margin: 0 0 0.2em;
+
-
  font-weight: normal;
+
-
  border: 1px solid #eee;
+
-
  border-width: 0px 0 0; }
+
-
.nytg-provisionList .nytg-provisionIcon {
+
-
  width: 10px;
+
-
  height: 10px;
+
-
  border: 1px dashed #999;
+
-
  border-width: 0;
+
-
  border-radius: 18px;
+
-
  float: left;
+
-
  margin: 0 1em 0 0;
+
-
  display: none; }
+
-
.nytg-provisionList .kept .nytg-provisionIcon {
+
-
  background-color: green; }
+
-
.nytg-provisionList .eliminated  {
+
-
color:#222;
+
-
  text-decoration: line-through; }
+
-
.nytg-provisionList .eliminated .nytg-provisionTitle {
+
-
  color: #999; }
+
-
.nytg-provisionList .eliminated .nytg-provisionIcon {
+
-
  background-color: darkred; }
+
-
.nytg-provisionList .jeopardized .nytg-provisionIcon {
+
-
  background-color: yellow; }
+
-
.nytg-provisionList .nytg-provisionContent {
+
-
  margin-left: 0px;
+
-
padding:8px 8px 8px 8px;
+
-
background-color:#f1f2f3;
+
-
}
+
-
.nytg-provisionList .nytg-provisionTitle {
+
-
  font-size: 1.25em; }
+
-
.nytg-provisionList .nytg-provisionText {
+
-
  font-size: 1.1em;
+
-
  color: #777;
+
-
  margin: 0.25em 0 0; }
+
-
 
+
-
/* Typography */
+
-
/* Scoop Fixes */
+
-
span.noWrap.feedback {
+
-
  white-space: normal; }
+
-
 
+
-
#interactiveFooter {
+
-
  border-top: 1px solid #DDDDDD;
+
-
  margin-top: 10px;
+
-
  padding-top: 12px !important; }
+
-
 
+
-
div.storyHeader h1 {
+
-
  font-size: 26px!important;
+
-
  margin-bottom: 4px!important;
+
-
  margin-top: 3px!important; }
+
-
 
+
-
 
+
-
 
+
-
/********************************
+
-
** FILE: scoophacks.css
+
-
********************************/
+
-
 
+
-
.ledeStory .insetHFullWidth .storyHeader .dateline{line-height:2.4em;margin-bottom:3px;margin-top:0px;}
+
-
.insetHFullWidth #articleToolsTop{margin-bottom:0;margin-top:0px;}
+
-
#interactiveFooter .module .noWrap{white-space:normal;}
+
-
 
+
-
.ledeStory .storySummary {
+
-
width:950px;
+
-
margin-top:30px;
+
-
display:block;
+
-
text-align:center;
+
-
}
+
-
.ledeStory .storySummary .summary {
+
-
width:950px;
+
-
font-size:18px;
+
-
line-height:34px;
+
-
font-style:italic;
+
-
}
+
-
 
+
-
.ledeStory .storyHeader h1 {
+
-
display:none;
+
-
}
+
-
 
+
-
 
+
-
</style>
+
-
<div class="nytg-interactiveShell">
+
-
<div id="nytg-decisionTree" class="nytg-decisionTree"><svg height="1000" version="1.1" width="970" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative;"><desc style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Created with Rapha&amp;euml;l 2.1.0</desc><defs style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></defs></svg><div id="nytg-choice1" class="nytg-choice nytg-activeChoice" style="top: 0px"> <div class="nytg-choice-inner"> <div class="nytg-question">1. Is it too soon to consider this case? </div> <div class="nytg-choiceText">The Anti-Injunction Act says that taxes cannot be challenged in court until<br>they are first levied. The justices will decide if the health law’s penalties,<br>which will not be due until 2015, can be considered a tax.</div> <div class="nytg-buttons"> <div id="nytg-choice1-yes" class="nytg-button">Yes</div> <div id="nytg-choice1-no" class="nytg-button">No</div> </div> </div></div><div id="nytg-choice1-outcome" class="nytg-miniOutcome" style="top: 205px; left: 50px"> <h4 class="nytg-miniOutcomeTitle">Try again later</h4> <div class="nytg-miniOutcomeText">The door would be left open for<br>a challenge later on, but the law<br>would continue to go into effect.</div></div><div id="nytg-choice2" class="nytg-choice" style="top: 310px"> <div class="nytg-choice-inner"> <div class="nytg-question">2. Is the individual mandate constitutional?</div> <div class="nytg-choiceText">The mandate requires most people to have health insurance or pay<br>an annual penalty. Opponents of the law say the requirement to buy<br>a product or service is not within the federal government’s powers.</div> <div class="nytg-buttons"> <div id="nytg-choice2-yes" class="nytg-button">Yes</div> <div id="nytg-choice2-no" class="nytg-button">No</div> </div> </div></div><div id="nytg-choice2-outcome" class="nytg-miniOutcome" style="top: 510px; left: 50px"> <h4 class="nytg-miniOutcomeTitle">Carry on</h4> <div class="nytg-miniOutcomeText">If the mandate is upheld,<br>it will take effect as<br>planned in 2014.</div></div><div id="nytg-choice3" class="nytg-choice nytg-fixie nytg-fixed" style="top: 620px"> <div class="nytg-choice-inner"> <div class="nytg-question">3. How much of the law will have to be cut? </div> <div class="nytg-choiceText">Two of the law’s major provisions — health insurers must take all applicants and cannot<br>charge them different rates based on health — rely on the mandate to help offset costs. Congress<br>did not include an explicit “severability” clause in the health law, which is sometimes<br>used to say what parts of a law survive if other parts are found unconstitutional.</div> <div class="nytg-buttons"> <div id="nytg-choice3-yes" class="nytg-button">Mandate only</div> <div id="nytg-choice3-somewhat" class="nytg-button">Mandate and related provisions</div> <div id="nytg-choice3-no" class="nytg-button">All of it</div> </div> </div><img src="http://graphics8.nytimes.com/packages/images/newsgraphics/2012/0611-scotus/boxshadow.png"></div></div>
+
-
<div class="nytg-resultShell">
+
-
<div class="nytg-resultHeader">
+
-
<div class="nytg-summary">
+
-
<div class="nytg-summaryText"><p><strong>If the mandate is struck down</strong>, it would be up to Congress to retool the law to ensure the remaining rules don’t trigger a “death spiral” of soaring premiums as all but the sickest flee the market. During oral arguments in March, liberal justices indicated they preferred cutting as little as possible and leaving any necessary changes to Congress.
+
-
</p></div>
+
</div>
</div>
</div>
</div>
-
<div class="nytg-colA">
 
-
<h3 class="nytg-sectionHed">How the outcome could affect:</h3>
 
-
<div class="nytg-effectList"><div class="nytg-effect nytg-people"> <h4 class="nytg-effectTitle">People</h4> <div class="nytg-effectText">People who do not want to buy health insurance would not be penalized if they don’t. Premiums could be higher in the individual market.</div></div><div class="nytg-effect nytg-insurers"> <h4 class="nytg-effectTitle">Insurers</h4> <div class="nytg-effectText">This is a nightmare outcome for insurers, who fear the burden of covering sicker people without a large pool of healthier people to offset the cost.</div></div><div class="nytg-effect nytg-health_care_providers"> <h4 class="nytg-effectTitle">Health care providers</h4> <div class="nytg-effectText">The law has spurred structural changes for health providers since 2010, and many of those changes are here to stay even if portions of the law are not. Some hospitals have prepared for more patients by hiring doctors and upgrading computer systems. There would be some uncertainty until it becomes clear how Congress may react.</div></div><div class="nytg-effect nytg-states"> <h4 class="nytg-effectTitle">States</h4> <div class="nytg-effectText">The state insurance exchanges required by the law rely on the mandate to calculate rates and attract a pool of users. States could choose to enact their own laws that require or encourage residents to buy insurance before they need it.</div></div></div>
 
</div>
</div>
-
<div class="nytg-colB">
+
<!---Gallery Slider END--->
-
<h3 class="nytg-sectionHed">What stays and what gets cut</h3>
+
-
<div class="nytg-provisionList">
+
-
<div class="nytg-provisionColA"><div class="nytg-provisionGroup"> <h4 class="nytg-provisionGroupTitle">The mandate</h4> <div class="nytg-provisionList"> <div id="nytg-0" class="nytg-provision eliminated"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Individual mandate</h4></span> <div class="nytg-provisionText">Most Americans must have health insurance or pay an annual penalty.</div> </div></div> </div></div><div class="nytg-provisionGroup"> <h4 class="nytg-provisionGroupTitle">Bans on discrimination</h4> <div class="nytg-provisionList"> <div id="nytg-1" class="nytg-provision jeopardized"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Guaranteed issue</h4></span> <div class="nytg-provisionText">Insurers must accept all applicants, regardless of health.</div> </div></div><div id="nytg-2" class="nytg-provision jeopardized"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Community rating</h4></span> <div class="nytg-provisionText">Insurers cannot charge different premiums based on health status or demographic characteristics.</div> </div></div> </div></div><div class="nytg-provisionGroup"> <h4 class="nytg-provisionGroupTitle">Consumer provisions</h4> <div class="nytg-provisionList"> <div id="nytg-9" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">No rescinding coverage</h4></span> <div class="nytg-provisionText">Insurers cannot stop covering peple who become sick.</div> </div></div><div id="nytg-10" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">No lifetime limits</h4></span> <div class="nytg-provisionText">Insurers cannot impose lifetime dollar amounts on coverage.</div> </div></div><div id="nytg-11" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Preventive care at no cost</h4></span> <div class="nytg-provisionText">Insurers must cover some services, including immunizations, contraceptives and mental health screening, without copays or deductibles.</div> </div></div> </div></div></div>
+
-
<div class="nytg-provisionColB"><div class="nytg-provisionGroup"> <h4 class="nytg-provisionGroupTitle">Expanding coverage</h4> <div class="nytg-provisionList"> <div id="nytg-3" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Medicaid expansion</h4></span> <div class="nytg-provisionText">This provision was considered separately by the court. It would expand Medicaid to an estimated 16 million low-income Americans.</div> </div></div><div id="nytg-4" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">State exchanges</h4></span> <div class="nytg-provisionText">With federal grants, states must �build clearinghouses for health insurance options.</div> </div></div><div id="nytg-5" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Employer mandate</h4></span> <div class="nytg-provisionText">Employers with at least 50 employees must offer group-rate insurance or pay penalties.</div> </div></div><div id="nytg-6" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Pre-existing condition coverage</h4></span> <div class="nytg-provisionText">Insurers must cover children who have a pre-existing condition. A federal program offers coverage until 2014 for some adults who haven’t been insured because of pre-existing conditions. </div> </div></div><div id="nytg-7" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Coverage for young adults</h4></span> <div class="nytg-provisionText">Young adults can stay on their parents' plans until age 26. An estimated 2.5 million people have used this coverage.</div> </div></div><div id="nytg-8" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Medicare prescription drug discounts</h4></span> <div class="nytg-provisionText">Spans the “doughnut hole” gap in coverage with rebates and discounts.</div> </div></div> </div></div><div class="nytg-provisionGroup"> <h4 class="nytg-provisionGroupTitle">Other provisions</h4> <div class="nytg-provisionList"> <div id="nytg-12" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Tax credits for individuals</h4></span> <div class="nytg-provisionText">Families and individuals with income up to 400 percent of the poverty line get subsidies to help pay for insurance.</div> </div></div><div id="nytg-13" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Tax credits for small businesses</h4></span> <div class="nytg-provisionText">Businesses exempt from the employer mandate get assistance in providing insurance.</div> </div></div><div id="nytg-14" class="nytg-provision kept"> <div class="nytg-provisionIcon"> </div> <div class="nytg-provisionContent"> <span><h4 class="nytg-provisionTitle">Community health centers</h4></span> <div class="nytg-provisionText">Several hundred clinics have received grants for construction projects.</div> </div></div> </div></div></div>
+
</div>
</div>
-
</div>
 
-
</div>
 
-
</div>
 
-
<script type="text/javascript" src="http://graphics8.nytimes.com/packages/js/newsgraphics/2012/06/11-scotus-health-care-provisions.js"></script>
 
-
<script type="text/javascript" src="http://graphics8.nytimes.com/packages/js/newsgraphics/2012/06/11-scotus-health-care-outcomes.js"></script>
 
-
<script type="text/javascript" src="http://graphics8.nytimes.com/packages/js/newsgraphics/2012/06/14-scotus-health-care-questions.js"></script>
 
-
<script type="text/javascript">
 
-
/********************************
+
<!--This is the second section-->
-
** FILE: Javascript templates
+
<div style="display: none;" id="view2">
-
********************************/
+
-
var nytg = nytg || {};
+
<div class="textTitle"><h4>Scaled-up azodye SynBio treatment strategy</h4></div>
-
nytg.jst = nytg.jst || {};
+
<br>
-
(function(){
+
<p><b>With azodyes</b> The contamination of natural habitats surrounding textile factories by coloured (azodye-rich) effluents is a real problem (more). This is because the enzymatic breakdown products of azodyes i.e. aromatic amines, are carcinogenic when ingested. These can not only build up within local ecosystems but can also be a hazard to humans through bio-accumulation in the food chain. With a large section of dyehouse effluents consisting of dyes that have half-lives spanning over decades, the latter remain in the environment for long periods of time.</p>
-
var template = function(str){var fn = new Function('obj', 'var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push(\''+str.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/<%=([\s\S]+?)%>/g,function(match,code){return "',"+code.replace(/\\'/g, "'")+",'";}).replace(/<%([\s\S]+?)%>/g,function(match,code){return "');"+code.replace(/\\'/g, "'").replace(/[\r\n\t]/g,' ')+"__p.push('";}).replace(/\r/g,'\\r').replace(/\n/g,'\\n').replace(/\t/g,'\\t')+"');}return __p.join('');");return fn;};
+
<br>
-
nytg.jst['choice'] = template("<div id=\"<%= id %>\" class=\"nytg-choice\" style=\"top: <%= top %>px\">\t<div class=\"nytg-choice-inner\">\t\t<div class=\"nytg-question\"><%= title %></div>\t\t<div class=\"nytg-choiceText\"><%= text %></div>\t\t<div class=\"nytg-buttons\">\t\t\t<% _.each(buttons, function(button) { %>\t\t\t\t<% if (button.label) { %> \t\t\t\t\t<div id=\"<%= id %>-<%= button.value %>\" class=\"nytg-button\"><%= button.label %></div>\t\t\t\t<% } %>\t\t\t<% }); %>\t\t</div>\t</div></div><% if (outcome) { %><div id=\"<%= outcome.id %>\" class=\"nytg-miniOutcome\" style=\"top: <%= outcome.top %>; left: <%= outcome.left %>\">\t<h4 class=\"nytg-miniOutcomeTitle\"><%= outcome.title %></h4>\t<div class=\"nytg-miniOutcomeText\"><%= outcome.text %></div></div><% } %>");
+
<p><b>With current technologies</b> in the textile industry, exorbitant volumes of water are used for processing (around 90%), the rest being used for heat exchange purposes. Unfortunately most of the water used for processing is discharged as waste, resulting in highly diluted azodye effluent streams. Secondly, the recalcitrant nature of azodyes hikes the inherent costs of large-scale physical separation systems. As a result, industrial processes used to deal with such soluble hazardous wastes would not be a feasible option to deal with azodye effluents.</p>
-
nytg.jst['effect'] = template("<div class=\"nytg-effect nytg-<%= slug %>\">\t<h4 class=\"nytg-effectTitle\"><%= title %></h4>\t<div class=\"nytg-effectText\"><%= text %></div></div>");
+
<br>
-
nytg.jst['header'] = template("<h1><%= pagetitle %></h1>");
+
<p>By using <b>whole cell biocatalysis</b> as the workhorse for detoxification, this process will yield lucrative byproducts such as quinones, that can then be separated from the process stream and sold off.
-
nytg.jst['outcome'] = template("<div class=\"nytg-outcomeButton\">\t<div class=\"nytg-outcomeLabel\"><%= label %></div></div>");
+
<br>
-
nytg.jst['provision'] = template("<div id=\"<%= id %>\" class=\"nytg-provision\">\t<div class=\"nytg-provisionIcon\">\t</div>\t<div class=\"nytg-provisionContent\">\t\t<span><h4 class=\"nytg-provisionTitle\"><%= title %></h4></span>\t\t<div class=\"nytg-provisionText\"><%= text %></div>\t</div></div>");
+
<b>With Immobilization</b>
-
nytg.jst['provisionGroup'] = template("<div class=\"nytg-provisionGroup\">\t<h4 class=\"nytg-provisionGroupTitle\"><%= title %></h4>\t<div class=\"nytg-provisionList\">\t\t<%= html %>\t</div></div>");
+
The following outlines the general consensus on the benefits of using the immobilized biocatalyst format, with respect to free-floating systems.
-
})();
+
<br>Catalyst Retention – A huge decrease in the losses of valuable catalyst into product streams. These losses are exponential in ‘free biocatalysts’ systems, and economically unfeasible when using costly enzymes.
 +
</p><li type="square"><br>Minimized Contamination of product streams, eliminating the requirement for subsequent protein deactivation and further downstream processing. This is especially important for containment of our recombinant organisms.</li>
 +
<li type="square">Flow-rates are not limited by a threshold critical value for “biomass washout”, and only impact substrate-catalyst contact time. Catalyst concentrations can remain steady through independence of the dilution rate (see figure 1.3). High volumetric flow-rates can enhance mass transfer and speed up the removal of inhibitors (e.g. Azo-dye metabolites) from the system.</li>
 +
<br>
 +
<
 +
<p><b>Bioremediation process: Breakdown of the main engineering considerations</b>
 +
<br><a href="https://2014.igem.org/Team:UCL/Science/Bioprocessing">1. Process flow sheet</a>  
 +
<br>2. Bioreactor design
 +
<br>3. Module operation
 +
</p>
 +
<br>
 +
<div class="SCJMFHIGHLIGHT">
 +
<p>
 +
<b>Case study sheet 2: Tailoring a bioprocess for a cotton dyeing plant</b>
 +
<img src="https://static.igem.org/mediawiki/2014/5/53/Screen_Shot_2014-10-13_at_12.12.53_PM.png" style="float:right;margin:0 0 0 10px;" width="50%">
 +
<br><b>Assuming batch (discontinuous) dyeing process:</b>
 +
<br>
 +
<br>1. Liquor ratio- <i>parameter in discontinuous dyeing</i>- weight ratio between total dry material and total liquor  -  <b>1 kg cotton : 100 L H2O</b>
 +
<br>2. Influent mass of azo dye  -  <b>40g azodyes : 1kg cotton</b>  
 +
<br>3. Water requirements  -  <b>100L water/ 1 kg cotton</b>
 +
<br>4. Water allocation assuming beck configuration = 36L
 +
<br>5. Post dyeing operations water requirement = 100 - 36 = 64L
 +
<br>
 +
<b>Assumptions:</b>  
 +
<br>a. Dyeing efficiency or fixation rate refers to the ability for a dye to be fixed onto a target material <i>i.e. a  dyeing efficiency of 80% therefore suggests 20% by mass of the dye is present in the effluent stream. </i>
 +
<br>b. No losses or additional uses of  water <i>(Density 1000kg.m-3)</i>
 +
<br>c. Chemical additives such as sodium chloride are not included in this analysis
 +
<br>
 +
<br>
 +
Effluent mass of azodye = 0.8 x influent mass = <b>32g</b></li>  
 +
<br>Effluent concentration of azodye = 0.32g/L</li>
 +
</ul>
 +
<br>
 +
Our meeting with ETAD provided us with a more holistic understanding of typical effluent concentrations found in textile processing. We used this information to decide on process variables by considering volumes and flow rates.
 +
The E. coli cell is treated as a biocatalyst exhibiting a kinetic behaviour modelled by Michaelis-Menten:
 +
<br><i> v = Vmax[S]/(Km + [S])</i></b>
 +
<br>
 +
<br>Where:
 +
<br><i>v</i> is the observed velocity of the reaction at a given substrate concentration [S]
 +
<br><i>[S]</i> is the ‘instantaneous’ concentration of azodye in the system
 +
<br><i>Vmax </i>is the maximum velocity of at a saturating concentration of substrate
 +
<br><i>km</i> is the Michaelis constant
 +
<br>
 +
<br><b>Michaelis-Menten kinetics: parameter inference</b>  
 +
<br>For the AzoR-mediated degradation of Methyl Red as a basis for calculations the mass of azodye per E. coli cell can be calculated, considering the assumptions outlined above. The azodye degradation kinetics of the Catalyst will be modeled by making an analogy to the breakdown rates of a crude enzyme mixture:
 +
Literature suggests evidence that the ability of bacterial cells to reduce dyes is a function of substrate concentration, [S]; subsequent decolorization has been shown to follow Michaelis-Menten kinetics (1).
 +
<br><img src="https://static.igem.org/mediawiki/2014/9/91/Screen_Shot_2014-10-14_at_4.40.33_PM.png" style="margin:0 0 0 10px;" width="40%">  
 +
<br><br>
 +
<img src="https://static.igem.org/mediawiki/2014/6/61/Source_9.png" style="margin:0 0 0 10px;" width="60%">Source needed (IX)
 +
<br>By coupling enzymatic degradative reactions, the following general biocatalysis can be defined:
 +
<img src="https://static.igem.org/mediawiki/2014/3/35/Screen_Shot_2014-10-14_at_3.31.01_PM.png" style="margin:0 0 0 10px;" width="40%">
-
</script>
+
</p>
-
<script type="text/javascript">
+
</div>
 +
<div class="SCJMFHIGHLIGHT">
 +
<p>From crude azoreductase extracts from recombinant E. coli, Michaelis–Menten constants were determined according to Lineweaver–Burk to infer the following kinetics parameters
 +
<br>a. Km = 0.42mM
 +
<br>b. Vmax = 65.2 umol/mg protein.min
 +
<br>
 +
<img src="https://static.igem.org/mediawiki/2014/c/c4/Graph.png" style="margin:0 0 0 10px;" width="50%">
 +
<b>Table summarizing the assumptions for biomass requirements in the dyein of 1000kg of cotton. This will enable bioreactor sizing calculations in the next section.</b>
 +
<img src="https://static.igem.org/mediawiki/2014/6/60/Screen_Shot_2014-10-14_at_8.10.12_PM.png" style="margin:0 0 0 10px;" width="50%">
 +
</p>
 +
</div>
 +
<h3>Process Flowsheet</h3>
 +
<br>
 +
<p>The overview diagram below presents the proposed layout for the plant, using an E. coli biofilm as the ‘immobilisation method’, one of the process alternatives we are considering. The synthetic E. coli immobilisation mechanism would take the same format i.e. longitudinal plates, however, we will also consider beads of the synthetic immobilising agent in a packed bed format.</p>
 +
<br>
 +
<h5>Key Features of Our System</h5>
 +
<img class="aligncenter" src="https://static.igem.org/mediawiki/2014/5/54/Manufacture3UCL.jpg" height="50%" width="50%">
 +
<br>
 +
<br>
 +
<br> - Fermentation stage is where optimized growth will take place by controlling mixing and oxygen supply. At the end of this stage, viable E. coli cells expressing the enzymes of interest will be present in a broth.
 +
<br> - Module- see cross section of a single system. Continuous flow system with flow rates and residence times based on mass transfer kinetics, specific to E. Coli
 +
<br> - Module 1 designed to capture the bulk of the azodyes, module 2 is a polishing step
 +
<br> - Both anaerobic and aerobic reactions take place at the same time in both the modules, design based on gas supply (nitrogen vs. oxygen)
 +
<br> - Cleaning operation using biodegradable chemical at high flow rate (from holding tank 2)
 +
<br> - Continuous recycle system for maximal active and diffusive uptake.
 +
<br> - Filter modules- exploring the use of disposable low cost agricultural waste for filtration
 +
<br> - Further processing- based on the commercial value of the breakdown products, investments could be made into higher-tier technology such as chromatography columns to separate the breakdown products individually.
 +
<br>
 +
<p>This versatile and simple process offers a wide range of future developments into various chemical producing sectors. It would be possible to use this technology in parallel with different industries as a form of platform technology using different synthetic biology anchors, in order to detoxify various effluent polluting chemicals.</p>
 +
<br>
 +
<h4>Bioreactor Design</h4>
 +
<br><p>Using the estimates for the required E. coli biomass, this section will qualify optimal sizing and operation of the bioreactor required for the microbial fermentation stage. The underlying assumptions on dyeing efficiencies and mass transfer kinetics are hence incorporated in the design.</p>
-
/********************************
 
-
** FILE: lib/jquery.min.js
 
-
********************************/
 
-
// NOTE: nytg Additions at bottom of file
+
<img src="https://static.igem.org/mediawiki/2010/b/ba/UCL_CFDvideo.gif" style="center;margin:0 0 0 10px;width="40%">
-
 
+
-
/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+
-
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="  <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
+
-
f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
+
-
{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
+
-
 
+
-
 
+
-
// BEGIN nytg Additions
+
-
jQuery.noConflict();
+
-
var $j = jQuery;
+
-
// END nytg Additions
+
-
 
+
-
 
+
-
/********************************
+
-
** FILE: lib/raphael.js
+
-
********************************/
+
 +
<br>
 +
<h4>Module operation</h4>
 +
<br><p>
 +
After the fermentation stage, the E. coli biomass is dispersed in a liquor also containing various byproducts. A concentration step could be beneficial to reduce volumes in the next stage. However, capital costs of such unit operations would not be attractive to potential dyeing companies deciding to acquire the entire system. The subsequent modules are equipped to handle large volumes and operate in continuous-flow mode with intermittent discharges. By controlling residence time and operating flow rates, it will be possible to achieve a cell recovery deemed efficient. These will be then immobilized onto the surface of the plates within the modules. There exists a wide range of immobilization strategies used for biological wastewater treatment and this is what gives the unit its modular character. By supporting a number of immobilization methods without changing the hardware, the module allows for the enzymatic breakdown of a wide range of recalcitrant chemicals that might be financially and environmentally costly to treat using conventional methods. (more to come)<p>
 +
<br>
 +
<h5><b>Design of immobilization unit</b></h5>
 +
<br>
 +
<b>Top view of the module with Azodye feed pipe (red) and aeration inlets for the plates (green).</b> 
 +
<img src="https://static.igem.org/mediawiki/2014/5/53/B3.PNG" style="margin:0 0 0 10px;" width="60%">
 +
<br>
 +
</div>
-
(function(a){var b="0.3.4",c="hasOwnProperty",d=/[\.\/]/,e="*",f=function(){},g=function(a,b){return a-b},h,i,j={n:{}},k=function(a,b){var c=j,d=i,e=Array.prototype.slice.call(arguments,2),f=k.listeners(a),l=0,m=!1,n,o=[],p={},q=[],r=h,s=[];h=a,i=0;for(var t=0,u=f.length;t<u;t++)"zIndex"in f[t]&&(o.push(f[t].zIndex),f[t].zIndex<0&&(p[f[t].zIndex]=f[t]));o.sort(g);while(o[l]<0){n=p[o[l++]],q.push(n.apply(b,e));if(i){i=d;return q}}for(t=0;t<u;t++){n=f[t];if("zIndex"in n)if(n.zIndex==o[l]){q.push(n.apply(b,e));if(i)break;do{l++,n=p[o[l]],n&&q.push(n.apply(b,e));if(i)break}while(n)}else p[n.zIndex]=n;else{q.push(n.apply(b,e));if(i)break}}i=d,h=r;return q.length?q:null};k.listeners=function(a){var b=a.split(d),c=j,f,g,h,i,k,l,m,n,o=[c],p=[];for(i=0,k=b.length;i<k;i++){n=[];for(l=0,m=o.length;l<m;l++){c=o[l].n,g=[c[b[i]],c[e]],h=2;while(h--)f=g[h],f&&(n.push(f),p=p.concat(f.f||[]))}o=n}return p},k.on=function(a,b){var c=a.split(d),e=j;for(var g=0,h=c.length;g<h;g++)e=e.n,!e[c[g]]&&(e[c[g]]={n:{}}),e=e[c[g]];e.f=e.f||[];for(g=0,h=e.f.length;g<h;g++)if(e.f[g]==b)return f;e.f.push(b);return function(a){+a==+a&&(b.zIndex=+a)}},k.stop=function(){i=1},k.nt=function(a){if(a)return(new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)")).test(h);return h},k.off=k.unbind=function(a,b){var f=a.split(d),g,h,i,k,l,m,n,o=[j];for(k=0,l=f.length;k<l;k++)for(m=0;m<o.length;m+=i.length-2){i=[m,1],g=o[m].n;if(f[k]!=e)g[f[k]]&&i.push(g[f[k]]);else for(h in g)g[c](h)&&i.push(g[h]);o.splice.apply(o,i)}for(k=0,l=o.length;k<l;k++){g=o[k];while(g.n){if(b){if(g.f){for(m=0,n=g.f.length;m<n;m++)if(g.f[m]==b){g.f.splice(m,1);break}!g.f.length&&delete g.f}for(h in g.n)if(g.n[c](h)&&g.n[h].f){var p=g.n[h].f;for(m=0,n=p.length;m<n;m++)if(p[m]==b){p.splice(m,1);break}!p.length&&delete g.n[h].f}}else{delete g.f;for(h in g.n)g.n[c](h)&&g.n[h].f&&delete g.n[h].f}g=g.n}}},k.once=function(a,b){var c=function(){var d=b.apply(this,arguments);k.unbind(a,c);return d};return k.on(a,c)},k.version=b,k.toString=function(){return"You are running Eve "+b},typeof module!="undefined"&&module.exports?module.exports=k:typeof define!="undefined"?define("eve",[],function(){return k}):a.eve=k})(this),function(){function cF(a){for(var b=0;b<cy.length;b++)cy[b].el.paper==a&&cy.splice(b--,1)}function cE(b,d,e,f,h,i){e=Q(e);var j,k,l,m=[],o,p,q,t=b.ms,u={},v={},w={};if(f)for(y=0,z=cy.length;y<z;y++){var x=cy[y];if(x.el.id==d.id&&x.anim==b){x.percent!=e?(cy.splice(y,1),l=1):k=x,d.attr(x.totalOrigin);break}}else f=+v;for(var y=0,z=b.percents.length;y<z;y++){if(b.percents[y]==e||b.percents[y]>f*b.top){e=b.percents[y],p=b.percents[y-1]||0,t=t/b.top*(e-p),o=b.percents[y+1],j=b.anim[e];break}f&&d.attr(b.anim[b.percents[y]])}if(!!j){if(!k){for(var A in j)if(j[g](A))if(U[g](A)||d.paper.customAttributes[g](A)){u[A]=d.attr(A),u[A]==null&&(u[A]=T[A]),v[A]=j[A];switch(U[A]){case C:w[A]=(v[A]-u[A])/t;break;case"colour":u[A]=a.getRGB(u[A]);var B=a.getRGB(v[A]);w[A]={r:(B.r-u[A].r)/t,g:(B.g-u[A].g)/t,b:(B.b-u[A].b)/t};break;case"path":var D=bR(u[A],v[A]),E=D[1];u[A]=D[0],w[A]=[];for(y=0,z=u[A].length;y<z;y++){w[A][y]=[0];for(var F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(E[y][F]-u[A][y][F])/t}break;case"transform":var H=d._,I=ca(H[A],v[A]);if(I){u[A]=I.from,v[A]=I.to,w[A]=[],w[A].real=!0;for(y=0,z=u[A].length;y<z;y++){w[A][y]=[u[A][y][0]];for(F=1,G=u[A][y].length;F<G;F++)w[A][y][F]=(v[A][y][F]-u[A][y][F])/t}}else{var J=d.matrix||new cb,K={_:{transform:H.transform},getBBox:function(){return d.getBBox(1)}};u[A]=[J.a,J.b,J.c,J.d,J.e,J.f],b$(K,v[A]),v[A]=K._.transform,w[A]=[(K.matrix.a-J.a)/t,(K.matrix.b-J.b)/t,(K.matrix.c-J.c)/t,(K.matrix.d-J.d)/t,(K.matrix.e-J.e)/t,(K.matrix.f-J.f)/t]}break;case"csv":var L=r(j[A])[s](c),M=r(u[A])[s](c);if(A=="clip-rect"){u[A]=M,w[A]=[],y=M.length;while(y--)w[A][y]=(L[y]-u[A][y])/t}v[A]=L;break;default:L=[][n](j[A]),M=[][n](u[A]),w[A]=[],y=d.paper.customAttributes[A].length;while(y--)w[A][y]=((L[y]||0)-(M[y]||0))/t}}var O=j.easing,P=a.easing_formulas[O];if(!P){P=r(O).match(N);if(P&&P.length==5){var R=P;P=function(a){return cC(a,+R[1],+R[2],+R[3],+R[4],t)}}else P=bf}q=j.start||b.start||+(new Date),x={anim:b,percent:e,timestamp:q,start:q+(b.del||0),status:0,initstatus:f||0,stop:!1,ms:t,easing:P,from:u,diff:w,to:v,el:d,callback:j.callback,prev:p,next:o,repeat:i||b.times,origin:d.attr(),totalOrigin:h},cy.push(x);if(f&&!k&&!l){x.stop=!0,x.start=new Date-t*f;if(cy.length==1)return cA()}l&&(x.start=new Date-x.ms*f),cy.length==1&&cz(cA)}else k.initstatus=f,k.start=new Date-k.ms*f;eve("raphael.anim.start."+d.id,d,b)}}function cD(a,b){var c=[],d={};this.ms=b,this.times=1;if(a){for(var e in a)a[g](e)&&(d[Q(e)]=a[e],c.push(Q(e)));c.sort(bd)}this.anim=d,this.top=c[c.length-1],this.percents=c}function cC(a,b,c,d,e,f){function o(a,b){var c,d,e,f,j,k;for(e=a,k=0;k<8;k++){f=m(e)-a;if(z(f)<b)return e;j=(3*i*e+2*h)*e+g;if(z(j)<1e-6)break;e=e-f/j}c=0,d=1,e=a;if(e<c)return c;if(e>d)return d;while(c<d){f=m(e);if(z(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cq(){return this.x+q+this.y+q+this.width+" &times; "+this.height}function cp(){return this.x+q+this.y}function cb(a,b,c,d,e,f){a!=null?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bH(b,c,d){b=a._path2curve(b),c=a._path2curve(c);var e,f,g,h,i,j,k,l,m,n,o=d?0:[];for(var p=0,q=b.length;p<q;p++){var r=b[p];if(r[0]=="M")e=i=r[1],f=j=r[2];else{r[0]=="C"?(m=[e,f].concat(r.slice(1)),e=m[6],f=m[7]):(m=[e,f,e,f,i,j,i,j],e=i,f=j);for(var s=0,t=c.length;s<t;s++){var u=c[s];if(u[0]=="M")g=k=u[1],h=l=u[2];else{u[0]=="C"?(n=[g,h].concat(u.slice(1)),g=n[6],h=n[7]):(n=[g,h,g,h,k,l,k,l],g=k,h=l);var v=bG(m,n,d);if(d)o+=v;else{for(var w=0,x=v.length;w<x;w++)v[w].segment1=p,v[w].segment2=s,v[w].bez1=m,v[w].bez2=n;o=o.concat(v)}}}}}return o}function bG(b,c,d){var e=a.bezierBBox(b),f=a.bezierBBox(c);if(!a.isBBoxIntersect(e,f))return d?0:[];var g=bB.apply(0,b),h=bB.apply(0,c),i=~~(g/5),j=~~(h/5),k=[],l=[],m={},n=d?0:[];for(var o=0;o<i+1;o++){var p=a.findDotsAtSegment.apply(a,b.concat(o/i));k.push({x:p.x,y:p.y,t:o/i})}for(o=0;o<j+1;o++)p=a.findDotsAtSegment.apply(a,c.concat(o/j)),l.push({x:p.x,y:p.y,t:o/j});for(o=0;o<i;o++)for(var q=0;q<j;q++){var r=k[o],s=k[o+1],t=l[q],u=l[q+1],v=z(s.x-r.x)<.001?"y":"x",w=z(u.x-t.x)<.001?"y":"x",x=bD(r.x,r.y,s.x,s.y,t.x,t.y,u.x,u.y);if(x){if(m[x.x.toFixed(4)]==x.y.toFixed(4))continue;m[x.x.toFixed(4)]=x.y.toFixed(4);var y=r.t+z((x[v]-r[v])/(s[v]-r[v]))*(s.t-r.t),A=t.t+z((x[w]-t[w])/(u[w]-t[w]))*(u.t-t.t);y>=0&&y<=1&&A>=0&&A<=1&&(d?n++:n.push({x:x.x,y:x.y,t1:y,t2:A}))}}return n}function bF(a,b){return bG(a,b,1)}function bE(a,b){return bG(a,b)}function bD(a,b,c,d,e,f,g,h){if(!(x(a,c)<y(e,g)||y(a,c)>x(e,g)||x(b,d)<y(f,h)||y(b,d)>x(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(!k)return;var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(n<+y(a,c).toFixed(2)||n>+x(a,c).toFixed(2)||n<+y(e,g).toFixed(2)||n>+x(e,g).toFixed(2)||o<+y(b,d).toFixed(2)||o>+x(b,d).toFixed(2)||o<+y(f,h).toFixed(2)||o>+x(f,h).toFixed(2))return;return{x:l,y:m}}}function bC(a,b,c,d,e,f,g,h,i){if(!(i<0||bB(a,b,c,d,e,f,g,h)<i)){var j=1,k=j/2,l=j-k,m,n=.01;m=bB(a,b,c,d,e,f,g,h,l);while(z(m-i)>n)k/=2,l+=(m<i?1:-1)*k,m=bB(a,b,c,d,e,f,g,h,l);return l}}function bB(a,b,c,d,e,f,g,h,i){i==null&&(i=1),i=i>1?1:i<0?0:i;var j=i/2,k=12,l=[-0.1252,.1252,-0.3678,.3678,-0.5873,.5873,-0.7699,.7699,-0.9041,.9041,-0.9816,.9816],m=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],n=0;for(var o=0;o<k;o++){var p=j*l[o]+j,q=bA(p,a,c,e,g),r=bA(p,b,d,f,h),s=q*q+r*r;n+=m[o]*w.sqrt(s)}return j*n}function bA(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function by(a,b){var c=[];for(var d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function bx(){return this.hex}function bv(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("&#9216;"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[g](f)){bu(i,f);return c?c(h[f]):h[f]}i.length>=1e3&&delete h[i.shift()],i.push(f),h[f]=a[m](b,e);return c?c(h[f]):h[f]}return d}function bu(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function bm(a){if(Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[g](c)&&(b[c]=bm(a[c]));return b}function a(c){if(a.is(c,"function"))return b?c():eve.on("raphael.DOMload",c);if(a.is(c,E))return a._engine.create[m](a,c.splice(0,3+a.is(c[0],C))).add(c);var d=Array.prototype.slice.call(arguments,0);if(a.is(d[d.length-1],"function")){var e=d.pop();return b?e.call(a._engine.create[m](a,d)):eve.on("raphael.DOMload",function(){e.call(a._engine.create[m](a,d))})}return a._engine.create[m](a,arguments)}a.version="2.1.0",a.eve=eve;var b,c=/[, ]+/,d={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},e=/\{(\d+)\}/g,f="prototype",g="hasOwnProperty",h={doc:document,win:window},i={was:Object.prototype[g].call(h.win,"Raphael"),is:h.win.Raphael},j=function(){this.ca=this.customAttributes={}},k,l="appendChild",m="apply",n="concat",o="createTouch"in h.doc,p="",q=" ",r=String,s="split",t="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[s](q),u={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},v=r.prototype.toLowerCase,w=Math,x=w.max,y=w.min,z=w.abs,A=w.pow,B=w.PI,C="number",D="string",E="array",F="toString",G="fill",H=Object.prototype.toString,I={},J="push",K=a._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i,L=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,M={NaN:1,Infinity:1,"-Infinity":1},N=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,O=w.round,P="setAttribute",Q=parseFloat,R=parseInt,S=r.prototype.toUpperCase,T=a._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},U=a._availableAnimAttrs={blur:C,"clip-rect":"csv",cx:C,cy:C,fill:"colour","fill-opacity":C,"font-size":C,height:C,opacity:C,path:"path",r:C,rx:C,ry:C,stroke:"colour","stroke-opacity":C,"stroke-width":C,transform:"transform",width:C,x:C,y:C},V=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]/g,W=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,X={hs:1,rg:1},Y=/,?([achlmqrstvxz]),?/gi,Z=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,$=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,_=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ig,ba=a._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,bb={},bc=function(a,b){return a.key-b.key},bd=function(a,b){return Q(a)-Q(b)},be=function(){},bf=function(a){return a},bg=a._rectPath=function(a,b,c,d,e){if(e)return[["M",a+e,b],["l",c-e*2,0],["a",e,e,0,0,1,e,e],["l",0,d-e*2],["a",e,e,0,0,1,-e,e],["l",e*2-c,0],["a",e,e,0,0,1,-e,-e],["l",0,e*2-d],["a",e,e,0,0,1,e,-e],["z"]];return[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},bh=function(a,b,c,d){d==null&&(d=c);return[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},bi=a._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return bh(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return bg(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return bg(b.x,b.y,b.width,b.height)}},bj=a.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;a=bR(a);for(e=0,g=a.length;e<g;e++){i=a[e];for(f=1,h=i.length;f<h;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d}return a};a._g=h,a.type=h.win.SVGAngle||h.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML";if(a.type=="VML"){var bk=h.doc.createElement("div"),bl;bk.innerHTML='<v:shape adj="1"/>',bl=bk.firstChild,bl.style.behavior="url(#default#VML)";if(!bl||typeof bl.adj!="object")return a.type=p;bk=null}a.svg=!(a.vml=a.type=="VML"),a._Paper=j,a.fn=k=j.prototype=a.prototype,a._id=0,a._oid=0,a.is=function(a,b){b=v.call(b);if(b=="finite")return!M[g](+a);if(b=="array")return a instanceof Array;return b=="null"&&a===null||b==typeof a&&a!==null||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||H.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+w.atan2(-i,-h)*180/B+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*B/180},a.deg=function(a){return a*180/B%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,E)){var e=b.length;while(e--)if(z(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(f<d)return c-f;if(f>b-d)return c-f+b}return c};var bn=a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=w.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){eve("raphael.setWindow",a,h.win,b),h.win=b,h.doc=h.win.document,a._engine.initWin&&a._engine.initWin(h.win)};var bo=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bo=bv(function(a){try{d.style.color=r(a).replace(c,p);var b=g.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=h.doc.createElement("i");i.title="Rapha&euml;l Colour Picker",i.style.display="none",h.doc.body.appendChild(i),bo=bv(function(a){i.style.color=a;return h.doc.defaultView.getComputedStyle(i,p).getPropertyValue("color")})}return bo(b)},bp=function(){return"hsb("+[this.h,this.s,this.b]+")"},bq=function(){return"hsl("+[this.h,this.s,this.l]+")"},br=function(){return this.hex},bs=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,D)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},bt=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:br};a.is(e,"finite")&&(f.opacity=e);return f};a.color=function(b){var c;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(c=a.hsb2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1)),b.toString=br;return b},a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-z(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-z(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=x(a,b,c),g=f-y(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bp}},a.rgb2hsl=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=x(a,b,c),h=y(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bq}},a._path2string=function(){return this.join(",").replace(Y,"$1")};var bw=a._preload=function(a,b){var c=h.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,h.doc.body.removeChild(this)},c.onerror=function(){h.doc.body.removeChild(this)},h.doc.body.appendChild(c),c.src=a};a.getRGB=bv(function(b){if(!b||!!((b=r(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:bx};!X[g](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bo(b));var c,d,e,f,h,i,j,k=b.match(L);if(k){k[2]&&(f=R(k[2].substring(5),16),e=R(k[2].substring(3,5),16),d=R(k[2].substring(1,3),16)),k[3]&&(f=R((i=k[3].charAt(3))+i,16),e=R((i=k[3].charAt(2))+i,16),d=R((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="&deg;")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,f,h)}if(k[6]){j=k[6][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="&deg;")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,f,h)}k={r:d,g:e,b:f,toString:bx},k.hex="#"+(16777216|f|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx}},a),a.hsb=bv(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=bv(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=bv(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=function(b){if(!b)return null;var c=bz(b);if(c.arr)return bJ(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];a.is(b,E)&&a.is(b[0],E)&&(e=bJ(b)),e.length||r(b).replace(Z,function(a,b,c){var f=[],g=b.toLowerCase();c.replace(_,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(e.push([b][n](f.splice(0,2))),g="l",b=b=="m"?"l":"L");if(g=="r")e.push([b][n](f));else while(f.length>=d[g]){e.push([b][n](f.splice(0,d[g])));if(!d[g])break}}),e.toString=a._path2string,c.arr=bJ(e);return e},a.parseTransformString=bv(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=bJ(b)),d.length||r(b).replace($,function(a,b,c){var e=[],f=v.call(b);c.replace(_,function(a,b){b&&e.push(+b)}),d.push([b][n](e))}),d.toString=a._path2string;return d});var bz=function(a){var b=bz.ps=bz.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[g](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])});return b[a]};a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=A(j,3),l=A(j,2),m=i*i,n=m*i,o=k*a+l*3*i*c+j*3*i*i*e+n*g,p=k*b+l*3*i*d+j*3*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,x=j*e+i*g,y=j*f+i*h,z=90-w.atan2(q-s,r-t)*180/B;(q>s||r<t)&&(z+=180);return{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:x,y:y},alpha:z}},a.bezierBBox=function(b,c,d,e,f,g,h,i){a.is(b,"array")||(b=[b,c,d,e,f,g,h,i]);var j=bQ.apply(null,b);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},a.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},a.isBBoxIntersect=function(b,c){var d=a.isPointInsideBBox;return d(c,b.x,b.y)||d(c,b.x2,b.y)||d(c,b.x,b.y2)||d(c,b.x2,b.y2)||d(b,c.x,c.y)||d(b,c.x2,c.y)||d(b,c.x,c.y2)||d(b,c.x2,c.y2)||(b.x<c.x2&&b.x>c.x||c.x<b.x2&&c.x>b.x)&&(b.y<c.y2&&b.y>c.y||c.y<b.y2&&c.y>b.y)},a.pathIntersection=function(a,b){return bH(a,b)},a.pathIntersectionNumber=function(a,b){return bH(a,b,1)},a.isPointInsidePath=function(b,c,d){var e=a.pathBBox(b);return a.isPointInsideBBox(e,c,d)&&bH(b,[["M",c,d],["H",e.x2+10]],1)%2==1},a._removedFactory=function(a){return function(){eve("raphael.log",null,"Rapha&euml;l: you are calling to method &ldquo;"+a+"&rdquo; of removed object",a)}};var bI=a.pathBBox=function(a){var b=bz(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=bR(a);var c=0,d=0,e=[],f=[],g;for(var h=0,i=a.length;h<i;h++){g=a[h];if(g[0]=="M")c=g[1],d=g[2],e.push(c),f.push(d);else{var j=bQ(c,d,g[1],g[2],g[3],g[4],g[5],g[6]);e=e[n](j.min.x,j.max.x),f=f[n](j.min.y,j.max.y),c=g[5],d=g[6]}}var k=y[m](0,e),l=y[m](0,f),o=x[m](0,e),p=x[m](0,f),q={x:k,y:l,x2:o,y2:p,width:o-k,height:p-l};b.bbox=bm(q);return q},bJ=function(b){var c=bm(b);c.toString=a._path2string;return c},bK=a._pathToRelative=function(b){var c=bz(b);if(c.rel)return bJ(c.rel);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=b[0][1],f=b[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=b.length;j<k;j++){var l=d[j]=[],m=b[j];if(m[0]!=v.call(m[0])){l[0]=v.call(m[0]);switch(l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;n<o;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}}else{l=d[j]=[],m[0]=="m"&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;p<q;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}d.toString=a._path2string,c.rel=bJ(d);return d},bL=a._pathToAbsolute=function(b){var c=bz(b);if(c.abs)return bJ(c.abs);if(!a.is(b,E)||!a.is(b&&b[0],E))b=a.parsePathString(b);if(!b||!b.length)return[["M",0,0]];var d=[],e=0,f=0,g=0,h=0,i=0;b[0][0]=="M"&&(e=+b[0][1],f=+b[0][2],g=e,h=f,i++,d[0]=["M",e,f]);var j=b.length==3&&b[0][0]=="M"&&b[1][0].toUpperCase()=="R"&&b[2][0].toUpperCase()=="Z";for(var k,l,m=i,o=b.length;m<o;m++){d.push(k=[]),l=b[m];if(l[0]!=S.call(l[0])){k[0]=S.call(l[0]);switch(k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":var p=[e,f][n](l.slice(1));for(var q=2,r=p.length;q<r;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[n](by(p,j));break;case"M":g=+l[1]+e,h=+l[2]+f;default:for(q=1,r=l.length;q<r;q++)k[q]=+l[q]+(q%2?e:f)}}else if(l[0]=="R")p=[e,f][n](l.slice(1)),d.pop(),d=d[n](by(p,j)),k=["R"][n](l.slice(-2));else for(var s=0,t=l.length;s<t;s++)k[s]=l[s];switch(k[0]){case"Z":e=g,f=h;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":g=k[k.length-2],h=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}d.toString=a._path2string,c.abs=bJ(d);return d},bM=function(a,b,c,d){return[a,b,c,d,c,d]},bN=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},bO=function(a,b,c,d,e,f,g,h,i,j){var k=B*120/180,l=B/180*(+e||0),m=[],o,p=bv(function(a,b,c){var d=a*w.cos(c)-b*w.sin(c),e=a*w.sin(c)+b*w.cos(c);return{x:d,y:e}});if(!j){o=p(a,b,-l),a=o.x,b=o.y,o=p(h,i,-l),h=o.x,i=o.y;var q=w.cos(B/180*e),r=w.sin(B/180*e),t=(a-h)/2,u=(b-i)/2,v=t*t/(c*c)+u*u/(d*d);v>1&&(v=w.sqrt(v),c=v*c,d=v*d);var x=c*c,y=d*d,A=(f==g?-1:1)*w.sqrt(z((x*y-x*u*u-y*t*t)/(x*u*u+y*t*t))),C=A*c*u/d+(a+h)/2,D=A*-d*t/c+(b+i)/2,E=w.asin(((b-D)/d).toFixed(9)),F=w.asin(((i-D)/d).toFixed(9));E=a<C?B-E:E,F=h<C?B-F:F,E<0&&(E=B*2+E),F<0&&(F=B*2+F),g&&E>F&&(E=E-B*2),!g&&F>E&&(F=F-B*2)}else E=j[0],F=j[1],C=j[2],D=j[3];var G=F-E;if(z(G)>k){var H=F,I=h,J=i;F=E+k*(g&&F>E?1:-1),h=C+c*w.cos(F),i=D+d*w.sin(F),m=bO(h,i,c,d,e,0,g,I,J,[F,H,C,D])}G=F-E;var K=w.cos(E),L=w.sin(E),M=w.cos(F),N=w.sin(F),O=w.tan(G/4),P=4/3*c*O,Q=4/3*d*O,R=[a,b],S=[a+P*L,b-Q*K],T=[h+P*N,i-Q*M],U=[h,i];S[0]=2*R[0]-S[0],S[1]=2*R[1]-S[1];if(j)return[S,T,U][n](m);m=[S,T,U][n](m).join()[s](",");var V=[];for(var W=0,X=m.length;W<X;W++)V[W]=W%2?p(m[W-1],m[W],l).y:p(m[W],m[W+1],l).x;return V},bP=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:A(j,3)*a+A(j,2)*3*i*c+j*3*i*i*e+A(i,3)*g,y:A(j,3)*b+A(j,2)*3*i*d+j*3*i*i*f+A(i,3)*h}},bQ=bv(function(a,b,c,d,e,f,g,h){var i=e-2*c+a-(g-2*e+c),j=2*(c-a)-2*(e-c),k=a-c,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,o=[b,h],p=[a,g],q;z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:y[m](0,p),y:y[m](0,o)},max:{x:x[m](0,p),y:x[m](0,o)}}}),bR=a._path2curve=bv(function(a,b){var c=!b&&bz(a);if(!b&&c.curve)return bJ(c.curve);var d=bL(a),e=b&&bL(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][n](bO[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][n](bN(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][n](bN(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](bM(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](bM(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](bM(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](bM(b.x,b.y,b.X,b.Y))}return a},i=function(a,b){if(a[b].length>7){a[b].shift();var c=a[b];while(c.length)a.splice(b++,0,["C"][n](c.splice(0,6)));a.splice(b,1),l=x(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],l=x(d.length,e&&e.length||0))};for(var k=0,l=x(d.length,e&&e.length||0);k<l;k++){d[k]=h(d[k],f),i(d,k),e&&(e[k]=h(e[k],g)),e&&i(e,k),j(d,e,f,g,k),j(e,d,g,f,k);var o=d[k],p=e&&e[k],q=o.length,r=e&&p.length;f.x=o[q-2],f.y=o[q-1],f.bx=Q(o[q-4])||f.x,f.by=Q(o[q-3])||f.y,g.bx=e&&(Q(p[r-4])||g.x),g.by=e&&(Q(p[r-3])||g.y),g.x=e&&p[r-2],g.y=e&&p[r-1]}e||(c.curve=bJ(d));return e?[d,e]:d},null,bJ),bS=a._parseDots=bv(function(b){var c=[];for(var d=0,e=b.length;d<e;d++){var f={},g=b[d].match(/^([^:]*):?([\d\.]*)/);f.color=a.getRGB(g[1]);if(f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;d<e;d++)if(!c[d].offset){var h=Q(c[d-1].offset||0),i=0;for(var j=d+1;j<e;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=Q(i);var k=(i-h)/(j-d+1);for(;d<j;d++)h+=k,c[d].offset=h+"%"}return c}),bT=a._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)},bU=a._tofront=function(a,b){b.top!==a&&(bT(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},bV=a._toback=function(a,b){b.bottom!==a&&(bT(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},bW=a._insertafter=function(a,b,c){bT(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},bX=a._insertbefore=function(a,b,c){bT(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},bY=a.toMatrix=function(a,b){var c=bI(a),d={_:{transform:p},getBBox:function(){return c}};b$(d,b);return d.matrix},bZ=a.transformPath=function(a,b){return bj(a,bY(a,b))},b$=a._extractTransform=function(b,c){if(c==null)return b._.transform;c=r(c).replace(/\.{3}|\u2026/g,b._.transform||p);var d=a.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=b._,k=new cb;j.transform=d||[];if(d)for(var l=0,m=d.length;l<m;l++){var n=d[l],o=n.length,q=r(n[0]).toLowerCase(),s=n[0]!=q,t=s?k.invert():0,u,v,w,x,y;q=="t"&&o==3?s?(u=t.x(0,0),v=t.y(0,0),w=t.x(n[1],n[2]),x=t.y(n[1],n[2]),k.translate(w-u,x-v)):k.translate(n[1],n[2]):q=="r"?o==2?(y=y||b.getBBox(1),k.rotate(n[1],y.x+y.width/2,y.y+y.height/2),e+=n[1]):o==4&&(s?(w=t.x(n[2],n[3]),x=t.y(n[2],n[3]),k.rotate(n[1],w,x)):k.rotate(n[1],n[2],n[3]),e+=n[1]):q=="s"?o==2||o==3?(y=y||b.getBBox(1),k.scale(n[1],n[o-1],y.x+y.width/2,y.y+y.height/2),h*=n[1],i*=n[o-1]):o==5&&(s?(w=t.x(n[3],n[4]),x=t.y(n[3],n[4]),k.scale(n[1],n[2],w,x)):k.scale(n[1],n[2],n[3],n[4]),h*=n[1],i*=n[2]):q=="m"&&o==7&&k.add(n[1],n[2],n[3],n[4],n[5],n[6]),j.dirtyT=1,b.matrix=k}b.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,h==1&&i==1&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1},b_=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return a.length==4?[b,0,a[2],a[3]]:[b,0];case"s":return a.length==5?[b,1,1,a[3],a[4]]:a.length==3?[b,1,1]:[b,1]}},ca=a._equaliseTransform=function(b,c){c=r(c).replace(/\.{3}|\u2026/g,b),b=a.parseTransformString(b)||[],c=a.parseTransformString(c)||[];var d=x(b.length,c.length),e=[],f=[],g=0,h,i,j,k;for(;g<d;g++){j=b[g]||b_(c[g]),k=c[g]||b_(j);if(j[0]!=k[0]||j[0].toLowerCase()=="r"&&(j[2]!=k[2]||j[3]!=k[3])||j[0].toLowerCase()=="s"&&(j[3]!=k[3]||j[4]!=k[4]))return;e[g]=[],f[g]=[];for(h=0,i=x(j.length,k.length);h<i;h++)h in j&&(e[g][h]=j[h]),h in k&&(f[g][h]=k[h])}return{from:e,to:f}};a._getContainer=function(b,c,d,e){var f;f=e==null&&!a.is(b,"object")?h.doc.getElementById(b):b;if(f!=null){if(f.tagName)return c==null?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d};return{container:1,x:b,y:c,width:d,height:e}}},a.pathToRelative=bK,a._engine={},a.path2curve=bR,a.matrix=function(a,b,c,d,e,f){return new cb(a,b,c,d,e,f)},function(b){function d(a){var b=w.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}function c(a){return a[0]*a[0]+a[1]*a[1]}b.add=function(a,b,c,d,e,f){var g=[[],[],[]],h=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],i=[[a,c,e],[b,d,f],[0,0,1]],j,k,l,m;a&&a instanceof cb&&(i=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]);for(j=0;j<3;j++)for(k=0;k<3;k++){m=0;for(l=0;l<3;l++)m+=h[j][l]*i[l][k];g[j][k]=m}this.a=g[0][0],this.b=g[1][0],this.c=g[0][1],this.d=g[1][1],this.e=g[0][2],this.f=g[1][2]},b.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new cb(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},b.clone=function(){return new cb(this.a,this.b,this.c,this.d,this.e,this.f)},b.translate=function(a,b){this.add(1,0,0,1,a,b)},b.scale=function(a,b,c,d){b==null&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},b.rotate=function(b,c,d){b=a.rad(b),c=c||0,d=d||0;var e=+w.cos(b).toFixed(9),f=+w.sin(b).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},b.x=function(a,b){return a*this.a+b*this.c+this.e},b.y=function(a,b){return a*this.b+b*this.d+this.f},b.get=function(a){return+this[r.fromCharCode(97+a)].toFixed(4)},b.toString=function(){return a.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},b.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},b.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},b.split=function(){var b={};b.dx=this.e,b.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];b.scalex=w.sqrt(c(e[0])),d(e[0]),b.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*b.shear,e[1][1]-e[0][1]*b.shear],b.scaley=w.sqrt(c(e[1])),d(e[1]),b.shear/=b.scaley;var f=-e[0][1],g=e[1][1];g<0?(b.rotate=a.deg(w.acos(g)),f<0&&(b.rotate=360-b.rotate)):b.rotate=a.deg(w.asin(f)),b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate),b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate,b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b},b.toTransformString=function(a){var b=a||this[s]();if(b.isSimple){b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4);return(b.dx||b.dy?"t"+[b.dx,b.dy]:p)+(b.scalex!=1||b.scaley!=1?"s"+[b.scalex,b.scaley,0,0]:p)+(b.rotate?"r"+[b.rotate,0,0]:p)}return"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(cb.prototype);var cc=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);navigator.vendor=="Apple Computer, Inc."&&(cc&&cc[1]<4||navigator.platform.slice(0,2)=="iP")||navigator.vendor=="Google Inc."&&cc&&cc[1]<8?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:k.safari=be;var cd=function(){this.returnValue=!1},ce=function(){return this.originalEvent.preventDefault()},cf=function(){this.cancelBubble=!0},cg=function(){return this.originalEvent.stopPropagation()},ch=function(){if(h.doc.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,f=function(e){var f=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,i=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,j=e.clientX+i,k=e.clientY+f;if(o&&u[g](b))for(var l=0,m=e.targetTouches&&e.targetTouches.length;l<m;l++)if(e.targetTouches[l].target==a){var n=e;e=e.targetTouches[l],e.originalEvent=n,e.preventDefault=ce,e.stopPropagation=cg;break}return c.call(d,e,j,k)};a.addEventListener(e,f,!1);return function(){a.removeEventListener(e,f,!1);return!0}};if(h.doc.attachEvent)return function(a,b,c,d){var e=function(a){a=a||h.win.event;var b=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;a.preventDefault=a.preventDefault||cd,a.stopPropagation=a.stopPropagation||cf;return c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){a.detachEvent("on"+b,e);return!0};return f}}(),ci=[],cj=function(a){var b=a.clientX,c=a.clientY,d=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,e=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft,f,g=ci.length;while(g--){f=ci[g];if(o){var i=a.touches.length,j;while(i--){j=a.touches[i];if(j.identifier==f.el._drag.id){b=j.clientX,c=j.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}}else a.preventDefault();var k=f.el.node,l,m=k.nextSibling,n=k.parentNode,p=k.style.display;h.win.opera&&n.removeChild(k),k.style.display="none",l=f.el.paper.getElementByPoint(b,c),k.style.display=p,h.win.opera&&(m?n.insertBefore(k,m):n.appendChild(k)),l&&eve("raphael.drag.over."+f.el.id,f.el,l),b+=e,c+=d,eve("raphael.drag.move."+f.el.id,f.move_scope||f.el,b-f.el._drag.x,c-f.el._drag.y,b,c,a)}},ck=function(b){a.unmousemove(cj).unmouseup(ck);var c=ci.length,d;while(c--)d=ci[c],d.el._drag={},eve("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,b);ci=[]},cl=a.el={};for(var cm=t.length;cm--;)(function(b){a[b]=cl[b]=function(c,d){a.is(c,"function")&&(this.events=this.events||[],this.events.push({name:b,f:c,unbind:ch(this.shape||this.node||h.doc,b,c,d||this)}));return this},a["un"+b]=cl["un"+b]=function(a){var c=this.events||[],d=c.length;while(d--)if(c[d].name==b&&c[d].f==a){c[d].unbind(),c.splice(d,1),!c.length&&delete this.events;return this}return this}})(t[cm]);cl.data=function(b,c){var d=bb[this.id]=bb[this.id]||{};if(arguments.length==1){if(a.is(b,"object")){for(var e in b)b[g](e)&&this.data(e,b[e]);return this}eve("raphael.data.get."+this.id,this,d[b],b);return d[b]}d[b]=c,eve("raphael.data.set."+this.id,this,c,b);return this},cl.removeData=function(a){a==null?bb[this.id]={}:bb[this.id]&&delete bb[this.id][a];return this},cl.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},cl.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var cn=[];cl.drag=function(b,c,d,e,f,g){function i(i){(i.originalEvent||i).preventDefault();var j=h.doc.documentElement.scrollTop||h.doc.body.scrollTop,k=h.doc.documentElement.scrollLeft||h.doc.body.scrollLeft;this._drag.x=i.clientX+k,this._drag.y=i.clientY+j,this._drag.id=i.identifier,!ci.length&&a.mousemove(cj).mouseup(ck),ci.push({el:this,move_scope:e,start_scope:f,end_scope:g}),c&&eve.on("raphael.drag.start."+this.id,c),b&&eve.on("raphael.drag.move."+this.id,b),d&&eve.on("raphael.drag.end."+this.id,d),eve("raphael.drag.start."+this.id,f||e||this,i.clientX+k,i.clientY+j,i)}this._drag={},cn.push({el:this,start:i}),this.mousedown(i);return this},cl.onDragOver=function(a){a?eve.on("raphael.drag.over."+this.id,a):eve.unbind("raphael.drag.over."+this.id)},cl.undrag=function(){var b=cn.length;while(b--)cn[b].el==this&&(this.unmousedown(cn[b].start),cn.splice(b,1),eve.unbind("raphael.drag.*."+this.id));!cn.length&&a.unmousemove(cj).unmouseup(ck)},k.circle=function(b,c,d){var e=a._engine.circle(this,b||0,c||0,d||0);this.__set__&&this.__set__.push(e);return e},k.rect=function(b,c,d,e,f){var g=a._engine.rect(this,b||0,c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.ellipse=function(b,c,d,e){var f=a._engine.ellipse(this,b||0,c||0,d||0,e||0);this.__set__&&this.__set__.push(f);return f},k.path=function(b){b&&!a.is(b,D)&&!a.is(b[0],E)&&(b+=p);var c=a._engine.path(a.format[m](a,arguments),this);this.__set__&&this.__set__.push(c);return c},k.image=function(b,c,d,e,f){var g=a._engine.image(this,b||"about:blank",c||0,d||0,e||0,f||0);this.__set__&&this.__set__.push(g);return g},k.text=function(b,c,d){var e=a._engine.text(this,b||0,c||0,r(d));this.__set__&&this.__set__.push(e);return e},k.set=function(b){!a.is(b,"array")&&(b=Array.prototype.splice.call(arguments,0,arguments.length));var c=new cG(b);this.__set__&&this.__set__.push(c);return c},k.setStart=function(a){this.__set__=a||this.set()},k.setFinish=function(a){var b=this.__set__;delete this.__set__;return b},k.setSize=function(b,c){return a._engine.setSize.call(this,b,c)},k.setViewBox=function(b,c,d,e,f){return a._engine.setViewBox.call(this,b,c,d,e,f)},k.top=k.bottom=null,k.raphael=a;var co=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,i=b.top+(h.win.pageYOffset||e.scrollTop||d.scrollTop)-f,j=b.left+(h.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:i,x:j}};k.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=h.doc.elementFromPoint(a,b);if(h.win.opera&&e.tagName=="svg"){var f=co(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var i=d.getIntersectionList(g,null);i.length&&(e=i[i.length-1])}if(!e)return null;while(e.parentNode&&e!=d.parentNode&&!e.raphael)e=e.parentNode;e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null;return e},k.getById=function(a){var b=this.bottom;while(b){if(b.id==a)return b;b=b.next}return null},k.forEach=function(a,b){var c=this.bottom;while(c){if(a.call(b,c)===!1)return this;c=c.next}return this},k.getElementsByPoint=function(a,b){var c=this.set();this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)});return c},cl.isPointInside=function(b,c){var d=this.realPath=this.realPath||bi[this.type](this);return a.isPointInsidePath(d,b,c)},cl.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=bi[this.type](this),b.bboxwt=bI(this.realPath),b.bboxwt.toString=cq,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=bi[this.type](this);b.bbox=bI(bj(this.realPath,this.matrix)),b.bbox.toString=cq,b.dirty=b.dirtyT=0}return b.bbox},cl.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());this.__set__&&this.__set__.push(a);return a},cl.glow=function(a){if(this.type=="text")return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||bi[this.type](this);f=this.matrix?bj(f,this.matrix):f;for(var g=1;g<c+1;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var cr={},cs=function(b,c,d,e,f,g,h,i,j){return j==null?bB(b,c,d,e,f,g,h,i):a.findDotsAtSegment(b,c,d,e,f,g,h,i,bC(b,c,d,e,f,g,h,i,j))},ct=function(b,c){return function(d,e,f){d=bR(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;o<p;o++){i=d[o];if(i[0]=="M")g=+i[1],h=+i[2];else{j=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6]);if(n+j>e){if(c&&!l.start){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cu=ct(1),cv=ct(),cw=ct(0,1);a.getTotalLength=cu,a.getPointAtLength=cv,a.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return cw(a,b).end;var d=cw(a,c,1);return b?cw(d,b).end:d},cl.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cu(this.attrs.path)}},cl.getPointAtLength=function(a){if(this.type=="path")return cv(this.attrs.path,a)},cl.getSubpath=function(b,c){if(this.type=="path")return a.getSubpath(this.attrs.path,b,c)};var cx=a.easing_formulas={linear:function(a){return a},"<":function(a){return A(a,1.7)},">":function(a){return A(a,.48)},"<>":function(a){var b=.48-a/1.04,c=w.sqrt(.1734+b*b),d=c-b,e=A(z(d),1/3)*(d<0?-1:1),f=-c-b,g=A(z(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return A(2,-10*a)*w.sin((a-.075)*2*B/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cx.easeIn=cx["ease-in"]=cx["<"],cx.easeOut=cx["ease-out"]=cx[">"],cx.easeInOut=cx["ease-in-out"]=cx["<>"],cx["back-in"]=cx.backIn,cx["back-out"]=cx.backOut;var cy=[],cz=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cA=function(){var b=+(new Date),c=0;for(;c<cy.length;c++){var d=cy[c];if(d.el.removed||d.paused)continue;var e=b-d.start,f=d.ms,h=d.easing,i=d.from,j=d.diff,k=d.to,l=d.t,m=d.el,o={},p,r={},s;d.initstatus?(e=(d.initstatus*d.anim.top-d.prev)/(d.percent-d.prev)*f,d.status=d.initstatus,delete d.initstatus,d.stop&&cy.splice(c--,1)):d.status=(d.prev+(d.percent-d.prev)*(e/f))/d.anim.top;if(e<0)continue;if(e<f){var t=h(e/f);for(var u in i)if(i[g](u)){switch(U[u]){case C:p=+i[u]+t*f*j[u];break;case"colour":p="rgb("+[cB(O(i[u].r+t*f*j[u].r)),cB(O(i[u].g+t*f*j[u].g)),cB(O(i[u].b+t*f*j[u].b))].join(",")+")";break;case"path":p=[];for(var v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(var x=1,y=i[u][v].length;x<y;x++)p[v][x]=+i[u][v][x]+t*f*j[u][v][x];p[v]=p[v].join(q)}p=p.join(q);break;case"transform":if(j[u].real){p=[];for(v=0,w=i[u].length;v<w;v++){p[v]=[i[u][v][0]];for(x=1,y=i[u][v].length;x<y;x++)p[v][x]=i[u][v][x]+t*f*j[u][v][x]}}else{var z=function(a){return+i[u][a]+t*f*j[u][a]};p=[["m",z(0),z(1),z(2),z(3),z(4),z(5)]]}break;case"csv":if(u=="clip-rect"){p=[],v=4;while(v--)p[v]=+i[u][v]+t*f*j[u][v]}break;default:var A=[][n](i[u]);p=[],v=m.paper.customAttributes[u].length;while(v--)p[v]=+A[v]+t*f*j[u][v]}o[u]=p}m.attr(o),function(a,b,c){setTimeout(function(){eve("raphael.anim.frame."+a,b,c)})}(m.id,m,d.anim)}else{(function(b,c,d){setTimeout(function(){eve("raphael.anim.frame."+c.id,c,d),eve("raphael.anim.finish."+c.id,c,d),a.is(b,"function")&&b.call(c)})})(d.callback,m,d.anim),m.attr(k),cy.splice(c--,1);if(d.repeat>1&&!d.next){for(s in k)k[g](s)&&(r[s]=d.totalOrigin[s]);d.el.attr(r),cE(d.anim,d.el,d.anim.percents[0],null,d.totalOrigin,d.repeat-1)}d.next&&!d.stop&&cE(d.anim,d.el,d.next,null,d.totalOrigin,d.repeat)}}a.svg&&m&&m.paper&&m.paper.safari(),cy.length&&cz(cA)},cB=function(a){return a>255?255:a<0?0:a};cl.animateWith=function(b,c,d,e,f,g){var h=this;if(h.removed){g&&g.call(h);return h}var i=d instanceof cD?d:a.animation(d,e,f,g),j,k;cE(i,h,i.percents[0],null,h.attr());for(var l=0,m=cy.length;l<m;l++)if(cy[l].anim==c&&cy[l].el==b){cy[m-1].start=cy[l].start;break}return h},cl.onAnimation=function(a){a?eve.on("raphael.anim.frame."+this.id,a):eve.unbind("raphael.anim.frame."+this.id);return this},cD.prototype.delay=function(a){var b=new cD(this.anim,this.ms);b.times=this.times,b.del=+a||0;return b},cD.prototype.repeat=function(a){var b=new cD(this.anim,this.ms);b.del=this.del,b.times=w.floor(x(a,0))||1;return b},a.animation=function(b,c,d,e){if(b instanceof cD)return b;if(a.is(d,"function")||!d)e=e||d||null,d=null;b=Object(b),c=+c||0;var f={},h,i;for(i in b)b[g](i)&&Q(i)!=i&&Q(i)+"%"!=i&&(h=!0,f[i]=b[i]);if(!h)return new cD(b,c);d&&(f.easing=d),e&&(f.callback=e);return new cD({100:f},c)},cl.animate=function(b,c,d,e){var f=this;if(f.removed){e&&e.call(f);return f}var g=b instanceof cD?b:a.animation(b,c,d,e);cE(g,f,g.percents[0],null,f.attr());return f},cl.setTime=function(a,b){a&&b!=null&&this.status(a,y(b,a.ms)/a.ms);return this},cl.status=function(a,b){var c=[],d=0,e,f;if(b!=null){cE(a,this,-1,y(b,1));return this}e=cy.length;for(;d<e;d++){f=cy[d];if(f.el.id==this.id&&(!a||f.anim==a)){if(a)return f.status;c.push({anim:f.anim,status:f.status})}}if(a)return 0;return c},cl.pause=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.pause."+this.id,this,cy[b].anim)!==!1&&(cy[b].paused=!0);return this},cl.resume=function(a){for(var b=0;b<cy.length;b++)if(cy[b].el.id==this.id&&(!a||cy[b].anim==a)){var c=cy[b];eve("raphael.anim.resume."+this.id,this,c.anim)!==!1&&(delete c.paused,this.status(c.anim,c.status))}return this},cl.stop=function(a){for(var b=0;b<cy.length;b++)cy[b].el.id==this.id&&(!a||cy[b].anim==a)&&eve("raphael.anim.stop."+this.id,this,cy[b].anim)!==!1&&cy.splice(b--,1);return this},eve.on("raphael.remove",cF),eve.on("raphael.clear",cF),cl.toString=function(){return"Rapha&euml;l&rsquo;s object"};var cG=function(a){this.items=[],this.length=0,this.type="set";if(a)for(var b=0,c=a.length;b<c;b++)a[b]&&(a[b].constructor==cl.constructor||a[b].constructor==cG)&&(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},cH=cG.prototype;cH.push=function(){var a,b;for(var c=0,d=arguments.length;c<d;c++)a=arguments[c],a&&(a.constructor==cl.constructor||a.constructor==cG)&&(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},cH.pop=function(){this.length&&delete this[this.length--];return this.items.pop()},cH.forEach=function(a,b){for(var c=0,d=this.items.length;c<d;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var cI in cl)cl[g](cI)&&(cH[cI]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][m](c,b)})}}(cI));cH.attr=function(b,c){if(b&&a.is(b,E)&&a.is(b[0],"object"))for(var d=0,e=b.length;d<e;d++)this.items[d].attr(b[d]);else for(var f=0,g=this.items.length;f<g;f++)this.items[f].attr(b,c);return this},cH.clear=function(){while(this.length)this.pop()},cH.splice=function(a,b,c){a=a<0?x(this.length+a,0):a,b=x(0,y(this.length-a,b));var d=[],e=[],f=[],g;for(g=2;g<arguments.length;g++)f.push(arguments[g]);for(g=0;g<b;g++)e.push(this[a+g]);for(;g<this.length-a;g++)d.push(this[a+g]);var h=f.length;for(g=0;g<h+d.length;g++)this.items[a+g]=this[a+g]=g<h?f[g]:d[g-h];g=this.items.length=this.length-=b-h;while(this[g])delete this[g++];return new cG(e)},cH.exclude=function(a){for(var b=0,c=this.length;b<c;b++)if(this[b]==a){this.splice(b,1);return!0}},cH.animate=function(b,c,d,e){(a.is(d,"function")||!d)&&(e=d||null);var f=this.items.length,g=f,h,i=this,j;if(!f)return this;e&&(j=function(){!--f&&e.call(i)}),d=a.is(d,D)?d:j;var k=a.animation(b,c,d,j);h=this.items[--g].animate(k);while(g--)this.items[g]&&!this.items[g].removed&&this.items[g].animateWith(h,k,k);return this},cH.insertAfter=function(a){var b=this.items.length;while(b--)this.items[b].insertAfter(a);return this},cH.getBBox=function(){var a=[],b=[],c=[],d=[];for(var e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}a=y[m](0,a),b=y[m](0,b),c=x[m](0,c),d=x[m](0,d);return{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},cH.clone=function(a){a=new cG;for(var b=0,c=this.items.length;b<c;b++)a.push(this.items[b].clone());return a},cH.toString=function(){return"Rapha&euml;l&lsquo;s set"},a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[g](d)&&(b.face[d]=a.face[d]);this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b];if(!a.svg){b.face["units-per-em"]=R(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[g](e)){var f=a.glyphs[e];b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"};if(f.k)for(var h in f.k)f[g](h)&&(b.glyphs[e].k[h]=f.k[h])}}return a},k.getFont=function(b,c,d,e){e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400;if(!!a.fonts){var f=a.fonts[b];if(!f){var h=new RegExp("(^|\\s)"+b.replace(/[^\w\d\s+!~.:_-]/g,p)+"(\\s|$)","i");for(var i in a.fonts)if(a.fonts[g](i)&&h.test(i)){f=a.fonts[i];break}}var j;if(f)for(var k=0,l=f.length;k<l;k++){j=f[k];if(j.face["font-weight"]==c&&(j.face["font-style"]==d||!j.face["font-style"])&&j.face["font-stretch"]==e)break}return j}},k.print=function(b,d,e,f,g,h,i){h=h||"middle",i=x(y(i||0,1),-1);var j=r(e)[s](p),k=0,l=0,m=p,n;a.is(f,e)&&(f=this.getFont(f));if(f){n=(g||16)/f.face["units-per-em"];var o=f.face.bbox[s](c),q=+o[0],t=o[3]-o[1],u=0,v=+o[1]+(h=="baseline"?t+ +f.face.descent:t/2);for(var w=0,z=j.length;w<z;w++){if(j[w]=="\n")k=0,B=0,l=0,u+=t;else{var A=l&&f.glyphs[j[w-1]]||{},B=f.glyphs[j[w]];k+=l?(A.w||f.w)+(A.k&&A.k[j[w]]||0)+f.w*i:0,l=1}B&&B.d&&(m+=a.transformPath(B.d,["t",k*n,u*n,"s",n,n,q,v,"t",(b-q)/n,(d-v)/n]))}}return this.path(m).attr({fill:"#000",stroke:"none"})},k.add=function(b){if(a.is(b,"array")){var c=this.set(),e=0,f=b.length,h;for(;e<f;e++)h=b[e]||{},d[g](h.type)&&c.push(this[h.type]().attr(h))}return c},a.format=function(b,c){var d=a.is(c,E)?[0][n](c):arguments;b&&a.is(b,D)&&d.length-1&&(b=b.replace(e,function(a,b){return d[++b]==null?p:d[b]}));return b||p},a.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),typeof e=="function"&&f&&(e=e()))}),e=(e==null||e==d?a:e)+"";return e};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),a.ninja=function(){i.was?h.win.Raphael=i.is:delete Raphael;return a},a.st=cH,function(b,c,d){function e(){/in/.test(b.readyState)?setTimeout(e,9):a.eve("raphael.DOMload")}b.readyState==null&&b.addEventListener&&(b.addEventListener(c,d=function(){b.removeEventListener(c,d,!1),b.readyState="complete"},!1),b.readyState="loading"),e()}(document,"DOMContentLoaded"),i.was?h.win.Raphael=a:Raphael=a,eve.on("raphael.DOMload",function(){b=!0})}(),window.Raphael.svg&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Rapha&euml;l "+this.version};var q=function(d,e){if(e){typeof d=="string"&&(d=q(d));for(var f in e)e[b](f)&&(f.substring(0,6)=="xlink:"?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){e=c(e).replace(a._radial_gradient,function(a,b,c){j="radial";if(b&&c){m=d(b),n=d(c);var e=(n>.5)*2-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&n!=.5&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/);if(j=="linear"){var t=e.shift();t=-d(t);if(isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient);if(!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,j=="radial"?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;x<y;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff"}))}}q(o,{fill:"url(#"+k+")",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1;return 1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if(d.type=="path"){var g=c(e).toLowerCase().split("-"),h=d.paper,i=f?"end":"start",j=d.node,k=d.attrs,m=k["stroke-width"],n=g.length,r="classic",s,t,u,v,w,x=3,y=3,z=5;while(n--)switch(g[n]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":r=g[n];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}r=="open"?(x+=2,y+=2,z+=2,u=1,v=f?4:1,w={fill:"none",stroke:k.stroke}):(v=u=x/2,w={fill:k.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={};if(r!="none"){var A="raphael-marker-"+r,B="raphael-marker-"+i+r+x+y;a._g.doc.getElementById(A)?p[A]++:(h.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[r],id:A})),p[A]=1);var C=a._g.doc.getElementById(B),D;C?(p[B]++,D=C.getElementsByTagName("use")[0]):(C=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:v,refY:y/2}),D=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),C.appendChild(D),h.defs.appendChild(C),p[B]=1),q(D,w);var F=u*(r!="diamond"&&r!="oval");f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-F*m):(s=F*m,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),w={},w["marker-"+i]="url(#"+B+")";if(t||s)w.d=Raphael.getSubpath(k.path,s,t);q(j,w),d._.arrows[i+"Path"]=A,d._.arrows[i+"Marker"]=B,d._.arrows[i+"dx"]=F,d._.arrows[i+"Type"]=r,d._.arrows[i+"String"]=e}else f?(s=d._.arrows.startdx*m||0,t=a.getTotalLength(k.path)-s):(s=0,t=a.getTotalLength(k.path)-(d._.arrows.enddx*m||0)),d._.arrows[i+"Path"]&&q(j,{d:Raphael.getSubpath(k.path,s,t)}),delete d._.arrows[i+"Path"],delete d._.arrows[i+"Marker"],delete d._.arrows[i+"dx"],delete d._.arrows[i+"Type"],delete d._.arrows[i+"String"];for(w in p)if(p[b](w)&&!p[w]){var G=a._g.doc.getElementById(w);G&&G.parentNode.removeChild(G)}}},u={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){b=u[c(b).toLowerCase()];if(b){var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;while(h--)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];k[o]=p;switch(o){case"blur":d.blur(p);break;case"href":case"title":case"target":var u=i.parentNode;if(u.tagName.toLowerCase()!="a"){var w=q("a");u.insertBefore(w,i),w.appendChild(i),u=w}o=="target"?u.setAttributeNS(n,"show",p=="blank"?"new":p):u.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var x=c(p).split(j);if(x.length==4){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var z=q("clipPath"),A=q("rect");z.id=a.createUUID(),q(A,{x:x[0],y:x[1],width:x[2],height:x[3]}),z.appendChild(A),d.paper.defs.appendChild(z),q(i,{"clip-path":"url(#"+z.id+")"}),d.clip=A}if(!p){var B=i.getAttribute("clip-path");if(B){var C=a._g.doc.getElementById(B.replace(/(^url\(#|\)$)/g,l));C&&C.parentNode.removeChild(C),q(i,{"clip-path":l}),delete d.clip}}break;case"path":d.type=="path"&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":i.setAttribute(o,p),d._.dirty=1;if(k.fx)o="x",p=k.x;else break;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if(o=="rx"&&d.type=="rect")break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":i.setAttribute(o,p),d._.dirty=1;if(k.fy)o="y",p=k.y;else break;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if(o=="ry"&&d.type=="rect")break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":d.type=="rect"?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":d.type=="image"&&i.setAttributeNS(n,"href",p);break;case"stroke-width":if(d._.sx!=1||d._.sy!=1)p/=g(h(d._.sx),h(d._.sy))||1;d.paper._vbSize&&(p*=d.paper._vbSize),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var D=c(p).match(a._ISURL);if(D){z=q("pattern");var F=q("image");z.id=a.createUUID(),q(z,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(F,{x:0,y:0,"xlink:href":D[1]}),z.appendChild(F),function(b){a._preload(D[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(F,{width:a,height:c}),d.paper.safari()})}(z),d.paper.defs.appendChild(z),q(i,{fill:"url(#"+z.id+")"}),d.pattern=z,d.pattern&&s(d);break}var G=a.getRGB(p);if(!G.error)delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});else if((d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(H){var I=H.getElementsByTagName("stop");q(I[I.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}G[b]("opacity")&&q(i,{"fill-opacity":G.opacity>1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(p),i.setAttribute(o,G.hex),o=="stroke"&&G[b]("opacity")&&q(i,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity}),o=="stroke"&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":(d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),H&&(I=H.getElementsByTagName("stop"),q(I[I.length-1],{"stop-opacity":p}));break};default:o=="font-size"&&(p=e(p,10)+"px");var J=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[J]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if(d.type=="text"&&!!(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){g.text=f.text;while(h.firstChild)h.removeChild(h.firstChild);var j=c(f.text).split("\n"),k=[],m;for(var n=0,o=j.length;n<o;n++)m=q("tspan"),n&&q(m,{dy:i*x,x:g.x}),m.appendChild(a._g.doc.createTextNode(j[n])),h.appendChild(m),k[n]=m}else{k=h.getElementsByTagName("tspan");for(n=0,o=k.length;n<o;n++)n?q(k[n],{dy:i*x,x:g.x}):q(k[0],{dy:0})}q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(k[0],{dy:r})}},z=function(b,c){var d=0,e=0;this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},A=a.el;z.prototype=A,A.constructor=z,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new z(c,b);d.type="path",w(d,{fill:"none",stroke:"#000",path:a});return d},A.rotate=function(a,b,e){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this.transform(this._.transform.concat([["r",a,b,e]]));return this},A.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]]));return this},A.translate=function(a,b){if(this.removed)return this;a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]]));return this},A.transform=function(c){var d=this._;if(c==null)return d.transform;a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix});if(d.sx!=1||d.sy!=1){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},A.hide=function(){!this.removed&&this.paper.safari(this.node.style.display="none");return this},A.show=function(){!this.removed&&this.paper.safari(this.node.style.display="");return this},A.remove=function(){if(!this.removed&&!!this.node.parentNode){var b=this.paper;b.__set__&&b.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&b.defs.removeChild(this.gradient),a._tear(this,b),this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.removeChild(this.node.parentNode):this.node.parentNode.removeChild(this.node);for(var c in this)this[c]=typeof this[c]=="function"?a._removedFactory(c):null;this.removed=!0}},A._getBBox=function(){if(this.node.style.display=="none"){this.show();var a=!0}var b={};try{b=this.node.getBBox()}catch(c){}finally{b=b||{}}a&&this.hide();return b},A.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c=="fill"&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;if(c=="transform")return this._.transform;var g=c.split(j),h={};for(var i=0,l=g.length;i<l;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(d==null&&a.is(c,"array")){h={};for(i=0,l=c.length;i<l;i++)h[c[i]]=this.attr(c[i]);return h}if(d!=null){var m={};m[c]=d}else c!=null&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}w(this,m);return this},A.toFront=function(){if(this.removed)return this;this.node.parentNode.tagName.toLowerCase()=="a"?this.node.parentNode.parentNode.appendChild(this.node.parentNode):this.node.parentNode.appendChild(this.node);var b=this.paper;b.top!=this&&a._tofront(this,b);return this},A.toBack=function(){if(this.removed)return this;var b=this.node.parentNode;b.tagName.toLowerCase()=="a"?b.parentNode.insertBefore(this.node.parentNode,this.node.parentNode.parentNode.firstChild):b.firstChild!=this.node&&b.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper);var c=this.paper;return this},A.insertAfter=function(b){if(this.removed)return this;var c=b.node||b[b.length-1].node;c.nextSibling?c.parentNode.insertBefore(this.node,c.nextSibling):c.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},A.insertBefore=function(b){if(this.removed)return this;var c=b.node||b[0].node;c.parentNode.insertBefore(this.node,c),a._insertbefore(this,b,this.paper);return this},A.blur=function(b){var c=this;if(+b!==0){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter")},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new z(e,a);f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs);return f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:b,y:c,width:d,height:e,r:f||0,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs);return h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new z(f,a);g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs);return g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new z(g,a);h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image";return h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new z(f,b);g.attrs={x:c,y:d,"text-anchor":"middle",text:e,font:a._availableAttrs.font,stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs);return g},a._engine.setSize=function(a,b){this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox);return this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h=q("svg"),i="overflow:hidden;",j;d=d||0,e=e||0,f=f||512,g=g||342,q(h,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg"}),c==1?(h.style.cssText=i+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(h),j=1):(h.style.cssText=i+"position:relative",c.firstChild?c.insertBefore(h,c.firstChild):c.appendChild(h)),c=new a._Paper,c.width=f,c.height=g,c.canvas=h,c.clear(),c._left=c._top=0,j&&(c.renderfix=function(){}),c.renderfix();return c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f=g(c/this.width,d/this.height),h=this.top,i=e?"meet":"xMinYMin",j,l;a==null?(this._vbSize&&(f=1),delete this._vbSize,j="0 0 "+this.width+m+this.height):(this._vbSize=f,j=a+m+b+m+c+m+d),q(this.canvas,{viewBox:j,preserveAspectRatio:i});while(f&&h)l="stroke-width"in h.attrs?h.attrs["stroke-width"]:1,h.attr({"stroke-width":l}),h._.dirty=1,h._.dirtyT=1,h=h.prev;this._viewBox=[a,b,c,d,!!e];return this},a.prototype.renderfix=function(){var a=this.canvas,b=a.style,c;try{c=a.getScreenCTM()||a.createSVGMatrix()}catch(d){c=a.createSVGMatrix()}var e=-c.e%1,f=-c.f%1;if(e||f)e&&(this._left=(this._left+e)%1,b.left=this._left+"px"),f&&(this._top=(this._top+f)%1,b.top=this._top+"px")},a.prototype.clear=function(){a.eve("raphael.clear",this);var b=this.canvas;while(b.firstChild)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Rapha&euml;l "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null};var B=a.st;for(var C in A)A[b](C)&&!B[b](C)&&(B[C]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(C))}(window.Raphael),window.Raphael.vml&&function(a){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/ig,e=a._pathToAbsolute;c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g;if(e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e=b.toLowerCase()=="m",g=p[b];c.replace(s,function(a){e&&d.length==2&&(g+=d+p[b=="m"?"l":"L"],d=[]),d.push(f(a*u))});return g+d});return g}var h=e(b),i,j;g=[];for(var k=0,l=h.length;k<l;k++){i=h[k],j=h[k][0].toLowerCase(),j=="z"&&(j="x");for(var m=1,r=i.length;m<r;m++)j+=f(i[m]*u)+(m!=r-1?",":o);g.push(j)}return g.join(n)},y=function(b,c,d){var e=a.matrix();e.rotate(-b,.5,.5);return{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q,r=u/b,s=u/c;m.visibility="hidden";if(!!b&&!!c){l.coordsize=i(r)+n+i(s),m.rotation=f*(b*c<0?-1:1);if(f){var t=y(f,d,e);d=t.dx,e=t.dy}b<0&&(p+="x"),c<0&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-r+n+e*-s;if(k||g.fillsize){var v=l.getElementsByTagName(j);v=v&&v[0],l.removeChild(v),k&&(t=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),v.position=t.dx*o+n+t.dy*o),g.fillsize&&(v.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(v)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn&rsquo;t support SVG. Falling down to VML.\nYou are running Rapha&euml;l "+this.version};var A=function(a,b,d){var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";while(g--)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q,r=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),s=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),t=e;for(var y in i)i[b](y)&&(m[y]=i[y]);r&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur);if(i.path&&e.type=="path"||r)l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e.type=="image"&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0));"transform"in i&&e.transform(i.transform);if(s){var B=+m.cx,D=+m.cy,E=+m.rx||+m.r||0,G=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((B-E)*u),f((D-G)*u),f((B+E)*u),f((D+G)*u),f(B*u))}if("clip-rect"in i){var H=c(i["clip-rect"]).split(k);if(H.length==4){H[2]=+H[2]+ +H[0],H[3]=+H[3]+ +H[1];var I=l.clipRect||a._g.doc.createElement("div"),J=I.style;J.clip=a.format("rect({1}px {2}px {3}px {0}px)",H),l.clipRect||(J.position="absolute",J.top=0,J.left=0,J.width=e.paper.width+"px",J.height=e.paper.height+"px",l.parentNode.insertBefore(I,l),I.appendChild(l),l.clipRect=I)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var K=e.textpath.style;i.font&&(K.font=i.font),i["font-family"]&&(K.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(K.fontSize=i["font-size"]),i["font-weight"]&&(K.fontWeight=i["font-weight"]),i["font-style"]&&(K.fontStyle=i["font-style"])}"arrow-start"in i&&A(t,i["arrow-start"]),"arrow-end"in i&&A(t,i["arrow-end"],1);if(i.opacity!=null||i["stroke-width"]!=null||i.fill!=null||i.src!=null||i.stroke!=null||i["stroke-width"]!=null||i["stroke-opacity"]!=null||i["fill-opacity"]!=null||i["stroke-dasharray"]!=null||i["stroke-miterlimit"]!=null||i["stroke-linejoin"]!=null||i["stroke-linecap"]!=null){var L=l.getElementsByTagName(j),M=!1;L=L&&L[0],!L&&(M=L=F(j)),e.type=="image"&&i.src&&(L.src=i.src),i.fill&&(L.on=!0);if(L.on==null||i.fill=="none"||i.fill===null)L.on=!1;if(L.on&&i.fill){var N=c(i.fill).match(a._ISURL);if(N){L.parentNode==l&&l.removeChild(L),L.rotate=!0,L.src=N[1],L.type="tile";var O=e.getBBox(1);L.position=O.x+n+O.y,e._.fillpos=[O.x,O.y],a._preload(N[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else L.color=a.getRGB(i.fill).hex,L.src=o,L.type="solid",a.getRGB(i.fill).error&&(t.type in{circle:1,ellipse:1}||c(i.fill).charAt()!="r")&&C(t,i.fill,L)&&(m.fill="none",m.gradient=i.fill,L.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var P=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);P=h(g(P,0),1),L.opacity=P,L.src&&(L.color="none")}l.appendChild(L);var Q=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],T=!1;!Q&&(T=Q=F("stroke"));if(i.stroke&&i.stroke!="none"||i["stroke-width"]||i["stroke-opacity"]!=null||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])Q.on=!0;(i.stroke=="none"||i.stroke===null||Q.on==null||i.stroke==0||i["stroke-width"]==0)&&(Q.on=!1);var U=a.getRGB(i.stroke);Q.on&&i.stroke&&(Q.color=U.hex),P=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+U.o+1||2)-1);var V=(d(i["stroke-width"])||1)*.75;P=h(g(P,0),1),i["stroke-width"]==null&&(V=m["stroke-width"]),i["stroke-width"]&&(Q.weight=V),V&&V<1&&(P*=V)&&(Q.weight=1),Q.opacity=P,i["stroke-linejoin"]&&(Q.joinstyle=i["stroke-linejoin"]||"miter"),Q.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(Q.endcap=i["stroke-linecap"]=="butt"?"flat":i["stroke-linecap"]=="square"?"square":"round");if(i["stroke-dasharray"]){var W={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};Q.dashstyle=W[b](i["stroke-dasharray"])?W[i["stroke-dasharray"]]:o}T&&l.appendChild(Q)}if(t.type=="text"){t.paper.canvas.style.display=o;var X=t.paper.span,Y=100,Z=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=X.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),Z=d(m["font-size"]||Z&&Z[0])||10,p.fontSize=Z*Y+"px",t.textpath.string&&(X.innerHTML=c(t.textpath.string).replace(/</g,"<").replace(/&/g,"&").replace(/\n/g,"<br>"));var $=X.getBoundingClientRect();t.W=m.w=($.right-$.left)/Y,t.H=m.h=($.bottom-$.top)/Y,t.X=m.x,t.Y=m.y+t.H/2,("x"in i||"y"in i)&&(t.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));var _=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var ba=0,bb=_.length;ba<bb;ba++)if(_[ba]in i){t._.dirty=1;break}switch(m["text-anchor"]){case"start":t.textpath.style["v-text-align"]="left",t.bbx=t.W/2;break;case"end":t.textpath.style["v-text-align"]="right",t.bbx=-t.W/2;break;default:t.textpath.style["v-text-align"]="center",t.bbx=0}t.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=b.attrs,i=Math.pow,j,k,l="linear",m=".5 .5";b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){l="radial",b&&c&&(b=d(b),c=d(c),i(b-.5,2)+i(c-.5,2)>.25&&(c=e.sqrt(.25-i(b-.5,2))*((c>.5)*2-1)+.5),m=b+n+c);return o}),f=f.split(/\s*\-\s*/);if(l=="linear"){var p=f.shift();p=-d(p);if(isNaN(p))return null}var q=a._parseDots(f);if(!q)return null;b=b.shape||b.node;if(q.length){b.removeChild(g),g.on=!0,g.method="none",g.color=q[0].color,g.color2=q[q.length-1].color;var r=[];for(var s=0,t=q.length;s<t;s++)q[s].offset&&r.push(q[s].offset+n+q[s].color);g.colors=r.length?r.join():"0% "+g.color,l=="radial"?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=m,g.angle=0):(g.type="gradient",g.angle=(270-p)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(b==null)return this._.transform;var d=this.paper._viewBoxShift,e=d?"s"+[d.scale,d.scale]+"-1-1t"+[d.dx,d.dy]:o,f;d&&(f=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,e+b);var g=this.matrix.clone(),h=this.skew,i=this.node,j,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");g.translate(-0.5,-0.5);if(l||k||this.type=="image"){h.matrix="1 0 0 1",h.offset="0 0",j=g.split();if(k&&j.noRotation||!j.isSimple){i.style.filter=g.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;i.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else i.style.filter=o,z(this,j.scalex,j.scaley,j.dx,j.dy,j.rotate)}else i.style.filter=o,h.matrix=c(g),h.offset=g.offset();f&&(this._.transform=f);return this},E.rotate=function(a,b,e){if(this.removed)return this;if(a!=null){a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),e==null&&(b=e);if(b==null||e==null){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]]));return this}},E.translate=function(a,b){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]]));return this},E.scale=function(a,b,e,f){if(this.removed)return this;a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),b==null&&(b=a),f==null&&(e=f);if(e==null||f==null)var g=this.getBBox(1);e=e==null?g.x+g.width/2:e,f=f==null?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1;return this},E.hide=function(){!this.removed&&(this.node.style.display="none");return this},E.show=function(){!this.removed&&(this.node.style.display=o);return this},E._getBBox=function(){if(this.removed)return{};return{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&!!this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(c==null){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);e.gradient&&e.fill=="none"&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform;return e}if(d==null&&a.is(c,"string")){if(c==j&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;var g=c.split(k),h={};for(var i=0,m=g.length;i<m;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&d==null&&a.is(c,"array")){h={};for(i=0,m=c.length;i<m;i++)h[c[i]]=this.attr(c[i]);return h}var n;d!=null&&(n={},n[c]=d),d==null&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&this.type=="text"&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper);return this},E.toBack=function(){if(this.removed)return this;this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper));return this},E.insertAfter=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper);return this},E.insertBefore=function(b){if(this.removed)return this;b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper);return this},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;d=d.replace(r,o),+b!==0?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur)},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");f.on=!0,c.appendChild(f),d.skew=f,d.transform(o);return d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect";return i},a._engine.ellipse=function(a,b,c,d,e){var f=a.path(),g=f.attrs;f.X=b-d,f.Y=c-e,f.W=d*2,f.H=e*2,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e});return f},a._engine.circle=function(a,b,c,d){var e=a.path(),f=e.attrs;e.X=b-d,e.Y=c-d,e.W=e.H=d*2,e.type="circle",B(e,{cx:b,cy:c,r:d});return e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0);return i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");m.on=!0,h.appendChild(m),k.skew=m,k.transform(o);return k},a._engine.setSize=function(b,c){var d=this.canvas.style;this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox);return this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var h=this.width,i=this.height,j=1/g(d/h,e/i),k,l;f&&(k=i/e,l=h/d,d*k<h&&(b-=(h-d*k)/2/k),e*l<i&&(c-=(i-e*l)/2/l)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:j},this.forEach(function(a){a.transform("...")});return this};var F;a._engine.initWin=function(a){var b=a.document;b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e,f=b.width,g=b.x,h=b.y;if(!c)throw new Error("VML container not found.");var i=new a._Paper,j=i.canvas=a._g.doc.createElement("div"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),i.coordsize=u*1e3+n+u*1e3,i.coordorigin="0 0",i.span=a._g.doc.createElement("span"),i.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",j.appendChild(i.span),k.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(a._g.doc.body.appendChild(j),k.left=g+"px",k.top=h+"px",k.position="absolute"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),i.renderfix=function(){};return i},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}(window.Raphael);
+
<!--- This is the third section --->
 +
<div style="display: none;" id="view3">
 +
<div class="textTitle"><h4>Overview</h4></div>
 +
<!-- This is the main text. Anything in a <p>TEXT</p> is a paragraph and will be spaced appropriately-->
 +
<p>In the textile industry today, the global production of dyestuff amounts to over millions of tonnes per year. Azodyes represent two thirds of this value, a majority of which find their way to wastewater effluent streams. Characterized by the presence of one or more azo group (more on chemistry), this type of organic colorant is also found in cosmetics, pharmaceuticals and food industries. While the desirable properties of azodyes i.e. chemical stability, high molar extinction coefficient and fastness make them a dye-class of choice, their widespread use in countries such as India and China make them a dye to die for—literally. This is because, in parallel to being aesthetically intrusive to ecosystems, azodye breakdown products have been found to be mutagenic and carcinogenic. With such a high worldwide consumption, the benefits in developing and integrating a sustainable strategy for dealing with such effluent streams is clear. It is worth to note that the ‘azodye problem’ is exacerbated by the high costs, both financial (economic) and environmental, of current physio-chemical and biological methods of treatment (more on current treatment). This year, we are looking into the processing options that are relevant to tackling the problem of azodye discharges. In order to assess the feasibility and determine key engineering parameters for each option, the most important dyestuff sector will be used as a case study: textiles and dyeing industry.</p><br><br>
-
/********************************
+
<h3>Industrial Consultation</h3>
-
** FILE: lib/annotations.js
+
-
********************************/
+
-
nytg.ie = (function(){
+
<p>A major part of our project involved engaging with key industrial experts to better understand their wants and needs. We identified the pigment manufacturing and waste water disposal sectors as the two major players who would benefit from our work. By meeting with these leading corporations we have been able to tune our research towards the assenbly of a process that would be most attractive for industry to utilise.</p>
-
+
<br>
-
    var undef,
+
-
        v = 3,
+
-
        div = document.createElement('div'),
+
-
        all = div.getElementsByTagName('i');
+
-
+
-
    while (
+
-
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+
-
        all[0]
+
-
    );
+
-
+
-
    return v > 4 ? v : undef;
+
-
+
-
}());
+
-
nytg.annotations = {
+
<h4>Meeting with ETAD - Ecological and Toxicological Association of Dye and Pigment Manufacturers</h4>
-
   
+
<p>ETAD - an association based in Basel represents over 35 different pigment and dyeing corporations internationally, coordinating a group initiative to limit adverse effects on health and the environment by their industry.Present at the meeting were Walter Hoffman – Director of ETAD, Dr Stefan Ehrenberg - Pigment Manufacturing R&D at Bezema, Georg Roentgen – Director of R&D Colours and Textile Effects at Huntsman.</p>
-
arrow: function(options) {
+
<p>The main reasons for this meeting were:
-
+
    <li>To encourage industry to consider synthetic biology as a realistic, viable option when looking to reduce the toxicity of their process.
-
var defaults = {
+
    <li>Discuss the major concerns and problem areas the dyeing and pigments industry are currently facing.</p>
-
duration: 1000,
+
<img width="25%" style="float:right;margin:0 0 0 10px;" src="https://static.igem.org/mediawiki/2014/4/41/1924384_10154546138020564_6502621618718289701_n.jpg"></img>
-
degrees: 90,
+
<br>
-
hidetriangle: false
+
-
}
+
-
+
-
options = _.extend(defaults, options);
+
-
+
-
var start = new nytg.annotations.point(options.start);
+
-
var end = new nytg.annotations.point(options.end);
+
-
+
-
var adjacent = end.x - start.x;
+
-
var opposite = end.y - start.y;
+
-
var hypotenuse = Math.sqrt(Math.pow(adjacent, 2) + Math.pow(opposite, 2));   
+
-
var degrees = options.degrees - Math.abs(Math.asin(opposite/hypotenuse) * (180/Math.PI));
+
-
+
-
var tstart = new nytg.annotations.point({ x: start.x - 4, y : start.y -5, r: degrees });
+
-
var tend = new nytg.annotations.point({ x: end.x - 4, y : end.y - 5 });
+
-
+
-
var path = nytg.raphael.path(start.move()).attr({ "stroke-width": 3, stroke: "#004276" }).animate({path: start.move() + end.line()}, options.duration);
+
-
var triangle = nytg.raphael.path("M0,8,4,1,8,8z");
+
-
triangle.transform(tstart.translate() + tstart.rotate()).attr({ fill: "#004276", stroke: "#004276" }).animate({ transform: tend.translate() + tstart.rotate() }, options.duration, false, function() {
+
-
if (options.hidetriangle) triangle.hide();
+
-
});
+
-
+
-
return nytg.raphael.set().push(path, triangle);
+
-
+
-
},
+
-
line: function(options) {
+
<h4>Dye Houses vs Dye Synthesis Waste</h4>
-
+
-
var defaults = {
+
-
duration: 1000
+
-
}
+
-
+
-
options = _.extend(defaults, options);
+
-
+
-
var start = new nytg.annotations.point(options.start);
+
-
var end = new nytg.annotations.point(options.end);
+
-
+
-
return nytg.raphael.path(start.move()).attr({ "stroke-width": 3, stroke: "#004276"  }).animate({path: start.move() + end.line()}, options.duration);
+
-
+
-
},
+
-
+
-
turningArrow: function(options) {
+
-
+
-
var timer = 0;
+
-
+
-
var guide = nytg.raphael.path().attr({ opacity: 0 });
+
-
var guidesvg = "";
+
-
+
-
var prevAngles = false;
+
-
+
-
var set = nytg.raphael.set();
+
-
+
-
for (var i = 1; i < options.points.length; i++) {
+
-
var previous = options.points[i - 1];
+
-
var current = options.points[i];
+
-
var next = options.points[i + 1];
+
-
var angles = false;
+
-
+
-
+
-
if (i < options.points.length - 1) {
+
-
var dir1 = this.lineToDirection(previous, current);
+
-
var dir2 = this.lineToDirection(current, next);
+
-
var dir = dir1 + dir2;
+
-
+
-
angles = this.arcs[dir];
+
-
var center;
+
-
if (dir == "downright") center = [current.x + options.radius, current.y - options.radius];
+
-
else if (dir == "downleft") {
+
-
center = [current.x - options.radius, current.y - options.radius];
+
-
} else if (dir == "rightdown") center = [current.x - options.radius, current.y + options.radius];
+
-
var arcOptions = {
+
-
center: center,
+
-
duration: 30,
+
-
radius: options.radius,
+
-
start: previous.duration + previous.start
+
-
};
+
-
_.extend(arcOptions, angles);
+
-
arcOptions.currentAngle = arcOptions.endAngle;
+
-
var arcsvg = this.arcSVG(arcOptions);
+
-
+
-
} else {
+
<p>The meeting with ETAD raised a number of points for our project. Mr Roentgen questioned how the survival of our bacterial cell would be effected in dyehouse waste as opposed to dye synthesis plant waste. The waste from a dyehouse is a complex mix of azo dyes at approximately 1%-5% concentration in a high salt concentration with the presence of metals copper and chromium. This a harsh environment compared with the waste of a dye synthesis plant, generally containing one or two azo dyes in a simple mixture at 10% concentration.</p>
-
angles = false;
+
<br>
-
}
+
<p>This is new information for our project and has greatly influenced us to direct our research towards optimising remediation of dye synthesis waste water. Another advantage of remediation of dye synthesis plant waste water is that the low variety of azo dyes in each batch mixture will make filtration of valuable products a much easier and viable process, enhancing the economic feasibility of our device.</p>
-
+
<br>
-
var linedata = {
+
<h4>Sulphonated Azo Dyes</h4>
-
start: {
+
<p>The current trend in the textile industry is to reduce the volume of water consumed, leading to a greater use of more soluble dyes. For a dye to be more soluble it must be more polar, as such, many of these soluble dyes have sulfonated groups. The sulphur atom has a electron withdrawing effect making reduction of the azo bond difficult, the industry are finding chemical processes to degrade these dyes to be ineffective. </p>
-
x: previous.x,
+
<p>We feel we can offer an alternative since ..lignin peroxidase…. change this is known to be effective working on azo bonds with sulphur group.</p>
-
y: previous.y
+
<h4>Conclusions</h4>
-
},
+
<p>Overall the meeting was a great success in guiding our project towards an industrial relevant direction. Running through our presentation highlighted a number of changes needed before the jamboree, specifically putting more emphasis on the novelty and innovation of our project. Ensuring our project delivers a solution that is conscious of the needs of the industry is extremely important to us, meetings such as these are invaluable to the progression of our work.</p>
-
end: {
+
</div>
-
x: current.x,
+
<!--- This is the fourth section --->
-
y: current.y
+
<div style="display: none;" id="view4">
-
},
+
-
degrees: 270
+
-
};
+
-
+
-
if (angles) linedata = this.modifyLineForArc(linedata, angles, "l1", options.radius);
+
-
if (angles) linedata.hidetriangle = true;
+
-
+
-
if (prevAngles) linedata = this.modifyLineForArc(linedata, prevAngles, "l2", options.radius);
+
-
+
-
+
-
linedata.duration = previous.duration;
+
-
+
-
var startpoint = new nytg.annotations.point(linedata.start);
+
-
var endpoint = new nytg.annotations.point(linedata.end);
+
-
+
-
guidesvg += startpoint.move() + endpoint.line();
+
-
+
-
if (arcsvg) guidesvg += arcsvg;
+
-
+
-
// this.callLine(linedata, previous, set);
+
-
+
-
prevAngles = angles;
+
-
+
-
}
+
-
+
-
guide.attr({ path: guidesvg });
+
-
+
-
var newpath = nytg.raphael.path().attr({ "stroke-width": 3 }).attr({ fill: "#004276", stroke: "#004276" });
+
-
+
-
var triangle = nytg.raphael.path("M0,8,4,1,8,8z").attr({ fill: "#004276", stroke: "#004276" });
+
-
var length = guide.getTotalLength();
+
-
+
-
var step = length / 12;
+
-
+
-
var subpaths = [];
+
-
+
-
for (var i = 0; i < 12; i++) {
+
-
// console.log(i * step, length)
+
-
subpaths.push(guide.getSubpath((i -1) * step, i * step));
+
-
    animate(newpath, triangle, { time: i * 32, pathdelta: guide.getSubpath((i -1) * step, i * step), origin: guide.getPointAtLength((i -1) * step), point: guide.getPointAtLength(i * step) });           
+
-
}
+
-
+
-
function animate(path, triangle, options) {
+
-
+
-
    setTimeout(function() {
+
-
        path.attr({ path: path.attr("path") + options.pathdelta }); 
+
-
        if (!options.origin) return false;
+
-
        var angle = getAngle(options.origin, options.point) + 90;
+
-
       
+
-
        options.point.y -= 5;
+
-
        options.point.x -= 5;
+
-
       
+
-
        if (nytg.ie == 7 || nytg.ie == 8) {
+
-
        options.point.x -= 3;
+
-
        options.point.y -= 3;
+
-
        }
+
-
       
+
-
        triangle.transform("t" + options.point.x + "," + options.point.y + "r" + angle );
+
-
    }, options.time);
+
-
}
+
-
+
-
function getAngle(origin, point) {
+
-
    var x1 = origin.x,
+
-
        y1 = origin.y,
+
-
        x2 = point.x,
+
-
        y2 = point.y;       
+
-
    var angle = -2 * Math.atan((y2-y1)/(x2-x1)) * (180/Math.PI) + 180;
+
-
  return angle; 
+
-
}
+
-
 
+
-
set.push(newpath, triangle);
+
-
+
-
return set;
+
-
+
-
},
+
-
+
-
turningLine: function(options) {
+
-
+
-
var timer = 0;
+
-
+
-
var prevAngles = false;
+
-
+
-
var set = nytg.raphael.set();
+
-
+
-
for (var i = 1; i < options.points.length; i++) {
+
-
var previous = options.points[i - 1];
+
-
var current = options.points[i];
+
-
var next = options.points[i + 1];
+
-
var angles = false;
+
-
+
-
+
-
if (i < options.points.length - 1) {
+
-
var dir1 = this.lineToDirection(previous, current);
+
-
var dir2 = this.lineToDirection(current, next);
+
-
var dir = dir1 + dir2;
+
-
+
-
angles = this.arcs[dir];
+
-
var center;
+
-
if (dir == "downright") center = [current.x + options.radius, current.y - options.radius];
+
-
else if (dir == "downleft") {
+
-
center = [current.x - options.radius, current.y - options.radius];
+
-
} else if (dir == "rightdown") center = [current.x - options.radius, current.y + options.radius];
+
-
var arcOptions = {
+
-
center: center,
+
-
duration: 30,
+
-
radius: options.radius,
+
-
start: previous.duration + previous.start
+
-
};
+
-
_.extend(arcOptions, angles);
+
-
this.callArc(arcOptions, set);
+
-
+
-
} else {
 
-
angles = false;
 
-
}
 
-
 
-
var linedata = {
 
-
start: {
 
-
x: previous.x,
 
-
y: previous.y
 
-
},
 
-
end: {
 
-
x: current.x,
 
-
y: current.y
 
-
},
 
-
degrees: 270
 
-
};
 
-
 
-
if (angles) linedata = this.modifyLineForArc(linedata, angles, "l1", options.radius);
 
-
if (angles) linedata.hidetriangle = true;
 
-
 
-
if (prevAngles) linedata = this.modifyLineForArc(linedata, prevAngles, "l2", options.radius);
 
-
 
-
 
-
linedata.duration = previous.duration;
 
-
 
-
this.callLine(linedata, previous, set);
 
-
 
-
prevAngles = angles;
 
-
 
-
}
 
-
 
-
return set;
 
-
 
-
},
 
-
 
-
callArc: function(options, set) {
 
-
var self = this;
 
-
setTimeout(function() {
 
-
options.set = set;
 
-
self.arc(options);
 
-
}, options.start);
 
-
},
 
-
 
-
callLine: function(linedata, options, set) {
 
-
var self = this;
 
-
setTimeout(function() { set.push(self.arrow(linedata)); }, options.start);
 
-
},
 
-
 
-
 
-
modifyLineForArc: function(linedata, angles, line, radius) {
 
-
 
-
if (angles[line]) {
 
-
var line = angles[line];
 
-
linedata[line.point][line.axis] += radius * line.value;
 
-
}
 
-
 
-
return linedata;
 
-
},
 
-
 
-
arcs: {
 
-
"upleft": { startAngle: 0, endAngle: 270, l1: {}, l2: {}  },
 
-
"upright": { startAngle: 180, endAngle: 270, l1: {}, l2: {} },
 
-
"downleft": { startAngle: 0, endAngle: 90, l1: { point: "end", axis: "y", value: -1  }, l2: { point: "start", axis: "x", value: -1 } },
 
-
"downright": { startAngle: 180, endAngle: 90, l1: { point: "end", axis: "y", value: -1 }, l2: { point: "start", axis: "x", value: 1 } },
 
-
"rightdown": { startAngle: 270, endAngle: 0, l1: { point: "end", axis: "x", value: -1 }, l2: { point: "start", axis: "y", value: 1 } },
 
-
"rightup": { startAngle: 90, endAngle: 0, l1: {}, l2: {} },
 
-
"leftdown": { startAngle: 270, endAngle: 0, l1: {}, l2: {} },
 
-
"leftup": { startAngle: 90, endAngle: 0, l1: {}, l2: {} }
 
-
 
-
},
 
-
 
-
lineToDirection: function(start, end) {
 
-
var x = (end.x - start.x);
 
-
var y = (end.y - start.y);
 
-
if (x == 0) return (y > 0) ? "down" : "up";
 
-
else return (x > 0) ? "right" : "left";
 
-
},
 
-
 
-
arc: function(options) {
 
-
 
-
var steps = 5;
 
-
options.currentAngle = options.startAngle;
 
-
options.angleStep = (options.endAngle - options.startAngle) / steps;
 
-
options.timeStep = options.duration / steps;
 
-
options.path = nytg.raphael.path(this.arcSVG(options)).attr({ "stroke-width": 3, stroke: "#004276"  });
 
-
options.set.push(options.path);
 
-
 
-
var self = this;
 
-
 
-
for (var i = 0; i < steps; i++) {
 
-
this.arcTimeout(options, i);
 
-
}
 
-
 
-
},
 
-
 
-
arcTimeout: function(options, i) {
 
-
var self = this;
 
-
setTimeout(function() {
 
-
options.currentAngle += options.angleStep;
 
-
var path = self.arcSVG(options);
 
-
options.path.animate({ path: path });
 
-
}, i * options.timeStep);
 
-
 
-
},
 
-
 
-
arcSVG: function(options) {
 
-
var center = options.center,
 
-
    radius = options.radius,
 
-
    startAngle = options.startAngle,
 
-
    endAngle = options.currentAngle;
 
-
    angle = startAngle;
 
-
    coords = this.toCoords(center, radius, angle);
 
-
    path = "M " + coords[0] + " " + coords[1];
 
-
    var diff = startAngle - options.endAngle;
 
-
    var direction = (diff < 0) ? 1 : -1;
 
-
    if (Math.abs(diff) > 180) direction *= -1;
 
-
    var steps = Math.abs(startAngle - endAngle);
 
-
    if (steps > 180) steps = 90;
 
-
    steps  = steps / 3;
 
-
    while(steps > 0) {
 
-
        coords = this.toCoords(center, radius, angle);
 
-
        path += " L " + coords[0] + " " + coords[1];
 
-
        angle += 3 * direction;
 
-
        steps--;
 
-
    }
 
-
    return path;
 
-
},
 
-
 
-
toCoords: function(center, radius, angle) {
 
-
    var radians = (angle/180) * Math.PI;
 
-
    var x = center[0] + Math.cos(radians) * radius;
 
-
    var y = center[1] + Math.sin(radians) * radius;
 
-
    return [x, y];
 
-
},
 
-
 
-
point: function(options) {
 
-
 
-
this.x = options.x;
 
-
this.y = options.y;
 
-
this.r = options.r;
 
-
 
-
_.extend(this, options);
 
-
 
-
this.toString = function() {
 
-
return this.x + " " + this.y;
 
-
}
 
-
 
-
this.template = function() {
 
-
_.template(string, { x: this.x, y: this.y });
 
-
}
 
-
 
-
this.move = function() {
 
-
return "M" + this.toString();
 
-
}
 
-
 
-
this.line = function() {
 
-
return "L" + this.toString();
 
-
}
 
-
 
-
this.rotate = function() {
 
-
return "r" + this.r;
 
-
  }
 
-
 
 
-
  this.translate = function() {
 
-
  var str = this.toString();
 
-
  if (nytg.ie == 7 || nytg.ie == 8) str = (this.x - 3) + " " + (this.y - 3);
 
-
  return "t" + str;
 
-
  }
 
-
 
-
}
 
-
};
 
-
   
 
-
nytg.moveTo = function(element) {
 
-
 
-
var scroll = $(window).scrollTop();
 
-
 
-
$(element).scrollTop();
 
-
 
-
};
 
-
   
 
 +
<br>
 +
<div class="textTitle"><h4>A Strong Commercial Strategy</h4></div>
 +
Assessment of commercial feasibility is widely based on evaluating the target market’s “readiness” to receive and integrate an innovative product or process. This primarily involves defining and characterising the target market and quantifying economic potential in terms of projected demand. Furthermore technical feasibility based on forecasted costs and resource requirements must be considered whilst remaining aware of potential risks and obstacles.</p>
 +
<br>
 +
<div class="textTitle"><h4>Feasible Target Markets</h4></div>
-
/********************************
+
<img src="https://static.igem.org/mediawiki/2014/7/7c/Igem_Target_market_image.png" style="float:right;margin:0 0 0 10px;" width="50%">
-
** FILE: lib/underscore.js
+
The potential market segmentation for this novel process is based on relative contribution to global dyeing effluent pollution. The textile industry represents a vast proportion of this contribution over other potential market segments (cosmetic, pharmaceutical, food industries) and has therefore appropriately become the thematic focus of this project. Considering the world market for textile dyeing operations, a majority of dye effluent waste can be attributed to Asia, followed by North America and Western Europe. However receptiveness to environmental initiatives and the magnitude of investment in projects of the sort are heavily skewed away from developing regions of Asia. Hence a stronger approach to achieving a realistic impact would start in the UK where socio-economic conditions are more suitable. This should be taken into consideration in further technical development and strategic commercialisation steps.
-
********************************/
+
-
//    Underscore.js 1.3.1
+
<br>
-
//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+
<div class="textTitle"><h4>Value Proposition</h4></div>
-
//    Underscore is freely distributable under the MIT license.
+
The following clarifies the net and indirect value of our bioprocessing solution to key stakeholders, and elucidates incentive for its integration into current waste management systems.
-
//    Portions of Underscore are inspired or borrowed from Prototype,
+
-
//    Oliver Steele's Functional, and John Resig's Micro-Templating.
+
-
//    For all details and documentation:
+
-
//    http://documentcloud.github.com/underscore
+
-
(function() {
+
<br>
 +
<br>
 +
<b>Reputation</b>
 +
In society, a growing culture for Eco-friendliness with an increasing political voice can be observed. Accordingly, mounting pressure to reduce harmful emissions is probing investment in effluent remediating infrastructure, not excluding that of the textile industry. Furthermore consumer demands are evolving (particularly in developed regions) to favor environmentally neutral products, with initiatives such as  being in the public eye and threatening the reputation of irresponsible manufacturers and governments.
-
  // Baseline setup
 
-
  // --------------
 
-
  // Establish the root object, `window` in the browser, or `global` on the server.
 
-
  var root = this;
 
-
  // Save the previous value of the `_` variable.
+
<!-- This is the main text. Anything in a <p>TEXT</p> is a paragraph and will be spaced appropriately-->
-
  var previousUnderscore = root._;
+
-
  // Establish the object that gets returned to break out of a loop iteration.
+
<h3>Why invest</h3>
-
  var breaker = {};
+
<p>In the implementation of any new product or process there exists an interplay between several elements that have the ability to effect the adoption of that product:
 +
jpeg.
 +
<br>1.Environmental: ensuring appropriate waste disposal in terms of toxicity levels and concentrations for example. Our process solution will bring forward sustainable textile processing
 +
<br>2.Economic: This aspect can be broken down into the financial returns of the product and the costs of goods saved through its use.
 +
<br>3.Legislative: Regulatory bodies and governments set emission margins and environmental burden limits for factories
 +
<br>4. Societal: through our public engagement campaigns (link), communicating a message to the wider society can bring about change.
 +
</p>
 +
<p>The significant economic activity of textiles and clothing in the global market makes it incredibly relevant for industrialists to consider process alterations aimed at optimizing resource allocation and reducing environmental burden.</p>
 +
<br>
 +
<p><b>“According to the EIPRO study, clothing alone is responsible for 2 to 10% of the EU’s life-cycle environmental impacts. This results in textiles coming fourth in the ranking of product category which cause the greatest environmental impact”(1)’</b></p>
 +
<br>
 +
<p>The carcinogenic properties of Azodye precursors and degradation products (such as aromatic amines)(3) are exacerbated by the low susceptibility for azodye bio-degradation under aerobic conditions (4,5). This environmental burden has been going up ranks with industrial fresh water pollution due to textile treatment and dyeing reach 20% in 2010 (2).</p>
 +
<br>
 +
<p>Furthermore, growing concerns regarding water consumption in textile processes due to astronomical usage of ‘potable industrial water’ (6). According to the 2010 global market report on sustainable textiles, the world used three trillion gallons of fresh water to produce 60 billion kgs of fabric. With over 80000 tonnes of reactive dyes produced and consumed each year, the heavily polluted dye baths issuing off the dyeing processes need to be treated before any reuse can be conceived (2). According to various reviews (2, , ,), conventional membrane processes and coagulation are among the suggested methods to achieve this. Implementing a water recycle strategy for a textile plant would require in-plant treatment processes (6).
 +
There exists an array of national and international regulations addressing ‘controlled used and allowed emissions from textile factories’ such as the EU Eco-label criteria and  REACH (Registration, Evaluation, Authorization and Restriction of Chemical substances) (regulation (EC) No 1907/2006) (7). A cost-effective process that facilitates textile companies to meet these requirements would be an ideal solution if integrated at the end of each factory, to stop short poisonous releases. Thus, by improving their performance and earning one of these eco-criteria could result in improved branding, bringing forward a strong connection with aware consumers by informing them of such sustainability initiatives.
 +
</p>
-
  // Save bytes in the minified (but not gzipped) version:
+
</div>
-
  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
<!--- This is the fifth section --->
 +
<div style="display: none;" id="view5">
-
  // Create quick reference variables for speed access to core prototypes.
+
<div class="textTitle"><h4>Why Microfluidics?</h4></div>
-
  var slice            = ArrayProto.slice,
+
<!-- This is the main text. Anything in a <p>TEXT</p> is a paragraph and will be spaced appropriately-->
-
      unshift          = ArrayProto.unshift,
+
<br>
-
      toString        = ObjProto.toString,
+
<p>Small-scale bioreactors are often the workhorse for process development. By experimenting at this scale, it is possible to determine the optimum growth conditions for E. coli. This will allow to assess costs at the required scale based on biomass requirements.We are using E. coli to cultivate the enzymes necessary for the biodegradation of azo dyes. By combining information on the production of azodyes in textile factories and stoichiometric relations, we will design an optimised cell growth (fermentation) stage.</p>
-
      hasOwnProperty  = ObjProto.hasOwnProperty;
+
-
  // All **ECMAScript 5** native function implementations that we hope to use
+
<!---TABLE START--->
-
  // are declared here.
+
<table style="width:100%"><colgroup><col width="60%"><col width="40%"></colgroup><tbody><tr><td>
-
  var
+
<!-- This is the video. Change the align attribute to left to move the video to the left-->
-
    nativeForEach      = ArrayProto.forEach,
+
<div class="video-wrapper">
-
    nativeMap          = ArrayProto.map,
+
<iframe style="padding:0.5%; border:0.5% #000;" src="//www.youtube.com/embed/0OlMfq5WT6k" allowfullscreen="" align="left" frameborder="0" height="380" width="600"></iframe></div></td><td>
-
    nativeReduce      = ArrayProto.reduce,
+
<!-- This is the video. Change the align attribute to left to move the video to the left-->
-
    nativeReduceRight  = ArrayProto.reduceRight,
+
<div class="video-wrapper">
-
    nativeFilter      = ArrayProto.filter,
+
<iframe style="padding:0.5%; border:0.5% #000;" src="//www.youtube.com/embed/buf--n4dcUs" allowfullscreen="" align="right" frameborder="0" height="380" width="600"></iframe></div></td></tr></tbody></table>
-
    nativeEvery        = ArrayProto.every,
+
<!---TABLE END--->
-
    nativeSome        = ArrayProto.some,
+
<br><!-- div is a divisor tag that just separates content. This class makes the paragraph in it black-->
-
    nativeIndexOf      = ArrayProto.indexOf,
+
<div class="SCJMFHIGHLIGHT">
-
    nativeLastIndexOf = ArrayProto.lastIndexOf,
+
  <p>
-
    nativeIsArray      = Array.isArray,
+
<img src="https://static.igem.org/mediawiki/2014/4/49/Microfluidic_set-up_iGEM.JPG" style="float:right;margin:0 0 0 10px;" width="35%">
-
    nativeKeys        = Object.keys,
+
The videos above were recorded in the UCL ACBE Microfluidics labs by members of our team. The video on the left is a demonstration of laminar flow across a T-junction microfluidic device. The video on the right demonstrates one of the methods of mixing made possible by microfluidics (herring bone channels etched into the chip).
-
    nativeBind        = FuncProto.bind;
+
<br><br>The image on the right displays the microfluidics set-up used by our iGEM team. This device and equipment is provided for by the UCL microfluidics lab.</p></div>
-
  // Create a safe reference to the Underscore object for use below.
+
</div>
-
  var _ = function(obj) { return new wrapper(obj); };
+
-
  // Export the Underscore object for **Node.js**, with
+
<!--- This is the sixth section --->
-
  // backwards-compatibility for the old `require()` API. If we're in
+
<div style="display: block;" id="view6">
-
  // the browser, add `_` as a global object via a string identifier,
+
-
  // for Closure Compiler "advanced" mode.
+
-
  if (typeof exports !== 'undefined') {
+
-
    if (typeof module !== 'undefined' && module.exports) {
+
-
      exports = module.exports = _;
+
-
    }
+
-
    exports._ = _;
+
-
  } else {
+
-
    root['_'] = _;
+
-
  }
+
-
  // Current version.
+
<div class="textTitle"><h4>Our Design Process</h4></div>
-
  _.VERSION = '1.3.1';
+
<!-- This is the main text. Anything in a <p>TEXT</p> is a paragraph and will be spaced appropriately-->
 +
<div class="video-wrapper">
 +
<iframe style="padding:1%; border:0.5% #000;" src="//www.youtube.com/embed/6UNpqpMS5vA" allowfullscreen="" align="right" frameborder="0" height="380" width="600"></iframe></div>
 +
<p>We will use rapid polymer prototyping techniques to generate microfluidic chips that will allow us to test our reaction and aid in the construction of a realistic bioprocess, which can be successfully scaled-up for industrial use. As we optimise and change our bioprocess, we can also quickly design new microfluidic chips that can mimic its development on a micro-scale. For example, it is our goal to integrate multiple downstream steps, such as chromatography, in order to isolate potential useful products. Demonstrating this in a microfluidic system is less time-consuming and far more cost effective than doing so at a larger scale.</p><br>
 +
<p>For our microfluidic bioreactor, we will be using a magnetic free floating bar as our mixing system. This is an effective method of mixing at a microfluidic scale, as demonstrated in the video on the right. This video is of a microfluidic chemostat bioreactor designed by Davies et al. 2014 UCL, using a free-floating bar to mix two dyes.</p><br>
 +
<div class="SCJMFHIGHLIGHT"><p>
 +
<img src="https://static.igem.org/mediawiki/2014/thumb/b/b8/AutoCAD_Device.png/800px-AutoCAD_Device.png" width="32%">
 +
<img src="https://static.igem.org/mediawiki/2014/thumb/7/71/MicrofluidicsDevice.jpg/800px-MicrofluidicsDevice.jpg" style="PADDING-LEFT: 2%" "padding-right:="" 3%"="" width="32%">
 +
<img src="https://static.igem.org/mediawiki/2014/1/1e/Fluidics_Chip.JPG" align="right" width="32%"><br>
 +
Above are some examples of the microfluidics devices developed by our team for use in the lab at the UCL ACBE. The devices are initially designed using AutoCAD (2D and 3D computer-aided design software), once the designs are finalised they can be 3D-printed using the facilities provided by the UCL Institute of Making and UCL ACBE; allowing our bioprocess and laboratory team to experiment and improve designs.</p></div>
 +
<br>
 +
<p><img src="https://static.igem.org/mediawiki/2014/4/4c/UCLAc-2014-logo.png" align="right" width="10%">
 +
An example of one of our microfluidic devices designed on AutoCAD can be downloaded <a href="https://static.igem.org/mediawiki/2014/f/fa/UCL_iGEM_2014_Microfluidics_Device_Design.dwg.zip">here</a>. This device utilises the basic concept of mixing the cells and dyes, producing a single output stream; much alike to the <a href="https://2014.igem.org/Team:UCL/Science/Bioprocessing">bioprocessing</a> concept. During the course of designing the microfluidic device, several key considerations must be taken into account: ability to withstand high pressure without leakage; materials of construction to be inert and transparent; size constraints of inlet and outlet piping; ability to accurately 3D-print the device.</p><br>
-
  // Collection Functions
+
</div>
-
  // --------------------
+
-
  // The cornerstone, an `each` implementation, aka `forEach`.
+
<!--- This is the seventh section --->
-
  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+
<div style="display: block;" id="view7">
-
  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+
-
  var each = _.each = _.forEach = function(obj, iterator, context) {
+
-
    if (obj == null) return;
+
-
    if (nativeForEach && obj.forEach === nativeForEach) {
+
-
      obj.forEach(iterator, context);
+
-
    } else if (obj.length === +obj.length) {
+
-
      for (var i = 0, l = obj.length; i < l; i++) {
+
-
        if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
+
-
      }
+
-
    } else {
+
-
      for (var key in obj) {
+
-
        if (_.has(obj, key)) {
+
-
          if (iterator.call(context, obj[key], key, obj) === breaker) return;
+
-
        }
+
-
      }
+
-
    }
+
-
  };
+
-
  // Return the results of applying the iterator to each element.
+
<div class="textTitle">
-
  // Delegates to **ECMAScript 5**'s native `map` if available.
+
-
  _.map = _.collect = function(obj, iterator, context) {
+
-
    var results = [];
+
-
    if (obj == null) return results;
+
-
    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+
-
    each(obj, function(value, index, list) {
+
-
      results[results.length] = iterator.call(context, value, index, list);
+
-
    });
+
-
    if (obj.length === +obj.length) results.length = obj.length;
+
-
    return results;
+
-
  };
+
-
  // **Reduce** builds up a single result from a list of values, aka `inject`,
+
<div class="textTitle"><h4>Why Bioprocessing?</h4></div>
-
  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+
<!-- This is the main text. Anything in a <p>TEXT</p> is a paragraph and will be spaced appropriately-->
-
  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+
<p>Bioprocess engineering is a conglomerate of fields and is extensively employed to optimize a variety of production processes. In order to cope with market forces, industries for example the pharmaceutical, have had to considerably improve their bioprocessing tools and techniques. As a result a range of novel process alternatives have been developed to harness product-specific properties, each bearing benefits, disadvantages and costs. While these can be used to drive financial returns, biological processing is becoming a gateway to eco-friendly alternatives for the treatment of recalcitrant wastewater such as industrial effluents. By providing more flexibility in supporting efficient degradation of toxic compounds and having lower operating costs, the biological treatment process brings forward key advantages over it's traditional counterpart.
-
    var initial = arguments.length > 2;
+
<br>A typical bioprocess involves the fermentation of a stock culture (e.g. E. coli) at a small scale which is subsequently scaled up to suitable production capacities. The products from the fermentative stages are consequently separated and purified using a variety of unit operations designed to exploit the orthogonal properties of desired products. These can then be formulated into their ultimate delivery form.
-
    if (obj == null) obj = [];
+
</p><br>
-
    if (nativeReduce && obj.reduce === nativeReduce) {
+
<!-- a <br> tag by itself creates a one line space between paragraphs -->
-
      if (context) iterator = _.bind(iterator, context);
+
<!-- an <a href="url of link">TEXT</a> turns the text into a link to the url you put in -->
-
      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+
<br>
-
    }
+
-
    each(obj, function(value, index, list) {
+
-
      if (!initial) {
+
-
        memo = value;
+
-
        initial = true;
+
-
      } else {
+
-
        memo = iterator.call(context, memo, value, index, list);
+
-
      }
+
-
    });
+
-
    if (!initial) throw new TypeError('Reduce of empty array with no initial value');
+
-
    return memo;
+
-
  };
+
-
  // The right-associative version of reduce, also known as `foldr`.
+
<br><!-- div is a divisor tag that just separates content. This class makes the paragraph in it black-->
-
  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+
<div class="SCJMFHIGHLIGHT">
-
  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+
<p>
-
    var initial = arguments.length > 2;
+
<img src="https://static.igem.org/mediawiki/2014/c/ca/UCLBioprocessEngFigure.png" style="float:right;margin:0 0 0 10px;" width="50%">
-
    if (obj == null) obj = [];
+
The design of a successful bioprocess requires careful analysis of the many factors that impact choice of design parameters and process variables. It is crucial to consider the cost of the process at each stage to assess it's large scale feasibility.
-
    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+
<br><br>
-
      if (context) iterator = _.bind(iterator, context);
+
Let's look at an example bioprocess
-
      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+
<br>1. Upstream: Production bioreactor preceded by small-scale seed fermenters
-
    }
+
<br>2. Downstream: constitutes of three main stages
-
    var reversed = _.toArray(obj).reverse();
+
<br><b>- Recovery </b>relates to primary unit operations i.e. centrifugation and filtrations. The main goal is to concentrate the desired compound within the process stream by reducing volumes and removing fermentation byproducts.  
-
    if (context && !initial) iterator = _.bind(iterator, context);
+
<br><b>- Purification </b> involves unit operations such as chromatography, crystallization and ultrafiltration. The final stages are necessary to ensure purity requirements are met.
-
    return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
+
<br><b>- Formulation</b>involves the integrating of the product into the target delivery route followed by packaging and storage.
-
  };
+
-
  // Return the first value which passes a truth test. Aliased as `detect`.
+
</p></div>
-
  _.find = _.detect = function(obj, iterator, context) {
+
-
    var result;
+
-
    any(obj, function(value, index, list) {
+
-
      if (iterator.call(context, value, index, list)) {
+
-
        result = value;
+
-
        return true;
+
-
      }
+
-
    });
+
-
    return result;
+
-
  };
+
-
  // Return all the elements that pass a truth test.
+
</div>
-
  // Delegates to **ECMAScript 5**'s native `filter` if available.
+
-
  // Aliased as `select`.
+
-
  _.filter = _.select = function(obj, iterator, context) {
+
-
    var results = [];
+
-
    if (obj == null) return results;
+
-
    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+
-
    each(obj, function(value, index, list) {
+
-
      if (iterator.call(context, value, index, list)) results[results.length] = value;
+
-
    });
+
-
    return results;
+
-
  };
+
-
  // Return all the elements for which a truth test fails.
+
<!-- This is the css of the page. Dont change it unless you have consulted with Lewis or Adam about what your changing-->
-
  _.reject = function(obj, iterator, context) {
+
<style>
-
     var results = [];
+
/*=======PAGE HEADER=======*/
-
     if (obj == null) return results;
+
.pageTitle {
-
     each(obj, function(value, index, list) {
+
     height:200px;
-
      if (!iterator.call(context, value, index, list)) results[results.length] = value;
+
     width:100%;
-
     });
+
     background-color:darkgrey;
-
     return results;
+
     padding-top:50px;
-
  };
+
     display:inline-block;
 +
}
 +
.floater {
 +
float:left;
 +
}
-
  // Determine whether all of the elements match a truth test.
+
/*=======Body=======*/
-
  // Delegates to **ECMAScript 5**'s native `every` if available.
+
.textArena {
-
  // Aliased as `all`.
+
     background-color:white;
-
  _.every = _.all = function(obj, iterator, context) {
+
     padding: 2% 5% 5% 5%;
-
    var result = true;
+
     font-size:90%;
-
    if (obj == null) return result;
+
}
-
    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+
-
     each(obj, function(value, index, list) {
+
-
      if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+
-
     });
+
-
     return result;
+
-
  };
+
-
  // Determine if at least one element in the object matches a truth test.
+
.widthCorrect {
-
  // Delegates to **ECMAScript 5**'s native `some` if available.
+
width:100%;
-
  // Aliased as `any`.
+
}
-
  var any = _.some = _.any = function(obj, iterator, context) {
+
-
    iterator || (iterator = _.identity);
+
-
    var result = false;
+
-
    if (obj == null) return result;
+
-
    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+
-
    each(obj, function(value, index, list) {
+
-
      if (result || (result = iterator.call(context, value, index, list))) return breaker;
+
-
    });
+
-
    return !!result;
+
-
  };
+
-
  // Determine if a given value is included in the array or object using `===`.
+
div.SCJMFHIGHLIGHT p {
-
  // Aliased as `contains`.
+
        color: #fff;
-
  _.include = _.contains = function(obj, target) {
+
border: solid 4px #2B8838;
-
    var found = false;
+
background-color: #000;
-
    if (obj == null) return found;
+
display: table;
-
    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+
padding: 1%;
-
    found = any(obj, function(value) {
+
margin: 1px 1px 0px 1px;
-
      return value === target;
+
}
-
    });
+
-
    return found;
+
-
  };
+
-
  // Invoke a method (with arguments) on every item in a collection.
+
div.SCJMFHIGHLIGHT a {
-
  _.invoke = function(obj, method) {
+
        color: #009A6B;
-
    var args = slice.call(arguments, 2);
+
}
-
    return _.map(obj, function(value) {
+
-
      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
+
-
    });
+
-
  };
+
-
  // Convenience version of a common use case of `map`: fetching a property.
+
.gallerycontainer
-
  _.pluck = function(obj, key) {
+
{
-
    return _.map(obj, function(value){ return value[key]; });
+
        align:right;
-
  };
+
}
 +
ul.tabs li.selected a
 +
{
 +
    position: relative;
 +
    top: 0px;
 +
    font-weight:bold;
 +
    background: #2B8838;
 +
    border: 1px solid #000;
 +
    border-bottom: 1px solid #000;
 +
    color: #000;
 +
}
-
  // Return the maximum element or (element-based computation).
+
.slider-wrapper.theme-default {
-
  _.max = function(obj, iterator, context) {
+
  width: 100%; /* Desired width */
-
    if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
+
}
-
    if (!iterator && _.isEmpty(obj)) return -Infinity;
+
/*=========Object Alignment Classes=============*/
-
    var result = {computed : -Infinity};
+
.alignright {
-
    each(obj, function(value, index, list) {
+
float:right;
-
      var computed = iterator ? iterator.call(context, value, index, list) : value;
+
margin-left:3%;
-
      computed >= result.computed && (result = {value : value, computed : computed});
+
}
-
    });
+
.alignleft {
-
     return result.value;
+
float:left;
-
  };
+
margin-right:3%;
 +
}
 +
.aligncenter {
 +
float:center;
 +
margin-right:3%;
 +
}
 +
.shortMargin{
 +
    margin-top: 0px;
 +
     margin-bottom: 0px;
 +
}
-
  // Return the minimum element (or element-based computation).
+
/*=========Table Classes=============*/
-
  _.min = function(obj, iterator, context) {
+
.table-bordered {
-
    if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
+
     border: 1px solid black;
-
    if (!iterator && _.isEmpty(obj)) return Infinity;
+
}
-
    var result = {computed : Infinity};
+
-
    each(obj, function(value, index, list) {
+
-
      var computed = iterator ? iterator.call(context, value, index, list) : value;
+
-
      computed < result.computed && (result = {value : value, computed : computed});
+
-
     });
+
-
    return result.value;
+
-
  };
+
-
  // Shuffle an array.
+
.table, th, td {
-
  _.shuffle = function(obj) {
+
    border-collapse: collapse;
-
    var shuffled = [], rand;
+
}
-
    each(obj, function(value, index, list) {
+
th, td {
-
      if (index == 0) {
+
     padding: 5px;
-
        shuffled[0] = value;
+
}
-
      } else {
+
-
        rand = Math.floor(Math.random() * (index + 1));
+
-
        shuffled[index] = shuffled[rand];
+
-
        shuffled[rand] = value;
+
-
      }
+
-
     });
+
-
    return shuffled;
+
-
  };
+
-
  // Sort the object's values by a criterion produced by an iterator.
 
-
  _.sortBy = function(obj, iterator, context) {
 
-
    return _.pluck(_.map(obj, function(value, index, list) {
 
-
      return {
 
-
        value : value,
 
-
        criteria : iterator.call(context, value, index, list)
 
-
      };
 
-
    }).sort(function(left, right) {
 
-
      var a = left.criteria, b = right.criteria;
 
-
      return a < b ? -1 : a > b ? 1 : 0;
 
-
    }), 'value');
 
-
  };
 
-
  // Groups the object's values by a criterion. Pass either a string attribute
+
/*=========Top Gap div id from Oran=============*/
-
  // to group by, or a function that returns the criterion.
+
#TopGapO {
-
  _.groupBy = function(obj, val) {
+
height: 70px;
-
    var result = {};
+
width: 100%;
-
    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
+
background: black;
-
    each(obj, function(value, index) {
+
}
-
      var key = iterator(value, index);
+
-
      (result[key] || (result[key] = [])).push(value);
+
-
    });
+
-
    return result;
+
-
  };
+
-
  // Use a comparator function to figure out at what index an object should
+
</style>
-
  // be inserted so as to maintain order. Uses binary search.
+
-
  _.sortedIndex = function(array, obj, iterator) {
+
-
    iterator || (iterator = _.identity);
+
-
    var low = 0, high = array.length;
+
-
    while (low < high) {
+
-
      var mid = (low + high) >> 1;
+
-
      iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
+
-
    }
+
-
    return low;
+
-
  };
+
-
 
+
-
  // Safely convert anything iterable into a real, live array.
+
-
  _.toArray = function(iterable) {
+
-
    if (!iterable)                return [];
+
-
    if (iterable.toArray)        return iterable.toArray();
+
-
    if (_.isArray(iterable))      return slice.call(iterable);
+
-
    if (_.isArguments(iterable))  return slice.call(iterable);
+
-
    return _.values(iterable);
+
-
  };
+
-
 
+
-
  // Return the number of elements in an object.
+
-
  _.size = function(obj) {
+
-
    return _.toArray(obj).length;
+
-
  };
+
-
 
+
-
  // Array Functions
+
-
  // ---------------
+
-
 
+
-
  // Get the first element of an array. Passing **n** will return the first N
+
-
  // values in the array. Aliased as `head`. The **guard** check allows it to work
+
-
  // with `_.map`.
+
-
  _.first = _.head = function(array, n, guard) {
+
-
    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+
-
  };
+
-
 
+
-
  // Returns everything but the last entry of the array. Especcialy useful on
+
-
  // the arguments object. Passing **n** will return all the values in
+
-
  // the array, excluding the last N. The **guard** check allows it to work with
+
-
  // `_.map`.
+
-
  _.initial = function(array, n, guard) {
+
-
    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+
-
  };
+
-
 
+
-
  // Get the last element of an array. Passing **n** will return the last N
+
-
  // values in the array. The **guard** check allows it to work with `_.map`.
+
-
  _.last = function(array, n, guard) {
+
-
    if ((n != null) && !guard) {
+
-
      return slice.call(array, Math.max(array.length - n, 0));
+
-
    } else {
+
-
      return array[array.length - 1];
+
-
    }
+
-
  };
+
-
 
+
-
  // Returns everything but the first entry of the array. Aliased as `tail`.
+
-
  // Especially useful on the arguments object. Passing an **index** will return
+
-
  // the rest of the values in the array from that index onward. The **guard**
+
-
  // check allows it to work with `_.map`.
+
-
  _.rest = _.tail = function(array, index, guard) {
+
-
    return slice.call(array, (index == null) || guard ? 1 : index);
+
-
  };
+
-
 
+
-
  // Trim out all falsy values from an array.
+
-
  _.compact = function(array) {
+
-
    return _.filter(array, function(value){ return !!value; });
+
-
  };
+
-
 
+
-
  // Return a completely flattened version of an array.
+
-
  _.flatten = function(array, shallow) {
+
-
    return _.reduce(array, function(memo, value) {
+
-
      if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
+
-
      memo[memo.length] = value;
+
-
      return memo;
+
-
    }, []);
+
-
  };
+
-
 
+
-
  // Return a version of the array that does not contain the specified value(s).
+
-
  _.without = function(array) {
+
-
    return _.difference(array, slice.call(arguments, 1));
+
-
  };
+
-
 
+
-
  // Produce a duplicate-free version of the array. If the array has already
+
-
  // been sorted, you have the option of using a faster algorithm.
+
-
  // Aliased as `unique`.
+
-
  _.uniq = _.unique = function(array, isSorted, iterator) {
+
-
    var initial = iterator ? _.map(array, iterator) : array;
+
-
    var result = [];
+
-
    _.reduce(initial, function(memo, el, i) {
+
-
      if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
+
-
        memo[memo.length] = el;
+
-
        result[result.length] = array[i];
+
-
      }
+
-
      return memo;
+
-
    }, []);
+
-
    return result;
+
-
  };
+
-
 
+
-
  // Produce an array that contains the union: each distinct element from all of
+
-
  // the passed-in arrays.
+
-
  _.union = function() {
+
-
    return _.uniq(_.flatten(arguments, true));
+
-
  };
+
-
 
+
-
  // Produce an array that contains every item shared between all the
+
-
  // passed-in arrays. (Aliased as "intersect" for back-compat.)
+
-
  _.intersection = _.intersect = function(array) {
+
-
    var rest = slice.call(arguments, 1);
+
-
    return _.filter(_.uniq(array), function(item) {
+
-
      return _.every(rest, function(other) {
+
-
        return _.indexOf(other, item) >= 0;
+
-
      });
+
-
    });
+
-
  };
+
-
 
+
-
  // Take the difference between one array and a number of other arrays.
+
-
  // Only the elements present in just the first array will remain.
+
-
  _.difference = function(array) {
+
-
    var rest = _.flatten(slice.call(arguments, 1));
+
-
    return _.filter(array, function(value){ return !_.include(rest, value); });
+
-
  };
+
-
 
+
-
  // Zip together multiple lists into a single array -- elements that share
+
-
  // an index go together.
+
-
  _.zip = function() {
+
-
    var args = slice.call(arguments);
+
-
    var length = _.max(_.pluck(args, 'length'));
+
-
    var results = new Array(length);
+
-
    for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
+
-
    return results;
+
-
  };
+
-
 
+
-
  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+
-
  // we need this function. Return the position of the first occurrence of an
+
-
  // item in an array, or -1 if the item is not included in the array.
+
-
  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+
-
  // If the array is large and already in sort order, pass `true`
+
-
  // for **isSorted** to use binary search.
+
-
  _.indexOf = function(array, item, isSorted) {
+
-
    if (array == null) return -1;
+
-
    var i, l;
+
-
    if (isSorted) {
+
-
      i = _.sortedIndex(array, item);
+
-
      return array[i] === item ? i : -1;
+
-
    }
+
-
    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
+
-
    for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
+
-
    return -1;
+
-
  };
+
-
 
+
-
  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+
-
  _.lastIndexOf = function(array, item) {
+
-
    if (array == null) return -1;
+
-
    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
+
-
    var i = array.length;
+
-
    while (i--) if (i in array && array[i] === item) return i;
+
-
    return -1;
+
-
  };
+
-
 
+
-
  // Generate an integer Array containing an arithmetic progression. A port of
+
-
  // the native Python `range()` function. See
+
-
  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+
-
  _.range = function(start, stop, step) {
+
-
    if (arguments.length <= 1) {
+
-
      stop = start || 0;
+
-
      start = 0;
+
-
    }
+
-
    step = arguments[2] || 1;
+
-
 
+
-
    var len = Math.max(Math.ceil((stop - start) / step), 0);
+
-
    var idx = 0;
+
-
    var range = new Array(len);
+
-
 
+
-
    while(idx < len) {
+
-
      range[idx++] = start;
+
-
      start += step;
+
-
    }
+
-
 
+
-
    return range;
+
-
  };
+
-
 
+
-
  // Function (ahem) Functions
+
-
  // ------------------
+
-
 
+
-
  // Reusable constructor function for prototype setting.
+
-
  var ctor = function(){};
+
-
 
+
-
  // Create a function bound to a given object (assigning `this`, and arguments,
+
-
  // optionally). Binding with arguments is also known as `curry`.
+
-
  // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
+
-
  // We check for `func.bind` first, to fail fast when `func` is undefined.
+
-
  _.bind = function bind(func, context) {
+
-
    var bound, args;
+
-
    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+
-
    if (!_.isFunction(func)) throw new TypeError;
+
-
    args = slice.call(arguments, 2);
+
-
    return bound = function() {
+
-
      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+
-
      ctor.prototype = func.prototype;
+
-
      var self = new ctor;
+
-
      var result = func.apply(self, args.concat(slice.call(arguments)));
+
-
      if (Object(result) === result) return result;
+
-
      return self;
+
-
    };
+
-
  };
+
-
 
+
-
  // Bind all of an object's methods to that object. Useful for ensuring that
+
-
  // all callbacks defined on an object belong to it.
+
-
  _.bindAll = function(obj) {
+
-
    var funcs = slice.call(arguments, 1);
+
-
    if (funcs.length == 0) funcs = _.functions(obj);
+
-
    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+
-
    return obj;
+
-
  };
+
-
 
+
-
  // Memoize an expensive function by storing its results.
+
-
  _.memoize = function(func, hasher) {
+
-
    var memo = {};
+
-
    hasher || (hasher = _.identity);
+
-
    return function() {
+
-
      var key = hasher.apply(this, arguments);
+
-
      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+
-
    };
+
-
  };
+
-
 
+
-
  // Delays a function for the given number of milliseconds, and then calls
+
-
  // it with the arguments supplied.
+
-
  _.delay = function(func, wait) {
+
-
    var args = slice.call(arguments, 2);
+
-
    return setTimeout(function(){ return func.apply(func, args); }, wait);
+
-
  };
+
-
 
+
-
  // Defers a function, scheduling it to run after the current call stack has
+
-
  // cleared.
+
-
  _.defer = function(func) {
+
-
    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+
-
  };
+
-
 
+
-
  // Returns a function, that, when invoked, will only be triggered at most once
+
-
  // during a given window of time.
+
-
  _.throttle = function(func, wait) {
+
-
    var context, args, timeout, throttling, more;
+
-
    var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
+
-
    return function() {
+
-
      context = this; args = arguments;
+
-
      var later = function() {
+
-
        timeout = null;
+
-
        if (more) func.apply(context, args);
+
-
        whenDone();
+
-
      };
+
-
      if (!timeout) timeout = setTimeout(later, wait);
+
-
      if (throttling) {
+
-
        more = true;
+
-
      } else {
+
-
        func.apply(context, args);
+
-
      }
+
-
      whenDone();
+
-
      throttling = true;
+
-
    };
+
-
  };
+
-
 
+
-
  // Returns a function, that, as long as it continues to be invoked, will not
+
-
  // be triggered. The function will be called after it stops being called for
+
-
  // N milliseconds.
+
-
  _.debounce = function(func, wait) {
+
-
    var timeout;
+
-
    return function() {
+
-
      var context = this, args = arguments;
+
-
      var later = function() {
+
-
        timeout = null;
+
-
        func.apply(context, args);
+
-
      };
+
-
      clearTimeout(timeout);
+
-
      timeout = setTimeout(later, wait);
+
-
    };
+
-
  };
+
-
 
+
-
  // Returns a function that will be executed at most one time, no matter how
+
-
  // often you call it. Useful for lazy initialization.
+
-
  _.once = function(func) {
+
-
    var ran = false, memo;
+
-
    return function() {
+
-
      if (ran) return memo;
+
-
      ran = true;
+
-
      return memo = func.apply(this, arguments);
+
-
    };
+
-
  };
+
-
 
+
-
  // Returns the first function passed as an argument to the second,
+
-
  // allowing you to adjust arguments, run code before and after, and
+
-
  // conditionally execute the original function.
+
-
  _.wrap = function(func, wrapper) {
+
-
    return function() {
+
-
      var args = [func].concat(slice.call(arguments, 0));
+
-
      return wrapper.apply(this, args);
+
-
    };
+
-
  };
+
-
 
+
-
  // Returns a function that is the composition of a list of functions, each
+
-
  // consuming the return value of the function that follows.
+
-
  _.compose = function() {
+
-
    var funcs = arguments;
+
-
    return function() {
+
-
      var args = arguments;
+
-
      for (var i = funcs.length - 1; i >= 0; i--) {
+
-
        args = [funcs[i].apply(this, args)];
+
-
      }
+
-
      return args[0];
+
-
    };
+
-
  };
+
-
 
+
-
  // Returns a function that will only be executed after being called N times.
+
-
  _.after = function(times, func) {
+
-
    if (times <= 0) return func();
+
-
    return function() {
+
-
      if (--times < 1) { return func.apply(this, arguments); }
+
-
    };
+
-
  };
+
-
 
+
-
  // Object Functions
+
-
  // ----------------
+
-
 
+
-
  // Retrieve the names of an object's properties.
+
-
  // Delegates to **ECMAScript 5**'s native `Object.keys`
+
-
  _.keys = nativeKeys || function(obj) {
+
-
    if (obj !== Object(obj)) throw new TypeError('Invalid object');
+
-
    var keys = [];
+
-
    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+
-
    return keys;
+
-
  };
+
-
 
+
-
  // Retrieve the values of an object's properties.
+
-
  _.values = function(obj) {
+
-
    return _.map(obj, _.identity);
+
-
  };
+
-
 
+
-
  // Return a sorted list of the function names available on the object.
+
-
  // Aliased as `methods`
+
-
  _.functions = _.methods = function(obj) {
+
-
    var names = [];
+
-
    for (var key in obj) {
+
-
      if (_.isFunction(obj[key])) names.push(key);
+
-
    }
+
-
    return names.sort();
+
-
  };
+
-
 
+
-
  // Extend a given object with all the properties in passed-in object(s).
+
-
  _.extend = function(obj) {
+
-
    each(slice.call(arguments, 1), function(source) {
+
-
      for (var prop in source) {
+
-
        obj[prop] = source[prop];
+
-
      }
+
-
    });
+
-
    return obj;
+
-
  };
+
-
 
+
-
  // Fill in a given object with default properties.
+
-
  _.defaults = function(obj) {
+
-
    each(slice.call(arguments, 1), function(source) {
+
-
      for (var prop in source) {
+
-
        if (obj[prop] == null) obj[prop] = source[prop];
+
-
      }
+
-
    });
+
-
    return obj;
+
-
  };
+
-
 
+
-
  // Create a (shallow-cloned) duplicate of an object.
+
-
  _.clone = function(obj) {
+
-
    if (!_.isObject(obj)) return obj;
+
-
    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+
-
  };
+
-
 
+
-
  // Invokes interceptor with the obj, and then returns obj.
+
-
  // The primary purpose of this method is to "tap into" a method chain, in
+
-
  // order to perform operations on intermediate results within the chain.
+
-
  _.tap = function(obj, interceptor) {
+
-
    interceptor(obj);
+
-
    return obj;
+
-
  };
+
-
 
+
-
  // Internal recursive comparison function.
+
-
  function eq(a, b, stack) {
+
-
    // Identical objects are equal. `0 === -0`, but they aren't identical.
+
-
    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+
-
    if (a === b) return a !== 0 || 1 / a == 1 / b;
+
-
    // A strict comparison is necessary because `null == undefined`.
+
-
    if (a == null || b == null) return a === b;
+
-
    // Unwrap any wrapped objects.
+
-
    if (a._chain) a = a._wrapped;
+
-
    if (b._chain) b = b._wrapped;
+
-
    // Invoke a custom `isEqual` method if one is provided.
+
-
    if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
+
-
    if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
+
-
    // Compare `[[Class]]` names.
+
-
    var className = toString.call(a);
+
-
    if (className != toString.call(b)) return false;
+
-
    switch (className) {
+
-
      // Strings, numbers, dates, and booleans are compared by value.
+
-
      case '[object String]':
+
-
        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+
-
        // equivalent to `new String("5")`.
+
-
        return a == String(b);
+
-
      case '[object Number]':
+
-
        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+
-
        // other numeric values.
+
-
        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+
-
      case '[object Date]':
+
-
      case '[object Boolean]':
+
-
        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+
-
        // millisecond representations. Note that invalid dates with millisecond representations
+
-
        // of `NaN` are not equivalent.
+
-
        return +a == +b;
+
-
      // RegExps are compared by their source patterns and flags.
+
-
      case '[object RegExp]':
+
-
        return a.source == b.source &&
+
-
              a.global == b.global &&
+
-
              a.multiline == b.multiline &&
+
-
              a.ignoreCase == b.ignoreCase;
+
-
    }
+
-
    if (typeof a != 'object' || typeof b != 'object') return false;
+
-
    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+
-
    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+
-
    var length = stack.length;
+
-
    while (length--) {
+
-
      // Linear search. Performance is inversely proportional to the number of
+
-
      // unique nested structures.
+
-
      if (stack[length] == a) return true;
+
-
    }
+
-
    // Add the first object to the stack of traversed objects.
+
-
    stack.push(a);
+
-
    var size = 0, result = true;
+
-
    // Recursively compare objects and arrays.
+
-
    if (className == '[object Array]') {
+
-
      // Compare array lengths to determine if a deep comparison is necessary.
+
-
      size = a.length;
+
-
      result = size == b.length;
+
-
      if (result) {
+
-
        // Deep compare the contents, ignoring non-numeric properties.
+
-
        while (size--) {
+
-
          // Ensure commutative equality for sparse arrays.
+
-
          if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
+
-
        }
+
-
      }
+
-
    } else {
+
-
      // Objects with different constructors are not equivalent.
+
-
      if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
+
-
      // Deep compare objects.
+
-
      for (var key in a) {
+
-
        if (_.has(a, key)) {
+
-
          // Count the expected number of properties.
+
-
          size++;
+
-
          // Deep compare each member.
+
-
          if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
+
-
        }
+
-
      }
+
-
      // Ensure that both objects contain the same number of properties.
+
-
      if (result) {
+
-
        for (key in b) {
+
-
          if (_.has(b, key) && !(size--)) break;
+
-
        }
+
-
        result = !size;
+
-
      }
+
-
    }
+
-
    // Remove the first object from the stack of traversed objects.
+
-
    stack.pop();
+
-
    return result;
+
-
  }
+
-
 
+
-
  // Perform a deep comparison to check if two objects are equal.
+
-
  _.isEqual = function(a, b) {
+
-
    return eq(a, b, []);
+
-
  };
+
-
 
+
-
  // Is a given array, string, or object empty?
+
-
  // An "empty" object has no enumerable own-properties.
+
-
  _.isEmpty = function(obj) {
+
-
    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+
-
    for (var key in obj) if (_.has(obj, key)) return false;
+
-
    return true;
+
-
  };
+
-
 
+
-
  // Is a given value a DOM element?
+
-
  _.isElement = function(obj) {
+
-
    return !!(obj && obj.nodeType == 1);
+
-
  };
+
-
 
+
-
  // Is a given value an array?
+
-
  // Delegates to ECMA5's native Array.isArray
+
-
  _.isArray = nativeIsArray || function(obj) {
+
-
    return toString.call(obj) == '[object Array]';
+
-
  };
+
-
 
+
-
  // Is a given variable an object?
+
-
  _.isObject = function(obj) {
+
-
    return obj === Object(obj);
+
-
  };
+
-
 
+
-
  // Is a given variable an arguments object?
+
-
  _.isArguments = function(obj) {
+
-
    return toString.call(obj) == '[object Arguments]';
+
-
  };
+
-
  if (!_.isArguments(arguments)) {
+
-
    _.isArguments = function(obj) {
+
-
      return !!(obj && _.has(obj, 'callee'));
+
-
    };
+
-
  }
+
-
 
+
-
  // Is a given value a function?
+
-
  _.isFunction = function(obj) {
+
-
    return toString.call(obj) == '[object Function]';
+
-
  };
+
-
 
+
-
  // Is a given value a string?
+
-
  _.isString = function(obj) {
+
-
    return toString.call(obj) == '[object String]';
+
-
  };
+
-
 
+
-
  // Is a given value a number?
+
-
  _.isNumber = function(obj) {
+
-
    return toString.call(obj) == '[object Number]';
+
-
  };
+
-
 
+
-
  // Is the given value `NaN`?
+
-
  _.isNaN = function(obj) {
+
-
    // `NaN` is the only value for which `===` is not reflexive.
+
-
    return obj !== obj;
+
-
  };
+
-
 
+
-
  // Is a given value a boolean?
+
-
  _.isBoolean = function(obj) {
+
-
    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+
-
  };
+
-
 
+
-
  // Is a given value a date?
+
-
  _.isDate = function(obj) {
+
-
    return toString.call(obj) == '[object Date]';
+
-
  };
+
-
 
+
-
  // Is the given value a regular expression?
+
-
  _.isRegExp = function(obj) {
+
-
    return toString.call(obj) == '[object RegExp]';
+
-
  };
+
-
 
+
-
  // Is a given value equal to null?
+
-
  _.isNull = function(obj) {
+
-
    return obj === null;
+
-
  };
+
-
 
+
-
  // Is a given variable undefined?
+
-
  _.isUndefined = function(obj) {
+
-
    return obj === void 0;
+
-
  };
+
-
 
+
-
  // Has own property?
+
-
  _.has = function(obj, key) {
+
-
    return hasOwnProperty.call(obj, key);
+
-
  };
+
-
 
+
-
  // Utility Functions
+
-
  // -----------------
+
-
 
+
-
  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+
-
  // previous owner. Returns a reference to the Underscore object.
+
-
  _.noConflict = function() {
+
-
    root._ = previousUnderscore;
+
-
    return this;
+
-
  };
+
-
 
+
-
  // Keep the identity function around for default iterators.
+
-
  _.identity = function(value) {
+
-
    return value;
+
-
  };
+
-
 
+
-
  // Run a function **n** times.
+
-
  _.times = function (n, iterator, context) {
+
-
    for (var i = 0; i < n; i++) iterator.call(context, i);
+
-
  };
+
-
 
+
-
  // Escape a string for HTML interpolation.
+
-
  // Removed
+
-
 
+
-
  // Add your own custom functions to the Underscore object, ensuring that
+
-
  // they're correctly added to the OOP wrapper as well.
+
-
  _.mixin = function(obj) {
+
-
    each(_.functions(obj), function(name){
+
-
      addToWrapper(name, _[name] = obj[name]);
+
-
    });
+
-
  };
+
-
 
+
-
  // Generate a unique integer id (unique within the entire client session).
+
-
  // Useful for temporary DOM ids.
+
-
  var idCounter = 0;
+
-
  _.uniqueId = function(prefix) {
+
-
    var id = idCounter++;
+
-
    return prefix ? prefix + id : id;
+
-
  };
+
-
 
+
-
  // By default, Underscore uses ERB-style template delimiters, change the
+
-
  // following template settings to use alternative delimiters.
+
-
  _.templateSettings = {
+
-
    evaluate    : /<%([\s\S]+?)%>/g,
+
-
    interpolate : /<%=([\s\S]+?)%>/g,
+
-
    escape      : /<%-([\s\S]+?)%>/g
+
-
  };
+
-
 
+
-
  // When customizing `templateSettings`, if you don't want to define an
+
-
  // interpolation, evaluation or escaping regex, we need one that is
+
-
  // guaranteed not to match.
+
-
  var noMatch = /.^/;
+
-
 
+
-
  // Within an interpolation, evaluation, or escaping, remove HTML escaping
+
-
  // that had been previously added.
+
-
  var unescape = function(code) {
+
-
    return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
+
-
  };
+
-
 
+
-
  // JavaScript micro-templating, similar to John Resig's implementation.
+
-
  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+
-
  // and correctly escapes quotes within interpolated code.
+
-
  _.template = function(str, data) {
+
-
    var c  = _.templateSettings;
+
-
    var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
+
-
      'with(obj||{}){__p.push(\'' +
+
-
      str.replace(/\\/g, '\\\\')
+
-
        .replace(/'/g, "\\'")
+
-
        .replace(c.escape || noMatch, function(match, code) {
+
-
          return "',_.escape(" + unescape(code) + "),'";
+
-
        })
+
-
        .replace(c.interpolate || noMatch, function(match, code) {
+
-
          return "'," + unescape(code) + ",'";
+
-
        })
+
-
        .replace(c.evaluate || noMatch, function(match, code) {
+
-
          return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
+
-
        })
+
-
        .replace(/\r/g, '\\r')
+
-
        .replace(/\n/g, '\\n')
+
-
        .replace(/\t/g, '\\t')
+
-
        + "');}return __p.join('');";
+
-
    var func = new Function('obj', '_', tmpl);
+
-
    if (data) return func(data, _);
+
-
    return function(data) {
+
-
      return func.call(this, data, _);
+
-
    };
+
-
  };
+
-
 
+
-
  // Add a "chain" function, which will delegate to the wrapper.
+
-
  _.chain = function(obj) {
+
-
    return _(obj).chain();
+
-
  };
+
-
 
+
-
  // The OOP Wrapper
+
-
  // ---------------
+
-
 
+
-
  // If Underscore is called as a function, it returns a wrapped object that
+
-
  // can be used OO-style. This wrapper holds altered versions of all the
+
-
  // underscore functions. Wrapped objects may be chained.
+
-
  var wrapper = function(obj) { this._wrapped = obj; };
+
-
 
+
-
  // Expose `wrapper.prototype` as `_.prototype`
+
-
  _.prototype = wrapper.prototype;
+
-
 
+
-
  // Helper function to continue chaining intermediate results.
+
-
  var result = function(obj, chain) {
+
-
    return chain ? _(obj).chain() : obj;
+
-
  };
+
-
 
+
-
  // A method to easily add functions to the OOP wrapper.
+
-
  var addToWrapper = function(name, func) {
+
-
    wrapper.prototype[name] = function() {
+
-
      var args = slice.call(arguments);
+
-
      unshift.call(args, this._wrapped);
+
-
      return result(func.apply(_, args), this._chain);
+
-
    };
+
-
  };
+
-
 
+
-
  // Add all of the Underscore functions to the wrapper object.
+
-
  _.mixin(_);
+
-
 
+
-
  // Add all mutator Array functions to the wrapper.
+
-
  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+
-
    var method = ArrayProto[name];
+
-
    wrapper.prototype[name] = function() {
+
-
      var wrapped = this._wrapped;
+
-
      method.apply(wrapped, arguments);
+
-
      var length = wrapped.length;
+
-
      if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
+
-
      return result(wrapped, this._chain);
+
-
    };
+
-
  });
+
-
 
+
-
  // Add all accessor Array functions to the wrapper.
+
-
  each(['concat', 'join', 'slice'], function(name) {
+
-
    var method = ArrayProto[name];
+
-
    wrapper.prototype[name] = function() {
+
-
      return result(method.apply(this._wrapped, arguments), this._chain);
+
-
    };
+
-
  });
+
-
 
+
-
  // Start chaining a wrapped Underscore object.
+
-
  wrapper.prototype.chain = function() {
+
-
    this._chain = true;
+
-
    return this;
+
-
  };
+
-
 
+
-
  // Extracts the result from a wrapped and chained object.
+
-
  wrapper.prototype.value = function() {
+
-
    return this._wrapped;
+
-
  };
+
-
 
+
-
}).call(this);
+
-
 
+
-
 
+
-
/********************************
+
-
** FILE: lib/backbone.js
+
-
********************************/
+
-
 
+
-
// Backbone.js 0.9.2
+
-
 
+
-
// (c) 2010-2012 Jeremy Ashkenas, DocumentCloud Inc.
+
-
// Backbone may be freely distributed under the MIT license.
+
-
// For all details and documentation:
+
-
// http://backbonejs.org
+
-
(function(){var l=this,y=l.Backbone,z=Array.prototype.slice,A=Array.prototype.splice,g;g="undefined"!==typeof exports?exports:l.Backbone={};g.VERSION="0.9.2";var f=l._;!f&&"undefined"!==typeof require&&(f=require("underscore"));var i=l.jQuery||l.Zepto||l.ender;g.setDomLibrary=function(a){i=a};g.noConflict=function(){l.Backbone=y;return this};g.emulateHTTP=!1;g.emulateJSON=!1;var p=/\s+/,k=g.Events={on:function(a,b,c){var d,e,f,g,j;if(!b)return this;a=a.split(p);for(d=this._callbacks||(this._callbacks=
+
-
{});e=a.shift();)f=(j=d[e])?j.tail:{},f.next=g={},f.context=c,f.callback=b,d[e]={tail:g,next:j?j.next:f};return this},off:function(a,b,c){var d,e,h,g,j,q;if(e=this._callbacks){if(!a&&!b&&!c)return delete this._callbacks,this;for(a=a?a.split(p):f.keys(e);d=a.shift();)if(h=e[d],delete e[d],h&&(b||c))for(g=h.tail;(h=h.next)!==g;)if(j=h.callback,q=h.context,b&&j!==b||c&&q!==c)this.on(d,j,q);return this}},trigger:function(a){var b,c,d,e,f,g;if(!(d=this._callbacks))return this;f=d.all;a=a.split(p);for(g=
+
-
z.call(arguments,1);b=a.shift();){if(c=d[b])for(e=c.tail;(c=c.next)!==e;)c.callback.apply(c.context||this,g);if(c=f){e=c.tail;for(b=[b].concat(g);(c=c.next)!==e;)c.callback.apply(c.context||this,b)}}return this}};k.bind=k.on;k.unbind=k.off;var o=g.Model=function(a,b){var c;a||(a={});b&&b.parse&&(a=this.parse(a));if(c=n(this,"defaults"))a=f.extend({},c,a);b&&b.collection&&(this.collection=b.collection);this.attributes={};this._escapedAttributes={};this.cid=f.uniqueId("c");this.changed={};this._silent=
+
-
{};this._pending={};this.set(a,{silent:!0});this.changed={};this._silent={};this._pending={};this._previousAttributes=f.clone(this.attributes);this.initialize.apply(this,arguments)};f.extend(o.prototype,k,{changed:null,_silent:null,_pending:null,idAttribute:"id",initialize:function(){},toJSON:function(){return f.clone(this.attributes)},get:function(a){return this.attributes[a]},escape:function(a){var b;if(b=this._escapedAttributes[a])return b;b=this.get(a);return this._escapedAttributes[a]=f.escape(null==
+
-
b?"":""+b)},has:function(a){return null!=this.get(a)},set:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c||(c={});if(!d)return this;d instanceof o&&(d=d.attributes);if(c.unset)for(e in d)d[e]=void 0;if(!this._validate(d,c))return!1;this.idAttribute in d&&(this.id=d[this.idAttribute]);var b=c.changes={},h=this.attributes,g=this._escapedAttributes,j=this._previousAttributes||{};for(e in d){a=d[e];if(!f.isEqual(h[e],a)||c.unset&&f.has(h,e))delete g[e],(c.silent?this._silent:
+
-
b)[e]=!0;c.unset?delete h[e]:h[e]=a;!f.isEqual(j[e],a)||f.has(h,e)!=f.has(j,e)?(this.changed[e]=a,c.silent||(this._pending[e]=!0)):(delete this.changed[e],delete this._pending[e])}c.silent||this.change(c);return this},unset:function(a,b){(b||(b={})).unset=!0;return this.set(a,null,b)},clear:function(a){(a||(a={})).unset=!0;return this.set(f.clone(this.attributes),a)},fetch:function(a){var a=a?f.clone(a):{},b=this,c=a.success;a.success=function(d,e,f){if(!b.set(b.parse(d,f),a))return!1;c&&c(b,d)};
+
-
a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},save:function(a,b,c){var d,e;f.isObject(a)||null==a?(d=a,c=b):(d={},d[a]=b);c=c?f.clone(c):{};if(c.wait){if(!this._validate(d,c))return!1;e=f.clone(this.attributes)}a=f.extend({},c,{silent:!0});if(d&&!this.set(d,c.wait?a:c))return!1;var h=this,i=c.success;c.success=function(a,b,e){b=h.parse(a,e);if(c.wait){delete c.wait;b=f.extend(d||{},b)}if(!h.set(b,c))return false;i?i(h,a):h.trigger("sync",h,a,c)};c.error=g.wrapError(c.error,
+
-
h,c);b=this.isNew()?"create":"update";b=(this.sync||g.sync).call(this,b,this,c);c.wait&&this.set(e,a);return b},destroy:function(a){var a=a?f.clone(a):{},b=this,c=a.success,d=function(){b.trigger("destroy",b,b.collection,a)};if(this.isNew())return d(),!1;a.success=function(e){a.wait&&d();c?c(b,e):b.trigger("sync",b,e,a)};a.error=g.wrapError(a.error,b,a);var e=(this.sync||g.sync).call(this,"delete",this,a);a.wait||d();return e},url:function(){var a=n(this,"urlRoot")||n(this.collection,"url")||t();
+
-
return this.isNew()?a:a+("/"==a.charAt(a.length-1)?"":"/")+encodeURIComponent(this.id)},parse:function(a){return a},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return null==this.id},change:function(a){a||(a={});var b=this._changing;this._changing=!0;for(var c in this._silent)this._pending[c]=!0;var d=f.extend({},a.changes,this._silent);this._silent={};for(c in d)this.trigger("change:"+c,this,this.get(c),a);if(b)return this;for(;!f.isEmpty(this._pending);){this._pending=
+
-
{};this.trigger("change",this,a);for(c in this.changed)!this._pending[c]&&!this._silent[c]&&delete this.changed[c];this._previousAttributes=f.clone(this.attributes)}this._changing=!1;return this},hasChanged:function(a){return!arguments.length?!f.isEmpty(this.changed):f.has(this.changed,a)},changedAttributes:function(a){if(!a)return this.hasChanged()?f.clone(this.changed):!1;var b,c=!1,d=this._previousAttributes,e;for(e in a)if(!f.isEqual(d[e],b=a[e]))(c||(c={}))[e]=b;return c},previous:function(a){return!arguments.length||
+
-
!this._previousAttributes?null:this._previousAttributes[a]},previousAttributes:function(){return f.clone(this._previousAttributes)},isValid:function(){return!this.validate(this.attributes)},_validate:function(a,b){if(b.silent||!this.validate)return!0;var a=f.extend({},this.attributes,a),c=this.validate(a,b);if(!c)return!0;b&&b.error?b.error(this,c,b):this.trigger("error",this,c,b);return!1}});var r=g.Collection=function(a,b){b||(b={});b.model&&(this.model=b.model);b.comparator&&(this.comparator=b.comparator);
+
-
this._reset();this.initialize.apply(this,arguments);a&&this.reset(a,{silent:!0,parse:b.parse})};f.extend(r.prototype,k,{model:o,initialize:function(){},toJSON:function(a){return this.map(function(b){return b.toJSON(a)})},add:function(a,b){var c,d,e,g,i,j={},k={},l=[];b||(b={});a=f.isArray(a)?a.slice():[a];c=0;for(d=a.length;c<d;c++){if(!(e=a[c]=this._prepareModel(a[c],b)))throw Error("Can't add an invalid model to a collection");g=e.cid;i=e.id;j[g]||this._byCid[g]||null!=i&&(k[i]||this._byId[i])?
+
-
l.push(c):j[g]=k[i]=e}for(c=l.length;c--;)a.splice(l[c],1);c=0;for(d=a.length;c<d;c++)(e=a[c]).on("all",this._onModelEvent,this),this._byCid[e.cid]=e,null!=e.id&&(this._byId[e.id]=e);this.length+=d;A.apply(this.models,[null!=b.at?b.at:this.models.length,0].concat(a));this.comparator&&this.sort({silent:!0});if(b.silent)return this;c=0;for(d=this.models.length;c<d;c++)if(j[(e=this.models[c]).cid])b.index=c,e.trigger("add",e,this,b);return this},remove:function(a,b){var c,d,e,g;b||(b={});a=f.isArray(a)?
+
-
a.slice():[a];c=0;for(d=a.length;c<d;c++)if(g=this.getByCid(a[c])||this.get(a[c]))delete this._byId[g.id],delete this._byCid[g.cid],e=this.indexOf(g),this.models.splice(e,1),this.length--,b.silent||(b.index=e,g.trigger("remove",g,this,b)),this._removeReference(g);return this},push:function(a,b){a=this._prepareModel(a,b);this.add(a,b);return a},pop:function(a){var b=this.at(this.length-1);this.remove(b,a);return b},unshift:function(a,b){a=this._prepareModel(a,b);this.add(a,f.extend({at:0},b));return a},
+
-
shift:function(a){var b=this.at(0);this.remove(b,a);return b},get:function(a){return null==a?void 0:this._byId[null!=a.id?a.id:a]},getByCid:function(a){return a&&this._byCid[a.cid||a]},at:function(a){return this.models[a]},where:function(a){return f.isEmpty(a)?[]:this.filter(function(b){for(var c in a)if(a[c]!==b.get(c))return!1;return!0})},sort:function(a){a||(a={});if(!this.comparator)throw Error("Cannot sort a set without a comparator");var b=f.bind(this.comparator,this);1==this.comparator.length?
+
-
this.models=this.sortBy(b):this.models.sort(b);a.silent||this.trigger("reset",this,a);return this},pluck:function(a){return f.map(this.models,function(b){return b.get(a)})},reset:function(a,b){a||(a=[]);b||(b={});for(var c=0,d=this.models.length;c<d;c++)this._removeReference(this.models[c]);this._reset();this.add(a,f.extend({silent:!0},b));b.silent||this.trigger("reset",this,b);return this},fetch:function(a){a=a?f.clone(a):{};void 0===a.parse&&(a.parse=!0);var b=this,c=a.success;a.success=function(d,
+
-
e,f){b[a.add?"add":"reset"](b.parse(d,f),a);c&&c(b,d)};a.error=g.wrapError(a.error,b,a);return(this.sync||g.sync).call(this,"read",this,a)},create:function(a,b){var c=this,b=b?f.clone(b):{},a=this._prepareModel(a,b);if(!a)return!1;b.wait||c.add(a,b);var d=b.success;b.success=function(e,f){b.wait&&c.add(e,b);d?d(e,f):e.trigger("sync",a,f,b)};a.save(null,b);return a},parse:function(a){return a},chain:function(){return f(this.models).chain()},_reset:function(){this.length=0;this.models=[];this._byId=
+
-
{};this._byCid={}},_prepareModel:function(a,b){b||(b={});a instanceof o?a.collection||(a.collection=this):(b.collection=this,a=new this.model(a,b),a._validate(a.attributes,b)||(a=!1));return a},_removeReference:function(a){this==a.collection&&delete a.collection;a.off("all",this._onModelEvent,this)},_onModelEvent:function(a,b,c,d){("add"==a||"remove"==a)&&c!=this||("destroy"==a&&this.remove(b,d),b&&a==="change:"+b.idAttribute&&(delete this._byId[b.previous(b.idAttribute)],this._byId[b.id]=b),this.trigger.apply(this,
+
-
arguments))}});f.each("forEach,each,map,reduce,reduceRight,find,detect,filter,select,reject,every,all,some,any,include,contains,invoke,max,min,sortBy,sortedIndex,toArray,size,first,initial,rest,last,without,indexOf,shuffle,lastIndexOf,isEmpty,groupBy".split(","),function(a){r.prototype[a]=function(){return f[a].apply(f,[this.models].concat(f.toArray(arguments)))}});var u=g.Router=function(a){a||(a={});a.routes&&(this.routes=a.routes);this._bindRoutes();this.initialize.apply(this,arguments)},B=/:\w+/g,
+
-
C=/\*\w+/g,D=/[-[\]{}()+?.,\\^$|#\s]/g;f.extend(u.prototype,k,{initialize:function(){},route:function(a,b,c){g.history||(g.history=new m);f.isRegExp(a)||(a=this._routeToRegExp(a));c||(c=this[b]);g.history.route(a,f.bind(function(d){d=this._extractParameters(a,d);c&&c.apply(this,d);this.trigger.apply(this,["route:"+b].concat(d));g.history.trigger("route",this,b,d)},this));return this},navigate:function(a,b){g.history.navigate(a,b)},_bindRoutes:function(){if(this.routes){var a=[],b;for(b in this.routes)a.unshift([b,
+
-
this.routes[b]]);b=0;for(var c=a.length;b<c;b++)this.route(a[b][0],a[b][1],this[a[b][1]])}},_routeToRegExp:function(a){a=a.replace(D,"\\$&").replace(B,"([^/]+)").replace(C,"(.*?)");return RegExp("^"+a+"$")},_extractParameters:function(a,b){return a.exec(b).slice(1)}});var m=g.History=function(){this.handlers=[];f.bindAll(this,"checkUrl")},s=/^[#\/]/,E=/msie [\w.]+/;m.started=!1;f.extend(m.prototype,k,{interval:50,getHash:function(a){return(a=(a?a.location:window.location).href.match(/#(.*)$/))?a[1]:
+
-
""},getFragment:function(a,b){if(null==a)if(this._hasPushState||b){var a=window.location.pathname,c=window.location.search;c&&(a+=c)}else a=this.getHash();a.indexOf(this.options.root)||(a=a.substr(this.options.root.length));return a.replace(s,"")},start:function(a){if(m.started)throw Error("Backbone.history has already been started");m.started=!0;this.options=f.extend({},{root:"/"},this.options,a);this._wantsHashChange=!1!==this.options.hashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=
+
-
!(!this.options.pushState||!window.history||!window.history.pushState);var a=this.getFragment(),b=document.documentMode;if(b=E.exec(navigator.userAgent.toLowerCase())&&(!b||7>=b))this.iframe=i('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow,this.navigate(a);this._hasPushState?i(window).bind("popstate",this.checkUrl):this._wantsHashChange&&"onhashchange"in window&&!b?i(window).bind("hashchange",this.checkUrl):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,
+
-
this.interval));this.fragment=a;a=window.location;b=a.pathname==this.options.root;if(this._wantsHashChange&&this._wantsPushState&&!this._hasPushState&&!b)return this.fragment=this.getFragment(null,!0),window.location.replace(this.options.root+"#"+this.fragment),!0;this._wantsPushState&&this._hasPushState&&b&&a.hash&&(this.fragment=this.getHash().replace(s,""),window.history.replaceState({},document.title,a.protocol+"//"+a.host+this.options.root+this.fragment));if(!this.options.silent)return this.loadUrl()},
+
-
stop:function(){i(window).unbind("popstate",this.checkUrl).unbind("hashchange",this.checkUrl);clearInterval(this._checkUrlInterval);m.started=!1},route:function(a,b){this.handlers.unshift({route:a,callback:b})},checkUrl:function(){var a=this.getFragment();a==this.fragment&&this.iframe&&(a=this.getFragment(this.getHash(this.iframe)));if(a==this.fragment)return!1;this.iframe&&this.navigate(a);this.loadUrl()||this.loadUrl(this.getHash())},loadUrl:function(a){var b=this.fragment=this.getFragment(a);return f.any(this.handlers,
+
-
function(a){if(a.route.test(b))return a.callback(b),!0})},navigate:function(a,b){if(!m.started)return!1;if(!b||!0===b)b={trigger:b};var c=(a||"").replace(s,"");this.fragment!=c&&(this._hasPushState?(0!=c.indexOf(this.options.root)&&(c=this.options.root+c),this.fragment=c,window.history[b.replace?"replaceState":"pushState"]({},document.title,c)):this._wantsHashChange?(this.fragment=c,this._updateHash(window.location,c,b.replace),this.iframe&&c!=this.getFragment(this.getHash(this.iframe))&&(b.replace||
+
-
this.iframe.document.open().close(),this._updateHash(this.iframe.location,c,b.replace))):window.location.assign(this.options.root+a),b.trigger&&this.loadUrl(a))},_updateHash:function(a,b,c){c?a.replace(a.toString().replace(/(javascript:|#).*$/,"")+"#"+b):a.hash=b}});var v=g.View=function(a){this.cid=f.uniqueId("view");this._configure(a||{});this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()},F=/^(\S+)\s*(.*)$/,w="model,collection,el,id,attributes,className,tagName".split(",");
+
-
f.extend(v.prototype,k,{tagName:"div",$:function(a){return this.$el.find(a)},initialize:function(){},render:function(){return this},remove:function(){this.$el.remove();return this},make:function(a,b,c){a=document.createElement(a);b&&i(a).attr(b);c&&i(a).html(c);return a},setElement:function(a,b){this.$el&&this.undelegateEvents();this.$el=a instanceof i?a:i(a);this.el=this.$el[0];!1!==b&&this.delegateEvents();return this},delegateEvents:function(a){if(a||(a=n(this,"events"))){this.undelegateEvents();
+
-
for(var b in a){var c=a[b];f.isFunction(c)||(c=this[a[b]]);if(!c)throw Error('Method "'+a[b]+'" does not exist');var d=b.match(F),e=d[1],d=d[2],c=f.bind(c,this),e=e+(".delegateEvents"+this.cid);""===d?this.$el.bind(e,c):this.$el.delegate(d,e,c)}}},undelegateEvents:function(){this.$el.unbind(".delegateEvents"+this.cid)},_configure:function(a){this.options&&(a=f.extend({},this.options,a));for(var b=0,c=w.length;b<c;b++){var d=w[b];a[d]&&(this[d]=a[d])}this.options=a},_ensureElement:function(){if(this.el)this.setElement(this.el,
+
-
!1);else{var a=n(this,"attributes")||{};this.id&&(a.id=this.id);this.className&&(a["class"]=this.className);this.setElement(this.make(this.tagName,a),!1)}}});o.extend=r.extend=u.extend=v.extend=function(a,b){var c=G(this,a,b);c.extend=this.extend;return c};var H={create:"POST",update:"PUT","delete":"DELETE",read:"GET"};g.sync=function(a,b,c){var d=H[a];c||(c={});var e={type:d,dataType:"json"};c.url||(e.url=n(b,"url")||t());if(!c.data&&b&&("create"==a||"update"==a))e.contentType="application/json",
+
-
e.data=JSON.stringify(b.toJSON());g.emulateJSON&&(e.contentType="application/x-www-form-urlencoded",e.data=e.data?{model:e.data}:{});if(g.emulateHTTP&&("PUT"===d||"DELETE"===d))g.emulateJSON&&(e.data._method=d),e.type="POST",e.beforeSend=function(a){a.setRequestHeader("X-HTTP-Method-Override",d)};"GET"!==e.type&&!g.emulateJSON&&(e.processData=!1);return i.ajax(f.extend(e,c))};g.wrapError=function(a,b,c){return function(d,e){e=d===b?e:d;a?a(b,e,c):b.trigger("error",b,e,c)}};var x=function(){},G=function(a,
+
-
b,c){var d;d=b&&b.hasOwnProperty("constructor")?b.constructor:function(){a.apply(this,arguments)};f.extend(d,a);x.prototype=a.prototype;d.prototype=new x;b&&f.extend(d.prototype,b);c&&f.extend(d,c);d.prototype.constructor=d;d.__super__=a.prototype;return d},n=function(a,b){return!a||!a[b]?null:f.isFunction(a[b])?a[b]():a[b]},t=function(){throw Error('A "url" property or function must be specified');}}).call(this);
+
-
 
+
-
 
+
-
/********************************
+
-
** FILE: lib/nytg.js
+
-
********************************/
+
-
 
+
-
var nytg = nytg || {};
+
-
nytg.lib = {};
+
-
 
+
-
 
+
-
 
+
-
 
+
-
/********************************
+
-
** FILE: lib/scrollto.js
+
-
********************************/
+
-
 
+
-
/**
+
-
* jQuery.ScrollTo - Easy element scrolling using jQuery.
+
-
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+
-
* Dual licensed under MIT and GPL.
+
-
* Date: 5/25/2009
+
-
* @author Ariel Flesler
+
-
* @version 1.4.2
+
-
*
+
-
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
+
-
*/
+
-
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
+
-
 
+
-
 
+
-
/********************************
+
-
** FILE: base.js
+
-
********************************/
+
-
 
+
-
// this will keep your code from polluting the global namespace.
+
-
 
+
-
(function($jq) {
+
-
   
+
-
    nytg.Model = Backbone.Model.extend({
+
-
+
-
defaults: {
+
-
choices: [
+
-
{
+
-
id: "nytg-choice1",
+
-
top: 0,
+
-
buttons: [
+
-
{
+
-
label: "Yes",
+
-
value: "yes"
+
-
},
+
-
{
+
-
value: "somewhat"
+
-
},
+
-
{
+
-
label: "No",
+
-
value: "no"
+
-
}
+
-
],
+
-
outcome: {
+
-
id: "nytg-choice1-outcome",
+
-
top: "205px",
+
-
left: "50px"
+
-
}
+
-
},
+
-
{
+
-
id: "nytg-choice2",
+
-
top: 310,
+
-
buttons: [
+
-
{
+
-
label: "Yes",
+
-
value: "yes"
+
-
},
+
-
{
+
-
value: "somewhat"
+
-
},
+
-
{
+
-
label: "No",
+
-
value: "no"
+
-
}
+
-
],
+
-
outcome: {
+
-
id: "nytg-choice2-outcome",
+
-
top: "510px",
+
-
left: "50px"
+
-
}
+
-
},
+
-
{
+
-
id: "nytg-choice3",
+
-
top: 620,
+
-
buttons: [
+
-
{
+
-
value: "yes"
+
-
},
+
-
{
+
-
value: "somewhat"
+
-
},
+
-
{
+
-
value: "no"
+
-
}
+
-
+
-
],
+
-
outcome: false
+
-
}
+
-
]
+
-
}
+
-
+
-
});
+
-
nytg.Interface = Backbone.View.extend({
 
-
 
-
 
-
dom: {
 
-
container: $jq(".nytg-interactiveShell")
 
-
},
 
-
 
-
initialize: function() {
 
-
 
-
_.bindAll(this);
 
-
this.model.bind("change", this.render, this);
 
-
this.initialRender();
 
-
this.render();
 
-
 
-
$jq(".nytg-button").click(this.decide);
 
-
 
-
},
 
-
 
-
render: function() {
 
-
 
-
this.model.set({ outcome:  this.model.attributes.outcomes[0] });
 
-
 
-
this.createProvisions();
 
-
this.updateOutcome();
 
-
this.updateTree();
 
-
this.drawRaphael();
 
-
 
-
nytg.c3 = $jq("#nytg-choice3").offset().top -2;
 
-
 
-
$jq("#nytg-choice3").append('<img src="http://graphics8.nytimes.com/packages/images/newsgraphics/2012/0611-scotus/boxshadow.png" />');
 
-
 
-
new nytg.lib.fixie("#nytg-choice3", { container: { el: $jq("#interactiveFreeFormMain")[0] }, onFix: function() {
 
-
$jq("#nytg-choice3").addClass("nytg-fixed");
 
-
}, onUnFix: function() {
 
-
$jq("#nytg-choice3").removeClass("nytg-fixed");
 
-
} });
 
-
 
-
},
 
-
 
-
decide: function(event) {
 
-
 
-
var target = $jq(event.target);
 
-
 
-
var step = target.attr("id");
 
-
 
-
var self = this;
 
-
 
-
var clear3 = function() {
 
-
if (nytg.y3) nytg.y3.animate({ opacity: 0 })
 
-
if (nytg.n3) nytg.n3.animate({ opacity: 0 })
 
-
if (nytg.s3) nytg.s3.animate({ opacity: 0 })
 
-
$jq("#nytg-choice3").removeClass("nytg-activeChoice");
 
-
$jq("#nytg-choice3 .nytg-button").removeClass("nytg-selected nytg-inactive").hide();
 
-
$jq(".nytg-resultShell").hide();
 
-
}
 
-
 
-
var clear2 = function() {
 
-
if (nytg.y2) nytg.y2.animate({ opacity: 0 })
 
-
if (nytg.n2) nytg.n2.animate({ opacity: 0 })
 
-
$jq("#nytg-choice2").removeClass("nytg-activeChoice");
 
-
$jq("#nytg-choice2 .nytg-button").removeClass("nytg-selected nytg-inactive").hide();
 
-
$jq("#nytg-choice2-outcome").hide();
 
-
}
 
-
 
-
var data = {
 
-
"nytg-choice1-yes": function() {
 
-
 
-
clear2();
 
-
clear3();
 
-
 
-
if (nytg.n1) nytg.n1.animate({ opacity: 0 });
 
-
 
-
nytg.n1 = nytg.annotations.turningLine({
 
-
points: [
 
-
{ x: 417, y: 160, start: 0, duration: 200 },
 
-
{ x: 417, y: 250, start: 230, duration: 300 },
 
-
{ x: 250, y: 250, start: 200, duration: 150 }
 
-
],
 
-
radius: 10
 
-
});
 
-
 
-
target.siblings().addClass("nytg-inactive").removeClass("nytg-selected").fadeIn();
 
-
target.addClass("nytg-selected");
 
-
setTimeout(function() {
 
-
$jq("#nytg-choice1-outcome").fadeIn();
 
-
}, 550);
 
-
 
-
var t = $jq("#nytg-choice1-outcome");
 
-
t.css({ opacity: 0, display: "block" });
 
-
$jq.scrollTo("#nytg-choice1-outcome", 400, { offset: { top: -200 }, axis: "y" });
 
-
t.css({ opacity: 1, display: "none" });
 
-
 
-
if (nytg.y1) nytg.y1.animate({ opacity: 0 });
 
-
},
 
-
"nytg-choice1-no": function() {
 
-
 
-
clear2();
 
-
clear3();
 
-
 
-
if (nytg.y1) nytg.y1.animate({ opacity: 0 });
 
-
 
-
nytg.y1 = nytg.annotations.arrow({
 
-
start: { x: 510, y: 160 },
 
-
end: { x: 510, y: 300 },
 
-
degrees: 270,
 
-
duration: 350
 
-
});
 
-
 
-
target.siblings().addClass("nytg-inactive").removeClass("nytg-selected").fadeIn();
 
-
target.addClass("nytg-selected");
 
-
setTimeout(function() {
 
-
$jq("#nytg-choice2").addClass("nytg-activeChoice");
 
-
$jq("#nytg-choice2 .nytg-button").fadeIn(250);
 
-
}, 400);
 
-
 
-
// var top = $("#nytg-choice2").offset().top;
 
-
 
-
// $jq("html,body").animate({ scrollTop: top }, 400);
 
-
 
-
$jq("body").scrollTo("#nytg-choice2", 400, { offset: { top: -200 }, axis: "y" });
 
-
$jq("#nytg-choice1-outcome").hide();
 
-
if (nytg.n1) nytg.n1.animate({ opacity: 0 });
 
-
 
-
 
-
 
-
},
 
-
"nytg-choice2-no": function() {
 
-
 
-
clear3();
 
-
 
-
if (nytg.n2) nytg.n2.animate({ opacity: 0 });
 
-
 
-
nytg.n2 = nytg.annotations.arrow({
 
-
start: { x: 510, y: 445 },
 
-
end: { x: 510, y: 610 },
 
-
degrees: 270,
 
-
duration: 350
 
-
})
 
-
target.siblings().addClass("nytg-inactive").removeClass("nytg-selected").fadeIn();
 
-
target.addClass("nytg-selected");
 
-
setTimeout(function() {
 
-
$jq("#nytg-choice3").addClass("nytg-activeChoice");
 
-
$jq("#nytg-choice3 .nytg-button").fadeIn();
 
-
}, 400);
 
-
 
-
$jq.scrollTo("#nytg-choice3", 400, { offset: { top: -200 }, axis: "y" });
 
-
$jq("#nytg-choice2-outcome").hide();
 
-
if (nytg.y2) nytg.y2.animate({ opacity: 0 })
 
-
 
-
},
 
-
"nytg-choice2-yes": function() {
 
-
 
-
clear3();
 
-
 
-
if (nytg.y2) nytg.y2.animate({ opacity: 0 });
 
-
 
-
nytg.y2 = nytg.annotations.turningLine({
 
-
points: [
 
-
{ x: 417, y: 445, start: 0, duration: 200 },
 
-
{ x: 417, y: 550, start: 230, duration: 300 },
 
-
{ x: 250, y: 550, start: 200, duration: 150 }
 
-
],
 
-
radius: 10
 
-
});
 
-
 
-
var t = $jq("#nytg-choice2-outcome");
 
-
t.css({ opacity: 0, display: "block" });
 
-
$jq.scrollTo("#nytg-choice2-outcome", 400, { offset: { top: -200 }, axis: "y" });
 
-
t.css({ opacity: 1, display: "none" });
 
-
 
-
target.siblings().addClass("nytg-inactive").removeClass("nytg-selected").fadeIn();
 
-
target.addClass("nytg-selected");
 
-
setTimeout(function() {
 
-
$jq("#nytg-choice2-outcome").fadeIn();
 
-
}, 550);
 
-
 
-
if (nytg.n2) nytg.n2.animate({ opacity: 0 });
 
-
 
-
 
-
},
 
-
"nytg-choice3-yes": function() {
 
-
 
-
$jq(".nytg-resultShell").hide();
 
-
 
-
if (nytg.y3) nytg.y3.animate({ opacity: 0 });
 
-
 
-
nytg.y3 = nytg.annotations.arrow({
 
-
start: { x: 288, y: 735 },
 
-
end: { x: 288, y: 875 },
 
-
degrees: 270,
 
-
duration: 350
 
-
})
 
-
 
-
target.siblings().addClass("nytg-inactive").removeClass("nytg-selected").fadeIn();
 
-
target.addClass("nytg-selected");
 
-
self.updateOutcome(0);
 
-
$jq(".nytg-resultShell").delay(400).fadeIn();
 
-
 
-
$jq.scrollTo(nytg.c3, 500, { offset: { top: -2 }, axis: "y" });
 
-
 
-
if (nytg.s3) nytg.s3.animate({ opacity: 0 });
 
-
if (nytg.n3) nytg.n3.animate({ opacity: 0 });
 
-
 
-
},
 
-
"nytg-choice3-somewhat": function() {
 
-
 
-
$jq(".nytg-resultShell").hide();
 
-
 
-
if (nytg.s3) nytg.s3.animate({ opacity: 0 });
 
-
 
-
nytg.s3 = nytg.annotations.arrow({
 
-
start: { x: 485, y: 735 },
 
-
end: { x: 485, y: 875 },
 
-
degrees: 270,
 
-
duration: 350
 
-
})
 
-
 
-
target.siblings().addClass("nytg-inactive").removeClass("nytg-selected").fadeIn();
 
-
target.addClass("nytg-selected");
 
-
self.updateOutcome(1);
 
-
$jq(".nytg-resultShell").delay(400).fadeIn();
 
-
 
-
$jq.scrollTo(nytg.c3, 500, { offset: { top: -2 }, axis: "y" });
 
-
 
-
if (nytg.y3) nytg.y3.animate({ opacity: 0 });
 
-
if (nytg.n3) nytg.n3.animate({ opacity: 0 });
 
-
},
 
-
"nytg-choice3-no": function() {
 
-
 
-
$jq(".nytg-resultShell").hide();
 
-
 
-
if (nytg.n3) nytg.n3.animate({ opacity: 0 });
 
-
 
-
target.siblings().addClass("nytg-inactive").removeClass("nytg-selected").fadeIn();
 
-
target.addClass("nytg-selected");
 
-
self.updateOutcome(2);
 
-
$jq(".nytg-resultShell").delay(400).fadeIn();
 
-
 
-
$jq.scrollTo(nytg.c3, 500, { offset: { top: -2 }, axis: "y" });
 
-
 
-
nytg.n3 = nytg.annotations.arrow({
 
-
start: { x: 657, y: 735 },
 
-
end: { x: 657, y: 875 },
 
-
degrees: 270,
 
-
duration: 350
 
-
})
 
-
 
-
if (nytg.y3) nytg.y3.animate({ opacity: 0 });
 
-
if (nytg.s3) nytg.s3.animate({ opacity: 0 });
 
-
}
 
-
 
-
};
 
-
 
-
data[step]();
 
-
 
-
},
 
-
 
-
drawRaphael: function() {
 
-
 
-
nytg.raphael = Raphael($jq(".nytg-decisionTree")[0], 970, 1000);
 
-
 
-
},
 
-
 
-
initialRender: function() {
 
-
 
-
$jq(".nytg-outcomeList").html(_.map(nytg.outcomes, nytg.jst.outcome).join(""));
 
-
 
-
},
 
-
 
-
updateTree: function() {
 
-
 
-
$jq(".nytg-decisionTree").html(_.map(this.model.attributes.choices, nytg.jst.choice).join(""));
 
-
 
-
$jq("#nytg-choice1").addClass("nytg-activeChoice");
 
-
 
-
},
 
-
 
-
createProvisions: function() {
 
-
 
-
var data = this.model.attributes;
 
-
 
-
var a = "";
 
-
var b = "";
 
-
 
-
 
-
var provisionGroupHTML = _.each(data.groups, function(group, key) {
 
-
group.html = _.map(group.provisions, nytg.jst.provision).join("");
 
-
var grouphtml = nytg.jst.provisionGroup(group);
 
-
if (key == 0 || key == 1 || key == 3) a += grouphtml;
 
-
else b += grouphtml;
 
-
});
 
-
 
-
$jq(".nytg-provisionColA").html(a);
 
-
$jq(".nytg-provisionColB").html(b);
 
-
 
-
 
-
// $jq(".nytg-provisionColA").html(_.map(nytg.provisions.slice(0, 3), nytg.jst.provision).join(""));
 
-
// $jq(".nytg-provisionColB").html(_.map(nytg.provisions.slice(3, 16), nytg.jst.provision).join(""));
 
-
 
-
},
 
-
 
-
updateOutcome: function(num) {
 
-
 
-
if (num !== undefined && this.model.attributes.outcomes[num]) this.model.attributes.outcome = this.model.attributes.outcomes[num];
 
-
 
-
$jq(".nytg-summaryText").html(this.model.attributes.outcome.summary);
 
-
$jq(".nytg-outcomeTitle").html(this.model.attributes.outcome.title);
 
-
var effects = _.map(this.model.attributes.outcome.effects, nytg.jst.effect).join("");
 
-
$jq(".nytg-effectList").html(effects);
 
-
 
-
_.each(this.model.attributes.outcome.provisions, function(provision) {
 
-
$jq("#" + provision.id).removeClass("kept eliminated jeopardized").addClass(provision.status);
 
-
});
 
-
 
-
}
 
-
 
-
});
 
-
 
-
window.$jq = $jq;
 
-
 
-
   
 
-
   
 
-
    $jq(window).load(function() {
 
-
   
 
-
    _.delay(function() {
 
-
    var top = $jq(".ledeStory").offset().top;
 
-
    if (window.scrollY > top) window.scrollTo($jq(".ledeStory").offset().top)
 
-
    }, 1)
 
-
   
 
-
    });
 
-
 
-
   
 
-
    $jq(function() {
 
-
   
 
-
   
 
-
   
 
-
   
 
-
    nytg.provisions = nytg_provisions;
 
-
   
 
-
    _.each(nytg.provisions, function(provision, index) {
 
-
    provision.id = "nytg-" + index;
 
-
    });
 
-
   
 
-
    nytg.outcomes = nytg_outcomes;
 
-
   
 
-
    nytg.groups = [];
 
-
   
 
-
    nytg.effects = {
 
-
    people: {
 
-
    title: "People"
 
-
    },
 
-
    insurers: {
 
-
    title: "Insurers"
 
-
    },
 
-
    health_care_providers: {
 
-
    title: "Health care providers"
 
-
    },
 
-
    states: {
 
-
    title: "States"
 
-
    }
 
-
    };
 
-
   
 
-
    var groups = _.groupBy(nytg.provisions, "group");
 
-
   
 
-
    _.each(["The mandate", "Bans on discrimination", "Expanding coverage",  "Consumer provisions", "Other provisions"], function(key) {
 
-
    nytg.groups.push({
 
-
    title: key,
 
-
    provisions: groups[key]
 
-
    })
 
-
    });
 
-
   
 
-
    _.each(nytg_provisions, function(provision) {
 
-
    _.each(nytg.outcomes, function(outcome) {
 
-
    if (!outcome.provisions) outcome.provisions = [];
 
-
    outcome.provisions.push(_.extend({
 
-
    status: provision[outcome.id]
 
-
    }, provision))
 
-
    });
 
-
    });
 
-
   
 
-
   
 
-
    _.each(nytg.outcomes, function(outcome) {
 
-
    outcome.effects = {};
 
-
    _.each(nytg.effects, function(effect, key) {
 
-
    outcome.effects[key] = {};
 
-
    outcome.effects[key].title = effect.title;
 
-
    outcome.effects[key].slug = key;
 
-
    outcome.effects[key].text = outcome[key];
 
-
    });
 
-
    });
 
-
   
 
-
    nytg.model = new nytg.Model({
 
-
provisions: nytg.provisions,
 
-
groups: nytg.groups,
 
-
outcomes: nytg.outcomes
 
-
})
 
-
   
 
-
    _.each(nytg_questions, function(question, index) {
 
-
    var choice = nytg.model.attributes.choices[index];
 
-
    _.extend(choice, question);
 
-
    if (choice.buttons) {
 
-
    choice.buttons[0].label = question.yes;
 
-
    choice.buttons[2].label = question.no;
 
-
    if (question.somewhat) choice.buttons[1].label = question.somewhat;
 
-
    }
 
-
    if (choice.outcome) {
 
-
    choice.outcome.title = question.outcome_title;
 
-
    choice.outcome.text = question.outcome_text;
 
-
    }
 
-
    });
 
-
   
 
-
    nytg.interface = new nytg.Interface({
 
-
    model: nytg.model
 
-
    });
 
-
   
 
-
   
 
-
    });
 
-
   
 
-
   
 
-
})(jQuery);
 
-
 
-
 
-
 
-
 
-
 
-
/********************************
 
-
** FILE: lib/fixie.js
 
-
********************************/
 
-
 
-
nytg.lib.fixie = function(el, options){
 
-
 
-
  // jquery is required
 
-
  if(!jQuery){
 
-
    throw("Fixie requires jQuery");
 
-
    return;
 
-
  }
 
-
  var $j        = jQuery;
 
-
  el            = $j(el); 
 
-
  var defaults  = {
 
-
    el          : null,
 
-
    fixed      : false,
 
-
    target      : window,
 
-
    original    : {},
 
-
    container  : {},
 
-
    isMobile    : (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase())),
 
-
    event      : 'scroll',
 
-
    callback    : this.evaluate,
 
-
    position    : null,
 
-
    offset      : 0,
 
-
    glued      : false,
 
-
    offsetX    : 0,
 
-
    offsetY    : 0,
 
-
    thresholdX  : 0,
 
-
    thresholdY  : 0,
 
-
    // callbacks
 
-
    onFix      : function(){ return true; },
 
-
    onGlue      : function(){ return true; },
 
-
    onUnFix    : function(){ return true; },
 
-
    onUnGlue    : function(){ return true; },     
 
-
    // should the element stick to the inside of its container
 
-
    constrain  : true,
 
-
    // random token for namespacing events
 
-
    token      : Math.round(Math.random() * 100000)   
 
-
  };
 
-
  if(options) $j.extend(defaults, options);
 
-
  defaults.el              = $j(el);
 
-
  defaults.container.el    = ('el' in defaults.container) ? $j(defaults.container.el) : defaults.el.parent();
 
-
  defaults.container.height = defaults.container.el.outerHeight();
 
-
  defaults.container.width  = defaults.container.el.outerWidth();
 
-
   
 
-
  defaults.offset          = defaults.el.offset();
 
-
  defaults.original        = {
 
-
    position  : defaults.el.css('position'),
 
-
    top      : defaults.el.css('top'),
 
-
    /*
 
-
right    : defaults.el.css('right'),
 
-
    bottom    : defaults.el.css('bottom'),
 
-
*/
 
-
    left      : defaults.el.css('left')   
 
-
  };
 
-
  defaults.dimensions      = {
 
-
    width    : defaults.el.outerWidth(),
 
-
    height  : defaults.el.outerHeight()
 
-
  };     
 
-
  defaults.position        = $j(el).position();
 
-
  $j.extend(this, defaults);
 
-
  // start fixing to viewport
 
-
  this.init(); 
 
-
};
 
-
// initialization
 
-
nytg.lib.fixie.prototype.init = function(){
 
-
 
-
  if(this.isMobile === true){
 
-
 
 
-
    $j(window).bind('orientationchange.'+this.token, $j.proxy(this.onReflow, this));
 
-
    $j(window).bind('scroll.'+this.token, $j.proxy(this.mobileScroll, this));       
 
-
  }else{
 
-
    $j(window).bind('resize.'+this.token, $j.proxy(this.onReflow,this));       
 
-
    $j(this.target).bind(this.event+'.'+this.token, $j.proxy(this.evaluate,this));
 
-
   
 
-
  }
 
-
  this.el.addClass('nytg-fixie');
 
-
};
 
-
 
-
// for when the viewport changes size
 
-
nytg.lib.fixie.prototype.onReflow = function(){
 
-
  this.offset    = this.el.offset();
 
-
  this.position  = this.el.position();
 
-
  $j(window).trigger('scroll.'+this.token);
 
-
}; 
 
-
 
-
// for scrolling on mobile browsers
 
-
nytg.lib.fixie.prototype.mobileScroll = function(){
 
-
  var scrollPosition = $j(window).scrollTop();
 
-
 
 
-
  if(scrollPosition >= this.offset.top && scrollPosition+this.dimensions.height < this.container.height){
 
-
 
 
-
    this.el.css('-webkit-transition-duration','.3s');       
 
-
    this.el.css('top', (scrollPosition - this.container.el.offset().top+this.offsetY) +'px');       
 
-
    this.onFix();
 
-
  }else{
 
-
    if(scrollPosition+this.dimensions.height >= this.container.height){
 
-
      this.el.css('-webkit-transition-duration','.3s');       
 
-
    this.el.css('top', (scrollPosition - this.container.el.offset().top+this.offsetY) +'px');       
 
-
    this.onFix();
 
-
    }
 
-
  }
 
-
 
 
-
  if(scrollPosition <= this.offset.top){
 
-
    this.el.css(this.original);
 
-
    this.onUnFix();
 
-
  }
 
-
};
 
-
 
-
// check position of monitored element for browsers that support fixed positioning
 
-
nytg.lib.fixie.prototype.evaluate = function(){
 
-
 
-
  var scrollPosition = $j(window).scrollTop();
 
-
 
-
  if(this.fixed === false){   
 
-
   
 
-
    if(scrollPosition >= this.offset.top && scrollPosition+this.dimensions.height < this.container.height){
 
-
     
 
-
      this.el.css({ position: 'fixed', left: this.offset.left+this.offsetX, top: this.offsetY })
 
-
      this.fixed = true;
 
-
      this.glued = false;         
 
-
      this.onFix();
 
-
      this.onUnGlue();
 
-
      return;
 
-
    }
 
-
  }
 
-
 
-
  if(this.fixed === true){
 
-
    if(scrollPosition <= this.offset.top){   
 
-
      this.el.css(this.original);
 
-
      this.fixed = false;
 
-
      this.glued = false;
 
-
      this.onUnFix();
 
-
      this.onUnGlue();
 
-
    }
 
-
    if(scrollPosition+this.dimensions.height-this.offset.top >= this.container.height && this.constrain === true){
 
-
      this.el.css({ position: 'absolute', /* right: this.original.right,  */left: this.original.left, top: this.container.height-this.dimensions.height+'px' });         
 
-
      this.fixed = false;
 
-
      this.glued = true;
 
-
      this.onGlue();
 
-
    }
 
-
  }
 
-
};
 
-
 
-
nytg.lib.fixie.prototype.destroy = function(){
 
-
  this.el.css(this.original);           
 
-
  this.el.removeClass('nytg-fixie');     
 
-
  $j(this.target).unbind('.'+this.token);
 
-
};   
 
-
 
-
</script>
 
-
<script type="text/javascript" src="http://typeface.nytimes.com/ucf6rje.js"></script>
 
-
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
 
-
<script type="text/javascript" src="http://typeface.nytimes.com/cra5ejd.js"></script>
 
-
<script type="text/javascript">try{Typekit.load();}catch(e){}</script><!--END Stencil generated content. -->    </div><!--close main free form -->
 
-
<div class="insetHFullWidth">
 
-
<div id="interactiveFooter" class="opposingFloatControl wrap">
 
-
<div class="metaData element1">
 
-
<div class="module">
 
-
<span class="byline">By TOM GIRATIKANON and LISA WAANANEN</span>
 
-
<span class="refer feedback">
 
-
<span class="pipe">|</span>
 
-
<form name="interactivefeedback" method="post" enctype="application/x-www-form-urlencoded" action="/gst/emailus.html">
 
-
<input type="hidden" name="type" value="interactivefeedback">
 
-
<input type="hidden" name="recipient" value="interactivefeedback">
 
-
<input type="hidden" name="article" value="How the Supreme Court Could Rule on the Health Care Law">
 
-
<input type="hidden" name="url" value="http://www.nytimes.com/interactive/2012/06/14/us/how-the-supreme-court-could-rule-on-the-health-care-law.html">
 
-
<a href="javascript:document.interactivefeedback.submit();">Send Feedback</a>
 
-
</form>
 
-
</span>
 
-
</div>
 
-
</div><!--close .metaData element1 -->
 
-
<div class="element2">
 
-
</div><!--close .element2 -->
 
-
</div><!--close #interactiveFooter -->
 
-
</div><!--close .insetHFullWidth -->
 
-
</div><!--close .ledeStory -->
 
-
</div><!--close .columnGroup -->
 
-
</div><!--close #interactiveShell -->
 
-
</div>
 
</html>
</html>
 +
{{:Team:UCL/Template:footerx}}

Latest revision as of 22:17, 15 October 2014

Goodbye Azodye UCL iGEM 2014

Sustainable Bioprocessing

Our Design Process

We will use rapid polymer prototyping techniques to generate microfluidic chips that will allow us to test our reaction and aid in the construction of a realistic bioprocess, which can be successfully scaled-up for industrial use. As we optimise and change our bioprocess, we can also quickly design new microfluidic chips that can mimic its development on a micro-scale. For example, it is our goal to integrate multiple downstream steps, such as chromatography, in order to isolate potential useful products. Demonstrating this in a microfluidic system is less time-consuming and far more cost effective than doing so at a larger scale.


For our microfluidic bioreactor, we will be using a magnetic free floating bar as our mixing system. This is an effective method of mixing at a microfluidic scale, as demonstrated in the video on the right. This video is of a microfluidic chemostat bioreactor designed by Davies et al. 2014 UCL, using a free-floating bar to mix two dyes.



Above are some examples of the microfluidics devices developed by our team for use in the lab at the UCL ACBE. The devices are initially designed using AutoCAD (2D and 3D computer-aided design software), once the designs are finalised they can be 3D-printed using the facilities provided by the UCL Institute of Making and UCL ACBE; allowing our bioprocess and laboratory team to experiment and improve designs.


An example of one of our microfluidic devices designed on AutoCAD can be downloaded here. This device utilises the basic concept of mixing the cells and dyes, producing a single output stream; much alike to the bioprocessing concept. During the course of designing the microfluidic device, several key considerations must be taken into account: ability to withstand high pressure without leakage; materials of construction to be inert and transparent; size constraints of inlet and outlet piping; ability to accurately 3D-print the device.


Why Bioprocessing?

Bioprocess engineering is a conglomerate of fields and is extensively employed to optimize a variety of production processes. In order to cope with market forces, industries for example the pharmaceutical, have had to considerably improve their bioprocessing tools and techniques. As a result a range of novel process alternatives have been developed to harness product-specific properties, each bearing benefits, disadvantages and costs. While these can be used to drive financial returns, biological processing is becoming a gateway to eco-friendly alternatives for the treatment of recalcitrant wastewater such as industrial effluents. By providing more flexibility in supporting efficient degradation of toxic compounds and having lower operating costs, the biological treatment process brings forward key advantages over it's traditional counterpart.
A typical bioprocess involves the fermentation of a stock culture (e.g. E. coli) at a small scale which is subsequently scaled up to suitable production capacities. The products from the fermentative stages are consequently separated and purified using a variety of unit operations designed to exploit the orthogonal properties of desired products. These can then be formulated into their ultimate delivery form.




The design of a successful bioprocess requires careful analysis of the many factors that impact choice of design parameters and process variables. It is crucial to consider the cost of the process at each stage to assess it's large scale feasibility.

Let's look at an example bioprocess
1. Upstream: Production bioreactor preceded by small-scale seed fermenters
2. Downstream: constitutes of three main stages
- Recovery relates to primary unit operations i.e. centrifugation and filtrations. The main goal is to concentrate the desired compound within the process stream by reducing volumes and removing fermentation byproducts.
- Purification involves unit operations such as chromatography, crystallization and ultrafiltration. The final stages are necessary to ensure purity requirements are met.
- Formulationinvolves the integrating of the product into the target delivery route followed by packaging and storage.

Contact Us

University College London
Gower Street - London
WC1E 6BT
Biochemical Engineering Department
Phone: +44 (0)20 7679 2000
Email: ucligem2014@gmail.com

Follow Us