Skip to content

Instantly share code, notes, and snippets.

@mnowotka
Created May 13, 2014 13:14
Show Gist options
  • Save mnowotka/5c19a0b551d35ba76052 to your computer and use it in GitHub Desktop.
Save mnowotka/5c19a0b551d35ba76052 to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": "",
"signature": "sha256:f784ff75e0dec53c6fef16fc487214e1f81833324cfa31e787b2ed105592c612"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from chembl_webresource_client import *\n",
"\n",
"from lxml import etree\n",
"import requests\n",
"from IPython.display import Image\n",
"from rdkit import Chem"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"compounds = CompoundResource()\n",
"\n",
"compounds.status()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
"True"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Retrieve record(s) _via_ identifiers"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# ChEMBL ID (single hit)...\n",
"\n",
"c0 = compounds.get(\"CHEMBL554\") # lapatinib\n",
"\n",
"c0"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"{u'acdBasicPka': 6.34,\n",
" u'acdLogd': 6.26,\n",
" u'acdLogp': 6.3,\n",
" u'alogp': 6.04,\n",
" u'chemblId': u'CHEMBL554',\n",
" u'knownDrug': u'Yes',\n",
" u'medChemFriendly': u'Yes',\n",
" u'molecularFormula': u'C29H26ClFN4O4S',\n",
" u'molecularWeight': 581.06,\n",
" u'numRo5Violations': 2,\n",
" u'passesRuleOfThree': u'No',\n",
" u'preferredCompoundName': u'LAPATINIB',\n",
" u'rotatableBonds': 11,\n",
" u'smiles': u'CS(=O)(=O)CCNCc1oc(cc1)c2ccc3ncnc(Nc4ccc(OCc5cccc(F)c5)c(Cl)c4)c3c2',\n",
" u'species': u'NEUTRAL',\n",
" u'stdInChiKey': u'BCFGMOOMADDAQU-UHFFFAOYSA-N',\n",
" u'synonyms': u'Lapatinib,SID103905568,Tykerb,SID103905567,SID50100107'}"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Structure...\n",
"\n",
"Chem.MolFromSmiles(c0[\"smiles\"])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 4,
"text": [
"<rdkit.Chem.rdchem.Mol at 0x10a632440>"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# As XML...\n",
"\n",
"x = compounds.get(\"CHEMBL554\", frmt=\"xml\")\n",
"r = etree.fromstring(x).getroottree()\n",
"print(etree.tostring(r, pretty_print=True))\n",
"print(r.xpath(\"/compound/smiles/text()\")[0])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"<compound>\n",
" <smiles>CS(=O)(=O)CCNCc1oc(cc1)c2ccc3ncnc(Nc4ccc(OCc5cccc(F)c5)c(Cl)c4)c3c2</smiles>\n",
" <chemblId>CHEMBL554</chemblId>\n",
" <passesRuleOfThree>No</passesRuleOfThree>\n",
" <molecularWeight>581.06</molecularWeight>\n",
" <molecularFormula>C29H26ClFN4O4S</molecularFormula>\n",
" <acdLogp>6.30</acdLogp>\n",
" <knownDrug>Yes</knownDrug>\n",
" <stdInChiKey>BCFGMOOMADDAQU-UHFFFAOYSA-N</stdInChiKey>\n",
" <acdLogd>6.26</acdLogd>\n",
" <synonyms>Lapatinib,SID103905568,Tykerb,SID103905567,SID50100107</synonyms>\n",
" <medChemFriendly>Yes</medChemFriendly>\n",
" <rotatableBonds>11</rotatableBonds>\n",
" <alogp>6.04</alogp>\n",
" <preferredCompoundName>LAPATINIB</preferredCompoundName>\n",
" <numRo5Violations>2</numRo5Violations>\n",
" <species>NEUTRAL</species>\n",
" <acdBasicPka>6.34</acdBasicPka>\n",
"</compound>\n",
"\n",
"CS(=O)(=O)CCNCc1oc(cc1)c2ccc3ncnc(Nc4ccc(OCc5cccc(F)c5)c(Cl)c4)c3c2\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Via InChIKey (single hit)...\n",
"\n",
"c1 = compounds.get(stdinchikey='BCFGMOOMADDAQU-UHFFFAOYSA-N')\n",
"\n",
"c1 == c0"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"True"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Via SMILES (potentially multiple hits)...\n",
"\n",
"smiles = c0[\"smiles\"]\n",
"\n",
"c = compounds.get(smiles=smiles)\n",
"\n",
"len(c)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"2"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"[(x[\"chemblId\"], x[\"smiles\"]) for x in c]\n",
"\n",
"# Second is unstandardised PubChem compound"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"[(u'CHEMBL554',\n",
" u'CS(=O)(=O)CCNCc1oc(cc1)c2ccc3ncnc(Nc4ccc(OCc5cccc(F)c5)c(Cl)c4)c3c2'),\n",
" (u'CHEMBL1475148',\n",
" u'C[S+](=O)([O-])CCNCc1oc(cc1)c2ccc3ncnc(Nc4ccc(OCc5cccc(F)c5)c(Cl)c4)c3c2')]"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Substructure-search (SMILES query)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"query = \"c4ccc(Nc2ncnc3ccc(c1ccco1)cc23)cc4\"\n",
"\n",
"Chem.MolFromSmiles(query)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "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\n6LT/AzHYpi0rc7USAAAAAElFTkSuQmCC\n",
"prompt_number": 9,
"text": [
"<rdkit.Chem.rdchem.Mol at 0x10ae84d00>"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"c = compounds.substructure(\"c4ccc(Nc2ncnc3ccc(c1ccco1)cc23)cc4\")\n",
"\n",
"len(c)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 10,
"text": [
"69"
]
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Check Lapatinib is found...\n",
"\n",
"[x[\"smiles\"] for x in c if x[\"chemblId\"] == 'CHEMBL554'][0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 11,
"text": [
"u'CS(=O)(=O)CCNCc1oc(cc1)c2ccc3ncnc(Nc4ccc(OCc5cccc(F)c5)c(Cl)c4)c3c2'"
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Similarity search (SMILES query)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"smiles = \"CS(=O)(=O)CCNCc1oc(cc1)c2ccc3ncnc(Nc4ccc(OCc5cccc(F)c5)c(Cl)c4)c3c2\""
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"c = compounds.similar_to(smiles, 0.90)\n",
"\n",
"c\n",
"\n",
"# XXX We should get some hits (see below)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 13,
"text": [
"404"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Try via 'raw' web service instead...\n",
"\n",
"r = requests.get(\"https://www.ebi.ac.uk/chemblws/compounds/similarity/{}/{}.json\".format(smiles, 90)).json()\n",
"\n",
"len(r['compounds'])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 14,
"text": [
"21"
]
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Batch queries"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Multiple ChEMBL IDs...\n",
"\n",
"c = compounds.get(['CHEMBL{}'.format(x) for x in range(1, 301)])\n",
"\n",
"len(c)\n",
"\n",
"# XXX The warnings aren't terribly helpful here"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:04 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:05 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:05 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:05 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:05 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:05 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:05 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:06 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:06 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:06 WARNING ] HttpConnectionPool is full, discarding connection: www.ebi.ac.uk\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 15,
"text": [
"300"
]
}
],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Remove 'misses' (i.e. where 404 is returned)...\n",
"\n",
"c = [x for x in c if not isinstance(x, int)]\n",
"\n",
"len(c)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"text": [
"170"
]
}
],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Get salts for parent"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cpds = compounds.forms(\"CHEMBL554\")\n",
"\n",
"cpds"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 17,
"text": [
"[{u'chemblId': u'CHEMBL554', u'parent': True},\n",
" {u'chemblId': u'CHEMBL1201183', u'parent': False},\n",
" {u'chemblId': u'CHEMBL1201179', u'parent': False},\n",
" {u'chemblId': u'CHEMBL1076241', u'parent': False}]"
]
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for cpd in [x for x in cpds if not x[\"parent\"]]:\n",
" \n",
" data = compounds.get(cpd[\"chemblId\"])\n",
" \n",
" if data == 404:\n",
" \n",
" logging.warn(\"{} downgraded?\".format(cpd[\"chemblId\"]))\n",
" \n",
" continue\n",
" \n",
" print(\"{} {}\".format(cpd[\"chemblId\"], data[\"smiles\"]))\n",
" \n",
"# XXX Why is CHEMBL1201183 showing up?"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"[2014/May/12 14:40:06 WARNING ] CHEMBL1201183 downgraded?\n"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"CHEMBL1201179 O.Cc1ccc(cc1)S(=O)(=O)O.Cc2ccc(cc2)S(=O)(=O)O.CS(=O)(=O)CCNCc3oc(cc3)c4ccc5ncnc(Nc6ccc(OCc7cccc(F)c7)c(Cl)c6)c5c4\n",
"CHEMBL1076241 Cc1ccc(cc1)S(=O)(=O)O.CS(=O)(=O)CCNCc2oc(cc2)c3ccc4ncnc(Nc5ccc(OCc6cccc(F)c6)c(Cl)c5)c4c3"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Drug mechanism of action"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"compounds.drug_mechnisms('CHEMBL1201179')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 19,
"text": [
"[{u'chemblId': u'CHEMBL203',\n",
" u'mechanismOfAction': u'Epidermal growth factor receptor erbB1 inhibitor',\n",
" u'name': u'Epidermal growth factor receptor erbB1'},\n",
" {u'chemblId': u'CHEMBL1824',\n",
" u'mechanismOfAction': u'Receptor protein-tyrosine kinase erbB-2 inhibitor',\n",
" u'name': u'Receptor protein-tyrosine kinase erbB-2'}]"
]
}
],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Image query"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"png = compounds.image(\"CHEMBL554\")\n",
"\n",
"Image(png)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAA4FUlEQVR4nO3de1yUdd7/8TcKoygq\nFZVksbVhEbWrlrWYhxvbTCxbI7XWurft1sqWaiuxtLB8bFFZod1t2fFn2x6y2lVMtyRzSzt5qBYP\nCZJwbwuabmqhchJh+Pz+IEbxfIC5hi+v5+PRI2eGmeuDEa/rNNeEmZkJAAC0aG28HgAAABw7gg4A\ngAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKAD\nAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDo\nAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMI\nOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAA\ngg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4\ngKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAA\nDiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4A\ngAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKAD\nAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDo\nAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMI\nOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAA\ngg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4\ngKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAA\nDiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4A\ngAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKADAOAAgg4AgAMIOgAADiDoAAA4gKAD\nAOAAgg4AgAMIOgCgRamtrVVtba3XY4Qcgg4AaDEWLVqkHj166LzzztOYMWO0adMmr0cKGQQdABDy\nSkpKNGLECKWkpOjyyy/X888/r/z8fJ111ll65JFHVFVV5fWIniPoAICQVVVVpYcfflgJCQmqqKjQ\n6tWr9eSTT2rgwIFasmSJ/vjHP+rVV19VQkKCZs6cqbq6Oq9H9kyYmZnXQwAAsLc5c+Zo3LhxCg8P\nV1ZWloYNG7bfr9u1a5eeeeYZZWZm6owzztC0adOUnJwc3GFDAFvoAICQkp+fr8GDB+tXv/qVbrrp\nJq1evbpRzD/88MNGW+I+n0/p6ekqLCxUnz59NGjQIF199dUqKiryYnzPEHQAQEjYvn27xo8fr549\ne+q4445Tfn6+MjIyFBkZKUkqKirS0KFDNWTIEK1YsWKf58fExGj69Olau3atJOncc8/V+PHjtXXr\n1qB+H14h6AAAT5mZ/vCHP+icc87Re++9p/fee09vvPGG4uLiJEnl5eW6//77de6558rn8ykvL08X\nXHDBAV8vPj5e2dnZWrBggT744AN1795dU6dO1a5du4L1LXmCY+gAAM988cUXuuOOO1RQUKCHH35Y\nt956q8LDwyXVh/6NN97QPffcoy5dumjatGkaPHjwEb1+XV2dXn31VU2ePFnt27fXE088odTU1Ob4\nVjzHFjoAIOi2bt2qMWPGqE+fPvrJT36iwsJC3X777YGYr1ixQsnJybr11lt19913a8WKFUccc0lq\n06aNRo8erXXr1unGG2/UDTfcoIEDB2rZsmVN/S15jqADAIKmtrZWv//979W9e3fl5+dr+fLleuml\nlxQTEyNJ+u6773Tbbbfpoosu0o9//GMVFBQoPT1dPp/vmJYbGRmpjIwMrVu3Tj/+8Y/Vr18/XXfd\ndSopKWmKbyskEHQArZLJ9OS3T+rigouVvC5Z/b/qr7e3vy1Jil8T7/F0blq8eLF69OihKVOm6Omn\nn9aSJUt0/vnnS6rfNf7cc88pISFBn332mT7++GP94Q9/UGxsbJPOEBsbqxkzZujzzz/Xd999p4SE\nBE2aNEnl5eVNuhwvEHQArdLzW57X19Vf6+OzP9bisxZrQfcFOr7t8V6P5aSSkhJdc801Gjx4sIYM\nGaKvvvpKN9xwg8LCwiRJn3zyiXr37q3JkydrypQpWr58uZKSkpp1pl69emnBggXKzs7WnDlzdNZZ\nZ+m5555r0deIJ+gAWqVXtr6izFMy1TasrSSpQ5sOujjqYo+ncs+yZcuUkJCgsrIyrVq1SllZWerU\nqZMkadOmTbruuut0ySWXqH///iosLNSYMWPUpk3w0pSSkqJVq1Zp0qRJeuCBB/THP/4xaMtuagQd\nQKu03b9dx4ezRd7cxo8fr2uuuUY5OTlKSEiQVH9ltylTpuiss87Spk2btHLlSj399NOKjo72ZMbw\n8HClpaXp7rvv1muvvebJDE0h3OsBAMALXdp20fe13xP1ZhYWFhYIuSStX79el1xyiXbt2qVXXnlF\nI0eO9HC6xsLDw1VTU+P1GEeNLXQArdLomNGavGmy6lR/CdGddTu1tGKpx1O5p2PHjo1ud+vWTXfe\neacKCgo8j/m8efN0+eWXezpDUyLoAFql35z4G50WcZr6FfRT8rpkXVp4qb6v/d7rsZzT8L7yBm3a\ntNHtt98euJyrl8rLy7Vhwwavx2gy7HIH0CqFKUz3dr1X93a9d5/His5rXR/qgXqhsJJxLNhCB9Dq\nfV/7vcYWj1VVXZXXozhp+/btXo9wWI714jVeI+gAWr3yunK9tPUl7TK3P7wD+3LpA1sIOgD8wG9+\nr0dwTocOHbwe4aCqqtzZK0PQAeAH5XUt//KfoSYiIsLrEVoNgg4AwA8qKyu9HuGoEXQArZ4vrGWf\nDBXqduzY4fUI+7X3W+okcWEZAGjJItu07LcrhToz83qE/dr7ojctHUEHAJOi20Trh4vGoQm19Pd2\ntyQEHQAqpG3nb5M2ez2Ie1rSe7tb+soHQQeAH4TqsV4ER0ta+dgfgg4APwjVY70tXVlZmdcjHFBt\nba3XIzQZgg6g1WvThl+FzamuLnRPTqioqPB6hCbDTzGAVq9Tp05ej+Csln5cuiUh6ACAZtPSjku3\n5C12gg4AaJX2d6ilJR9TJ+gA8IOWfNnPUFZeHprXyHftUAtBB4AftOTLfoYyv59PsQsGgg4ALUVt\nrXTXXVKfPlLfvlJ6uhTisWzfvv0+902cOFFz5szxYJrGevfurZUrVwZuh/pHvR4KQQcAtZDdr1On\nSh06SEuXSp9+KrVvLz31lNdTHVS7du0a3TYztWvXTtdff70uu+wy5efnezRZ/crG6aefHrjd0j/q\nlaADgOpPkAr5C8u88YZ07727b0+YIL3+unfzHEJVVZVyc3O1bds2lZSUSJLCwsL0u9/9TgUFBYqJ\niVHPnj112223aevWrZ7O+u2332rGjBnq0KGDXnnllZB+7/yBEHQArdrWrVuVlpamLl266O6779ay\nZcu8HunAysul6Ojdtzt3lkL0RL45c+YoMTFRubm5CgsLU0JCgiZNmhR4W1hcXJxmzpypjz76SEuX\nLlX37t01ffr0oJ9lXltbq6eeekoJCQnavHmzRowYoQkTJqh3795avHhxUGc5ZgYArZDf77fnn3/e\nYmJi7MILL7ScnBxLS0uziIgIGzVqlBUXF3s94r569jQrLd19e/t2s/PP92yc/fnqq68sJSXFIiMj\nLTMz06qqqszM7K233rL4+HiLi4uzmTNnWl1dXeA5fr/fZsyYYbGxsZaYmGg5OTlBmfX999+3xMRE\ni42Ntb/85S+BmUpLSy09Pd18Pp+lpqZaYWFhUOY5VgQdQKuzdOlS69Wrl8XExNjLL79sfr8/8Fhe\nXl4gSBkZGVZWVubhpGb2z3/u/vMjj5jdf//u2/ffb/b447tvL1xoVl0dvNn2UFZWZhMmTDCfz2fD\nhw/f7wpRdXW1ZWVlWXR0tCUlJdnSpUv3eY377rvPfD6fXX755c0W0uLiYhs+fLj5fD675557Dvjf\nuLCw0K644grz+Xw2fvx4738WDoGgA2g1Nm7caL/+9a8tIiLC0tLSrHTPrd295OTkWEJCgsXGxtqM\nGTMaRT8oCgvNUlLMbrxx9327dpndfrtZUpJZnz5md95pVlOz+/GJE826dzcL0hZug9dff926detm\niYmJtnDhwkN+/ebNm2306NHWtm1bGz16tG3cuLHR44WFhZaammo+n8/S09MP+t/pSFRWVtpDDz1k\nkZGRlpKSYl999dVhPS8nJyewJe/Jz8JhIugAnFdTU2PTpk2z6Oho69+/v61YsaLR45s2bdrv1uCe\nW5S9evWyRYsWNf+wZWVmEyaY+XxmqalmW7ce/nN37jTLyDCLjKxfGcjLa745zWzNmjWWnJxsUVFR\nlpWVZdVHuHcgNzc38PzMzEyrrKxs9PiiRYusR48eFhMTYy+88MIxhTQ7O9vOOOMMi4+Pt7feeuuI\nn19TU2PTp0+3mJiY4P0sHCGCDsBpH3zwwX6Pk5rV/5J+6qmnLDo62n77298e8DW2bNliaWlpFh4e\n3nzHVOvqzGbONIuNNUtMrN99frSKi81GjTKLiDBLS7PyLVuabk6rP8Z81113WUREhF133XX7bGEf\nqb/97W8WFxdnZ5xxhmVnZzd67FhDmp+fb4MHD7YOHTrsd6XhSO15fP3hZcusZOfOY3q9pkTQATip\nuLjYrrnmmgMe/1y0aFEg9H/+858bhf5AGo6vN/Wu4NzcXBswYID9Z8AAs6ys+l3rTWHpUlsxYoQd\nd9xxR7UFvbe6ujr7wx/+YF27drUePXrYhx9+2DRzWv3u8MzMTIuKirLk5GTLzc1t9PjeJ6r961//\nOujr7dixI/D111xzTZOf5Ph/xcU2rqjIkv75T3tq/Xorq61t0tc/GgQdgFOqq6sDYRg0aJDl5+c3\nerykpMSuvfbaQJSP5kSnhmOqMTExNn36dKvZ8zj2Efjuu+8CZ9bfeOONx7yluz91dXU2c+ZM69at\nm8XHx++zBXy4cnNzLSkpyaKjo+2ZZ5456u/5UDZu3Gj//d//bW3btrWxY8falr32LjSsVN1www37\nfX5dXZ398Y9/tNjYWDv33HObfdf4p9u328g1a2zwqlU2d8sW8/LoOkEH4Ix33nkn8NaovcNVXV1t\njz76qEVFRdmll15qecd4fHnPXcFH+larPd8yd8EFF+xztndzKCsrs4yMjMAJYYf7/W/dutV+85vf\nWHh4uI0ePXqfwDaXpUuXBlYg9rd3Yed+dnXvudLx9NNPN9tKx95q6+rsr5s3289XrrTr8vPtix07\ngrLcvRF0AC1eYWGhXXnllRYZGWkPPPDAPsdJc3JyAqGfNWtWky57z13BhxPKTz/9NPCWuZdeeino\nZ0wXFxfbqFGjAmf6HyjQfr/fXnjhBYuJibHevXvbsmXLgjqn2e69C7GxsRYfH2/z58/f79dt2bLF\nbrnllqCvdOxtR22tPbV+vSX985+2ZPv2wP2DVq2ym7/6ym7+6it74Ouvm235BB1Ai1VZWWkZGRnW\nvn17GzZsmBUVFTV6vKioyH7xi19YZGSkTZo06ZhPiDqYhrdahYeHW1pamn3//feNHt+4caP96le/\nsoiICLvtttua7Pj70TrYFvDSpUvt/PPP92ylY28H2rtQU1Njzz77bOB97Z999pmnczYo2bmzUdCH\nffllUJZL0AG0SLNmzbK4uDiLj4/fZ3d3ZWWlPfDAAxYZGWlXXnllUK/0tWjRosAW+PTp062iosKy\nsrICJ3utWrUqaLMcSsMWcMPf4yuvvGL/8z//c8CVEq8VFxfbtddea+Hh4fbLX/7SfvrTn1rXrl1t\nxowZh3VSo1eCFfQws1D/NAIA2M3v9+vyyy/XkiVLdP/99ys9PV0+ny/w+Jw5c3TXXXfJ5/Pp6aef\n1uWXXx70Gevq6vTqq68qIyNDnTp1UlVVlZ544gmNGjUq6LMcjqqqKj322GOaP3++2rdvr2eeeUa9\nevXyeqwDWrx4sbKzs9WuXTtlZGQoes/r24egy1av1uk/fIzspdHRuuakk5plOQQdQIvy2muv6fHH\nH9f8+fN16qmnBu5fu3at7rrrLi1ZskQTJ07UPffc0yj0Xli7dq0SExOVn5+vc845x9NZDoeZKSws\nzOsxnHPVmjV667zzmn05fNoagBalpqZGkhrF/MEHH1TPnj0VHR2tvLw8ZWRkeB5zSerYsWOjf4c6\nYt6yEXQALcr+Qh0XF6d3331Xb775puLi4jyYardrrrkm8NnfHTp08HQWtC4EHUCLs/eRwptuukkD\nBw70aJrG/va3v2n79u2SpIiICI+nQSgIxu52iaADaIF27Njh9QhAyCHoANDE/H6/1yOgFSLoAFqU\nLl26eD3CIZWXl3s9Alohgg4AgAMIOoAWp7q62usRjkhVVZXXI6AVIOgAWpydO3d6PcIR2bVrl9cj\noBUg6ABalFC4YMzBtGnDr1V4g588AC1KZGSk1yMcVKdOnbweAa0UQQcAwAEEHUCLU1ZW5vUIhyXU\n9ybALQQdQItTV1fn9QiHJdSP98MtBB1Ai9JSPrkMCDaCDqBFCQ8P93oEICQRdAAtUm1trdcjHFDD\np60BwUTQAbRIFRUVXo8AhBSCDqBFaYkXbmlpV7ZDy9Ty/s8A0Kq1xAu3tLRrz6NlIugAADiAoANo\nkSorKwN/Xr58uZ577rmQOFHutdde0/nnn+/1GGiFCDqAFqmmpibw561btyozM1M9evTQu+++6+FU\n0hVXXKHY2FhPZ0DrRNABtCglJSXq2LGj8vPzA/ddccUVWrduna644goNGzZMV111lYqKijycst4n\nn3yi+Ph4RUVFeT0KWgGCDqBF+P7773Xbbbfpkksu0c9+9jNdeeWVGjNmjDZt2iRJioqK0hNPPKG8\nvDy1adNG5557rsaPH69t27YFfdaSkhJdd911uuSSSzR8+HD17Nkz6DOg9SHoAEJabW2tnnvuOZ19\n9tlaunSpFi9erPfff1+fffaZioqKdNZZZ2nKlCnatWuXJCk+Pl7Z2dlasGCBPvjgA3Xv3j1ox9er\nqqr0yCOP6JxzztG3336rlStXasqUKc2+XECSZAAQohYtWmQ//elP7cQTT7QZM2aY3+9v9HhdXZ3N\nnDnT4uLiLD4+3rKzsxs97vf77cUXX7SYmBjr0aOHLVq0qNlmnTVr1gHnAIKBLXQAIaekpEQjRozQ\n4MGDNWjQIK1bt06jR4/e56IyYWFhGjVqlAoKCnTjjTfqhhtu0MCBA7VixQpJ9RehueWWW1RYWKhL\nL71UgwcP1tVXX92kx9dXrlypgQMH6sYbb9Qtt9yi1atXKzU1tcleHzhcBB1AyKiqqtKkSZOUkJCg\niooKrVixQllZWYqOjj7o8yIjI5WRkaF169bpjDPO0IUXXqgxY8Zo69atkqTo6GhlZWUpLy9Pkprk\n+PrWrVt122236aKLLtIpp5yidevWKSMjg89Ah2cIOgDPmUnZ2Z8oISFBb775pv76178qJydHiYmJ\nR/Q6sbGxeuWVV/TJJ58oPz9f3bt319SpU/c5vp6Tk6OcnBydffbZeuWVV47o89Vra2s1ffp0de/e\nXZ9//rk++ugjvfbaa7xVDd7zep8/gNYtN9fsv/7LrHv3YnviiSeturq6SV73UMfXa2pqbPr06RYT\nE2O9evU6rOPrCxcutMTERIuNjd3vMX3AS2FmZl6vVABofcrLpbfekj79VOrTR7rySum445p+OVVV\nVZo2bZoee+wxXXjhhXrmmWd03nnnBR7ftm2bMjMz9cYbb2jdunXq0KHDPq9RVFSke++9V++8847u\nuOMOTZ48uUVeUx5uI+gAWoWSkhJNnDhRs2bN0s0336zf/e53iomJCTxeVVW1z/Hv8vJyTZkyRVlZ\nWbr00kv1v//7v4qPjw/26MBh4Rg6gCYTEyNNnrz7dkLC7j/v3cE9HwuGuLg4zZw5Ux999JFyc3P3\nOb6+Z8zNTH/5y1901llnac6cOXrrrbf09ttvE3OENIIOoMl06iS9/bZUVub1JAeWlJSkJUuW6Lnn\nntPTTz+tc889V3//+98Djy9fvlwXX3yx7rjjDqWnp2vFihVKSUnxcGLg8BB0AE2mbVvpppuk55/3\nepKDa3j/en5+vq699lpde+21uuyyy/TLX/5S/fr107nnnqvCwkKlp6fL5/N5PS5wWDiGDqDJxMdL\neXlSUpK0dKnUs6dUUFD/WNeujXezf/WV9MNl2D1XUlKizMxMhYWF6dZbb1WvXr28Hgk4YgQdnist\nLVVWVpYKCwubdTn33Xcfv6ibWXy8VFQkTZ0qtWsnPfvs7qA3PNYgIWH3YwCOXbjXAwAPPfSQPv74\nY1166aXNtoxvvvlGffv21ZYtW9SxY8dmWw7q3Xqr1L+/FITPQwHwA4IOT5mZZs+erYcffli//vWv\nm205fr9fCxYs0Pz58zVy5MhmWw7qdewopaZKTz/t9SRA68Eud3jqs88+U79+/fTtt9/quOa4qsge\nxo4dq9LSUv31r39t1uUAgBc4yx2emj17ti655JJAzN99913NmzevSV578+bNjT6LeuTIkZo/f74q\nKyub5PVxaDNn1v8DoPkRdHgqOztbV199deD21KlTtWzZsiZ5bTPTpEmTtHLlSklScnKyIiMjlZOT\n0ySvj0P75JP6fwA0P4IOz6xcuVJff/21rrrqKknSd999pw8//LBR4I/FySefrAEDBmjWrFmSpPDw\ncF111VX629/+1iSvDwChhKDDM9nZ2erfv79OOukkSdK8efPUrVs3XXDBBU22jBEjRjQK+MiRI/XO\nO++oqqqqyZaBgysv93oCoHUg6PDM7NmzNXz48Ea3U1NTFRYW1mTLuPrqq1VUVKTVq1dLkgYOHKh2\n7dqx2z2I/H6vJwBaB4IOTxQUFGjt2rVKTU2VJG3fvl3/+Mc/NGLEiCZdTteuXdW/f//AbveIiAgN\nGzYscBsAXEHQ4YnZs2crKSlJ3bp1kyS9/fbbOuGEE5SUlNTky9rfbve3335b1dXVTb4sAPAKQYcn\n9t7d3nC2e5s2Tf8jOXz4cK1bt05r1qyRJF1yySVq27atFixY0OTLQmM+X63ateNycUAwEHQE3b/+\n9S+tWLEicDZ7RUWFcnJymuzs9r3Fxsaqb9++gd3sPp+P3e5BEhn5gKqrm+8KgAB2I+gIutmzZ+uC\nCy7QGWecIan+YjJRUVEaMGBAsy1z793uI0aM0Lx589jtDsAZBB1Bl52dHTgZTpJmzZqlYcOGqW3b\nts22zOHDh6ugoED5+fmSpEGDBkmSFi5c2GzLBIBgIugIqg0bNmj58uWBs9mrq6v1zjvvNDqe3hy6\ndeumPn36BLbS27Vrp1/84hfsdgfgDIKOoMrOzlZiYqLOPvtsSdKCBQvUtm1b/fznP2/2ZY8YMaJR\nwEeMGKG5c+dq165dzb5sAGhuBB1BlZ2d3ei95tnZ2frFL36hiIiIZl/2iBEjlJeXp4KCAknS4MGD\nVVdXp3/84x/NvuzWjA/DAYKDoCNovv32W3388ceB4+c1NTWaN29es+9ub3DqqacqKSmp0W73K6+8\nkt3uzaympsbrEYBWgaAjaObOnaszzzxTPXr0kCR98MEHqq2t1WWXXRa0GUaOHLnPbve33nqL6ABo\n8Qg6gmbWrFmN3ms+e/ZsXX755Wrfvn3QZhg+fLi+/PJLrVu3TpKUkpKi2tpavf/++0GbAQCaA0Fv\nIWJipMmTd99OSNj95/j4xl+752Oh4vvvv9fixYsDu9f9fr/mzp0btN3tDeLi4nTRRRcFdru3b99e\nQ4cO5SNVm0lzvhURQGNBCfprr73GmcTHqFMn6e23pbIyryc5OnPnztUpp5yi3r17S5I+/vhjlZWV\naciQIUGfZX+73efOnctu92YQFRXl9QhAq9HsQf/mm280ceJE9ejRI6Qv4rFs2TL16dNHSUlJmjp1\nasj9cm/bVrrpJun5572e5OjMmTNHV199deCjUU866SRNnTrVk1/4I0eO1PDhw+X/4XM9hwwZourq\nai1atCjos7jOzGRmXo8BtArNHvRu3bpp7dq1GjZsmIYOHaqRI0eqpKSkuRd72EpKSnTdddepX79+\nSkxM1K9//WtNnTpVPXv21AcffOD1eI2MHi29/rq0c2fj+8vLpeTk3f9s3+7BcAdQVVWlRx55ROvW\nrWv0yz0xMVG/+c1vPJkpLi5OkyZNCuwOLi0t1RlnnKHJkydr2bJlnsx0uIqLizVy5EhdffXVIX92\n/qxZs/Tss88qNzdXjzzyiKqqqrweCXCbBVFBQYENGjTIOnbsaI888ohVV1cHc/GNlJWVWUZGhkVG\nRlpKSorl5eU1emz8+PHm8/ns2muvtfXr13s2Z4Mzz6z/d1aW2TPPmJ199r6PNdjzMa/U1dXZzJkz\nLS4uzuLi4mzChAl2/PHH2xVXXGFbtmzxeryA+fPn24knnmgDBw60G2+80dq2bWs33HCDbdy40evR\nGikvLw/8vA4ePNjGjRtnUVFRlpycbLm5uV6P18iaNWssOTnZoqKi7NFHH7W//vWvFh8fb3FxcTZz\n5kyrq6vzekTASUENeoNZs2ZZXFycxcfHW05OTlCX7ff7bcaMGRYbG2uJiYkHXX5eXp5dcsklFhUV\nZVOmTPF0BaQh2uXlZr16NY54qAV96dKllpSUZJ07d7bMzEyrrKw0M7Pi4mLr27evdevWzRYtWuTp\njLt27bL09HSLiIiwxx57zPx+v5mZ5ebmBmLk9UqnWeMVo/j4eHvnnXcCj23cuNGuv/56i4iIsLS0\nNM9XlEpLS+3222+3iIgIGzVqVKOVourqasvKyrJOnTpZUlKSLVu2zMNJATd5EnQzs4qKCsvIyDCf\nz2epqan273//u9mXmZOTYz169LCYmBibPn261dTUHNbz3nzzTTvttNMsISHB3nvvvWaecv/2jPZD\nD5mdcML+HzPzLujFxcU2atSogwampqbGMjIyLCIiwh588EGrra0N+pxFRUXWu3dv+9GPfmRLlizZ\n79e88cYbgYhmZ2cHecJ6ubm51r9/f4uKirKsrKwDrlwsXbrULrroIouOjrZnnnnmsH+um4rf77cX\nX3zRYmJirFevXvbJJ58c8Gs3btxoo0ePtvDwcBs9enTI7QkBWjLPgt6gsLDQUlJSLDIy0h5++CHz\n+6uafBl5eXmWkpJiPp/P0tPTrbS09Ihfo6yszCZMmGA+n8+GDx9uxcXFTT5nA7/frKLC7Pvv6//9\nw8bjYdu506y01GzHDrNg9PJghy8O5P3337euXbvagAEDgnpI4/XXX7fOnTvb8OHDD/lzUFlZaQ89\n9JBFRkbaZZdddljfV1PYsmWL3XzzzQeM3n/+8599nrP3nqdgrXh++umn1qtXL4uJibEXXnghsKdj\nT7m5uVZWVrbPfQ17QvbciwPg6Hke9AZz5syx3/72F/bll/G2bdvbTfKaNTVbrLg4zX7724ssNTXV\nCgsLj/k1CwoK7LLLLrMOHTo0+S7ZyspKmzp1k0VFmSUnmx3LodH//MfsxhvNwsPN0tLMSkub/rhl\nTU2NTZ8+3U466aRDHr7Yn82bN1tKSoqdcMIJNnfu3Cafb08VFRU2ZswYa9++vT3//PNH9Nw99zzc\ncccdR7VCeDhqamps2rRpFh0dbUlJSbZ06dJGj5eWllp6erpFRkYecIWyrKzM0tPTA3u+muJnfn82\nbtxo1113nUVERNhtt9120L+TIUOGWGxsrM2YMWOf4GdnZ3N8HWgiIRN0MzO/v9K++eYBy82NtMLC\nK23nzqKjep26umr7z3+ybMWKaFu7NslKSz9t4knNZs+e3WTnAex5nHTo0FusKffwLlli1rdvrSUm\nDtrvL9SjlZOTY4mJiUd8+GJvdXV19uSTT5rP57M777zTdu7c2STz7Wn16tV2zjnn2DnnnGOrV68+\n6tdZvHhxYGv0WL7n/Wn4+4yNjbVXX321Udgatr5PPPFE69Gjx2Gdf1BYWGhDhw41n89nGRkZ+2wh\nH63q6mqbMmVK4IS8L7/88pDPaVjxa9glv/f8DcfXTz01zgYN2mp7rccAOEwhFfQGO3cWWmHhUMvN\njbRvvpl8RLvhS0uz7csv42316jj77ruZZtZ8a/x7ngdw1VVX2ddff33Er9FwAll0dPRBj5MeC7/f\nb9OnT7fjjjvOkpKS7Isvvjjq12qKwxf7s3z5cjvjjDNsaP/+ZuvWNclrmpl99qc/Wfv27W3MmDFW\nUVFxzK/n9/vtpZdeOmCcjlRhYaFdddVV5vP5bOLEifuEd8mSJce0ErHnisKf/vSnY9oCfueddwJb\n02+++eYRP79hD8OB9h5s2rTLRo82a9vW7H/+x4zD68CRCcmgN9i27e/25ZdnWn7+Txvdv337e7Z2\n7UVWUNDf1q79mW3e/JzV1dVaQUE/y82Nso0bM83vD94xucLCQhsyZIhFRkbaQw89dFjHAw/nBLKm\ntmXLFhszZoyFh4fb2LFjbevWrUf03LS0tMAZzEez8nIo27dvt6K77jKLijL705+O7cVKS82GD7fa\n446znFmzmmS+xi9fH6fw8HAbMWLEEZ9TUVZWZvfdd5/5fD4bNmzYPnHbsGFDo5+PI/lvtbddu3ZZ\nVlbWAXflH8qeP9+TJk065uPdhYWFlpqaesCVwtzc+kNOUVFmmZlmHF4HDk9IB92sfjf8pk1TGt23\nZk2i7dq1+8Sg2trvrbZ2m/3736Nt1y7vVuvfeustO/300y0+Pt7+/ve/7/drjuYEsqa2bNky6927\nt8XExNiLL7540N3wDbtDjzYGR+Xll806dDC74Qazo9lVvGSJ2Y9+ZNa7t1nR0R22OVwNeywiIyMt\nIyPjkLGrq6uzP/3pTwd822RlZaVlZmYe0S7tw7Vlyxa76aabDvsM87KyMrv33nsDW9RNvRLXsPfg\npJNOstdeW7/PyZ/Z2Wbx8WZxcWbffLP7/hNOMHvwwd23vX6bJhAqQj7o+7N27c/su+9mWm3t9sB9\ndXXBf/vT/lRWVtqDDz5okZGRduWVV1rRD0E5kve/B4Pf77cXXnjBYmJirHfv3vu8L7jhuL5nJyzl\n5Zmdd179b+vDjXJdndn//q9ZRIRZerrZrl3NO+Me5s2bd8i/q+XLlzc6vLL37vPs7Gw788wzLS4u\nrlnfKpebm2sDBgywqKgoe+KJJ/Y5zFNXV2d//vOfAz+rCxcubLZZampq7P/9v1kWE1N/fYW9j2BU\nV9dfTGnBgt33nX662fnn17+Lw4ygAw1aZNB37iy0f//7JluzJtHWrr3QystD7yyaoqIiGzp0qEVG\nRtott9zSbCdTHastW7bY2LFjLTw83G666SbbsmVL4Li+528pqqw0GzvW7MUXD/85AwaYzZ/ffDMd\nRHV1tT355JMWFRVl/fv3D1zBbc/3Xo8ZM2afwyt5eXn285//3Dp06BC0v++9L1jT8C6D3NzcwErH\ntGnTgvazWlpavw7m85mlpprtfXL+nuscZ55p9txzZo8/Xn+boAP1WmTQ91RRkWt5eT899Bd65O9/\n/7ulpaU16QlkzeGLL76wn/3sZ9a1a1dr27ZtaF30Y88t9JoaszvvNEtKMrv4YrNx4xq/2X7z5qCP\nt7c9Az506FDr3Lmz9e3bd59LtJaWltodd9wROC+hOa9tcCCVlZU2adIki4yMtL59+wZ2x2/26O+x\nsLA+6D5ffeD397/MmWfWX2uhZ0+zqiqCDjRokUGvqioI/HnXro2Wl3ee1dV5e4lOF/j9flu9erWt\nWrXK61EObMoUs/vu2337/vvNnnzSu3kOYtmyZXbCCSdYZmbmPm9De+655wJnyn/44YceTlmvuLjY\nJNnrr7/u9ShmZvbee2aJiWYnnmg2Y0b90ZQGB/tcA6A1CzML/c823LmzQO3bJwRu//vfv9bOnWsV\nFtZeZjXq1i1THTpcKKlObdtGezYngqBXL2nRIik6uv72jh3SwIHSP//p6VgHEhYWpo8//lj9+vWT\nJK1YsUJjxozR+vXrlZmZqZtvvllt2jT7hx4elrCwMK1evVo/+clPvB5FklRbK730kjR5svTOO9JF\nF9XfHx8vFRVJFRVS//71PwJFRd7OCoSC0PhNcggbNtzT6Pbpp/9RCQmf6eyzP1JCwlJ16vRzhYW1\n0aZNmR5NiKApL98dc0nq3FmqrPRsnCMVFRWl5ORkFRYWauzYsSET8wYVFRWSpOrqaj3++OPasWOH\n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\nAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABB\nBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA\n0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAH\nEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDA\nAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEA\ncABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQA\nABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQd\nAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABB\nBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA\n0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAH\nEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDA\nAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAQQdAAAHEHQAABxA0AEA\ncABBBwDAAQQdAAAHEHQAABxA0AEAcABBBwDAAf8f/r048jY/y5UAAAAASUVORK5CYII=\n",
"prompt_number": 20,
"text": [
"<IPython.core.display.Image at 0x10adf4a90>"
]
}
],
"prompt_number": 20
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment